8
0
duy 9 сар өмнө
parent
commit
e2604e01cc

+ 47 - 16
src/views/desk/wbs/edit-ele.vue

@@ -35,6 +35,8 @@
 <script setup>
 import { ref, watch } from "vue";
 import mainApi from "~api/wbs/wbsforelement";
+import treeApi from "~api/wbs/tree";
+
 const props = defineProps({
     ownerTypeList: {
         type: Array,
@@ -48,6 +50,10 @@ const props = defineProps({
         type: Array,
         default: () => [],
     },
+    editType: {
+        type: Number,
+        default: -1, //元素库的类型为1
+    },
 });
 //事件
 const emit = defineEmits(["close"]);
@@ -60,6 +66,22 @@ const isShow = defineModel("modelValue", {
 watch(isShow, (val) => {
     if (val) {
         // getDataTypelist();
+
+        if (editType.value != 1) {
+            tableColumn.value = [
+                { key: "tableName", name: "表名" },
+                { key: "tableType", name: "表类型" },
+                { key: "tableOwner", name: "所属方" },
+                { key: "fillRate", name: "填报率" },
+            ];
+        } else {
+            tableColumn.value = [
+                { key: "nodeName", name: "表名" },
+                { key: "tableType", name: "表类型" },
+                { key: "tableOwner", name: "所属方" },
+                { key: "fillRate", name: "填报率" },
+            ];
+        }
     } else {
         emit("close");
     }
@@ -67,13 +89,15 @@ watch(isShow, (val) => {
 const ownerTypeList = ref(props.ownerTypeList);
 const tableTypelist = ref(props.tableTypelist);
 const tableData = ref(props.tab);
+const editType = ref(props.editType);
 //监听数据
 watch(
-    () => [props.ownerTypeList, props.tableTypelist, props.tab],
-    ([own, table, tabdata]) => {
+    () => [props.ownerTypeList, props.tableTypelist, props.tab, props.editType],
+    ([own, table, tabdata, edtype]) => {
         ownerTypeList.value = own;
         tableTypelist.value = table;
         tableData.value = tabdata;
+        editType.value = edtype;
         tableData.value.forEach((ele) => {
             ele.tableType = Number(ele.tableType);
             ele.tableOwner = Number(ele.tableOwner);
@@ -88,20 +112,27 @@ const dialogClose = () => {
 };
 const submitLoading = ref(false);
 const saveElementHandle = async () => {
-    submitLoading.value = true;
-    const { error, code } = await mainApi.upateBatchNodeTableInfo(
-        tableData.value
-    );
-    submitLoading.value = false;
-    if (!error && code === 200) {
-        window?.$message?.success("操作成功");
-        dialogClose();
+    if (editType.value == 1) {
+        submitLoading.value = true;
+        const { error, code } = await treeApi.updateBatchNodeTableInfoElement(
+            tableData.value
+        );
+        submitLoading.value = false;
+        if (!error && code === 200) {
+            window?.$message?.success("操作成功");
+            dialogClose();
+        }
+    } else {
+        submitLoading.value = true;
+        const { error, code } = await mainApi.upateBatchNodeTableInfo(
+            tableData.value
+        );
+        submitLoading.value = false;
+        if (!error && code === 200) {
+            window?.$message?.success("操作成功");
+            dialogClose();
+        }
     }
 };
-const tableColumn = [
-    { key: "tableName", name: "表名" },
-    { key: "tableType", name: "表类型" },
-    { key: "tableOwner", name: "所属方" },
-    { key: "fillRate", name: "填报率" },
-];
+const tableColumn = ref([]);
 </script>

+ 85 - 5
src/views/desk/wbs/element-lib.vue

@@ -30,8 +30,16 @@
                     </div>
                 </template>
                 <template #extra>
-                    <el-button hc-btn type="primary">编辑表单</el-button>
-                    <el-button hc-btn type="danger">删除元素表</el-button>
+                    <el-button hc-btn type="primary" @click="editTable"
+                        >编辑表单</el-button
+                    >
+                    <el-button
+                        hc-btn
+                        type="danger"
+                        @click="batchDel"
+                        :loading="batchDelLoad"
+                        >删除元素表</el-button
+                    >
                     <!-- el-button hc-btn type="warning">排序</el-button -->
                 </template>
                 <hc-table
@@ -65,16 +73,28 @@
         <HcWebTemplate v-model="webTemplateShow" :info="webTemplateInfo" />
         <!-- 编辑元素 -->
         <editElement v-model="editElementShow" :info="editElementInfo" />
+        <!-- 编辑元素表单信息 -->
+        <editEle
+            :ownerTypeList="ownerTypeList"
+            :tableTypelist="tableTypelist"
+            :tab="editArr"
+            v-model="editTableShow"
+            :editType="1"
+            @close="editTableClose"
+        />
     </hc-drawer>
 </template>
 
 <script setup>
 import { ref, watch } from "vue";
 import { HcDelMsg } from "hc-vue3-ui";
-import { getArrValue, getObjValue, isNullES } from "js-fast-way";
+import { getArrValue, arrToId, isNullES } from "js-fast-way";
 import mainApi from "~api/desk/wbs";
+import privateApi from "~api/wbs/private";
 import HcWebTemplate from "./element/web-temp.vue";
 import editElement from "./element/edit-element.vue";
+import editEle from "./edit-ele.vue";
+import { getDictionaryData, getDictionaryVal } from "~uti/tools";
 
 //事件
 const emit = defineEmits(["close"]);
@@ -95,7 +115,13 @@ const getDataApi = () => {
 };
 
 //树配置
-const treeProps = { label: "title" };
+const treeProps = {
+    label: "title",
+    children: "children",
+    isLeaf: (item) => {
+        return !item.hasChildren;
+    },
+};
 
 //获取树接口
 const treeData = ref([]);
@@ -190,10 +216,64 @@ const rowEditClick = (row) => {
     editElementInfo.value = row;
     editElementShow.value = true;
 };
-
+//编辑元素表单信息
+const editTableShow = ref(false);
+const editArr = ref([]);
+const editTable = async () => {
+    if (tableCheckKeys.value.length < 1) {
+        window?.$message?.warning("请先选择一个元素");
+        return;
+    }
+    await getOwnerTypelist();
+    await getTableTypelist();
+    editArr.value = [];
+    tableCheckKeys.value.forEach((ele) => {
+        editArr.value.push({
+            tableType: getDictionaryVal(tableTypelist.value, ele.tabType),
+            tableOwner: getDictionaryVal(ownerTypeList.value, ele.tabOwner),
+            nodeName: ele.title,
+            Type: 10,
+            id: ele.id,
+            fillRate: ele.fillRate,
+        });
+    });
+    editTableShow.value = true;
+};
+const ownerTypeList = ref([]);
+const getOwnerTypelist = async () => {
+    const data = await getDictionaryData("owner_type");
+    ownerTypeList.value = getArrValue(data);
+};
+//获取表单类型
+const tableTypelist = ref([]);
+const getTableTypelist = async () => {
+    const data = await getDictionaryData("table_type");
+    tableTypelist.value = getArrValue(data);
+};
+const editTableClose = () => {
+    editTableShow.value = false;
+    getTableData();
+};
 //关闭抽屉
 const drawerClose = () => {
     isShow.value = false;
     emit("close");
 };
+//删除元素表
+const batchDelLoad = ref(false);
+const batchDel = async () => {
+    if (tableCheckKeys.value.length < 1) {
+        window?.$message?.warning("请先选择一个元素");
+        return;
+    }
+    HcDelMsg(async (resolve) => {
+        //发起请求
+        const ids = arrToId(tableCheckKeys.value);
+        const { isRes } = await privateApi.delTabInfoAll(ids);
+        resolve(); //关闭弹窗
+        if (!isRes) return;
+        window.$message.success("删除成功");
+        getTableData().then();
+    });
+};
 </script>