pull/781/head
parent
dd2242e2be
commit
4804d4e146
|
|
@ -59,7 +59,14 @@
|
||||||
<div v-for="(file, index) in fileList" :key="index" class="flex items-center file-list-item">
|
<div v-for="(file, index) in fileList" :key="index" class="flex items-center file-list-item">
|
||||||
<span>{{ file.name }}</span>
|
<span>{{ file.name }}</span>
|
||||||
<div class="ml-10px">
|
<div class="ml-10px">
|
||||||
<el-link :href="file.url" :underline="false" download target="_blank" type="primary">
|
<el-link
|
||||||
|
@click="previewFile(file.url)"
|
||||||
|
:underline="false"
|
||||||
|
type="primary"
|
||||||
|
>
|
||||||
|
预览
|
||||||
|
</el-link>
|
||||||
|
<el-link class="ml-10px" :href="file.url" :underline="false" download target="_blank" type="primary">
|
||||||
下载
|
下载
|
||||||
</el-link>
|
</el-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -195,6 +202,25 @@ const emitUpdateModelValue = () => {
|
||||||
}
|
}
|
||||||
emit('update:modelValue', result)
|
emit('update:modelValue', result)
|
||||||
}
|
}
|
||||||
|
//预览
|
||||||
|
const router = useRouter() // 路
|
||||||
|
const previewFile = (fileUrls) => {
|
||||||
|
// // 假设 fileUrls 是一个字符串,包含文件的完整 URL
|
||||||
|
if (!fileUrls) {
|
||||||
|
message.error('没有附件');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查文件类型
|
||||||
|
const fileExtension = fileUrls.split('.').pop().toLowerCase();
|
||||||
|
router.push({
|
||||||
|
name: 'FileTemplatePreview',
|
||||||
|
query: {
|
||||||
|
src: encodeURIComponent(fileUrls),
|
||||||
|
type: fileExtension
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.upload-file-uploader {
|
.upload-file-uploader {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<el-input v-model="formData.name" placeholder="请输入分类名" />
|
<el-input v-model="formData.name" placeholder="请输入分类名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分类标志" prop="code">
|
<el-form-item label="分类标志" prop="code">
|
||||||
<el-input v-model="formData.code" placeholder="请输入分类标志" />
|
<el-input v-model="formData.code" :disabled="formType == 'update'" placeholder="请输入分类标志" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="分类描述" prop="description">
|
<el-form-item label="分类描述" prop="description">
|
||||||
<el-input v-model="formData.description" type="textarea" placeholder="请输入分类描述" />
|
<el-input v-model="formData.description" type="textarea" placeholder="请输入分类描述" />
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
||||||
<el-table-column align="center" fixed="right" label="操作" min-width="150">
|
<el-table-column align="center" fixed="right" label="操作" min-width="150" v-if="activeName != 2">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-hasPermi="['crm:customer:update']"
|
v-hasPermi="['crm:customer:update']"
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,10 @@
|
||||||
选择任务
|
选择任务
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" />
|
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<!-- <ContentWrap style="border: none;font-weight: 700" >
|
||||||
日报信息
|
日报信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<DayReportForm :reportType="2" :type="1" ref="dayReportFormRef" :time="time" />
|
<DayReportForm :reportType="2" :type="1" ref="dayReportFormRef" :time="time" /> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="本月完成工作" prop="workComplate">
|
<el-form-item label="本月完成工作" prop="workComplate">
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
||||||
选择客户
|
选择客户
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<CustomerForm ref="customerFormRef" v-if="formData.selectCustomer" />
|
<CustomerForm ref="customerFormRef" :userOptions="userOptions" v-if="formData.selectCustomer" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<ContentWrap style="border: none;font-weight: 700" >
|
||||||
选择任务
|
选择任务
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
@ -133,10 +133,12 @@ const submitForm = async () => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as BriefWorkVO
|
const data = formData.value as unknown as BriefWorkVO
|
||||||
let customerData = customerFormRef.value.getData()
|
if(customerFormRef.value) {
|
||||||
|
let customerData = customerFormRef.value.getData()
|
||||||
|
data.customerIds = customerData.map( v=> v.id)
|
||||||
|
}
|
||||||
let taskData = taskFormRef.value.getData()
|
let taskData = taskFormRef.value.getData()
|
||||||
let dayReportData = dayReportFormRef.value.getData()
|
let dayReportData = dayReportFormRef.value.getData()
|
||||||
data.customerIds = customerData.map( v=> v.id)
|
|
||||||
data.taskIds = taskData.map( v=> v.id)
|
data.taskIds = taskData.map( v=> v.id)
|
||||||
// data.taskIds = dayReportData.map( v=> v.id)
|
// data.taskIds = dayReportData.map( v=> v.id)
|
||||||
if (!formType.value) {
|
if (!formType.value) {
|
||||||
|
|
|
||||||
|
|
@ -47,10 +47,10 @@
|
||||||
选择任务
|
选择任务
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" />
|
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<!-- <ContentWrap style="border: none;font-weight: 700" >
|
||||||
日报信息
|
日报信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<DayReportForm :reportType="1" :type="1" ref="dayReportFormRef" :time="time" />
|
<DayReportForm :reportType="1" :type="1" ref="dayReportFormRef" :time="time" /> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="本周完成工作" prop="workComplate">
|
<el-form-item label="本周完成工作" prop="workComplate">
|
||||||
|
|
|
||||||
|
|
@ -134,7 +134,8 @@ const submitForm = async () => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as BriefWorkVO
|
const data = formData.value as unknown as BriefWorkVO
|
||||||
if(customerFormRef.value.getData()) {
|
console.log('%csrc/views/project/briefWeekWork/BriefWorkWeekForm.vue:137 customerFormRef.value.getData()', 'color: #007acc;', customerFormRef.value);
|
||||||
|
if(customerFormRef.value) {
|
||||||
let customerData = customerFormRef.value.getData()
|
let customerData = customerFormRef.value.getData()
|
||||||
data.customerIds = customerData.map( v=> v.id)
|
data.customerIds = customerData.map( v=> v.id)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,7 @@ import { ProjectBonusApi, ProjectBonusVO } from '@/api/task/bonus'
|
||||||
import CustomerForm from '@/components/customer/index.vue'
|
import CustomerForm from '@/components/customer/index.vue'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import { DICT_TYPE } from '@/utils/dict'
|
import { DICT_TYPE } from '@/utils/dict'
|
||||||
|
import * as UserApi from '@/api/system/user'
|
||||||
|
|
||||||
/** 项目奖金 列表 */
|
/** 项目奖金 列表 */
|
||||||
defineOptions({ name: 'ProjectBonus' })
|
defineOptions({ name: 'ProjectBonus' })
|
||||||
|
|
@ -71,8 +72,8 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
type: propTypes.number.def(undefined),
|
type: propTypes.number.def(undefined),
|
||||||
dataList: propTypes.object.def([]),
|
dataList: propTypes.object.def([]),
|
||||||
userOptions: propTypes.object.def([]),
|
|
||||||
})
|
})
|
||||||
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const loading = ref(false) // 列表的加载中
|
const loading = ref(false) // 列表的加载中
|
||||||
const list = ref<ProjectBonusVO[]>([]) // 列表的数据
|
const list = ref<ProjectBonusVO[]>([]) // 列表的数据
|
||||||
const total = ref(0) // 列表的总页数
|
const total = ref(0) // 列表的总页数
|
||||||
|
|
@ -102,13 +103,13 @@ watch(
|
||||||
/** 查询列表 */
|
/** 查询列表 */
|
||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
const getList = (val: []) => {
|
const getList = (val: []) => {
|
||||||
console.log('%csrc/views/project/briefWeekWork/components/selectCustomer.vue:95 val', 'color: #007acc;', val);
|
|
||||||
for(let i = val.length - 1; i >= 0; i--) {
|
for(let i = val.length - 1; i >= 0; i--) {
|
||||||
let obj = val[i]
|
let obj = val[i]
|
||||||
if(list.value.some(v => v.id === obj.id)) val.splice(i, 1)
|
if(list.value.some(v => v.id === obj.id)) val.splice(i, 1)
|
||||||
}
|
}
|
||||||
val.forEach(item => {
|
val.forEach(item => {
|
||||||
if(!list.value.some(v => v.id === item.id)) {
|
if(!list.value.some(v => v.id === item.id)) {
|
||||||
|
console.log('%csrc/views/project/briefWeekWork/components/selectCustomer.vue:95 val', 'color: #007acc;', val);
|
||||||
val.forEach(item => {
|
val.forEach(item => {
|
||||||
list.value.push({
|
list.value.push({
|
||||||
"name": item.name,
|
"name": item.name,
|
||||||
|
|
@ -119,6 +120,7 @@ const getList = (val: []) => {
|
||||||
"id": item.id,
|
"id": item.id,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
console.log('%csrc/views/project/briefWeekWork/components/selectCustomer.vue:122 list.value', 'color: #007acc;', list.value);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -173,7 +175,7 @@ const handleExport = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const getName = (opt, val) => {
|
const getName = (opt, val) => {
|
||||||
console.log('%csrc/views/project/briefWeekWork/components/selectCustomer.vue:176 opt,val', 'color: #007acc;', opt,val);
|
console.log('%csrc/views/project/briefWeekWork/components/selectCustomer.vue:176 opt,val', 'color: #007acc;', props.userOptions,val);
|
||||||
const arr = opt.filter(v => v.id == val)
|
const arr = opt.filter(v => v.id == val)
|
||||||
return arr.length ? arr[0]['nickname'] : ''
|
return arr.length ? arr[0]['nickname'] : ''
|
||||||
}
|
}
|
||||||
|
|
@ -184,7 +186,9 @@ const getData = (data) => {
|
||||||
defineExpose({ getData })
|
defineExpose({ getData })
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(() => {
|
onMounted(async() => {
|
||||||
// getList()
|
// getList()
|
||||||
|
// 获得用户列表
|
||||||
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="产品名称" prop="projectName">
|
<el-form-item label="名称" prop="projectName">
|
||||||
<el-input v-model="formData.projectName" disabled placeholder="请输入产品名称" />
|
<el-input v-model="formData.projectName" disabled placeholder="请输入名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="产品名称" prop="projectName">
|
<el-form-item label="名称" prop="projectName">
|
||||||
<el-input v-model="formData.projectName" placeholder="请输入产品名称" />
|
<el-input v-model="formData.projectName" placeholder="请输入名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
|
|
@ -168,7 +168,7 @@ const formData = ref({
|
||||||
auditStatus: undefined
|
auditStatus: undefined
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
projectName: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }],
|
projectName: [{ required: true, message: '名称不能为空', trigger: 'blur' }],
|
||||||
projectType: [{ required: true, message: '项目类型不能为空', trigger: 'change' }],
|
projectType: [{ required: true, message: '项目类型不能为空', trigger: 'change' }],
|
||||||
deptId: [{ required: true, message: '申请部门不能为空', trigger: 'blur' }],
|
deptId: [{ required: true, message: '申请部门不能为空', trigger: 'blur' }],
|
||||||
userId: [{ required: true, message: '申请人不能为空', trigger: 'blur' }],
|
userId: [{ required: true, message: '申请人不能为空', trigger: 'blur' }],
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@
|
||||||
v-model="formData.startDate"
|
v-model="formData.startDate"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
type="date"
|
type="date"
|
||||||
|
:disabled-date="disabledStartDate"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="选择项目开始日期"
|
placeholder="选择项目开始日期"
|
||||||
/>
|
/>
|
||||||
|
|
@ -79,6 +80,7 @@
|
||||||
v-model="formData.endDate"
|
v-model="formData.endDate"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
type="date"
|
type="date"
|
||||||
|
:disabled-date="disabledEndDate"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="选择项目结束日期"
|
placeholder="选择项目结束日期"
|
||||||
/>
|
/>
|
||||||
|
|
@ -102,6 +104,7 @@
|
||||||
<el-radio-group v-model="formData.bonusEvaluation">
|
<el-radio-group v-model="formData.bonusEvaluation">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="formData.bonusEvaluation"
|
v-model="formData.bonusEvaluation"
|
||||||
|
@change="formData.bonusAmount = ''"
|
||||||
class="ml-2"
|
class="ml-2"
|
||||||
/>
|
/>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
|
@ -112,7 +115,7 @@
|
||||||
<el-input v-model="formData.bonusAmount" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入奖金评估描述" />
|
<el-input v-model="formData.bonusAmount" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入奖金评估描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8" v-if="formData.bonusEvaluation">
|
<el-col :span="8" v-if="formData.bonusEvaluation && formType">
|
||||||
<el-form-item label="项目进度(%)" prop="progress">
|
<el-form-item label="项目进度(%)" prop="progress">
|
||||||
<el-input v-model="formData.progress" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入奖金评估描述" />
|
<el-input v-model="formData.progress" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入奖金评估描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -178,7 +181,7 @@
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
团队成员
|
团队成员
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<Bonus ref="formRef" v-if="formData.auditStatus == 2" :userOptions="userOptions" :id="formData.id" @success="getData" />
|
<Bonus v-if="formData.auditStatus == 2" :userOptions="userOptions" :id="formData.id" @success="getData" />
|
||||||
|
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
任务信息
|
任务信息
|
||||||
|
|
@ -214,6 +217,13 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
type: propTypes.number.def(undefined),
|
type: propTypes.number.def(undefined),
|
||||||
})
|
})
|
||||||
|
const pickerOptions = ref({
|
||||||
|
start: {
|
||||||
|
disabledDate(time) {
|
||||||
|
return time.getTime() < Date.now() - 86400000; // 禁用过去的时间(可选)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const deptTree = ref() // 部门树形结构
|
const deptTree = ref() // 部门树形结构
|
||||||
|
|
@ -227,6 +237,11 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const validateProgress = (_: any, __: any, callback: any) => {
|
const validateProgress = (_: any, __: any, callback: any) => {
|
||||||
const num = Number(formData.value.progress)
|
const num = Number(formData.value.progress)
|
||||||
|
|
||||||
|
if(!num) {
|
||||||
|
callback()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
if (num <= 0 || num >100) {
|
if (num <= 0 || num >100) {
|
||||||
callback(new Error('请输入正确的项目进度'))
|
callback(new Error('请输入正确的项目进度'))
|
||||||
return
|
return
|
||||||
|
|
@ -234,6 +249,17 @@ const validateProgress = (_: any, __: any, callback: any) => {
|
||||||
|
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
|
const disabledStartDate = computed(() => {
|
||||||
|
return (time) => {
|
||||||
|
return formData.value.endDate ? time.getTime() > new Date(formData.value.endDate).getTime() - 60 * 60 * 24 * 1000 : false;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
//结束时间限制
|
||||||
|
const disabledEndDate = computed(() => {
|
||||||
|
return (time) => {
|
||||||
|
return formData.value.startDate ? time.getTime() < new Date(formData.value.startDate).getTime() : false; // 开始时间存在时禁用之前及同一天的日期。
|
||||||
|
};
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectCode: undefined,
|
projectCode: undefined,
|
||||||
|
|
@ -265,6 +291,7 @@ const formRules = reactive({
|
||||||
background: [{ required: true, message: '项目背景不能为空', trigger: 'blur' }],
|
background: [{ required: true, message: '项目背景不能为空', trigger: 'blur' }],
|
||||||
introduction: [{ required: true, message: '项目简介不能为空', trigger: 'blur' }],
|
introduction: [{ required: true, message: '项目简介不能为空', trigger: 'blur' }],
|
||||||
progress: [{ validator: validateProgress, trigger: 'blur' }],
|
progress: [{ validator: validateProgress, trigger: 'blur' }],
|
||||||
|
bonusAmount:[{ required: true, message: '立项奖金金额不能为空', trigger: 'blur' }],
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in userOptions"
|
v-for="dict in userOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.nickname"
|
:label="dict.name"
|
||||||
:value="dict.id"
|
:value="dict.userId"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<el-form-item label="任务负责人" prop="userId">
|
<el-form-item label="任务负责人" prop="userId">
|
||||||
<el-select v-model="formData.userId" placeholder="请选择成员姓名">
|
<el-select v-model="formData.userId" placeholder="请选择成员姓名">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in userOptions"
|
v-for="dict in TaskOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
:label="dict.nickname"
|
:label="dict.nickname"
|
||||||
:value="dict.id"
|
:value="dict.id"
|
||||||
|
|
@ -111,6 +111,7 @@ const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
userOptions: propTypes.object.def([]),
|
userOptions: propTypes.object.def([]),
|
||||||
|
TaskOptions: propTypes.object.def([]),
|
||||||
})
|
})
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
<!-- 表单弹窗:添加/修改 -->
|
||||||
<ProjectTaskForm ref="formRef" @success="getList" :userOptions="userOptions" />
|
<ProjectTaskForm ref="formRef" @success="getList" :userOptions="userOptions" :TaskOptions="TaskOptions" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -88,11 +88,14 @@ import { dateFormatter } from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { ProjectTaskApi, ProjectTaskVO } from '@/api/task/task'
|
import { ProjectTaskApi, ProjectTaskVO } from '@/api/task/task'
|
||||||
import ProjectTaskForm from './ProjectTaskForm.vue'
|
import ProjectTaskForm from './ProjectTaskForm.vue'
|
||||||
|
import { ProjectBonusApi, ProjectBonusVO } from '@/api/task/bonus'
|
||||||
|
import * as UserApi from '@/api/system/user'
|
||||||
|
|
||||||
/** 任务 列表 */
|
/** 任务 列表 */
|
||||||
defineOptions({ name: 'ProjectTask' })
|
defineOptions({ name: 'ProjectTask' })
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
|
||||||
|
const TaskOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|
@ -202,6 +205,8 @@ const getName = (opt, val) => {
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(async() => {
|
onMounted(async() => {
|
||||||
|
const data = await ProjectBonusApi.getProjectBonusPage(queryParams)
|
||||||
|
TaskOptions.value = data.list
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
Loading…
Reference in New Issue