ZaiZai 1 år sedan
förälder
incheckning
c4642d42e9

+ 16 - 0
src/api/modules/tasks/flow.js

@@ -82,4 +82,20 @@ export default {
         }, msg)
     },
 
+    //获取任务名称
+    async reportTaskName(form) {
+        return HcApi({
+            url: '/api/blade-meter/task/name',
+            method: 'get',
+            params: form,
+        }, false)
+    },
+    //任务上报
+    async reportTaskForm(form) {
+        return HcApi({
+            url: '/api/blade-meter/task/report',
+            method: 'post',
+            data: form,
+        }, false)
+    },
 }

+ 82 - 100
src/components/hc-report/hc-report.vue

@@ -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>

+ 11 - 3
src/views/debit-pay/admin/middlepay.vue

@@ -51,7 +51,7 @@
         <HcDetailsModal v-model="detailsModalShow" :project-id="projectId" :contract-id="contractId" :period-id="searchForm.contractPeriodId" />
 
         <!-- 上报弹窗 -->
-        <hc-report-dialog v-model="isReport" />
+        <hc-report-dialog v-model="isReport" :info="reportInfo" @finish="reportFinish" />
 
         <!-- 查看报表 -->
         <hc-view-report v-model="isReportDrawer" />
@@ -269,14 +269,12 @@ const rowDelClick = (row) => {
     })
 }
 
-
 //保存完成
 const addModalFinish = () => {
     addModalShow.value = false
     getTableData()
 }
 
-
 //收方清单明细
 const detailsModalShow = ref(false)
 const detailsModalClick = () => {
@@ -285,9 +283,19 @@ const detailsModalClick = () => {
 
 //是否上报
 const isReport = ref(false)
+const reportInfo = ref({})
 const reportClick = () => {
+    reportInfo.value = {
+        type: 1,
+        periodId: searchForm.value.contractPeriodId,
+    }
     isReport.value = true
 }
 
+//上报完成
+const reportFinish = () => {
+    window.location.reload()
+}
+
 const isReportDrawer = ref(false)
 </script>