duy 8 months ago
parent
commit
f981a9d68f

+ 4 - 0
src/styles/app/element.scss

@@ -243,3 +243,7 @@
 .el-tree.tree-line .el-tree__empty-block {
     min-width: unset;
 }
+.link-class.is-disabled{
+    color: #909399 !important;
+
+}

File diff suppressed because it is too large
+ 0 - 0
src/styles/app/element.wxss


+ 3 - 1
src/views/desk/wbs/drawer-wbs.vue

@@ -41,7 +41,7 @@
                 </div>
             </div>
             <div class="body">
-                <hc-body split>
+                <hc-body split :options="splitOptions">
                     <template #left>
                         <hc-card scrollbar>
                             <template #header>
@@ -326,6 +326,7 @@ import TreeNodeEditDialog from './tree-node-edit.vue'
 import createNewExcel from './create-new-excel.vue'
 import editElePage from './edit-ele.vue'
 import nodeParamDialog from './node-param-dialog.vue'
+
 const props = defineProps({
     data: {
         type: Object,
@@ -333,6 +334,7 @@ const props = defineProps({
     },
 })
 const emit = defineEmits(['close'])
+const splitOptions = { sizes: [25, 75], snapOffset: 0, minSize: [300, 300] }
 //缓存
 const store = useAppStore()
 const userInfo = ref(store.getUserInfo)

+ 13 - 11
src/views/project/list/independent/index.vue

@@ -23,10 +23,10 @@
                 >
                     <template #action="{ row }">
                         <el-link type="primary" @click="linkExcelClick(row)">关联清表</el-link>
-                        <el-link v-loading="editElementLoading" type="primary" :disabled="row.excelIds == -1" @click="editElement(row)">编辑元素</el-link>
-                        <el-link v-loading="adjustExcelLoading" type="primary" :disabled="row.excelIds == -1" @click="adjustExcelClick(row)">调整表单</el-link>
+                        <el-link v-loading="row.editElementLoading" type="success" :disabled="row.excelIds == -1" class="link-class" @click="editElement(row)">编辑元素</el-link>
+                        <el-link v-loading="row.adjustExcelLoading" type="warning" :disabled="row.excelIds == -1" class="link-class" @click="adjustExcelClick(row)">调整表单</el-link>
                         <el-link type="primary" @click="rowFormulaClick(row)">编辑公式</el-link>
-                        <el-link type="primary" @click="assignWbs(row)">分配WBS</el-link>
+                        <el-link type="warning" @click="assignWbs(row)">分配WBS</el-link>
                     </template>
                 </hc-table>
                 <template #action>
@@ -375,16 +375,17 @@ const assignWbs = (row) => {
 const isEditElementShow = ref(false)
 const editElementInfo = ref({})
 const editElementData = ref({})
-const editElementLoading = ref(false)
+
 const editElement = async (row) => {
-    editElementLoading.value = true
+    row.editElementLoading = true
     const { code, data } = await excelApi.getExcelHtml({ pkeyId: row.id })
+    row.editElementLoading = false
     if (code !== 200 || isNullES(data)) {
-        editElementLoading.value = false
+        
         window?.$message.warning('表单异常,请联系管理员')
         return
     }
-    editElementLoading.value = false
+  
     editElementInfo.value = row
     editElementData.value = {
         pid: projectId.value,
@@ -410,7 +411,7 @@ const editElementToPage = async (name) => {
 
 //调整表单
 const isAdjustExcelShow = ref(false)
-const adjustExcelLoading = ref(false)
+
 const adjustExcelInfo = ref({})
 const adjustExcelClick = async (row) => {
     const { primaryKeyId, excelIds } = row
@@ -418,17 +419,18 @@ const adjustExcelClick = async (row) => {
         window?.$message.warning('表单值异常,请联系管理员')
         return
     }
-    adjustExcelLoading.value = true
+    row.adjustExcelLoading = true
     const { code, data } = await excelApi.getExcelHtml({
         pkeyId: primaryKeyId,
     })
+    row.adjustExcelLoading = false
     if (code !== 200 || isNullES(data)) {
-        adjustExcelLoading.value = false
+       
         window?.$message.warning('表单异常,请联系管理员')
         return
     }
     adjustExcelInfo.value = deepClone(row)
-    adjustExcelLoading.value = false
+
     await nextTick()
     isAdjustExcelShow.value = true
 }

+ 88 - 88
src/views/project/list/independent/quteElePage.vue

@@ -4,10 +4,10 @@
         v-model="isShow"
         title="引用元素表"
         widths="56rem"
-        isTable
+        is-table
+        :loading="submitLoading"
         @close="dialogClose"
         @save="submitClick"
-        :loading="submitLoading"
     >
         <hc-body split :options="{ sizes: [14, 96] }">
             <template #left>
@@ -40,8 +40,7 @@
                     is-check
                     :check-style="{ width: 29 }"
                     @selection-change="tableCheckChange"
-                >
-                </hc-table>
+                />
                 <template #action>
                     <hc-pages :pages="searchForm" @change="pageChange" />
                 </template>
@@ -49,160 +48,161 @@
         </hc-body>
     </hc-dialog>
 </template>
+
 <script setup>
-import { ref, watch, nextTick } from "vue";
-import mainApi from "~api/desk/wbs";
-import privateApi from "~api/wbs/private";
-import { arrToId, getArrValue, isNullES } from "js-fast-way";
+import { nextTick, ref, watch } from 'vue'
+import mainApi from '~api/desk/wbs'
+import privateApi from '~api/wbs/private'
+import { arrToId, getArrValue, isNullES } from 'js-fast-way'
 
-//事件
-const emit = defineEmits(["close"]);
-//双向绑定
-// eslint-disable-next-line no-undef
-const isShow = defineModel("modelValue", {
-    default: false,
-});
 const props = defineProps({
     projectId: {
         type: [String, Number],
-        default: "1",
+        default: '1',
     },
-});
-const projectId = ref(props.projectId);
+})
+//事件
+const emit = defineEmits(['close'])
+//双向绑定
+// eslint-disable-next-line no-undef
+const isShow = defineModel('modelValue', {
+    default: false,
+})
+const projectId = ref(props.projectId)
 //监听显示
 watch(isShow, (val) => {
     if (val) {
     } else {
-        emit("close");
+        emit('close')
     }
-});
+})
 
 //关闭弹窗
 const dialogClose = () => {
-    isShow.value = false;
-    emit("close");
-};
+    isShow.value = false
+    emit('close')
+}
 //树配置
 const treeProps = {
-    label: "title",
-    children: "children",
-    isLeaf: "isLeaf",
-};
+    label: 'title',
+    children: 'children',
+    isLeaf: 'isLeaf',
+}
 
 //获取数据
-const tabTypeLazyTree = async (parentId = "12345678910") => {
+const tabTypeLazyTree = async (parentId = '12345678910') => {
     //发起请求
     const { data } = await mainApi.tabTypeLazyTreeAll({
         parentId,
         current: 1,
         size: 1000,
-    });
-    const records = getArrValue(data?.records);
+    })
+    const records = getArrValue(data?.records)
     records.forEach((item) => {
-        item.isLeaf = !item.hasChildren;
-    });
-    return { data: records, total: data?.total };
-};
+        item.isLeaf = !item.hasChildren
+    })
+    return { data: records, total: data?.total }
+}
 const treeLoadNode = async (node, resolve) => {
     if (node.level === 0) {
-        const resData = await tabTypeLazyTree();
-        resolve(resData?.data);
+        const resData = await tabTypeLazyTree()
+        resolve(resData?.data)
     } else {
         const resData = await tabTypeLazyTree(
             node?.data?.primaryKeyId,
-            "",
+            '',
             false,
             {
                 current: 1,
                 size: 2000,
-            }
-        );
-        resolve(resData?.data);
+            },
+        )
+        resolve(resData?.data)
     }
-};
+}
 
 //树节点被点击
-const nodeInfo = ref({});
+const nodeInfo = ref({})
 const treeNodeTap = (data, node) => {
-    nodeInfo.value = data;
-    searchForm.value.parentId = data.id;
+    nodeInfo.value = data
+    searchForm.value.parentId = data.id
 
     if (node?.level === 1) {
-        searchClick();
+        searchClick()
     } else if (node?.level === 2) {
-        searchForm.value.total = 1;
-        tableData.value = [data];
+        searchForm.value.total = 1
+        tableData.value = [data]
     }
-};
+}
 
 //搜索表单
-const searchForm = ref({ current: 1, size: 30, total: 0 });
+const searchForm = ref({ current: 1, size: 30, total: 0 })
 
 //搜索
 const searchClick = () => {
-    const { parentId } = searchForm.value;
+    const { parentId } = searchForm.value
     if (isNullES(parentId)) {
-        window?.$message?.warning("请先在左侧点击一个节点");
-        return;
+        window?.$message?.warning('请先在左侧点击一个节点')
+        return
     }
-    searchForm.value.current = 1;
-    getTableData();
-};
+    searchForm.value.current = 1
+    getTableData()
+}
 
 //分页
 const pageChange = ({ current, size }) => {
-    const { parentId } = searchForm.value;
+    const { parentId } = searchForm.value
     if (isNullES(parentId)) {
-        window?.$message?.warning("请先在左侧点击一个节点");
-        return;
+        window?.$message?.warning('请先在左侧点击一个节点')
+        return
     }
-    searchForm.value.current = current;
-    searchForm.value.size = size;
-    getTableData();
-};
+    searchForm.value.current = current
+    searchForm.value.size = size
+    getTableData()
+}
 
 //表格数据
-const tableData = ref([]);
+const tableData = ref([])
 const tableColumn = ref([
-    { key: "title", name: "名称" },
-    { key: "elementTotal", name: "总量", width: 80, align: "center" },
-    { key: "tabOwner", name: "所属方", width: 140, align: "center" },
-    { key: "fillRate", name: "填报率", width: 80, align: "center" },
-    { key: "action", name: "操作", width: 220, align: "center" },
-]);
+    { key: 'title', name: '名称' },
+    { key: 'elementTotal', name: '总量', width: 80, align: 'center' },
+    { key: 'tabOwner', name: '所属方', width: 140, align: 'center' },
+    { key: 'fillRate', name: '填报率', width: 80, align: 'center' },
+  
+])
 
 //获取表格数据
-const tableLoading = ref(false);
+const tableLoading = ref(false)
 const getTableData = async () => {
-    tableData.value = [];
-    tableLoading.value = true;
+    tableData.value = []
+    tableLoading.value = true
     const { data } = await mainApi.tabTypeLazyTreeAll({
         ...searchForm.value,
         total: null,
-    });
-    tableLoading.value = false;
-    tableData.value = getArrValue(data?.records);
-    searchForm.value.total = data?.total || 0;
-};
+    })
+    tableLoading.value = false
+    tableData.value = getArrValue(data?.records)
+    searchForm.value.total = data?.total || 0
+}
 
 //表格被选择
-const tableCheckKeys = ref([]);
+const tableCheckKeys = ref([])
 const tableCheckChange = (rows) => {
-    tableCheckKeys.value = rows;
-};
-const submitLoading = ref(false);
+    tableCheckKeys.value = rows
+}
+const submitLoading = ref(false)
 const submitClick = async () => {
-    let ids = arrToId(tableCheckKeys.value);
-    submitLoading.value = true;
+    let ids = arrToId(tableCheckKeys.value)
+    submitLoading.value = true
     const { error, code, data, msg } = await privateApi.projecttabInfo({
         primaryKeyIds: ids,
         projectId: projectId.value,
-    });
-    submitLoading.value = false;
+    })
+    submitLoading.value = false
     //判断状态
     if (!error && code === 200) {
-        window.$message.success(msg);
-        dialogClose();
+        window.$message.success(msg)
+        dialogClose()
     }
-};
+}
 </script>

+ 11 - 12
src/views/project/list/wbs-tree.vue

@@ -98,10 +98,10 @@
                                 </template>
                                 <template #action="{ row }">
                                     <el-link type="success" @click="associationList(row)">关联清表</el-link>
-                                    <el-link v-loading="editElementLoading" :disabled="row.excelId === -1 || isNullES(row.excelId) " type="primary" @click="editElement(row)">编辑元素</el-link>
-                                    <el-link v-loading="adjustExcelLoading" :disabled="row.excelId === -1 || isNullES(row.excelId)" type="warning" @click="adjustExcelClick(row)">调整表单</el-link>
+                                    <el-link v-loading="row.editElementLoading" :disabled="row.excelId === -1 || isNullES(row.excelId) " type="primary" class="link-class" @click="editElement(row)">编辑元素</el-link>
+                                    <el-link v-loading="row.adjustExcelLoading" :disabled="row.excelId === -1 || isNullES(row.excelId)" type="warning" class="link-class" @click="adjustExcelClick(row)">调整表单</el-link>
                                     <el-link type="primary" @click="elementFormulasClick(row)">编辑元素公式</el-link>
-                                    <el-link v-loading="syncTableLoading" type="warning" @click="syncTable(row)">表单同步</el-link>
+                                    <el-link v-loading="row.syncTableLoading" type="warning" @click="syncTable(row)">表单同步</el-link>
                                     <el-link v-if="treeItem.nodeType === 1000 || treeItem.nodeType === 1001" type="primary" @click="linkNodeClick(row)">关联节点</el-link>
                                     <el-link v-del-com:[delInfoTableRow]="row" type="danger">删除表单</el-link>
                                 </template>
@@ -785,14 +785,14 @@ const editElementInfo = ref({})
 const editElementData = ref({})
 const editElementLoading = ref(false)
 const editElement = async (row) => {
-    editElementLoading.value = true
+    row.editElementLoading = true
     const { code, data } = await excelApi.getExcelHtml({ pkeyId: row.pkeyId })
     if (code !== 200 || isNullES(data)) {
         editElementLoading.value = false
         window?.$message.warning('表单异常,请联系管理员')
         return
     }
-    editElementLoading.value = false
+    row.editElementLoading = false
     editElementInfo.value = row
     editElementData.value = {
         pid: projectInfo.value.id,
@@ -805,7 +805,6 @@ const editElement = async (row) => {
 
 //调整表单
 const isAdjustExcelShow = ref(false)
-const adjustExcelLoading = ref(false)
 const adjustExcelInfo = ref({})
 const adjustExcelClick = async (row) => {
     const { pkeyId, excelId } = row
@@ -813,15 +812,15 @@ const adjustExcelClick = async (row) => {
         window?.$message.warning('表单值异常,请联系管理员')
         return
     }
-    adjustExcelLoading.value = true
+    row.adjustExcelLoading = true
     const { code, data } = await excelApi.getExcelHtml({ pkeyId })
     if (code !== 200 || isNullES(data)) {
-        adjustExcelLoading.value = false
+        row.adjustExcelLoading = false
         window?.$message.warning('表单异常,请联系管理员')
         return
     }
     adjustExcelInfo.value = deepClone(row)
-    adjustExcelLoading.value = false
+    row.adjustExcelLoading = false
     await nextTick()
     isAdjustExcelShow.value = true
 }
@@ -1032,13 +1031,13 @@ const hideClick = async (row) => {
     }
 }
 //表单同步
-const syncTableLoading = ref(false)
+
 const syncTable = async (row) => {
-    syncTableLoading.value = true
+    row.syncTableLoading = true
     const { code, error } = await wbsTreeApi.syncCurrentFormInProject({
         pKeyId: row.pkeyId,
     })
-    syncTableLoading.value = false
+    row.syncTableLoading = false
     if (!error && code === 200) {
         window?.$message.success('操作成功')
     }

Some files were not shown because too many files changed in this diff