iZaiZaiA 2 年之前
父节点
当前提交
f6b18c6442

+ 90 - 0
src/global/components/hc-dialog/index.vue

@@ -0,0 +1,90 @@
+<template>
+    <el-dialog v-model="isShow" :title="title" :width="isWidth" class="hc-modal-border" :class="ui" draggable destroy-on-close @closed="dialogClosed">
+        <template #header v-if="isSlotHeader">
+            <slot name='header'/>
+        </template>
+        <slot></slot>
+        <template #footer v-if="footer">
+            <slot name='footer' v-if="isSlotFooter"/>
+            <div class="dialog-footer" v-else>
+                <el-button size="large" @click="dialogClosed">
+                    <HcIcon name="close"/>
+                    <span>取消</span>
+                </el-button>
+                <el-button type="primary" hc-btn :loading="isLoading" @click="buttonSaveClick">
+                    <HcIcon name="check"/>
+                    <span>{{saveText}}</span>
+                </el-button>
+            </div>
+        </template>
+    </el-dialog>
+</template>
+
+<script setup>
+import {ref, watch, useSlots} from "vue";
+const props = defineProps({
+    ui: {
+        type: String,
+        default: ''
+    },
+    show: {
+        type: Boolean,
+        default: false
+    },
+    title: {
+        type: [String,Number],
+        default: 'dialog'
+    },
+    widths: {
+        type: String,
+        default: '38rem'
+    },
+    loading: {
+        type: Boolean,
+        default: false
+    },
+    footer: {
+        type: Boolean,
+        default: true
+    },
+    saveText: {
+        type: [String,Number],
+        default: '提交'
+    },
+})
+
+//变量
+const isShow = ref(props.show)
+const isWidth = ref(props.widths)
+const isLoading = ref(props.loading)
+
+//监听
+watch(() => [
+    props.show,
+    props.widths,
+    props.loading,
+], ([show, width, loading]) => {
+    isShow.value = show
+    isWidth.value = width
+    isLoading.value = loading
+})
+
+
+//判断<slot>是否有传值
+const slots = useSlots()
+const isSlotHeader = ref(!!slots.header);
+const isSlotFooter = ref(!!slots.footer);
+
+const emit = defineEmits(['close', 'save'])
+
+//关闭
+const dialogClosed = () => {
+    isShow.value = false
+    emit('close', false)
+}
+
+//按钮保存
+const buttonSaveClick = () => {
+    emit('save')
+}
+</script>

+ 9 - 1
src/global/components/hc-drawer/index.vue

@@ -1,7 +1,7 @@
 <template>
     <Suspense v-if="isBody">
         <Teleport :to="`#${toId}`">
-            <el-drawer :custom-class="`hc-drawer-box ${ui}`" v-model="isShow" :with-header="false" :direction="direction" :size="size">
+            <el-drawer :custom-class="`hc-drawer-box ${ui}`" v-model="isShow" :with-header="false" :direction="direction" :size="size" destroy-on-close @closed="drawerClosed">
                 <HcCard :title="title" :extraText="extraText" :actionSize="actionSize" :scrollbar="scrollbar">
                     <template #header v-if="isSlotHeader">
                         <slot name='header'/>
@@ -87,6 +87,14 @@ const isSlotHeader = ref(!!slots.header);
 const isSlotExtra = ref(!!slots.extra);
 const isSlotAction = ref(!!slots.action);
 const isSlotSearchBar = ref(!!slots.search);
+
+const emit = defineEmits(['close'])
+
+//关闭
+const drawerClosed = () => {
+    isShow.value = false
+    emit('close', false)
+}
 </script>
 
 <style lang="scss">

+ 1 - 1
src/global/components/hc-report-modal/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog v-model="isShow" :title="title" width="47rem" class="hc-modal-border">
+    <el-dialog v-model="isShow" :title="title" width="47rem" class="hc-modal-border" draggable destroy-on-close @closed="cancelReportClick">
         <el-form ref="formRef" :model="formModel" :rules="formRules" label-width="auto" size="large">
             <el-form-item label="任务名称" prop="taskName">
                 <el-input v-model="formModel.taskName" disabled/>

+ 2 - 2
src/global/components/hc-sms-auth/index.vue

@@ -1,5 +1,5 @@
 <template>
-    <el-dialog v-model="showModal" title="短信认证" width="26rem" class="hc-modal-border">
+    <el-dialog v-model="showModal" title="短信认证" width="26rem" class="hc-modal-border" draggable destroy-on-close @closed="cancelClick">
         <el-form ref="reportFormRef" :model="reportModel" :rules="reportRules" label-width="auto" size="large">
             <el-form-item label="手机号码">
                 <el-input v-model="phoneVal" placeholder="手机号码" disabled/>
@@ -152,7 +152,7 @@ const cancelClick = () => {
 //确认
 const confirmClick = async () => {
     const validate = await formValidate(reportFormRef.value)
-    if (!validate) {
+    if (validate) {
         emit('confirm')
     }
 }

+ 2 - 2
src/global/components/hc-tasks-user/index.vue

@@ -11,7 +11,7 @@
         </div>
 
         <!--选择任务人-->
-        <el-dialog v-model="showModal" title="选择任务人" width="62rem" class="hc-modal-border hc-modal-nop">
+        <el-dialog v-model="showModal" title="选择任务人" width="62rem" class="hc-modal-border hc-modal-nop" draggable destroy-on-close>
             <div class="hc-tasks-user-modal-content-box">
                 <div class="tree-box">
                     <el-scrollbar>
@@ -61,7 +61,7 @@
         </el-dialog>
 
         <!--调整顺序-->
-        <el-dialog v-model="sequenceModal" title="调整顺序" width="38rem" class="hc-modal-border">
+        <el-dialog v-model="sequenceModal" title="调整顺序" width="38rem" class="hc-modal-border" draggable destroy-on-close>
             <el-alert title="可拖动排序,也可在后面点击图标,切换排序" type="warning" :closable="false"/>
             <div class="sort-node-body-box list-group header">
                 <div class="list-group-item">

+ 2 - 0
src/global/components/index.js

@@ -4,6 +4,7 @@ import HcCard from './hc-card/index.vue'
 import HcTable from './hc-table/index.vue'
 import HcPages from './hc-page/index.vue'
 import HcDrawer from './hc-drawer/index.vue'
+import HcDialog from './hc-dialog/index.vue'
 import HcUploads from './hc-uploads/index.vue'
 import HcCounter from './hc-counter/index.vue'
 import HcTooltip from './hc-tooltip/index.vue'
@@ -25,6 +26,7 @@ export const setupComponents = (App) => {
     App.component('HcTable', HcTable)
     App.component('HcPages', HcPages)
     App.component('HcDrawer', HcDrawer)
+    App.component('HcDialog', HcDialog)
     App.component('HcUploads', HcUploads)
     App.component('HcCounter', HcCounter)
     App.component('HcTooltip', HcTooltip)

+ 18 - 31
src/views/data-fill/components/ListItem.vue

@@ -75,14 +75,17 @@
             </template>
         </el-collapse>
     </div>
+
     <!--右键菜单-->
-    <HcContextMenu ref="contextMenuRef" :datas="tableFormMenu" @item-click="handleMenuSelect"></HcContextMenu>
+    <HcContextMenu ref="contextMenuRef" :datas="tableFormMenu" @item-click="handleMenuSelect"/>
+
     <!--上传文件-->
-    <el-dialog v-model="uploadModal" title="上传文件" width="38rem" class="hc-modal-border">
+    <HcDialog :show="uploadModal" title="上传文件" widths="38rem" :footer="false" @close="uploadModal = false">
         <HcUpload :fileList="fileListData" :datas="uploadData" @change='uploadChange'/>
-    </el-dialog>
+    </HcDialog>
+
     <!--插入设计值/频率-->
-    <el-dialog v-model="IDVFModal" title="插入设计值/频率" width="600px" class="hc-modal-border">
+    <HcDialog :show="IDVFModal" title="插入设计值/频率" widths="600px" saveText="确认插入" @close="IDVFModal = false" @save="IDVFModal = false">
         <el-alert title="填写完设计值和频率,系统自动计算实测值" type="warning" :closable="false"/>
         <el-form ref="formIDVFRef" :model="formIDVFModel" :rules="formIDVFRules" label-width="auto" size="large">
             <el-form-item label="设计值" prop="designValue">
@@ -92,15 +95,10 @@
                 <el-input v-model="formIDVFModel.frequency" placeholder="请输入频率"/>
             </el-form-item>
         </el-form>
-        <template #footer>
-            <div class="dialog-footer">
-                <el-button size="large" @click="IDVFModal = false">取消</el-button>
-                <el-button type="primary" hc-btn @click="IDVFModal = false">确认插入</el-button>
-            </div>
-        </template>
-    </el-dialog>
+    </HcDialog>
+
     <!--插入特殊字符-->
-    <el-dialog v-model="specialModal" title="插入特殊字符" width="600px" class="hc-modal-border">
+    <HcDialog :show="specialModal" title="插入特殊字符" widths="600px" saveText="确认插入" @close="specialModal = false" @save="specialNodeClick">
         <el-form ref="specialFormRef" :model="specialFormModel" :rules="specialFormRules" label-width="0px" size="large" class="mb-6">
             <el-form-item prop="val" class="special-form-item">
                 <el-input v-model="specialFormModel.val" ref="specialRef" id="specialId" placeholder="请选择特殊字符代码" clearable @blur="specialInputBlur"/>
@@ -113,23 +111,12 @@
                 </div>
             </el-col>
         </el-row>
-        <template #footer>
-            <div class="dialog-footer">
-                <el-button size="large" @click="specialModal = false">取消</el-button>
-                <el-button type="primary" hc-btn @click="specialNodeClick">确认插入</el-button>
-            </div>
-        </template>
-    </el-dialog>
+    </HcDialog>
+
     <!--关联试验数据-->
-    <el-dialog v-model="CTDModal" title="关联试验数据" width="850px" class="hc-modal-border">
+    <HcDialog :show="CTDModal" title="关联试验数据" widths="850px" saveText="确认关联" @close="CTDModal = false" @save="CTDModal = false">
         开发中...
-        <template #footer>
-            <div class="dialog-footer">
-                <el-button size="large" @click="CTDModal = false">取消</el-button>
-                <el-button type="primary" hc-btn @click="CTDModal = false">确认</el-button>
-            </div>
-        </template>
-    </el-dialog>
+    </HcDialog>
 </template>
 
 <script setup>
@@ -345,7 +332,7 @@ const delClick = async (item) => {
                 classify: classify.value,
             })
             if (!error && code === 200) {
-                window?.$message?.warning('操作成功')
+                window?.$message?.success('操作成功')
                 renewData()
             }
         } else {
@@ -365,7 +352,7 @@ const copyClick = async (item,index) => {
             if (res) {
                 const {error, code} = await wbsApi.copeBussTab({pkeyId: pkeyIds})
                 if (!error && code === 200) {
-                    window?.$message?.warning('操作成功')
+                    window?.$message?.success('操作成功')
                     renewData()
                 }
             } else {
@@ -390,7 +377,7 @@ const hideClick = async (item) => {
                 status: isBussShow
             })
             if (!error && code === 200) {
-                window?.$message?.warning('操作成功')
+                window?.$message?.success('操作成功')
                 renewData()
             }
         } else {
@@ -421,7 +408,7 @@ const uploadClick = (item) => {
             //获取文件列表
             getBussFileList(pkeyIds)
         } else {
-            window?.$message?.warning('已上报的资料,不允许上传')
+            window?.$message?.success('已上报的资料,不允许上传')
         }
     } else {
         window?.$message?.warning('pkeyId为空')

+ 15 - 21
src/views/data-fill/wbs.vue

@@ -30,7 +30,7 @@
                     <div class="dot-view blue">已填报-未上报</div>
                 </div>
             </template>
-            <HcDrawer :show="isDrawer" :scrollbar="false" actionSize="lg" to-id="wbs-node-tree-card-target">
+            <HcDrawer :show="isDrawer" :scrollbar="false" actionSize="lg" to-id="wbs-node-tree-card-target" @close="drawerClose">
                 <!--清表列表-->
                 <el-scrollbar ref="ListItemScrollRef">
                     <ListItem ref="ListItemsRef" :datas="ListItemDatas" :status="NodeStatus" :classify="authBtnTabKey" @offsetTop="ListItemOffsetTop" @renew="getTableDataAll"/>
@@ -165,20 +165,23 @@
                 </HcCard>
             </div>
         </div>
+
         <!--上传图纸-->
         <div class="upload-drawing">
             <el-upload :action="action" :accept="accept" :headers="getTokenHeader()" :before-upload="beforeUpload" :on-success="uploadFinish" :on-error="uploadError">
                 <div id="upload-drawing">上传图纸</div>
             </el-upload>
         </div>
+
         <!--查看图纸-->
         <HcDragModal title="查看图纸" :isShow="drawingsShow" closeIcon tops="100" lefts="145" widths="380px" @close="drawingsClose">
             <div class="img-preview-box">
                 <ImgPreview :src="nodeDataInfo.fileUrl" isDom toolsSm/>
             </div>
         </HcDragModal>
+
         <!--编辑节点-->
-        <el-dialog v-model="editNodeModal" title="编辑节点" width="600px" class="hc-modal-border">
+        <HcDialog :show="editNodeModal" title="编辑节点" widths="600px" :loading="editNodeLoading" @close="editNodeModal = false" @save="editNodeClick">
             <el-form ref="formEditNodeRef" :model="formEditNodeModel" :rules="formEditNodeRules" label-width="auto" size="large">
                 <el-form-item label="节点名称" prop="title">
                     <el-input v-model="formEditNodeModel.title"  placeholder="请输入节点名称"/>
@@ -195,15 +198,10 @@
                     <el-input v-model="formEditNodeModel.partitionCode" placeholder="请输入划分编号"/>
                 </el-form-item>
             </el-form>
-            <template #footer>
-                <div class="dialog-footer">
-                    <el-button size="large" @click="editNodeModal = false">取消</el-button>
-                    <el-button type="primary" hc-btn :loading="editNodeLoading" @click="editNodeClick">提交</el-button>
-                </div>
-            </template>
-        </el-dialog>
+        </HcDialog>
+
         <!--复制节点-->
-        <el-dialog v-model="copyNodeModal" title="复制节点" :width="copyNodeTabKey === '1'?'600px':'1200px'" class="hc-modal-border">
+        <HcDialog :show="copyNodeModal" title="复制节点" :widths="copyNodeTabKey === '1'?'600px':'1200px'" @close="copyNodeModal = false">
             <el-form ref="formCopyNodeModelRef" :model="formCopyNodeModel" :rules="formCopyNodeModelRules" label-width="auto" size="large" v-if="copyNodeTabKey !== '3'">
                 <el-form-item label="节点名称" prop="title" style="margin-bottom: 0;">
                     <el-input v-model="formCopyNodeModel.title" placeholder="请输入节点名称"/>
@@ -251,9 +249,10 @@
                     </div>
                 </div>
             </template>
-        </el-dialog>
+        </HcDialog>
+
         <!--新增子节点-->
-        <el-dialog v-model="addNodeModal" title="新增子节点" width="720px" class="hc-modal-border">
+        <HcDialog :show="addNodeModal" title="新增子节点" widths="720px" @close="addNodeModal = false">
             <el-alert title="双击节点,可编辑节点名称,编辑完成后,请按回车或输入框消失后,再点提交" type="warning" :closable="false"/>
             <HcTreeNode :projectId="projectId" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId" @check-change="addTreeNodeCheckChange" v-if="addTreeNodeType === '1'"/>
             <HcTreeNode :projectId="projectId" :nodeId="addTreeNodeId" :oldId="addTreeNodeOldId" strictly @check-change="addTreeNodeCheckChange" v-if="addTreeNodeType === '2'"/>
@@ -272,9 +271,10 @@
                     </div>
                 </div>
             </template>
-        </el-dialog>
+        </HcDialog>
+
         <!--调整排序-->
-        <el-dialog v-model="sortNodeModal" title="调整排序" width="700px" class="hc-modal-border">
+        <HcDialog :show="sortNodeModal" title="调整排序" widths="700px" :loading="sortNodeLoading" @close="sortNodeModal = false" @save="sortNodeClick">
             <el-alert title="可拖动排序,也可在后面点击图标,切换排序" type="warning" :closable="false"/>
             <div class="sort-node-body-box list-group header">
                 <div class="list-group-item">
@@ -299,13 +299,7 @@
                     </div>
                 </template>
             </Draggable>
-            <template #footer>
-                <div class="dialog-footer">
-                    <el-button size="large" @click="sortNodeModal = false">取消</el-button>
-                    <el-button type="primary" hc-btn :loading="sortNodeLoading" @click="sortNodeClick">提交</el-button>
-                </div>
-            </template>
-        </el-dialog>
+        </HcDialog>
         <!--批量上报审批-->
         <HcReportModal  title="批量上报审批" url="informationWriteQuery/taskOne" :show="showReportModal" :projectId="projectId" :contractId="contractId"
                         :taskName="reportTaskName" :ids="reportIds" :addition="reportAddition" @hide="showReportModal = false" @finish="showReportFinish"/>

+ 2 - 2
src/views/tasks/hc-data.vue

@@ -16,7 +16,7 @@
         </HcTabsSimple>
 
         <!--任务审核-->
-        <el-dialog v-model="showTaskReviewModal" width="80vw" class="hc-modal-border hc-modal-table">
+        <el-dialog v-model="showTaskReviewModal" width="80vw" class="hc-modal-border hc-modal-table" draggable destroy-on-close>
             <template #header="{ titleId, titleClass }">
                 <div class="hc-card-header flex items-center">
                     <div :id="titleId" :class="titleClass">任务审核 【已开启电签】</div>
@@ -61,7 +61,7 @@
         </el-dialog>
 
         <!--设置重签规则-->
-        <el-dialog v-model="showSetSignRulesModal" title="设置重签规则" width="38rem" class="hc-modal-border">
+        <el-dialog v-model="showSetSignRulesModal" title="设置重签规则" width="38rem" class="hc-modal-border" draggable destroy-on-close>
             <div class="text-orange mb-10">
                 <span class="mr-4">提示:设置默认时长,在任务被废除需要重签的时候,规定的重签上报时间提示时间段内,系统提示用户重签信息,但是超过处理时间,系统可默认自动授权重签</span>
                 <el-checkbox v-model="setPactVal" label="Option 1" size="large">