Compare commits

...

2 Commits

Author SHA1 Message Date
164690bcce 优化个人中心表格显示和操作功能 2025-09-13 10:17:32 +08:00
2ac31bc1a3 优化个人中心表单验证和路由跳转 2025-09-13 09:44:30 +08:00
4 changed files with 28 additions and 18 deletions

View File

@ -4,12 +4,12 @@
<el-table-column prop="date" label="文件信息">
<template #default="scope">
<div class="flex items-center">
<el-image :src="scope.row.iconUrl" fit="cover" alt="" srcset="" class="h-91px w-181px rd-4px" />
<el-image :src="scope.row.iconUrl" fit="contain" alt="" srcset="" class="h-91px w-181px rd-4px" />
<div class="ml-17px">
<div class="text-16px text-[#333333] font-normal">{{ scope.row.title }}</div>
<div class="text-14px text-[#333333] font-normal my-10px!">
{{ dayjs(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
<span class="ml-10px">{{ scope.row.sizecountry }}</span>
<span class="ml-4px color-#999">{{ scope.row.isDomestic === 1 ? '中国' : scope.row.country }}</span>
</div>
<div class="flex items-center">
<div class="flex items-center">
@ -37,7 +37,9 @@
<el-table-column prop="address" label="操作" width="100">
<template #default="scope">
<el-link v-if="scope.row.status === 4" type="primary" :underline="false" @click="handleXiaJia(scope.row)">下架</el-link>
<el-link type="primary" :underline="false" @click="handleDelete(scope.row)">删除</el-link>
<el-link type="danger" :underline="false" @click="handleDelete(scope.row)">删除</el-link>
<el-link type="primary" :underline="false" @click="handlePreview(scope.row)">查看</el-link>
<el-link type="primary" :underline="false" @click="handleEdit(scope.row)">编辑</el-link>
</template>
</el-table-column>
</el-table>
@ -92,11 +94,11 @@
case 1:
return '草稿'
case 2:
return '提交审核'
return '审核'
case 3:
return '审核成功'
return '发布成功'
case 4:
return '下架'
return '退稿'
default:
return ''
}
@ -121,6 +123,14 @@
}
})
}
const handlePreview = (row: any) => {
window.open(row.url)
}
const handleEdit = (row: any) => {
window.open(`/personal-center/edit-resource?id=${row.id}`)
}
</script>
<style lang="scss" scoped></style>

View File

@ -125,7 +125,7 @@
fetchUserStatistics()
const handleClick = () => {
router.push({ path: '/personal-Center/personal-profile' })
router.push({ path: '/personal-Center/account-management' })
}
const payVisible = ref(false)

View File

@ -22,7 +22,7 @@
<!-- User avatar section -->
<!-- User information section -->
<el-form-item label="用户名:" prop="nickname">
<el-form-item label="用户名:" prop="nickname" :rules="[{ required: true, message: '请输入用户名', trigger: 'blur' }]">
<div class="flex items-center">
<el-input v-model="userForm.nickname" class="w-[247px]" />
<el-button type="primary" class="verify-btn" @click="handleVerify">实名认证</el-button>
@ -36,14 +36,14 @@
</div>
</el-form-item> -->
<el-form-item label="手机号:" prop="phone">
<el-form-item label="手机号:" prop="phone" :rules="[{ required: true, message: '请输入手机号', trigger: 'blur' }]">
<div class="flex items-center">
<el-input v-model="userForm.phone" disabled class="w-[247px]" />
<!-- <el-link type="primary" class="modify-link">修改</el-link> -->
</div>
</el-form-item>
<el-form-item label="电子邮箱:" prop="email">
<el-form-item label="电子邮箱:" prop="email" :rules="[{ required: true, message: '请输入电子邮箱', trigger: 'blur' }]">
<div class="flex items-center">
<el-input v-model="userForm.email" placeholder="请输入电子邮箱" class="w-[247px]" />
<!-- <el-link type="primary" class="modify-link">绑定</el-link> -->
@ -51,30 +51,30 @@
</el-form-item>
<div class="flex items-center">
<el-form-item label="所在地区:" prop="isDomestic">
<el-form-item label="所在地区:" prop="isDomestic" :rules="[{ required: true, message: '请选择所在地区', trigger: 'change' }]">
<el-select v-model="userForm.isDomestic" placeholder="请选择" class="w-[120px]!" @change="handleCountryChange">
<el-option label="国内" :value="1"></el-option>
<el-option label="国外" :value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item label-width="6px" prop="province">
<el-form-item label-width="6px" prop="province" :rules="[{ required: true, message: '请选择省份', trigger: 'change' }]">
<el-select v-model="userForm.province" placeholder="请选择省份" class="w-[120px]!" @change="handleProvinceChange">
<el-option v-for="item in provinceList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label-width="6px" prop="city">
<el-form-item label-width="6px" prop="city" :rules="[{ required: true, message: '请选择城市', trigger: 'change' }]">
<el-select v-model="userForm.city" placeholder="请选择城市" class="w-[120px]!" @change="handleCityChange">
<el-option v-for="item in cityList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label-width="6px" prop="county">
<el-form-item label-width="6px" prop="county" :rules="[{ required: true, message: '请选择区县', trigger: 'change' }]">
<el-select v-model="userForm.county" placeholder="请选择区县" class="w-[120px]!">
<el-option v-for="item in countyList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</div>
<el-form-item label="技能标签:" prop="labels">
<el-form-item label="技能标签:" prop="labels" :rules="[{ required: true, message: '请选择技能标签', trigger: 'change' }]">
<el-select
v-model="userForm.labels"
:remote-method="remoteMethod"
@ -89,7 +89,7 @@
</el-select>
</el-form-item>
<el-form-item label="技能证书:" prop="files">
<el-form-item label="技能证书:" prop="files" :rules="[{ required: true, message: '请上传技能证书', trigger: 'change' }]">
<KlUploader
v-model:file-list="userForm.files"
list-type="picture-card"
@ -104,7 +104,7 @@
</KlUploader>
</el-form-item>
<el-form-item label="个人简介:" prop="description">
<el-form-item label="个人简介:" prop="description" :rules="[{ required: true, message: '请输入个人简介', trigger: 'blur' }]">
<el-input v-model="userForm.description" type="textarea" :rows="5" placeholder="请输入个人简介" class="full-width" />
</el-form-item>

View File

@ -14,7 +14,7 @@ export const generateRandomString = (length: number) => {
// QQ登录
export const handleLoginQQ = () => {
const appId = QQ_APP_ID // APP ID
const redirectUri = encodeURIComponent('https://tuxixi.net/index?type=35') // 回调地址
const redirectUri = encodeURIComponent('https://tuxixi.net?type=35') // 回调地址
const state = generateRandomString(16) // 生成随机state
// 存储state用于后续验证
localStorage.setItem('qq_login_state', state)