ZaiZai 1 рік тому
батько
коміт
6e7e990307
1 змінених файлів з 128 додано та 78 видалено
  1. 128 78
      src/components/hc-report/hc-report.vue

+ 128 - 78
src/components/hc-report/hc-report.vue

@@ -1,39 +1,34 @@
 <template>
     <hc-new-dialog widths="600px" bg-color="#fff" :show="isShow" title="流程上报" @save="modalSave" @close="modalClose">
-        <el-form ref="formRef" class="p-4" label-position="top" :model="formModel" :rules="formRules" size="large">
-            <el-form-item label="任务名称" prop="key1">
-                <el-input v-model="formModel.key1" :autosize="{ minRows: 2, maxRows: 6 }" placeholder="请输入名称" type="textarea" />
+        <el-form ref="formRef" class="p-4" :model="formModel" :rules="formRules" label-width="auto" size="large">
+            <el-form-item label="任务名称" prop="taskName">
+                <el-input v-model="formModel.taskName" disabled />
             </el-form-item>
-            <el-form-item label="任务流程:" prop="fixedFlowId">
-                <el-select v-model="formModel.fixedFlowId" block @change="fixedFlowChange">
-                    <template v-for="item in fixedFlowData" :key="item.id">
-                        <el-option :label="item.name" :value="item.id" />
-                    </template>
+            <el-form-item label="任务描述" prop="taskContent">
+                <el-input v-model="formModel.taskContent" :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">
+                    <el-option v-for="item in processData" :key="item.id" :disabled="item.disabled" :value="item.id" :label="item.fixedFlowName">
+                        <el-tooltip v-if="item.tips && item.disabled" class="box-item" effect="light" :content="item.tips " placement="right-end">{{ item.fixedFlowName }}</el-tooltip>
+                    </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item v-if="linkUserString" label="下一位审批人员:">
-                <div class="form-item-div">{{ linkUserString }}</div>
+            <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>
+            <el-form-item v-else label="任务人">
+                <div class="form-item-div">{{ linkUserJoinString }}</div>
             </el-form-item>
-            <template v-else>
-                <el-form-item label="下一审批岗位:" prop="key2">
-                    <div class="form-item-div">
-                        <el-radio-group v-model="formModel.key2">
-                            <el-radio :label="3">承包商</el-radio>
-                            <el-radio :label="6">监理</el-radio>
-                            <el-radio :label="9">业主</el-radio>
-                        </el-radio-group>
-                    </div>
-                </el-form-item>
-                <el-form-item label="下一审批人员:" prop="userId">
-                    <el-select v-model="formModel.userId" block @change="userChange">
-                        <template v-for="item in userData" :key="item.id">
-                            <el-option :label="item.name" :value="item.id" />
-                        </template>
-                    </el-select>
-                </el-form-item>
-            </template>
-            <el-form-item label="上报说明:">
-                <el-input v-model="formModel.key4" :autosize="{ minRows: 3, maxRows: 6 }" placeholder="请输入上报说明" type="textarea" />
+            <el-form-item label="上报批次">
+                <hc-counter v-model="formModel.batch" />
+            </el-form-item>
+            <el-form-item label="限定审批时间">
+                <hc-counter v-model="formModel.restrictDay" text="(天)" />
             </el-form-item>
         </el-form>
     </hc-new-dialog>
@@ -41,9 +36,14 @@
 
 <script setup>
 import { ref, watch } from 'vue'
+import { arrIndex } from 'js-fast-way'
 
 const props = defineProps({
-    name: {
+    title: {
+        type: String,
+        default: '上报审批',
+    },
+    taskName: {
         type: String,
         default: '',
     },
@@ -51,6 +51,58 @@ const props = defineProps({
         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: {
+        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: () => ([]),
+    },
 })
 
 //事件
@@ -66,72 +118,70 @@ const isShow = defineModel('modelValue', {
     default: false,
 })
 
-//基础变量
-const formRef = ref(null)
-//监听
-watch(() => [
-    props.name,
-    props.ids,
-], ([name, ids]) => {
-    formModel.value = { name: name, ids: ids }
-})
-
 //监听
 watch(isShow, (val) => {
-    if (val) getFixedFlowApi()
+    if (val) {}
 })
 
-//任务流程
-const fixedFlowDefault = [{ id: 0, name: '自定义流程' }]
-const fixedFlowData = ref([])
-const getFixedFlowApi = () => {
-    if (isShow.value) {
-        fixedFlowData.value = fixedFlowDefault
-    }
-}
-//任务流程变化
-const linkUserString = ref('')
-const fixedFlowChange = (val) => {
-    if (val === 0) {
-        linkUserString.value = '测试的审批人员'
-    } else {
-        linkUserString.value = ''
-    }
-}
-
-//审批人员
-const userData = ref([{ id: 1, name: '测试的' }])
-const userChange = () => {
-
-}
+const processData = ref([])
+const projectId = ref(props.projectId)
+const contractId = ref(props.contractId)
 
-//表单变量
+//基础变量
+const formRef = ref(null)
 const formModel = ref({
-  key1: '', fixedFlowId: null,
+    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 formRules = {
-    key1: {
-        required: true,
+const formRules = ref({
+    taskContent: {
+        required: false,
         trigger: 'blur',
-        message: '请输入任务名称',
+        message: '请输入任务描述',
     },
     fixedFlowId: {
         required: true,
         trigger: 'blur',
         message: '请选择任务流程',
     },
-    key2: {
+    userTasks: {
         required: true,
         trigger: 'blur',
-        message: '请选择下一审批岗位',
-    },
-    userId: {
-        required: true,
-        trigger: 'blur',
-        message: '请选择下一审批人员',
+        message: '请选择任务人',
     },
+})
+
+//流程数据切换
+const infoIds = ref('')
+const diyProcessUser = ref(false)
+const linkUserJoinString = ref('')
+const handleProcessValue = (val) => {
+    if (val > 0) {
+        diyProcessUser.value = false
+        const list = processData.value
+        const index = arrIndex(list, 'id', val)
+        linkUserJoinString.value = list[index]?.linkUserJoinString
+    } else {
+        linkUserJoinString.value = ''
+        diyProcessUser.value = true
+    }
 }
 
+//自定义流程任务人选择完毕
+const diyProcessUserChange = (user) => {
+    formModel.value.userTasks = user
+}
+
+
 //保存
 const modalSave = () => {
     emit('finish')