|
@@ -64,24 +64,94 @@
|
|
|
<div :id="`hc_task_table_${uuid}`" class="hc-task-table">
|
|
|
<hc-body class="hc-task-body-card" padding="10px">
|
|
|
<div class="hc-task-body-table">
|
|
|
- <hc-table
|
|
|
- ref="tableRef" :column="tableColumn" :datas="tableData" :is-stripe="false"
|
|
|
- is-new :index-style="{ width: 60 }" is-current-row @row-click="tableRowClick"
|
|
|
- >
|
|
|
- <template #action="{ row }">
|
|
|
- <div class="hc-task-table-action" :class="row.isComment === 1 ? 'is-cur' : ''" @click="rowRemarkClick(row)">
|
|
|
- <i class="i-iconoir-star-solid" />
|
|
|
+ <hc-tab-card :tabs="tabsData" :tab-key="tabKey" @change="tabsChange">
|
|
|
+ <hc-table
|
|
|
+ v-if="tabKey === '1'" ref="tableRef" :column="tableColumn" :datas="tableData"
|
|
|
+ :is-stripe="false" is-new :index-style="{ width: 60 }" is-current-row
|
|
|
+ @row-click="tableRowClick"
|
|
|
+ >
|
|
|
+ <template #action="{ row }">
|
|
|
+ <div class="hc-task-table-action" :class="row.isComment === 1 ? 'is-cur' : ''" @click="rowRemarkClick(row)">
|
|
|
+ <i class="i-iconoir-star-solid" />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template #state="{ row }">
|
|
|
+ <div class="hc-task-table-state">
|
|
|
+ <i v-if="row.status === 1" class="i-iconoir-check-circle-solid is-success" />
|
|
|
+ <i v-else-if="row.status === 2" class="i-iconoir-xmark-circle-solid is-danger" />
|
|
|
+ <span v-else-if="row.status === 3">审批结束</span>
|
|
|
+ <i v-else class="i-iconoir-help-circle-solid" />
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </hc-table>
|
|
|
+ <div v-if="tabKey === '2'" class="hc-task-body-table-form">
|
|
|
+ <div class="title">意见信息</div>
|
|
|
+ <div class="name">总监理工程师意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.repealDesc" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.chiefSupervisor" type="textarea" />
|
|
|
+ </div>
|
|
|
+ <div class="name">监理审核意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.supervisorAudit" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.supervisorAudit" type="textarea" />
|
|
|
+ </div>
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="box">
|
|
|
+ <div class="name">工程建设部意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.projectBuild" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.projectBuild" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="box">
|
|
|
+ <div class="name no-b">分管领导意见:</div>
|
|
|
+ <div class="input no-b">
|
|
|
+ <el-input v-model="meterApproveOpinion2.projectBuildLeader" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.projectBuildLeader" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="box">
|
|
|
+ <div class="name">安全管理部意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.safetyManager" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.safetyManager" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="box">
|
|
|
+ <div class="name no-b">分管领导意见:</div>
|
|
|
+ <div class="input no-b">
|
|
|
+ <el-input v-model="meterApproveOpinion2.safetyManagerLeader" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.safetyManagerLeader" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="box">
|
|
|
+ <div class="name">合同部意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.contractDept" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.contractDept" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="box">
|
|
|
+ <div class="name no-b">分管领导意见:</div>
|
|
|
+ <div class="input no-b">
|
|
|
+ <el-input v-model="meterApproveOpinion2.contractDeptLeader" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.contractDeptLeader" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- <template #state="{ row }">
|
|
|
- <div class="hc-task-table-state">
|
|
|
- <i v-if="row.status === 1" class="i-iconoir-check-circle-solid is-success" />
|
|
|
- <i v-else-if="row.status === 2" class="i-iconoir-xmark-circle-solid is-danger" />
|
|
|
- <span v-else-if="row.status === 3">审批结束</span>
|
|
|
- <i v-else class="i-iconoir-help-circle-solid" />
|
|
|
+ <div class="input-box">
|
|
|
+ <div class="box">
|
|
|
+ <div class="name">总经理意见:</div>
|
|
|
+ <div class="input">
|
|
|
+ <el-input v-model="meterApproveOpinion2.generalManager" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.generalManager" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="box">
|
|
|
+ <div class="name no-b">董事长意见:</div>
|
|
|
+ <div class="input no-b">
|
|
|
+ <el-input v-model="meterApproveOpinion2.chiefExecutive" :autosize="{ minRows: 2, maxRows: 4 }" :disabled="meterApproveOpinion1.chiefExecutive" type="textarea" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- </template>
|
|
|
- </hc-table>
|
|
|
+ </div>
|
|
|
+ </hc-tab-card>
|
|
|
</div>
|
|
|
<div v-if="!isNullES(detailInfo.opinionType)" class="hc-task-body-tip hc-flex h-30px">
|
|
|
<span class="mr-14px">上报总金额:{{ reportAllMoney }}元</span>
|
|
@@ -119,7 +189,7 @@ import { toPdfPage } from '~uti/btn-auth'
|
|
|
import HcTaskForm from './task-form.vue'
|
|
|
import HcTaskNotes from './task-notes.vue'
|
|
|
import HcRepealForm from './repeal-form.vue'
|
|
|
-import { arrUnion, getArrValue, getObjValue, getRandom, isNullES } from 'js-fast-way'
|
|
|
+import { arrUnion, deepClone, getArrValue, getObjValue, getRandom, isNullES } from 'js-fast-way'
|
|
|
import mainApi from '~api/tasks/hc-data'
|
|
|
import certificateApi from '~api/debit-pay/admin/certificate'
|
|
|
import dayjs from 'dayjs'
|
|
@@ -205,6 +275,8 @@ const setTaskInfo = () => {
|
|
|
const detailInfo = ref({})
|
|
|
const reportAllMoney = ref('0')
|
|
|
const progressMoney = ref('0')
|
|
|
+const meterApproveOpinion1 = ref({})
|
|
|
+const meterApproveOpinion2 = ref({})
|
|
|
const isLoading = ref(false)
|
|
|
const getTableDetail = async () => {
|
|
|
isLoading.value = true
|
|
@@ -230,6 +302,10 @@ const getTableDetail = async () => {
|
|
|
})
|
|
|
flowListTask.value = arrUnion(firstarr, taskList)
|
|
|
}
|
|
|
+ //意见信息
|
|
|
+ const meterRes = getObjValue(data.meterApproveOpinion)
|
|
|
+ meterApproveOpinion2.value = deepClone(meterRes)
|
|
|
+ meterApproveOpinion1.value = meterRes
|
|
|
|
|
|
//默认选中第一行
|
|
|
let info = {}
|
|
@@ -387,6 +463,7 @@ const SMSAuthConfirm = async () => {
|
|
|
taskId: rowInfo.value.id,
|
|
|
projectId: projectId.value,
|
|
|
contractId: contractId.value,
|
|
|
+ meterApproveOpinion: meterApproveOpinion2.value,
|
|
|
})
|
|
|
if (!error && code === 200) {
|
|
|
window.$message.success('审批成功')
|
|
@@ -431,6 +508,16 @@ const rowViewPdf = async () => {
|
|
|
window.$message.error(msg ?? '操作失败')
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+//选项卡
|
|
|
+const tabKey = ref('1')
|
|
|
+const tabsData = [
|
|
|
+ { key: '1', name: '计量单信息' },
|
|
|
+ { key: '2', name: '意见信息' },
|
|
|
+]
|
|
|
+const tabsChange = ({ key }) => {
|
|
|
+ tabKey.value = key
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
@@ -508,6 +595,46 @@ const rowViewPdf = async () => {
|
|
|
.hc-task-body-table {
|
|
|
position: relative;
|
|
|
height: calc(100% - 30px);
|
|
|
+ .hc-task-body-table-form {
|
|
|
+ position: relative;
|
|
|
+ height: 100%;
|
|
|
+ overflow: auto;
|
|
|
+ .title {
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ font-size: 18px;
|
|
|
+ border: 1px solid #e5e6ea;
|
|
|
+ height: 50px;
|
|
|
+ }
|
|
|
+ .name {
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ font-size: 13px;
|
|
|
+ border: 1px solid #e5e6ea;
|
|
|
+ padding: 10px;
|
|
|
+ border-top: 0;
|
|
|
+ }
|
|
|
+ .input {
|
|
|
+ position: relative;
|
|
|
+ border: 1px solid #e5e6ea;
|
|
|
+ padding: 6px;
|
|
|
+ border-top: 0;
|
|
|
+ }
|
|
|
+ .input-box {
|
|
|
+ position: relative;
|
|
|
+ display: flex;
|
|
|
+ .box {
|
|
|
+ position: relative;
|
|
|
+ width: 50%;
|
|
|
+ }
|
|
|
+ .no-b {
|
|
|
+ border-left: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.hc-task-body-tip {
|
|
|
color: red;
|