ZaiZai 1 rok temu
rodzic
commit
3b041c508d

+ 1 - 1
src/views/debit-pay/start-work/order.vue

@@ -105,7 +105,7 @@ import { backMeterTask } from '~api/other'
 import { useAppStore } from '~src/store'
 import HcDataModal from './components/order/dataModal.vue'
 import HcTaskModal from '~src/components/task-modal/task-modal.vue'
-import { getArrValue, getObjValue, isNullES } from 'js-fast-way'
+import { deepClone, getArrValue, getObjValue, isNullES } from 'js-fast-way'
 import mainApi from '~api/debit-pay/start-work/order.js'
 import periodApi from '~api/debit-pay/material/periods.js'
 import { HcDelMsg } from 'hc-vue3-ui'

+ 196 - 80
src/views/tasks/components/hc-data/task-review.vue

@@ -86,113 +86,193 @@
                                 </hc-table>
                                 <div v-if="tabKey === '2'" class="hc-task-body-table-form">
                                     <template v-if="rowInfo.meterType === 1 || rowInfo.meterType === 3">
-                                        <div class="title">意见信息</div>
+                                        <div class="title-box">
+                                            <div class="title">名称(开发中...)</div>
+                                            <div class="text">审批意见</div>
+                                        </div>
+
                                         <div class="name">总监理工程师意见:</div>
-                                        <div class="input">
-                                            <el-input v-model="meterApproveOpinion2.chiefSupervisor" :disabled="meterApproveOpinion1.chiefSupervisor" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
-                                            <div v-if="meterApproveOpinion1.chiefSupervisorUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                <span>工程部:{{ meterApproveOpinion1.chiefSupervisorUserName }}</span>
-                                                <span class="ml-40px">{{ meterApproveOpinion1.chiefSupervisorTime }}</span>
+                                        <div v-if="meterApproveOpinion1.chiefSupervisor" class="text-box hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.chiefSupervisor }}</div>
+                                            <div v-if="meterApproveOpinion1.chiefSupervisorUserName" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.chiefSupervisorUserName }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.chiefSupervisorTime }}</div>
+                                            </div>
+                                        </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.chiefSupervisor" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                        </div>
+
+                                        <div class="name hc-bt-0">项目经理意见:</div>
+                                        <div v-if="meterApproveOpinion1.supervisorAudit19" class="text-box hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.supervisorAudit19 }}</div>
+                                            <div v-if="meterApproveOpinion1.supervisorAudit19" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.supervisorAudit19 }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.supervisorAudit19 }}</div>
+                                            </div>
+                                        </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.supervisorAudit19" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" placeholder="开发中..." />
+                                        </div>
+
+                                        <div class="name hc-bt-0">合同监理工程师意见:</div>
+                                        <div v-if="meterApproveOpinion1.supervisorAudit20" class="text-box hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.supervisorAudit20 }}</div>
+                                            <div v-if="meterApproveOpinion1.supervisorAudit20" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.supervisorAudit20 }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.supervisorAudit20 }}</div>
+                                            </div>
+                                        </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.supervisorAudit20" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" placeholder="开发中..." />
+                                        </div>
+
+                                        <div class="name hc-bt-0">业主代表意见:</div>
+                                        <div v-if="meterApproveOpinion1.supervisorAudit21" class="text-box hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.supervisorAudit21 }}</div>
+                                            <div v-if="meterApproveOpinion1.supervisorAudit21" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.supervisorAudit21 }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.supervisorAudit21 }}</div>
                                             </div>
                                         </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.supervisorAudit21" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" placeholder="开发中..." />
+                                        </div>
+
+                                        <div class="name hc-bt-0">总监理工程师意见:</div>
+                                        <div v-if="meterApproveOpinion1.supervisorAudit22" class="text-box hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.supervisorAudit22 }}</div>
+                                            <div v-if="meterApproveOpinion1.supervisorAudit22" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.supervisorAudit22 }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.supervisorAudit22 }}</div>
+                                            </div>
+                                        </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.supervisorAudit22" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" placeholder="开发中..." />
+                                        </div>
+
                                         <template v-if="rowInfo.meterType === 3">
-                                            <div class="name">监理审核意见:</div>
-                                            <div class="input">
-                                                <el-input v-model="meterApproveOpinion2.supervisorAudit" :disabled="meterApproveOpinion1.supervisorAudit" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
-                                                <div v-if="meterApproveOpinion1.supervisorAuditUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                    <span>工程部:{{ meterApproveOpinion1.supervisorAuditUserName }}</span>
-                                                    <span class="ml-40px">{{ meterApproveOpinion1.supervisorAuditTime }}</span>
+                                            <div class="name hc-bt-0">监理审核意见:</div>
+                                            <div v-if="meterApproveOpinion1.supervisorAudit" class="text-box hc-bt-0">
+                                                <div class="content">{{ meterApproveOpinion1.supervisorAudit }}</div>
+                                                <div v-if="meterApproveOpinion1.supervisorAuditUserName" class="sign-name">
+                                                    <div class="user-name">工程部:{{ meterApproveOpinion1.supervisorAuditUserName }}</div>
+                                                    <div class="user-time">{{ meterApproveOpinion1.supervisorAuditTime }}</div>
                                                 </div>
                                             </div>
+                                            <div v-else class="input hc-bt-0">
+                                                <el-input v-model="meterApproveOpinion2.supervisorAudit" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                            </div>
                                         </template>
+
                                         <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 v-if="meterApproveOpinion1.projectBuildUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.projectBuildUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.projectBuildTime }}</span>
+                                                <div class="name hc-bt-0">工程建设部意见:</div>
+                                                <div v-if="meterApproveOpinion1.projectBuild" class="text-box hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.projectBuild }}</div>
+                                                    <div v-if="meterApproveOpinion1.projectBuildUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.projectBuildUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.projectBuildTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.projectBuild" :autosize="{ minRows: 2, maxRows: 4 }" 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 v-if="meterApproveOpinion1.projectBuildLeaderUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.projectBuildLeaderUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.projectBuildLeaderTime }}</span>
+                                                <div class="name no-b hc-bt-0">分管领导意见:</div>
+                                                <div v-if="meterApproveOpinion1.projectBuildLeader" class="text-box no-b hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.projectBuildLeader }}</div>
+                                                    <div v-if="meterApproveOpinion1.projectBuildLeaderUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.projectBuildLeaderUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.projectBuildLeaderTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input no-b hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.projectBuildLeader" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                                </div>
                                             </div>
                                         </div>
                                         <div v-if="rowInfo.meterType === 1" 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 v-if="meterApproveOpinion1.safetyManagerUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.safetyManagerUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.safetyManagerTime }}</span>
+                                                <div class="name hc-bt-0">安全管理部意见:</div>
+                                                <div v-if="meterApproveOpinion1.safetyManager" class="text-box no-b hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.safetyManager }}</div>
+                                                    <div v-if="meterApproveOpinion1.safetyManagerUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.safetyManagerUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.safetyManagerTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.safetyManager" :autosize="{ minRows: 2, maxRows: 4 }" 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 v-if="meterApproveOpinion1.safetyManagerLeader" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.safetyManagerLeaderUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.safetyManagerLeaderTime }}</span>
+                                                <div class="name no-b hc-bt-0">分管领导意见:</div>
+                                                <div v-if="meterApproveOpinion1.safetyManagerLeader" class="text-box no-b hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.safetyManagerLeader }}</div>
+                                                    <div v-if="meterApproveOpinion1.safetyManagerLeaderUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.safetyManagerLeaderUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.safetyManagerLeaderTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input no-b hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.safetyManagerLeader" :autosize="{ minRows: 2, maxRows: 4 }" 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 v-if="meterApproveOpinion1.contractDeptUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.contractDeptUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.contractDeptTime }}</span>
+                                                <div class="name hc-bt-0">合同部意见:</div>
+                                                <div v-if="meterApproveOpinion1.contractDept" class="text-box no-b hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.contractDept }}</div>
+                                                    <div v-if="meterApproveOpinion1.contractDeptUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.contractDeptUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.contractDeptTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.contractDept" :autosize="{ minRows: 2, maxRows: 4 }" 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 v-if="meterApproveOpinion1.contractDeptLeaderUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.contractDeptLeaderUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.contractDeptLeaderTime }}</span>
+                                                <div class="name no-b hc-bt-0">分管领导意见:</div>
+                                                <div v-if="meterApproveOpinion1.contractDeptLeader" class="text-box no-b hc-bt-0">
+                                                    <div class="content">{{ meterApproveOpinion1.contractDeptLeader }}</div>
+                                                    <div v-if="meterApproveOpinion1.contractDeptLeaderUserName" class="sign-name">
+                                                        <div class="user-name">工程部:{{ meterApproveOpinion1.contractDeptLeaderUserName }}</div>
+                                                        <div class="user-time">{{ meterApproveOpinion1.contractDeptLeaderTime }}</div>
                                                     </div>
                                                 </div>
+                                                <div v-else class="input no-b hc-bt-0">
+                                                    <el-input v-model="meterApproveOpinion2.contractDeptLeader" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                                </div>
                                             </div>
                                         </div>
-                                        <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 v-if="meterApproveOpinion1.generalManagerUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.generalManagerUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.generalManagerTime }}</span>
-                                                    </div>
-                                                </div>
+
+                                        <div class="name hc-bt-0">总经理意见:</div>
+                                        <div v-if="meterApproveOpinion1.generalManager" class="text-box no-b hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.generalManager }}</div>
+                                            <div v-if="meterApproveOpinion1.generalManagerUserName" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.generalManagerUserName }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.generalManagerTime }}</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 v-if="meterApproveOpinion1.chiefExecutiveUserName" class="mb-10px mt-10px text-right text-12px" style="color: gray;">
-                                                        <span>工程部:{{ meterApproveOpinion1.chiefExecutiveUserName }}</span>
-                                                        <span class="ml-40px">{{ meterApproveOpinion1.chiefExecutiveTime }}</span>
-                                                    </div>
-                                                </div>
+                                        </div>
+                                        <div v-else class="input hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.generalManager" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                        </div>
+
+                                        <div class="name no-b hc-bt-0">董事长意见:</div>
+                                        <div v-if="meterApproveOpinion1.chiefExecutive" class="text-box no-b hc-bt-0">
+                                            <div class="content">{{ meterApproveOpinion1.chiefExecutive }}</div>
+                                            <div v-if="meterApproveOpinion1.chiefExecutiveUserName" class="sign-name">
+                                                <div class="user-name">工程部:{{ meterApproveOpinion1.chiefExecutiveUserName }}</div>
+                                                <div class="user-time">{{ meterApproveOpinion1.chiefExecutiveTime }}</div>
                                             </div>
                                         </div>
+                                        <div v-else class="input no-b hc-bt-0">
+                                            <el-input v-model="meterApproveOpinion2.chiefExecutive" :autosize="{ minRows: 2, maxRows: 4 }" type="textarea" />
+                                        </div>
                                     </template>
                                     <template v-else>
                                         <hc-empty />
@@ -560,8 +640,8 @@ const rowViewPdf = async () => {
 //选项卡
 const tabKey = ref('1')
 const tabsData = [
-    { key: '1', name: '计量单信息' },
     { key: '2', name: '意见信息' },
+    { key: '1', name: '计量单信息' },
 ]
 const tabsChange = ({ key }) => {
     tabKey.value = key
@@ -647,41 +727,77 @@ const tabsChange = ({ key }) => {
             position: relative;
             height: 100%;
             overflow: auto;
-            .title {
+            .title-box {
                 position: relative;
+                text-align: center;
+                margin-bottom: 10px;
+                .title {
+                    font-size: 18px;
+                }
+                .text {
+                    font-size: 15px;
+                    margin-top: 20px;
+                }
+            }
+            .text-box {
+                position: relative;
+                border: 1px solid #4b4b4b;
+                padding: 8px 3px;
                 display: flex;
                 align-items: center;
-                justify-content: center;
-                font-size: 18px;
-                border: 1px solid #e5e6ea;
-                height: 50px;
+                font-size: 12px;
+                .content {
+                    position: relative;
+                    flex: 1;
+                    padding-right: 20px;
+                }
+                .sign-name {
+                    position: relative;
+                    .user-time {
+                        margin-top: 10px;
+                    }
+                }
             }
             .name {
                 position: relative;
                 display: flex;
                 align-items: center;
                 font-size: 13px;
-                border: 1px solid #e5e6ea;
-                padding: 10px;
-                border-top: 0;
+                border: 1px solid #4b4b4b;
+                background: #ced7e1;
+                padding: 8px 3px;
             }
             .input {
                 position: relative;
-                border: 1px solid #e5e6ea;
-                padding: 6px;
-                border-top: 0;
+                border: 1px solid #4b4b4b;
+                padding: 2px;
             }
             .input-box {
                 position: relative;
                 display: flex;
                 .box {
                     position: relative;
-                    width: 50%;
+                    flex: 1;
+                    display: flex;
+                    flex-direction: column;
+                    .name {
+                        flex-shrink: 0;
+                    }
+                    .text-box {
+                        flex: 1;
+                        flex-basis: auto;
+                    }
                 }
                 .no-b {
                     border-left: 0;
                 }
             }
+            .hc-bt-0 {
+                border-top: 0;
+            }
+            .hc-bb-0 {
+                border-bottom: 0;
+            }
         }
     }
     .hc-task-body-tip {