|
@@ -4,8 +4,8 @@
|
|
|
<el-form-item label="任务名称" prop="taskName">
|
|
|
<el-input v-model="formModel.taskName" disabled />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="任务描述" prop="taskContent">
|
|
|
- <el-input v-model="formModel.taskContent" :autosize="{ minRows: 3, maxRows: 5 }" placeholder="请输入任务描述" type="textarea" />
|
|
|
+ <el-form-item label="任务描述">
|
|
|
+ <el-input v-model="formModel.taskDesc" :autosize="{ minRows: 3, maxRows: 5 }" placeholder="请输入任务描述" type="textarea" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="任务流程" prop="fixedFlowId">
|
|
|
<el-select v-model="formModel.fixedFlowId" block @change="handleProcessValue">
|
|
@@ -14,12 +14,8 @@
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-if="diyProcessUser" label="任务人" prop="userTasks">
|
|
|
- <hc-tasks-user
|
|
|
- :contract-id="contractId" :project-id="projectId" :type="type" :type-data="typeData"
|
|
|
- ui="w-full" :classify-type="classifyType" :table-owner="tableOwner" :node-id="formModel.ids ? formModel.ids : nodeId "
|
|
|
- :info-ids="infoIds" @change="diyProcessUserChange"
|
|
|
- />
|
|
|
+ <el-form-item v-if="diyProcessUser" label="任务人" prop="taskUserIds">
|
|
|
+ <hc-tasks-user ui="w-full" :project-id="projectId" :contract-id="contractId" @change="diyProcessUserChange" />
|
|
|
</el-form-item>
|
|
|
<el-form-item v-else label="任务人">
|
|
|
<div class="form-item-div">{{ linkUserJoinString }}</div>
|
|
@@ -36,78 +32,25 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { ref, watch } from 'vue'
|
|
|
-import { arrIndex } from 'js-fast-way'
|
|
|
+import { arrIndex, formValidate, getArrValue } from 'js-fast-way'
|
|
|
+import { useAppStore } from '~src/store'
|
|
|
+import mainApi from '~api/tasks/flow'
|
|
|
|
|
|
const props = defineProps({
|
|
|
- title: {
|
|
|
- type: String,
|
|
|
- default: '上报审批',
|
|
|
- },
|
|
|
- taskName: {
|
|
|
- type: String,
|
|
|
- default: '',
|
|
|
- },
|
|
|
- ids: {
|
|
|
- type: String,
|
|
|
- default: null,
|
|
|
- },
|
|
|
- projectId: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- contractId: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- classifyType: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- tableOwner: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- url: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- datas: {
|
|
|
- type: Array,
|
|
|
- default: () => ([]),
|
|
|
- },
|
|
|
- isDatas: {
|
|
|
- type: Boolean,
|
|
|
- default: false,
|
|
|
- },
|
|
|
- addition: {
|
|
|
+ info: {
|
|
|
type: Object,
|
|
|
default: () => ({}),
|
|
|
},
|
|
|
- type: { //first,log,wbs
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- typeData: {
|
|
|
- type: [String, Number, Array, Object],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- trialSelfInspectionRecordId: {
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- nodeId:{
|
|
|
- type: [String, Number],
|
|
|
- default: '',
|
|
|
- },
|
|
|
- reportArr: {
|
|
|
- type: Array,
|
|
|
- default: () => ([]),
|
|
|
- },
|
|
|
})
|
|
|
|
|
|
//事件
|
|
|
const emit = defineEmits(['finish', 'close'])
|
|
|
|
|
|
+//项目合同段
|
|
|
+const useAppState = useAppStore()
|
|
|
+const projectId = ref(useAppState.getProjectId || '')
|
|
|
+const contractId = ref(useAppState.getContractId || '')
|
|
|
+
|
|
|
defineOptions({
|
|
|
name: 'HcReportDialog',
|
|
|
})
|
|
@@ -118,42 +61,66 @@ const isShow = defineModel('modelValue', {
|
|
|
default: false,
|
|
|
})
|
|
|
|
|
|
+//任务数据
|
|
|
+const reportInfo = ref(props.info)
|
|
|
+watch(() => props.info, (obj) => {
|
|
|
+ reportInfo.value = obj
|
|
|
+}, { deep: true })
|
|
|
+
|
|
|
//监听
|
|
|
watch(isShow, (val) => {
|
|
|
- if (val) {}
|
|
|
+ if (val) {
|
|
|
+ getProcessData()
|
|
|
+ getReportTaskName()
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
+//获取任务名称
|
|
|
+const getReportTaskName = async () => {
|
|
|
+ const { periodId, type } = reportInfo.value
|
|
|
+ const { data } = await mainApi.reportTaskName({
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ id: periodId,
|
|
|
+ type,
|
|
|
+ })
|
|
|
+ formModel.value.taskName = data ?? ''
|
|
|
+}
|
|
|
+
|
|
|
+//任务流程
|
|
|
const processData = ref([])
|
|
|
-const projectId = ref(props.projectId)
|
|
|
-const contractId = ref(props.contractId)
|
|
|
+const processDefaultData = [
|
|
|
+ { id: 0, fixedFlowName: '自定义流程', disabled: false },
|
|
|
+]
|
|
|
+
|
|
|
+//获取流程数据
|
|
|
+const linkUserJoinString = ref('')
|
|
|
+const getProcessData = async () => {
|
|
|
+ linkUserJoinString.value = ''
|
|
|
+ const { error, code, data } = await mainApi.getPageData({
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ current: 1,
|
|
|
+ size: 100,
|
|
|
+ })
|
|
|
+ if (!error && code === 200) {
|
|
|
+ const arr = getArrValue(data['records'])
|
|
|
+ processData.value = [...processDefaultData, ...arr]
|
|
|
+ } else {
|
|
|
+ processData.value = processDefaultData
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
//基础变量
|
|
|
const formRef = ref(null)
|
|
|
-const formModel = ref({
|
|
|
- projectId: projectId.value,
|
|
|
- contractId: contractId.value,
|
|
|
- ids: props.ids,
|
|
|
- userTasks: null,
|
|
|
- taskName: props.taskName,
|
|
|
- taskContent: '',
|
|
|
- fixedFlowId: '',
|
|
|
- batch: 1,
|
|
|
- restrictDay: 1,
|
|
|
- trialSelfInspectionRecordId: props.trialSelfInspectionRecordId,
|
|
|
- ...props.addition,
|
|
|
-})
|
|
|
+const formModel = ref({ batch: 1, restrictDay: 1 })
|
|
|
const formRules = ref({
|
|
|
- taskContent: {
|
|
|
- required: false,
|
|
|
- trigger: 'blur',
|
|
|
- message: '请输入任务描述',
|
|
|
- },
|
|
|
fixedFlowId: {
|
|
|
required: true,
|
|
|
trigger: 'blur',
|
|
|
message: '请选择任务流程',
|
|
|
},
|
|
|
- userTasks: {
|
|
|
+ taskUserIds: {
|
|
|
required: true,
|
|
|
trigger: 'blur',
|
|
|
message: '请选择任务人',
|
|
@@ -161,9 +128,7 @@ const formRules = ref({
|
|
|
})
|
|
|
|
|
|
//流程数据切换
|
|
|
-const infoIds = ref('')
|
|
|
const diyProcessUser = ref(false)
|
|
|
-const linkUserJoinString = ref('')
|
|
|
const handleProcessValue = (val) => {
|
|
|
if (val > 0) {
|
|
|
diyProcessUser.value = false
|
|
@@ -178,20 +143,37 @@ const handleProcessValue = (val) => {
|
|
|
|
|
|
//自定义流程任务人选择完毕
|
|
|
const diyProcessUserChange = (user) => {
|
|
|
- formModel.value.userTasks = user
|
|
|
+ formModel.value.taskUserIds = user
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//保存
|
|
|
-const modalSave = () => {
|
|
|
- emit('finish')
|
|
|
- modalClose()
|
|
|
+const formReportLoading = ref(false)
|
|
|
+const modalSave = async () => {
|
|
|
+ const res = await formValidate(formRef.value)
|
|
|
+ if (!res) return
|
|
|
+ formReportLoading.value = true
|
|
|
+ //发起请求
|
|
|
+ const { error, code, msg } = await mainApi.reportTaskForm({
|
|
|
+ ...formModel.value,
|
|
|
+ ...reportInfo.value,
|
|
|
+ projectId: projectId.value,
|
|
|
+ contractId: contractId.value,
|
|
|
+ })
|
|
|
+ formReportLoading.value = false
|
|
|
+ if (!error && code === 200) {
|
|
|
+ window.$message?.success('上报成功')
|
|
|
+ emit('finish')
|
|
|
+ modalClose()
|
|
|
+ } else {
|
|
|
+ window.$message.error(msg ?? '上报失败')
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//关闭弹窗
|
|
|
const modalClose = () => {
|
|
|
isShow.value = false
|
|
|
- formModel.value = {}
|
|
|
+ formModel.value = { batch: 1, restrictDay: 1 }
|
|
|
+ linkUserJoinString.value = ''
|
|
|
emit('close')
|
|
|
}
|
|
|
</script>
|