240 lines
8.0 KiB
Vue
240 lines
8.0 KiB
Vue
<template>
|
||
<ContentWrap>
|
||
<processForm
|
||
ref="formRef"
|
||
:model="formData"
|
||
:rules="formRules"
|
||
:fields="formFields"
|
||
label-width="120px"
|
||
v-loading="formLoading"
|
||
>
|
||
<template #briefStartDate>
|
||
<el-col :span="8">
|
||
<el-form-item label="简报开始日期" prop="briefStartDate">
|
||
<el-date-picker
|
||
v-model="formData.briefStartDate"
|
||
type="date"
|
||
:disabled="formFields.briefStartDate !== 2 || isTrue"
|
||
value-format="YYYY-MM-DD"
|
||
placeholder="选择简报开始日期"
|
||
/>
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #briefEndDate>
|
||
<el-col :span="8">
|
||
<el-form-item label="简报结束日期" prop="briefEndDate">
|
||
<el-date-picker
|
||
:disabled="formFields.briefEndDate !== 2 || isTrue"
|
||
v-model="formData.briefEndDate"
|
||
type="date"
|
||
value-format="YYYY-MM-DD"
|
||
placeholder="选择简报结束日期"
|
||
/>
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #selectCustomer>
|
||
<el-col :span="8">
|
||
<el-form-item label="是否选择客户" prop="selectCustomer">
|
||
<el-radio-group v-model="formData.selectCustomer" :disabled="formFields.selectCustomer !== 2 || isTrue">
|
||
<el-radio :label="true">是</el-radio>
|
||
<el-radio :label="false">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #other>
|
||
<el-col :span="24">
|
||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
||
选择客户
|
||
</ContentWrap>
|
||
<CustomerForm ref="customerFormRef" :formFields="formFields" :userOptions="userOptions" :type="1" :dataList="formData.followUpRecords" v-if="formData.selectCustomer" />
|
||
<ContentWrap style="border: none;font-weight: 700" >
|
||
选择任务
|
||
</ContentWrap>
|
||
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" :formFields="formFields" />
|
||
<!-- <ContentWrap style="border: none;font-weight: 700" >
|
||
日报信息
|
||
</ContentWrap>
|
||
<DayReportForm :reportType="2" :type="1" ref="dayReportFormRef" :time="time" /> -->
|
||
</el-col>
|
||
</template>
|
||
<template #workComplate>
|
||
<el-col :span="24">
|
||
<el-form-item label="本月完成工作" prop="workComplate">
|
||
<el-input type="textarea" :disabled="formFields.workComplate !== 2 || isTrue" :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #workPlan>
|
||
<el-col :span="24">
|
||
<el-form-item label="下月工作计划" prop="workPlan">
|
||
<el-input type="textarea" :disabled="formFields.workPlan !== 2 || isTrue" :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #workAssistance>
|
||
<el-col :span="24">
|
||
<el-form-item label="工作困难及协助" prop="workAssistance">
|
||
<el-input type="textarea" :disabled="formFields.workAssistance !== 2 || isTrue" :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
<template #attachment>
|
||
<el-col :span="24">
|
||
<el-form-item label="附件" prop="attachment">
|
||
<UploadFile v-model="formData.attachment" :disabled="formFields.attachment !== 2 || isTrue" :limit="1" :fileType="['doc','docx']"/>
|
||
</el-form-item>
|
||
</el-col>
|
||
</template>
|
||
</processForm>
|
||
</ContentWrap>
|
||
</template>
|
||
<script setup lang="ts">
|
||
import { getIntDictOptions, getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
|
||
import { BriefWorkApi, BriefWorkVO } from '@/api/task/briefWork'
|
||
import { useUserStore } from '@/store/modules/user'
|
||
import CustomerForm from '../briefWeekWork/components/selectCustomer.vue'
|
||
import TaskForm from '../briefWeekWork/components/selectTask.vue'
|
||
import DayReportForm from '../briefWeekWork/components/selectDayReport.vue'
|
||
import { propTypes } from '@/utils/propTypes'
|
||
import * as UserApi from '@/api/system/user'
|
||
import { getLimitForm } from '@/api/bpm/form'
|
||
|
||
/** 工作简报 表单 */
|
||
defineOptions({ name: 'BriefWorkForm' })
|
||
const { proxy }: any = getCurrentInstance();
|
||
const props = defineProps({
|
||
id: propTypes.number.def(undefined)
|
||
})
|
||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||
const isTrue = ref(false)
|
||
const { t } = useI18n() // 国际化
|
||
const message = useMessage() // 消息弹窗
|
||
const dialogTitle = ref('') // 弹窗的标题
|
||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||
const time = ref([]) //
|
||
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||
briefStartDate: 1,
|
||
briefEndDate: 1,
|
||
selectCustomer: 1,
|
||
other: 1,
|
||
workComplate: 1 ,
|
||
workPlan: 1,
|
||
workAssistance: 1,
|
||
attachment: 1,
|
||
name: 1,
|
||
followUpStatus: 1 ,
|
||
contactLastContent: 1,
|
||
contactLastTime: 1,
|
||
followUpUserId: 1,
|
||
taskName: 1,
|
||
taskLevel: 1,
|
||
userId: 1,
|
||
taskDescribe: 1,
|
||
})
|
||
const formData = ref({
|
||
id: undefined,
|
||
briefType: 3,
|
||
selectCustomer: true,
|
||
briefCount: undefined,
|
||
briefStartDate: undefined,
|
||
briefEndDate: undefined,
|
||
workComplate: undefined,
|
||
workPlan: undefined,
|
||
workAssistance: undefined,
|
||
workExperience: undefined,
|
||
attachment: undefined,
|
||
processInstanceId: undefined,
|
||
auditStatus: undefined
|
||
})
|
||
const formRules = reactive({
|
||
briefStartDate: [{ required: true, message: '简报日期不能为空', trigger: 'blur' }],
|
||
workComplate: [{ required: true, message: '本月期完成工作不能为空', trigger: 'blur' }],
|
||
workPlan: [{ required: true, message: '下月工作计划不能为空', trigger: 'blur' }]
|
||
})
|
||
|
||
const formRef = ref() // 表单 Ref
|
||
const customerFormRef = ref() // 表单 Ref
|
||
const taskFormRef = ref() // 表单 Ref
|
||
const dayReportFormRef = ref() // 表单 Ref
|
||
|
||
const goBack = ()=> {
|
||
proxy.$router.go(-1)
|
||
}
|
||
|
||
const open = async (id?: number) => {
|
||
resetForm()
|
||
// 修改时,设置数据
|
||
if (id) {
|
||
formLoading.value = true
|
||
try {
|
||
formData.value = await BriefWorkApi.getBriefWork({id: id, briefType: 3})
|
||
time.value = [formData.value.briefStartDate + ' 00:00:00', formData.value.briefEndDate + ' 23:59:59']
|
||
} finally {
|
||
formLoading.value = false
|
||
}
|
||
}
|
||
}
|
||
|
||
/** 重置表单 */
|
||
const resetForm = () => {
|
||
formData.value = {
|
||
id: undefined,
|
||
briefType: 1,
|
||
briefCount: undefined,
|
||
briefStartDate: undefined,
|
||
briefEndDate: undefined,
|
||
selectCustomer: true,
|
||
workComplate: undefined,
|
||
workPlan: undefined,
|
||
workAssistance: undefined,
|
||
workExperience: undefined,
|
||
attachment: undefined,
|
||
processInstanceId: undefined,
|
||
auditStatus: undefined
|
||
}
|
||
// formRef.value?.resetFields()
|
||
}
|
||
|
||
const route = useRoute();
|
||
//获取字段权限
|
||
const getLimit = async () => {
|
||
let data = {
|
||
modelNodeId: route.query.taskDefinitionKey,
|
||
processDefinitionId: route.query.processDefinitionId
|
||
}
|
||
let field = await getLimitForm(data)
|
||
formFields.value = Object.assign(formFields.value, field.fields)
|
||
|
||
for(let key in formFields.value) {
|
||
let newKey = key
|
||
if(formFields.value.hasOwnProperty(newKey)) {
|
||
field.fields.map( v => {
|
||
let newKey = v.field
|
||
if(v.field.indexOf('.') > -1) {
|
||
newKey = v.field.split('.')[1]
|
||
}
|
||
|
||
if(newKey === key) formFields.value[key] = v.permission
|
||
})
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
onMounted(async () => {
|
||
formType.value = props.id || route.query.id
|
||
isTrue.value = !!route.query.isDetail
|
||
|
||
if (formType.value) await open(formType.value)
|
||
|
||
if(route.query.processDefinitionId) getLimit()
|
||
|
||
// 获得用户列表
|
||
userOptions.value = await UserApi.getSimpleUserList()
|
||
|
||
})
|
||
</script> |