guoyujia 1 rok temu
rodzic
commit
aaa36a515b

+ 74 - 58
src/views/business/carrier/form.vue

@@ -1,112 +1,128 @@
 <template>
   <!-- 添加或修改项目信息对话框 -->
-  <el-dialog title="载具信息表单" v-model="visible" width="400px" append-to-body draggable>
+  <el-dialog
+    title="载具信息表单"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
     <div class="form-container">
-      <el-form ref="carrierFormRef" class="master-container" :rules="rules" v-loading="loading" :model="form"
-               label-width="80px">
+      <el-form
+        ref="carrierFormRef"
+        class="master-container"
+        :rules="rules"
+        v-loading="loading"
+        :model="form"
+        label-width="80px"
+      >
         <!--        <el-form-item label="载具编号" prop="code" required>-->
         <!--          <el-input v-model.trim="form.code" placeholder="请输入载具编号" />-->
         <!--        </el-form-item>-->
         <el-form-item label="父级类别" prop="parentId">
-          <el-tree-select v-model="form.categoryId" :data="parentCategories" :render-after-expand="false" />
+          <el-tree-select
+            v-model="form.categoryId"
+            :data="parentCategories"
+            :render-after-expand="false"
+          />
         </el-form-item>
-<!--        <el-form-item label="是否多批" prop="status">-->
-<!--          <el-select v-model="form.isAllowMore">-->
-<!--            <el-option v-for="item in is_allow_more" :key="item.value" :label="item.label"-->
-<!--                       :value="item.value"></el-option>-->
-<!--          </el-select>-->
-<!--        </el-form-item>-->
+        <!--        <el-form-item label="是否多批" prop="status">-->
+        <!--          <el-select v-model="form.isAllowMore">-->
+        <!--            <el-option v-for="item in is_allow_more" :key="item.value" :label="item.label"-->
+        <!--                       :value="item.value"></el-option>-->
+        <!--          </el-select>-->
+        <!--        </el-form-item>-->
         <el-form-item label="备注" prop="remark">
-          <el-input v-model.trim="form.remark" placeholder="请输入备注"/>
+          <el-input v-model.trim="form.remark" placeholder="请输入备注" />
         </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
       <el-button icon="Close" @click="handleCancel">取 消</el-button>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import {getCarrier, getCategory, saveCarrier, updateCarrier} from '@/api/business/carrier'
-
-const {proxy} = getCurrentInstance()
-const {is_allow_more} = proxy.useDict('is_allow_more')
-const emit = defineEmits(['handleSaveSuccess'])
-const parentCategories = ref([])
-
-const loading = ref(false)
-const visible = ref(false)
-const form = ref({})
-const categoryFrom = ref({})
-
+import { getCarrier, getCategory, updateCarrier } from "@/api/business/carrier";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
+/** 字典数组区 */
+const { is_allow_more } = proxy.useDict("is_allow_more");
+/** 表单抽屉 页变量 */
+const parentCategories = ref([]);
+const loading = ref(false);
+const visible = ref(false);
+const form = ref({});
+const categoryFrom = ref({});
 const rules = {
-  code: [{required: true, message: '载具编号不能为空', trigger: 'blur'}]
-}
+  code: [{ required: true, message: "载具编号不能为空", trigger: "blur" }],
+};
 
 /***********************  方法区  ****************************/
 /** 打开对话框 */
 const open = (data) => {
-  reset()
-  visible.value = true
-  loading.value = true
-  form.value.categoryId = data.categoryId
+  reset();
+  visible.value = true;
+  loading.value = true;
+  form.value.categoryId = data.categoryId;
   getCarrier(data.id || 0).then((res) => {
     if (res.data) {
       form.value = res.data;
-      form.value.isAllowMore = form.value.isAllowMore + '';
+      form.value.isAllowMore = form.value.isAllowMore + "";
     }
-    loading.value = false
-  })
-}
+    loading.value = false;
+  });
+};
 
 /** 表单重置 */
 const reset = () => {
   form.value = {
     id: null,
     categoryId: 0,
-    code: '',
-    remark: ''
-  }
-  proxy.resetForm('carrierFormRef')
-}
+    code: "",
+    remark: "",
+  };
+  proxy.resetForm("carrierFormRef");
+};
 
 getCategory(0).then((res) => {
   if (res.data.formData) {
-    categoryFrom.value = res.data.formData
+    categoryFrom.value = res.data.formData;
   }
-  console.log(res.data.parentOptions)
-  parentCategories.value = res.data.parentOptions
-  loading.value = false
-})
+  parentCategories.value = res.data.parentOptions;
+  loading.value = false;
+});
 
 /** 提交按钮 */
 const handleSave = () => {
-  proxy.$refs['carrierFormRef'].validate((valid) => {
+  proxy.$refs["carrierFormRef"].validate((valid) => {
     if (valid) {
       updateCarrier(form.value).then((res) => {
         if (res.code === 601) {
-          proxy.$modal.msgWarn(res.msg)
-          return
+          proxy.$modal.msgWarn(res.msg);
+          return;
         }
         if (res.code === 200) {
-          proxy.$modal.msgSuccess('操作成功')
-          emit('handleSaveSuccess')
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
         }
-        visible.value = false
-      })
+        visible.value = false;
+      });
     }
-  })
-}
+  });
+};
 
 /** 取消按钮 */
 const handleCancel = () => {
-  visible.value = false
-  reset()
-}
+  visible.value = false;
+  reset();
+};
 
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 97 - 67
src/views/business/carrier/formAbandonment.vue

@@ -1,108 +1,138 @@
 <template>
   <!-- 添加或修改项目信息对话框 -->
-  <el-dialog title="载具信息表单" v-model="visible" width="400px" append-to-body draggable>
+  <el-dialog
+    title="载具信息表单"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
     <div class="form-container">
-      <el-form ref="carrierFormRef" class="master-container" v-loading="loading" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="载具编号" prop="code" >{{ form.code }}</el-form-item>
-        <el-form-item label="废弃日期" prop="abandonmentDate" >
-          <el-date-picker type="date" v-model="form.abandonmentDate" placeholder="请选择废弃日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
+      <el-form
+        ref="carrierFormRef"
+        class="master-container"
+        v-loading="loading"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
+        <el-form-item label="载具编号" prop="code">{{
+          form.code
+        }}</el-form-item>
+        <el-form-item label="废弃日期" prop="abandonmentDate">
+          <el-date-picker
+            type="date"
+            v-model="form.abandonmentDate"
+            placeholder="请选择废弃日期"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+          />
         </el-form-item>
-        <el-form-item label="废弃原因" prop="abandonmentReason" >
+        <el-form-item label="废弃原因" prop="abandonmentReason">
           <el-select
-                v-model="form.abandonmentReason"
-                placeholder="请选择废弃原因"
-                clearable
-              >
-                <el-option
-                  v-for="dict in reason_for_abandonment"
-                  :key="dict.value"
-                  :label="dict.label"
-                  :value="dict.label"
-                ></el-option>
-                </el-select>
+            v-model="form.abandonmentReason"
+            placeholder="请选择废弃原因"
+            clearable
+          >
+            <el-option
+              v-for="dict in reason_for_abandonment"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.label"
+            ></el-option>
+          </el-select>
         </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
       <el-button icon="Close" @click="handleCancel">取 消</el-button>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import { getCarrier, saveCarrier,saveCarrierReject } from '@/api/business/carrier'
-import { ref } from 'vue'
-const { proxy } = getCurrentInstance()
-const emit = defineEmits(['handleSaveSuccess'])
-
-const { reason_for_abandonment } = proxy.useDict('reason_for_abandonment')
-
-const loading = ref(false)
-const visible = ref(false)
-const form = ref({})
+import { getCarrier, saveCarrierReject } from "@/api/business/carrier";
+import { ref } from "vue";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
+/** 字典数组区 */
+const { reason_for_abandonment } = proxy.useDict("reason_for_abandonment");
+/** 表单抽屉 页变量 */
+const loading = ref(false);
+const visible = ref(false);
+const form = ref({});
 const rules = {
-  abandonmentDate: [{ required: true, message: '废弃日期不能为空', trigger: 'blur' }],
-  abandonmentReason: [{ required: true, message: '废弃原因不能为空', trigger: 'change' }]
-}
+  abandonmentDate: [
+    { required: true, message: "废弃日期不能为空", trigger: "blur" },
+  ],
+  abandonmentReason: [
+    { required: true, message: "废弃原因不能为空", trigger: "change" },
+  ],
+};
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 const open = (data) => {
-  reset()
-  visible.value = true
-  loading.value = true
-  form.value.categoryId = data.categoryId
+  reset();
+  visible.value = true;
+  loading.value = true;
+  form.value.categoryId = data.categoryId;
   getCarrier(data.id || 0).then((res) => {
     if (res.data) {
-      form.value = res.data
-      form.value.abandonmentDate = form.value.isAbandoned === 1 ? res.data.abandonmentDate : proxy.moment().format('YYYY-MM-DD')
-      form.value.isAbandoned = '1'
+      form.value = res.data;
+      form.value.abandonmentDate =
+        form.value.isAbandoned === 1
+          ? res.data.abandonmentDate
+          : proxy.moment().format("YYYY-MM-DD");
+      form.value.isAbandoned = "1";
     }
-    loading.value = false
-  })
-}
+    loading.value = false;
+  });
+};
 
 /** 表单重置 */
 const reset = () => {
   form.value = {
     id: null,
     categoryId: 0,
-    isAbandoned: '1',
-    code: '',
-    abandonmentDate: proxy.moment().format('YYYY-MM-DD'),
-    abandonmentReason: ''
-  }
-  proxy.resetForm('carrierFormRef')
-}
+    isAbandoned: "1",
+    code: "",
+    abandonmentDate: proxy.moment().format("YYYY-MM-DD"),
+    abandonmentReason: "",
+  };
+  proxy.resetForm("carrierFormRef");
+};
 
 /** 提交按钮 */
 const handleSave = () => {
-  proxy.$refs['carrierFormRef'].validate((valid) => {
+  proxy.$refs["carrierFormRef"].validate((valid) => {
     if (valid) {
-      var carrierReject = {}
-      carrierReject.carrierId = form.value.id
-      carrierReject.operationDate = form.value.abandonmentDate
-      carrierReject.abandonmentReason = form.value.abandonmentReason
-      carrierReject.isAbandoned = form.value.isAbandoned
+      var carrierReject = {};
+      carrierReject.carrierId = form.value.id;
+      carrierReject.operationDate = form.value.abandonmentDate;
+      carrierReject.abandonmentReason = form.value.abandonmentReason;
+      carrierReject.isAbandoned = form.value.isAbandoned;
       saveCarrierReject(carrierReject).then((res) => {
-    if (res.code === 200) {
-      proxy.$modal.msgSuccess('操作成功')
-      emit('handleSaveSuccess')
+        if (res.code === 200) {
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
+        }
+        visible.value = false;
+      });
     }
-    visible.value = false
-  })
-}
-  })
-}
+  });
+};
 
 /** 取消按钮 */
 const handleCancel = () => {
-  visible.value = false
-  reset()
-}
+  visible.value = false;
+  reset();
+};
 
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 84 - 58
src/views/business/carrier/formCategory.vue

@@ -1,111 +1,137 @@
 <template>
-  <el-dialog title="载具类别表单" v-model="visible" width="400px" append-to-body draggable>
+  <el-dialog
+    title="载具类别表单"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
     <div class="form-container">
-      <el-form ref="carrierCategoryRef" v-loading="loading" class="master-container" :model="form" :rules="rules"
-               label-width="80px">
+      <el-form
+        ref="carrierCategoryRef"
+        v-loading="loading"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="80px"
+      >
         <el-form-item label="父级类别" prop="parentId" :rules="rules">
-          <el-tree-select v-model="form.parentId" :data="parentCategories" check-strictly :render-after-expand="false"/>
+          <el-tree-select
+            v-model="form.parentId"
+            :data="parentCategories"
+            check-strictly
+            :render-after-expand="false"
+          />
         </el-form-item>
         <el-form-item label="类别名称" prop="name">
-          <el-input v-model.trim="form.name" placeholder="类别名称"/>
+          <el-input v-model.trim="form.name" placeholder="类别名称" />
         </el-form-item>
-        <el-form-item label="是否多批" prop="status" v-if="form.parentId !== '0'">
+        <el-form-item
+          label="是否多批"
+          prop="status"
+          v-if="form.parentId !== '0'"
+        >
           <el-select v-model="form.isAllowMore">
-            <el-option v-for="item in is_allow_more" :key="item.value" :label="item.label"
-                       :value="item.value"></el-option>
+            <el-option
+              v-for="item in is_allow_more"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="备注" prop="remark">
-          <el-input v-model.trim="form.remark" placeholder="请填写备注"/>
+          <el-input v-model.trim="form.remark" placeholder="请填写备注" />
         </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="handleSave">确 定</el-button>
+      <el-button type="primary" icon="Check" @click="handleSave"
+        >确 定</el-button
+      >
       <el-button icon="Close" @click="handleCancel">取 消</el-button>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import {getCategory, saveCategory} from '@/api/business/carrier'
-
-const {proxy} = getCurrentInstance()
-const {is_allow_more} = proxy.useDict('is_allow_more')
-const emit = defineEmits(['handleSaveSuccess'])
-
+import { getCategory, saveCategory } from "@/api/business/carrier";
+const { proxy } = getCurrentInstance();
+const emit = defineEmits(["handleSaveSuccess"]);
+/** 字典数组区 */
+const { is_allow_more } = proxy.useDict("is_allow_more");
 /** 父类别 */
-const parentCategories = ref([])
-
-const loading = ref(false)
-const visible = ref(false)
+const parentCategories = ref([]);
+const loading = ref(false);
+const visible = ref(false);
 const data = reactive({
   form: {},
   rules: {
-    name: [{required: true, message: '类别名称不能为空', trigger: 'blur'}],
-    parentId: [{required: true, trigger: "blur", validator: validateParentId}]
-  }
-})
-const {form, rules} = toRefs(data)
+    name: [{ required: true, message: "类别名称不能为空", trigger: "blur" }],
+    parentId: [
+      { required: true, trigger: "blur", validator: validateParentId },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(id) {
-  reset()
-  visible.value = true
-  loading.value = true
+  reset();
+  visible.value = true;
+  loading.value = true;
   getCategory(id || 0).then((res) => {
     if (res.data.formData) {
-      form.value = res.data.formData
-      form.value.isAllowMore = form.value.isAllowMore + ''
+      form.value = res.data.formData;
+      form.value.isAllowMore = form.value.isAllowMore + "";
     }
-    console.log(res.data.parentOptions)
-    parentCategories.value = res.data.parentOptions
+    parentCategories.value = res.data.parentOptions;
     parentCategories.value.unshift({
-      value: '0',
-      label: '一级分类'
-    })
+      value: "0",
+      label: "一级分类",
+    });
     if (id) {
-      var index = parentCategories.value.findIndex(obj => obj.value === id);
+      var index = parentCategories.value.findIndex((obj) => obj.value === id);
       if (index > -1) {
-        parentCategories.value.splice(index, 1)
+        parentCategories.value.splice(index, 1);
       }
     }
-    loading.value = false
-  })
+    loading.value = false;
+  });
 }
 
 /** 取消按钮 */
 function handleCancel() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 /** 表单重置 */
 function reset() {
   form.value = {
     id: null,
-    parentId: '0',
-    code: '',
-    name: '',
-    remark: '',
-    sort: 1
-  }
-  proxy.resetForm('carrierCategoryRef')
+    parentId: "0",
+    code: "",
+    name: "",
+    remark: "",
+    sort: 1,
+  };
+  proxy.resetForm("carrierCategoryRef");
 }
 
 /** 提交按钮 */
 function handleSave() {
-  proxy.$refs['carrierCategoryRef'].validate((valid) => {
+  proxy.$refs["carrierCategoryRef"].validate((valid) => {
     if (valid) {
       saveCategory(form.value).then((res) => {
         if (res.code === 200) {
-          proxy.$modal.msgSuccess('操作成功')
-          emit('handleSaveSuccess')
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
         }
-        visible.value = false
-      })
+        visible.value = false;
+      });
     }
-  })
+  });
 }
 
 /**
@@ -113,14 +139,14 @@ function handleSave() {
  */
 function validateParentId(rule, value, callback) {
   if (value == form.value.id) {
-    callback(new Error('不能选择自己为父级'))
+    callback(new Error("不能选择自己为父级"));
   } else {
-    callback()
+    callback();
   }
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 303 - 206
src/views/business/carrier/index.vue

@@ -3,54 +3,70 @@
     <!-- 左侧区域 -->
     <section class="list-part-container">
       <!-- 搜索区域 -->
-      <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
-        <el-form-item class="section-title" label="载具类别"/>
+      <el-form
+        class="list-search-container"
+        :model="queryParams"
+        ref="queryRef"
+        :inline="true"
+      >
+        <el-form-item class="section-title" label="载具类别" />
         <el-form-item>
           <!-- <el-button type="success" icon="Refresh" @click="handleQueryCategory">刷新</el-button> -->
-          <el-button type="primary" icon="Plus" @click="handleShowCategoryDialog(null)"
-                     v-hasPermi="['business:carrier:add']">新增
+          <el-button
+            type="primary"
+            icon="Plus"
+            @click="handleShowCategoryDialog(null)"
+            v-hasPermi="['business:carrier:add']"
+            >新增
           </el-button>
         </el-form-item>
       </el-form>
       <!-- 列表区 -->
       <div class="el-table-container">
         <div class="el-table-inner-container">
-          <!-- <el-table ref="categoryTable" v-loading="categoryLoading" :data="carrierCategoryList" row-key="id" height="100%" :indent="20" highlight-current-row default-expand-all @current-change="handleCurrentCategoryChange">
-            <el-table-column type="index" label="序号" width="50" align="center" />
-            <el-table-column label="类别名称" header-align="center" prop="name" />
-            <el-table-column label="操作" width="140" align="center">
-              <template #default="scope">
-                <el-button link type="warning" icon="Edit" @click="handleShowCategoryDialog(scope.row.id)" v-hasPermi="['business:carrier:edit']">
-                  编辑
-                </el-button>
-                <el-button link type="danger" icon="Delete" @click="handleDeleteCategory(scope.row.id)" v-hasPermi="['business:carrier:remove']">
-                  删除
-                </el-button>
-              </template>
-            </el-table-column>
-          </el-table> -->
-          <el-tree ref="categoryTable" v-loading="categoryLoading" :data="carrierCategoryList"
-                   :props="{ label: 'name', children: 'children' }" :expand-on-click-node="false"
-                   :filter-node-method="filterNode" default-expand-all node-key="id" highlight-current
-                   @node-click="handleCurrentCategoryChange">
+          <el-tree
+            ref="categoryTable"
+            v-loading="categoryLoading"
+            :data="carrierCategoryList"
+            :props="{ label: 'name', children: 'children' }"
+            :expand-on-click-node="false"
+            default-expand-all
+            node-key="id"
+            highlight-current
+            @node-click="handleCurrentCategoryChange"
+          >
             <template #default="{ node, data }">
-              <div style="
+              <div
+                style="
                   display: flex;
                   width: 100%;
                   justify-content: space-between;
-                ">
+                "
+              >
                 <span>
-                  <span v-if="data.parentId == 0" style="display: inline-block; width: 20px;">{{
-                      getNodeIndex(data)
-                    }}. </span>
+                  <span
+                    v-if="data.parentId == 0"
+                    style="display: inline-block; width: 20px"
+                    >{{ getNodeIndex(data) }}.
+                  </span>
                   <span>{{ node.label }}</span>
                 </span>
                 <span>
-                  <el-button link type="warning" icon="Edit" @click="handleShowCategoryDialog(data)"
-                             v-hasPermi="['business:carrier:edit']">编辑
+                  <el-button
+                    link
+                    type="warning"
+                    icon="Edit"
+                    @click="handleShowCategoryDialog(data)"
+                    v-hasPermi="['business:carrier:edit']"
+                    >编辑
                   </el-button>
-                  <el-button link type="danger" icon="Delete" @click="handleDeleteCategory(data)"
-                             v-hasPermi="['business:carrier:remove']">删除
+                  <el-button
+                    link
+                    type="danger"
+                    icon="Delete"
+                    @click="handleDeleteCategory(data)"
+                    v-hasPermi="['business:carrier:remove']"
+                    >删除
                   </el-button>
                 </span>
               </div>
@@ -62,20 +78,39 @@
 
     <!-- 右侧区域 -->
     <section class="list-part-container" style="flex: 2">
-      <el-form class="list-search-container" :model="carrierParams" ref="queryRef" :inline="true">
-        <el-form-item class="section-title" label="载具管理"/>
+      <el-form
+        class="list-search-container"
+        :model="carrierParams"
+        ref="queryRef"
+        :inline="true"
+      >
+        <el-form-item class="section-title" label="载具管理" />
         <el-form-item label="载具编号:">
-          <el-input placeholder="请输入载具编号" :disabled="!carrierFlag" clearable style="width: 180px"
-                    v-model.trim="carrierParams.code" @keydown.enter.prevent/>
+          <el-input
+            placeholder="请输入载具编号"
+            :disabled="!carrierFlag"
+            clearable
+            style="width: 180px"
+            v-model.trim="carrierParams.code"
+            @keydown.enter.prevent
+          />
         </el-form-item>
         <el-form-item>
-          <el-button type="info" icon="Search" :disabled="carrierCategoryList.length == 0" @click="handleQueryCarrier">
+          <el-button
+            type="info"
+            icon="Search"
+            :disabled="carrierCategoryList.length == 0"
+            @click="handleQueryCarrier"
+          >
             搜索
           </el-button>
-          <!-- <el-button type="success" icon="Refresh" @click="handleRefreshCarrier">刷新</el-button> -->
           <!-- <el-button type="primary" icon="Plus" @click="handleShowCarrierDialog(null)" v-hasPermi="['business:carrier:add']">新增</el-button> -->
-          <el-button :disabled="selections.length == 0" type="warning" icon="Download"
-                     @click="handleBatchDownloadQrCode">批量下载二维码
+          <el-button
+            :disabled="selections.length == 0"
+            type="warning"
+            icon="Download"
+            @click="handleBatchDownloadQrCode"
+            >批量下载二维码
           </el-button>
         </el-form-item>
       </el-form>
@@ -83,15 +118,43 @@
       <!-- 列表区 -->
       <div class="el-table-container">
         <div class="el-table-inner-container">
-          <el-table v-loading="carrierLoading" row-key="id" @selection-change="handleSelectionChange"
-                    :data="carrierList" height="100%">
-            <el-table-column type="selection" width="40" align="center" :reserve-selection="true"/>
-            <el-table-column type="index" label="行号" width="50" align="center"/>
-            <el-table-column prop="code" label="载具编号" width="80" align="center"/>
-            <el-table-column label="状态" width="80" prop="isAbandoned" align="center">
+          <el-table
+            v-loading="carrierLoading"
+            row-key="id"
+            @selection-change="handleSelectionChange"
+            :data="carrierList"
+            height="100%"
+          >
+            <el-table-column
+              type="selection"
+              width="40"
+              align="center"
+              :reserve-selection="true"
+            />
+            <el-table-column
+              type="index"
+              label="行号"
+              width="50"
+              align="center"
+            />
+            <el-table-column
+              prop="code"
+              label="载具编号"
+              width="80"
+              align="center"
+            />
+            <el-table-column
+              label="状态"
+              width="80"
+              prop="isAbandoned"
+              align="center"
+            >
               <template #default="scope">
                 {{ scope.row.status }}
-                <dict-tag :options="carrier_status" :value="scope.row.isAbandoned"/>
+                <dict-tag
+                  :options="carrier_status"
+                  :value="scope.row.isAbandoned"
+                />
               </template>
             </el-table-column>
             <!--            <el-table-column label="是否多批" width="80" prop="isAllowMore" align="center">-->
@@ -100,12 +163,17 @@
             <!--                <dict-tag :options="is_allow_more" :value="scope.row.isAllowMore" />-->
             <!--              </template>-->
             <!--            </el-table-column>-->
-            <el-table-column prop="createTime" label="添加日期" width="130" align="center">
+            <el-table-column
+              prop="createTime"
+              label="添加日期"
+              width="130"
+              align="center"
+            >
               <template #default="scope">
                 {{ proxy.moment(scope.row.createTime).format("YYYY-MM-DD") }}
               </template>
             </el-table-column>
-            <el-table-column prop="remark" label="备注" align="center"/>
+            <el-table-column prop="remark" label="备注" align="center" />
             <!-- <el-table-column prop="abandonmentDate" label="废弃日期" width="120" align="center">
               <template #default="scope">
                 {{
@@ -122,16 +190,33 @@
             </el-table-column> -->
             <el-table-column label="操作" width="180" align="center">
               <template #default="scope">
-                <el-button link type="warning" icon="Edit" @click="handleShowCarrierDialog(scope.row.id)"
-                           v-hasPermi="['business:carrier:edit']">
+                <el-button
+                  link
+                  type="warning"
+                  icon="Edit"
+                  @click="handleShowCarrierDialog(scope.row.id)"
+                  v-hasPermi="['business:carrier:edit']"
+                >
                   编辑
                 </el-button>
-                <el-button v-if="scope.row.isAbandoned === 0" link type="danger" icon="Delete"
-                           @click="handleShowAbandonDialog(scope.row.id)" v-hasPermi="['business:carrier:abandonment']">
+                <el-button
+                  v-if="scope.row.isAbandoned === 0"
+                  link
+                  type="danger"
+                  icon="Delete"
+                  @click="handleShowAbandonDialog(scope.row.id)"
+                  v-hasPermi="['business:carrier:abandonment']"
+                >
                   废弃
                 </el-button>
-                <el-button v-else link type="success" icon="CircleCheck" @click="handleUnAbandoned(scope.row)"
-                           v-hasPermi="['business:carrier:unAbandonment']">取消废弃
+                <el-button
+                  v-else
+                  link
+                  type="success"
+                  icon="CircleCheck"
+                  @click="handleUnAbandoned(scope.row)"
+                  v-hasPermi="['business:carrier:unAbandonment']"
+                  >取消废弃
                 </el-button>
               </template>
             </el-table-column>
@@ -140,112 +225,124 @@
       </div>
 
       <!-- 分页 -->
-      <pagination v-show="carrierTotal > 0" :total="carrierTotal" v-model:page="carrierParams.pageNum"
-                  v-model:limit="carrierParams.pageSize" @pagination="getCarriers"/>
+      <pagination
+        v-show="carrierTotal > 0"
+        :total="carrierTotal"
+        v-model:page="carrierParams.pageNum"
+        v-model:limit="carrierParams.pageSize"
+        @pagination="getCarriers"
+      />
     </section>
 
     <!-- 载具类别表单 -->
-    <carrier-category-form ref="carrierCategoryRef" @handleSaveSuccess="handleQueryCategory"/>
+    <carrier-category-form
+      ref="carrierCategoryRef"
+      @handleSaveSuccess="handleQueryCategory"
+    />
 
     <!-- 载具表单 -->
-    <carrier-form ref="carrierRef" @handleSaveSuccess="handleRefreshCarrier"/>
+    <carrier-form ref="carrierRef" @handleSaveSuccess="handleRefreshCarrier" />
 
     <!-- 废弃弹窗 -->
-    <carrier-abandonment-form ref="carrierAbandonmentRef" @handleSaveSuccess="handleRefreshCarrier"/>
+    <carrier-abandonment-form
+      ref="carrierAbandonmentRef"
+      @handleSaveSuccess="handleRefreshCarrier"
+    />
   </div>
 </template>
 
 <script setup name="Process">
-import {listCategory, delCategory, listCarrier, saveCarrierReject, download} from '@/api/business/carrier'
-import carrierForm from './form'
-import carrierCategoryForm from './formCategory'
-import carrierAbandonmentForm from './formAbandonment'
-import {nextTick} from 'vue'
-import JSZip from 'jszip';
-import {saveAs} from 'file-saver';
-
-const {proxy} = getCurrentInstance()
-const {carrier_status} = proxy.useDict('carrier_status')
-const {is_allow_more} = proxy.useDict('is_allow_more')
-const webHost = import.meta.env.VITE_APP_PRODUCTION_API
-const categoryTable = ref(null)
-const carrierCategoryList = ref([])
-const carrierList = ref([])
-const currentCategory = ref({})
-const carrierFlag = ref(true)
-const categoryLoading = ref(false)
-const carrierLoading = ref(false)
-const carrierTotal = ref(0)
-const selections = ref([])
+import {
+  listCategory,
+  delCategory,
+  listCarrier,
+  saveCarrierReject,
+} from "@/api/business/carrier";
+import carrierForm from "./form";
+import carrierCategoryForm from "./formCategory";
+import carrierAbandonmentForm from "./formAbandonment";
+import { nextTick } from "vue";
+import JSZip from "jszip";
+import { saveAs } from "file-saver";
+const webHost = import.meta.env.VITE_APP_PRODUCTION_API;
+const { proxy } = getCurrentInstance();
+/** 字典数组区 */
+const { carrier_status } = proxy.useDict("carrier_status");
+const { is_allow_more } = proxy.useDict("is_allow_more");
+/** 载具类别 */
+const categoryTable = ref(null);
+const carrierCategoryList = ref([]);
+const currentCategory = ref({});
+const categoryLoading = ref(false);
+/** 载具管理 */
+const carrierList = ref([]);
+const carrierFlag = ref(true);
+const carrierLoading = ref(false);
+const carrierTotal = ref(0);
+const selections = ref([]);
+/** 查询对象 */
 const data = reactive({
   form: {},
   queryParams: {
-    code: '',
+    code: "",
     pageNum: 1,
-    pageSize: 10
+    pageSize: 10,
   },
   carrierParams: {
-    code: '',
+    code: "",
     pageNum: 1,
-    pageSize: 10
-  }
-})
+    pageSize: 10,
+  },
+});
 
-const {queryParams, carrierParams} = toRefs(data)
-/** 查询对象 */
+const { queryParams, carrierParams } = toRefs(data);
 
 /****************************  载具类别相关事件  ****************************/
 /** 载具分类列表 */
 const getCategories = () => {
-  categoryLoading.value = true
+  categoryLoading.value = true;
   listCategory().then((res) => {
-    categoryLoading.value = false
-    carrierCategoryList.value = res.rows
+    categoryLoading.value = false;
+    carrierCategoryList.value = res.rows;
     if (carrierCategoryList.value.length > 0) {
-      currentCategory.value = carrierCategoryList.value[0]
+      currentCategory.value = carrierCategoryList.value[0];
       nextTick(() => {
-        proxy.$refs.categoryTable.setCurrentKey(currentCategory.value.id)
-        handleCurrentCategoryChange(currentCategory.value)
-      })
-      // categoryTable.value.setCurrentRow(currentCategory.value);
+        proxy.$refs.categoryTable.setCurrentKey(currentCategory.value.id);
+        handleCurrentCategoryChange(currentCategory.value);
+      });
     }
-  })
-}
-const filterNode = (value, data) => {
-  queryParams.value.code = ''
-  if (!value) {
-    return true
-  }
-  return data.name.indexOf(value) !== -1
-}
+  });
+};
+/**载具类别点击事件 */
 const handleCurrentCategoryChange = (row) => {
   if (row) {
-    currentCategory.value = row
+    currentCategory.value = row;
   } else {
-    currentCategory.value = {}
+    currentCategory.value = {};
     if (carrierCategoryList.value.length > 0) {
-      currentCategory.value = carrierCategoryList.value[0]
+      currentCategory.value = carrierCategoryList.value[0];
     }
   }
   if (currentCategory.value.id) {
-    //categoryTable.value.setCurrentRow(currentCategory.value);
-    getCarriers()
+    getCarriers();
   } else {
-    carrierList.value = []
-    carrierTotal.value = 0
+    carrierList.value = [];
+    carrierTotal.value = 0;
   }
-}
-
+};
+/**载具类别编号 */
 function getNodeIndex(data) {
-  const index = carrierCategoryList.value.findIndex((item) => item.id === data.id)
-  return index + 1
+  const index = carrierCategoryList.value.findIndex(
+    (item) => item.id === data.id
+  );
+  return index + 1;
 }
-
+/**打开载具类别弹窗 */
 function handleShowCategoryDialog(data) {
   if (data) {
-    proxy.$refs.carrierCategoryRef.open(data.id)
+    proxy.$refs.carrierCategoryRef.open(data.id);
   } else {
-    proxy.$refs.carrierCategoryRef.open()
+    proxy.$refs.carrierCategoryRef.open();
   }
 }
 
@@ -253,120 +350,119 @@ function handleShowCategoryDialog(data) {
 const handleDeleteCategory = (data) => {
   // 禁用按钮点击
   disableButtons();
-  var showErrorMessage = false
+  var showErrorMessage = false;
   proxy.$modal
-      .confirm('确定删除选中项?')
-      .then(() => {
-        categoryLoading.value = true
-        carrierLoading.value = true
-        if (data.children) {
-          showErrorMessage = true;
-          return Promise.reject(new Error("HasChildrenError"));
-        }
-        return delCategory(data.id)
-      })
-      .then(() => {
-        if (!showErrorMessage) {
-          proxy.$modal.msgSuccess('操作成功!');
-          getCategories();
-        }
-      })
-      .catch(() => {
-        categoryLoading.value = false
-        carrierLoading.value = false
-      })
-      .finally(() => {
-        if (showErrorMessage) {
-          proxy.$modal.msgError("该载具类别下有子类别,不能删除");
-        }
-        categoryLoading.value = false
-        carrierLoading.value = false
-        // 启用按钮点击
-        enableButtons();
-      })
-}
-
+    .confirm("确定删除选中项?")
+    .then(() => {
+      categoryLoading.value = true;
+      carrierLoading.value = true;
+      if (data.children) {
+        showErrorMessage = true;
+        return Promise.reject(new Error("HasChildrenError"));
+      }
+      return delCategory(data.id);
+    })
+    .then(() => {
+      if (!showErrorMessage) {
+        proxy.$modal.msgSuccess("操作成功!");
+        getCategories();
+      }
+    })
+    .catch(() => {
+      categoryLoading.value = false;
+      carrierLoading.value = false;
+    })
+    .finally(() => {
+      if (showErrorMessage) {
+        proxy.$modal.msgError("该载具类别下有子类别,不能删除");
+      }
+      categoryLoading.value = false;
+      carrierLoading.value = false;
+      // 启用按钮点击
+      enableButtons();
+    });
+};
+/**禁用按钮 */
 function disableButtons() {
   //禁用按钮同时,禁用载具编号的输入框
-  carrierFlag.value = false
+  carrierFlag.value = false;
   // 禁用页面上所有按钮的点击事件
-  const buttons = document.querySelectorAll('button');
-  buttons.forEach(button => {
+  const buttons = document.querySelectorAll("button");
+  buttons.forEach((button) => {
     button.disabled = true;
   });
 }
-
+/**取消禁用按钮 */
 function enableButtons() {
-  carrierFlag.value = true
+  carrierFlag.value = true;
   // 启用页面上所有按钮的点击事件
-  const buttons = document.querySelectorAll('button');
-  buttons.forEach(button => {
+  const buttons = document.querySelectorAll("button");
+  buttons.forEach((button) => {
     button.disabled = false;
   });
 }
-
+/**载具类别查询 */
 const handleQueryCategory = () => {
-  getCategories()
-}
+  getCategories();
+};
 /****************************  载具相关事件  ****************************/
-
+/**获取载具数据 */
 const getCarriers = () => {
   disableButtons();
-  categoryLoading.value = true
-  carrierLoading.value = true
-  carrierParams.value.categoryId = currentCategory.value.id
+  categoryLoading.value = true;
+  carrierLoading.value = true;
+  carrierParams.value.categoryId = currentCategory.value.id;
   listCarrier(carrierParams.value).then((res) => {
     enableButtons();
-    categoryLoading.value = false
-    carrierLoading.value = false
-    carrierList.value = res.rows
-    carrierTotal.value = res.total
-  })
-}
+    categoryLoading.value = false;
+    carrierLoading.value = false;
+    carrierList.value = res.rows;
+    carrierTotal.value = res.total;
+  });
+};
 
 /**
  * 列表checkbox列选择 事件
  */
 function handleSelectionChange(selection) {
-  selections.value = selection
-  console.log(selections.value)
+  selections.value = selection;
+  console.log(selections.value);
 }
-
+/**刷新载具 */
 const handleRefreshCarrier = () => {
-  getCarriers()
-}
-
+  getCarriers();
+};
+/**载具查询 */
 const handleQueryCarrier = () => {
-  carrierParams.value.pageNum = 1
-  handleRefreshCarrier()
-}
+  carrierParams.value.pageNum = 1;
+  handleRefreshCarrier();
+};
 
 /** 修改按钮操作 */
 const handleShowCarrierDialog = (id) => {
-  proxy.$refs.carrierRef.open({categoryId: currentCategory.value.id, id: id})
-}
-
+  proxy.$refs.carrierRef.open({ categoryId: currentCategory.value.id, id: id });
+};
+/**打开废弃弹窗 */
 const handleShowAbandonDialog = (id) => {
-  proxy.$refs.carrierAbandonmentRef.open({id: id})
-}
-
+  proxy.$refs.carrierAbandonmentRef.open({ id: id });
+};
+/** 取消废弃*/
 const handleUnAbandoned = (row) => {
   proxy.$modal
-      .confirm('确定取消废弃选中项?')
-      .then(() => {
-        var carrierReject = {}
-        carrierReject.carrierId = row.id
-        carrierReject.isAbandoned = 0
-        carrierReject.operaionDate = proxy.moment().format('YYYY-MM-DD')
-        return saveCarrierReject(carrierReject)
-      })
-      .then(() => {
-        proxy.$modal.msgSuccess('操作成功!')
-        handleRefreshCarrier()
-      })
-      .catch(() => {
-      })
-}
+    .confirm("确定取消废弃选中项?")
+    .then(() => {
+      var carrierReject = {};
+      carrierReject.carrierId = row.id;
+      carrierReject.isAbandoned = 0;
+      carrierReject.operaionDate = proxy.moment().format("YYYY-MM-DD");
+      return saveCarrierReject(carrierReject);
+    })
+    .then(() => {
+      proxy.$modal.msgSuccess("操作成功!");
+      handleRefreshCarrier();
+    })
+    .catch(() => {});
+};
 
 // /** 批量下载二维码 */
 // function handleBatchDownloadQrCode() {
@@ -386,11 +482,12 @@ const handleUnAbandoned = (row) => {
 //   //   }
 //   // })
 // }
+/**批量下载二维码 */
 async function handleBatchDownloadQrCode() {
   console.log(selections.value);
 
   const zip = new JSZip();
-  const zipFilename = '二维码.zip';
+  const zipFilename = "二维码.zip";
 
   for (var i = 0; i < selections.value.length; i++) {
     console.log(webHost + selections.value[i].qcCode);
@@ -400,19 +497,19 @@ async function handleBatchDownloadQrCode() {
     const qrCodeBlob = await qrCodeResponse.blob();
 
     // 将二维码图片添加到 ZIP 文件中
-    zip.file(selections.value[i].code + '.png', qrCodeBlob);
+    zip.file(selections.value[i].code + ".png", qrCodeBlob);
   }
 
   // 生成 ZIP 文件并提供下载
-  zip.generateAsync({type: 'blob'}).then((content) => {
+  zip.generateAsync({ type: "blob" }).then((content) => {
     // 使用 FileSaver.js 将 ZIP 文件保存到本地
     saveAs(content, zipFilename);
   });
 }
 
 onMounted(() => {
-  getCategories()
-})
+  getCategories();
+});
 </script>
 <style scoped>
 :deep(.el-tree-node__label) {

+ 1 - 1
src/views/business/daywork/index.vue

@@ -248,6 +248,7 @@
         @pagination="getDayworkItems"
       />
     </section>
+     <!-- 报工信息表单 -->
     <daywork-item-form
       ref="dayworkItemRef"
       @handleSaveSuccess="handleGetDayworkItems"
@@ -301,7 +302,6 @@ const queryItemParams = ref({
   technologicalProcessDetailId: null,
 });
 
-/***********************  方法区  ****************************/
 /***********************  工段相关事件  ****************************/
 function getList() {
   loading.value = true;

+ 106 - 61
src/views/business/department/form.vue

@@ -1,15 +1,35 @@
 <template>
   <!-- 添加或修改项目信息对话框 -->
-  <el-dialog title="部门信息" v-model="visible" width="400px" append-to-body draggable>
+  <el-dialog
+    title="部门信息"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
     <div class="form-container">
-      <el-form ref="deptRef" class="master-container" :model="form" :rules="rules" label-width="100px">
+      <el-form
+        ref="deptRef"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="100px"
+      >
         <el-form-item label="上级部门" prop="parentId">
-          <el-tree-select v-model="form.parentId" :data="deptOptions" :props="{
+          <el-tree-select
+            v-model="form.parentId"
+            :data="deptOptions"
+            :props="{
               value: 'deptId',
               label: 'deptName',
-              children: 'children'
-            }" value-key="deptId" placeholder="请选择上级部门" check-strictly :render-after-expand="false" >
-        </el-tree-select>
+              children: 'children',
+            }"
+            value-key="deptId"
+            placeholder="请选择上级部门"
+            check-strictly
+            :render-after-expand="false"
+          >
+          </el-tree-select>
         </el-form-item>
 
         <el-form-item label="部门名称" prop="deptName">
@@ -18,105 +38,130 @@
         <el-form-item label="部门编码" prop="deptCode">
           <el-input v-model.trim="form.deptCode" placeholder="请输入部门编码" />
         </el-form-item>
-        <el-form-item v-if="form.type === '0'" label="是否为工段" prop="isWorkSection">
-          <el-select v-model="form.isWorkSection" placeholder="请选择是否为工段">
-            <el-option v-for="item in work_section_status" :key="item.value" :label="item.label" :value="item.value"></el-option>
+        <el-form-item
+          v-if="form.type === '0'"
+          label="是否为工段"
+          prop="isWorkSection"
+        >
+          <el-select
+            v-model="form.isWorkSection"
+            placeholder="请选择是否为工段"
+          >
+            <el-option
+              v-for="item in work_section_status"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="显示排序" prop="orderNum">
-          <el-input-number v-model="form.orderNum" controls-position="right" :min="0" />
+          <el-input-number
+            v-model="form.orderNum"
+            controls-position="right"
+            :min="0"
+          />
         </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="submitForm">确 定</el-button>
+      <el-button type="primary" icon="Check" @click="submitForm"
+        >确 定</el-button
+      >
       <el-button icon="Close" @click="cancel">取 消</el-button>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import { listDept, getDept, saveDept } from '@/api/system/dept'
-const { proxy } = getCurrentInstance()
-const { dept_type } = proxy.useDict('dept_type')
-const { work_section_status } = proxy.useDict('work_section_status')
-const emit = defineEmits(['handleSaveSuccess'])
+import { listDept, getDept, saveDept } from "@/api/system/dept";
+const { proxy } = getCurrentInstance();
 /** 字典数组区 */
+const { work_section_status } = proxy.useDict("work_section_status");
 /** 表单抽屉 页变量 */
-const visible = ref(false)
-const deptOptions = ref([])
-const disabled = ref(false)
+const visible = ref(false);
+const deptOptions = ref([]);
+const disabled = ref(false);
 const data = reactive({
   form: {},
   rules: {
-    parentId: [ { required: true, message: '请选择上级部门', trigger: 'blur' }],
-    deptName: [{ required: true, message: '部门名称不能为空', trigger: 'blur' }],
-    deptCode: [{ required: true, message: '部门编码不能为空', trigger: 'blur' }],
-    orderNum: [{ required: true, message: '显示排序不能为空', trigger: 'blur' }]
-  }
-})
-const { form, rules } = toRefs(data)
+    parentId: [{ required: true, message: "请选择上级部门", trigger: "blur" }],
+    deptName: [
+      { required: true, message: "部门名称不能为空", trigger: "blur" },
+    ],
+    deptCode: [
+      { required: true, message: "部门编码不能为空", trigger: "blur" },
+    ],
+    orderNum: [
+      { required: true, message: "显示排序不能为空", trigger: "blur" },
+    ],
+  },
+});
+const { form, rules } = toRefs(data);
+const emit = defineEmits(["handleSaveSuccess"]);
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(row) {
-  reset()
-  visible.value = true
+  reset();
+  visible.value = true;
   listDept().then((response) => {
-   response.rows =  response.rows.filter((item) => {
-      return item.type == '0'
-    })
-    deptOptions.value = deptOptions.value.concat(proxy.handleTree(response.rows, 'deptId'))
-    deptOptions.value.unshift({ deptId: '0', deptName: '无', children: [] })
-  })
+    response.rows = response.rows.filter((item) => {
+      return item.type == "0";
+    });
+    deptOptions.value = deptOptions.value.concat(
+      proxy.handleTree(response.rows, "deptId")
+    );
+    deptOptions.value.unshift({ deptId: "0", deptName: "无", children: [] });
+  });
   if (row) {
     getDept(row.id).then((response) => {
-      form.value = response.data
-    })
+      form.value = response.data;
+    });
   }
-  disabled.value = true
+  disabled.value = true;
 }
 /** 取消按钮 */
 function cancel() {
-  visible.value = false
-  reset()
+  visible.value = false;
+  reset();
 }
 
 /** 表单重置 */
 function reset() {
   form.value = {
     id: null,
-    deptId: '',
-    type: '0',
-    companyId: '0',
-    parentId: '',
-    code: '',
-    name: '',
-    remark: '',
-    isWorkSection: '0',
-    sort: 0
-  }
-  disabled.value = false
-  deptOptions.value = []
-  proxy.resetForm('deptRef')
+    deptId: "",
+    type: "0",
+    companyId: "0",
+    parentId: "",
+    code: "",
+    name: "",
+    remark: "",
+    isWorkSection: "0",
+    sort: 0,
+  };
+  disabled.value = false;
+  deptOptions.value = [];
+  proxy.resetForm("deptRef");
 }
 
 /** 提交按钮 */
 function submitForm() {
-  proxy.$refs['deptRef'].validate((valid) => {
+  proxy.$refs["deptRef"].validate((valid) => {
     if (valid) {
-      console.log(form.value)
+      console.log(form.value);
       saveDept(form.value).then((res) => {
         if (res.code === 200) {
-          proxy.$modal.msgSuccess('操作成功')
-          emit('handleSaveSuccess')
+          proxy.$modal.msgSuccess("操作成功");
+          emit("handleSaveSuccess");
         }
-        visible.value = false
-      })
+        visible.value = false;
+      });
     }
-  })
+  });
 }
 
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 81 - 43
src/views/business/department/formUser.vue

@@ -1,88 +1,126 @@
 <template>
   <!-- 添加或修改项目信息对话框 -->
-  <el-dialog title="员工信息" v-model="visible" width="400px" append-to-body draggable>
+  <el-dialog
+    title="员工信息"
+    v-model="visible"
+    width="400px"
+    append-to-body
+    draggable
+  >
     <div class="form-container">
-      <el-form ref="userRef" class="master-container" :model="form" :rules="rules" label-width="140px">
+      <el-form
+        ref="userRef"
+        class="master-container"
+        :model="form"
+        :rules="rules"
+        label-width="140px"
+      >
         <el-form-item label="是否为部门负责人" prop="isLeader">
-          <el-select v-model="form.isLeader" placeholder="请选择是否为部门负责人">
-            <el-option v-for="item in is_leader" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          <el-select
+            v-model="form.isLeader"
+            placeholder="请选择是否为部门负责人"
+          >
+            <el-option
+              v-for="item in is_leader"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="是否为调度人员" prop="isDispatcher">
-          <el-select v-model="form.isDispatcher" placeholder="请选择是否为调度人员">
-            <el-option v-for="item in is_dispatcher" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          <el-select
+            v-model="form.isDispatcher"
+            placeholder="请选择是否为调度人员"
+          >
+            <el-option
+              v-for="item in is_dispatcher"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="是否为工段长" prop="isFormman">
           <el-select v-model="form.isFormman" placeholder="请选择是否为工段长">
-            <el-option v-for="item in is_formman" :key="item.value" :label="item.label" :value="item.value"></el-option>
+            <el-option
+              v-for="item in is_formman"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="是否为调机班长" prop="isYardman">
-          <el-select v-model="form.isYardman" placeholder="请选择是否为调机班长">
-            <el-option v-for="item in is_yardman" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          <el-select
+            v-model="form.isYardman"
+            placeholder="请选择是否为调机班长"
+          >
+            <el-option
+              v-for="item in is_yardman"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-form>
     </div>
     <template #footer>
-      <el-button type="primary" icon="Check" @click="submitForm">确 定</el-button>
+      <el-button type="primary" icon="Check" @click="submitForm"
+        >确 定</el-button
+      >
       <el-button icon="Close" @click="cancel">取 消</el-button>
     </template>
   </el-dialog>
 </template>
 <script setup>
-import { updateDeptUser } from '@/api/system/user'
-const { proxy } = getCurrentInstance()
-const { is_leader } = proxy.useDict('is_leader')
-const { is_dispatcher } = proxy.useDict('is_dispatcher')
-const { is_yardman } = proxy.useDict('is_yardman')
-const { is_formman } = proxy.useDict('is_formman')
-const emit = defineEmits(['handleSaveSuccess'])
+import { updateDeptUser } from "@/api/system/user";
+const { proxy } = getCurrentInstance();
 /** 字典数组区 */
+const { is_leader } = proxy.useDict("is_leader");
+const { is_dispatcher } = proxy.useDict("is_dispatcher");
+const { is_yardman } = proxy.useDict("is_yardman");
+const { is_formman } = proxy.useDict("is_formman");
 /** 表单抽屉 页变量 */
-const visible = ref(false)
-const deptOptions = ref([])
-const disabled = ref(false)
+const visible = ref(false);
 const data = reactive({
   form: {},
-  rules: {
-   
-  }
-})
-const { form, rules } = toRefs(data)
+  rules: {},
+});
+const { form, rules } = toRefs(data);
+const emit = defineEmits(["handleSaveSuccess"]);
 
 /***********************  方法区  ****************************/
 /** 打开抽屉 */
 function open(row) {
-  visible.value = true
-  form.value.userId = row.userId
-  form.value.isFormman = row.isFormman
-  form.value.isLeader = row.isLeader
-  form.value.isYardman =row.isYardman
-  form.value.isDispatcher = row.isDispatcher
-  form.value.deptId = row.deptId
-
+  visible.value = true;
+  form.value.userId = row.userId;
+  form.value.isFormman = row.isFormman;
+  form.value.isLeader = row.isLeader;
+  form.value.isYardman = row.isYardman;
+  form.value.isDispatcher = row.isDispatcher;
+  form.value.deptId = row.deptId;
 }
 /** 取消按钮 */
 function cancel() {
-  visible.value = false
+  visible.value = false;
 }
 
 /** 提交按钮 */
 function submitForm() {
-  console.log(form.value)
+  console.log(form.value);
   updateDeptUser(form.value).then((res) => {
-        if (res.code === 200) {
-          proxy.$modal.msgSuccess('操作成功')
-          emit('handleSaveSuccess')
-        }
-        visible.value = false
-      })
+    if (res.code === 200) {
+      proxy.$modal.msgSuccess("操作成功");
+      emit("handleSaveSuccess");
     }
+    visible.value = false;
+  });
+}
 
 /** 暴露给父组件的方法 */
 defineExpose({
-  open
-})
+  open,
+});
 </script>

+ 270 - 160
src/views/business/department/index.vue

@@ -3,25 +3,59 @@
     <!-- 左侧区域 -->
     <section class="list-part-container" style="flex: 2">
       <!-- 搜索区 -->
-      <el-form class="list-search-container" :model="queryDeptParams" ref="queryRef" :inline="true">
+      <el-form
+        class="list-search-container"
+        :model="queryDeptParams"
+        ref="queryRef"
+        :inline="true"
+      >
         <el-form-item class="section-title" label="部门管理" />
         <el-form-item>
-          <el-button type="primary" icon="Plus" @click="handleAdd" v-hasPermi="['business:department:add']">新增</el-button>
+          <el-button
+            type="primary"
+            icon="Plus"
+            @click="handleAdd"
+            v-hasPermi="['business:department:add']"
+            >新增</el-button
+          >
         </el-form-item>
         <el-form-item label="部门编码:" prop="deptCode">
-          <el-input v-model.trim="queryDeptParams.deptCode" placeholder="请输入部门编码" @keydown.enter.prevent @keyup.enter="handleSearch" clearable style="width: 155px"  />
+          <el-input
+            v-model.trim="queryDeptParams.deptCode"
+            placeholder="请输入部门编码"
+            @keydown.enter.prevent
+            @keyup.enter="handleSearch"
+            clearable
+            style="width: 155px"
+          />
         </el-form-item>
         <el-form-item>
-          <el-button type="info" icon="Search" @click="handleSearch">搜索</el-button>
+          <el-button type="info" icon="Search" @click="handleSearch"
+            >搜索</el-button
+          >
         </el-form-item>
-        
       </el-form>
       <!-- 列表区 -->
       <div class="el-table-container">
         <div class="el-table-inner-container">
           <!-- 列表区 -->
-          <el-table ref="departmentTable" v-loading="loading" :data="deptList" row-key="id" height="100%" :indent="20" default-expand-all highlight-current-row @current-change="handleGetUser">
-            <el-table-column label="行号" type="index" width="50" align="center" />
+          <el-table
+            ref="departmentTable"
+            v-loading="deptLoading"
+            :data="deptList"
+            row-key="id"
+            height="100%"
+            :indent="20"
+            default-expand-all
+            highlight-current-row
+            @current-change="handleGetUser"
+          >
+            <el-table-column
+              label="行号"
+              type="index"
+              width="50"
+              align="center"
+            />
             <el-table-column label="部门名称" prop="label" align="center" />
             <el-table-column label="部门编码" prop="deptCode" align="center" />
             <!-- <el-table-column label="是否企业" prop="deptType" width="70" align="center">
@@ -29,15 +63,42 @@
                 <dict-tag :options="dept_type" :value="scope.row.deptType" />
               </template>
             </el-table-column> -->
-            <el-table-column label="是否工段" prop="isWorkSection" width="70" align="center">
+            <el-table-column
+              label="是否工段"
+              prop="isWorkSection"
+              width="70"
+              align="center"
+            >
               <template #default="scope">
-                <dict-tag :options="work_section_status" :value="scope.row.isWorkSection" />
+                <dict-tag
+                  :options="work_section_status"
+                  :value="scope.row.isWorkSection"
+                />
               </template>
             </el-table-column>
-            <el-table-column label="操作" width="150" align="center" v-hasPermi="['business:department:edit']">
+            <el-table-column
+              label="操作"
+              width="150"
+              align="center"
+              v-hasPermi="['business:department:edit']"
+            >
               <template #default="scope">
-                <el-button link type="warning" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['business:department:edit']">编辑</el-button>
-                <el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['business:department:remove']">删除</el-button>
+                <el-button
+                  link
+                  type="warning"
+                  icon="Edit"
+                  @click="handleUpdate(scope.row)"
+                  v-hasPermi="['business:department:edit']"
+                  >编辑</el-button
+                >
+                <el-button
+                  link
+                  type="danger"
+                  icon="Delete"
+                  @click="handleDelete(scope.row)"
+                  v-hasPermi="['business:department:remove']"
+                  >删除</el-button
+                >
               </template>
             </el-table-column>
           </el-table>
@@ -48,24 +109,73 @@
     <!-- 右侧区域 -->
     <section class="list-part-container" style="flex: 3">
       <!-- 搜索区 -->
-      <el-form class="list-search-container" :model="queryParams" ref="queryRef" :inline="true">
+      <el-form
+        class="list-search-container"
+        :model="queryParams"
+        ref="queryRef"
+        :inline="true"
+      >
         <el-form-item class="section-title" label="员工" />
         <el-form-item>
-          <el-button type="primary" icon="Plus" :disabled="deptList.length == 0"  @click="openUser">新增</el-button>
-          <el-button type="danger" icon="Delete" :disabled="ids.length == 0"  @click="handleUserDelete"> 删除</el-button>
+          <el-button
+            type="primary"
+            icon="Plus"
+            :disabled="deptList.length == 0"
+            @click="openUser"
+            >新增</el-button
+          >
+          <el-button
+            type="danger"
+            icon="Delete"
+            :disabled="ids.length == 0"
+            @click="handleUserDelete"
+          >
+            删除</el-button
+          >
         </el-form-item>
       </el-form>
 
       <!-- 列表区 -->
       <div class="el-table-container">
         <div class="el-table-inner-container">
-          <el-table v-loading="loading" :data="userList" row-key="id" height="100%" @selection-change="handleSelectionChange">
+          <el-table
+            v-loading="userLoading"
+            :data="userList"
+            row-key="id"
+            height="100%"
+            @selection-change="handleSelectionChange"
+          >
             <el-table-column type="selection" width="40" align="center" />
-            <el-table-column type="index" label="行号" width="50" align="center" />
-            <el-table-column label="员工编码" width="100" prop="user.userName" align="center" />
-            <el-table-column label="员工姓名" width="100" prop="user.nickName" align="center" />
-            <el-table-column label="性别" width="50" prop="user.sex" align="center" />
-            <el-table-column label="手机号码" width="120" prop="user.phoneNumber" align="center" />
+            <el-table-column
+              type="index"
+              label="行号"
+              width="50"
+              align="center"
+            />
+            <el-table-column
+              label="员工编码"
+              width="100"
+              prop="user.userName"
+              align="center"
+            />
+            <el-table-column
+              label="员工姓名"
+              width="100"
+              prop="user.nickName"
+              align="center"
+            />
+            <el-table-column
+              label="性别"
+              width="50"
+              prop="user.sex"
+              align="center"
+            />
+            <el-table-column
+              label="手机号码"
+              width="120"
+              prop="user.phoneNumber"
+              align="center"
+            />
             <el-table-column label="部门负责人" width="90" align="center">
               <template #default="scope">
                 <dict-tag :options="yesOrNo" :value="scope.row.isLeader" />
@@ -86,9 +196,15 @@
                 <dict-tag :options="yesOrNo" :value="scope.row.isYardman" />
               </template>
             </el-table-column>
-            <el-table-column label="操作"  prop="phoneNumber" align="center">
+            <el-table-column label="操作" prop="phoneNumber" align="center">
               <template #default="scope">
-                <el-button link type="warning" icon="Edit" @click="handleUpdateUser(scope.row)" >编辑</el-button>
+                <el-button
+                  link
+                  type="warning"
+                  icon="Edit"
+                  @click="handleUpdateUser(scope.row)"
+                  >编辑</el-button
+                >
               </template>
             </el-table-column>
             <el-table-column />
@@ -96,220 +212,214 @@
         </div>
       </div>
       <!-- 分页 -->
-      <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getUserList" />
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getUserList"
+      />
     </section>
-
-    <!-- 表单 -->
+    <!-- 部门管理表单 -->
     <dept-form ref="deptRef" @handleSaveSuccess="getList" />
-    <person ref="personRef" :multiple="multiple" :multiple-selected="handleMultipleSelected" />
+    <!-- 员工选择弹窗 -->
+    <person
+      ref="personRef"
+      :multiple="multiple"
+      :multiple-selected="handleMultipleSelected"
+    />
+    <!-- 员工编辑表单 -->
     <user-form ref="updateUser" @handleSaveSuccess="getUserList" />
   </div>
 </template>
 
 <script setup name="Process">
-import { getUsersByDeptId, saveDeptUser, deptTreeSelect, delDeptUser, getDeptUser, getUsersItemByDeptId } from '@/api/system/user'
-import { delDept, getDept } from '@/api/system/dept'
-import {deleteGroupDetail } from '@/api/business/resourceGroupDetail'
-import deptForm from './form'
-import userForm from './formUser'
-import person from '@/views/dialog/person.vue'
-
-const { proxy } = getCurrentInstance()
-const { dept_type } = proxy.useDict('dept_type')
-const { work_section_status } = proxy.useDict('work_section_status')
-
-const deptList = ref([])
-const userList = ref([])
-const userInfoList = ref([])
-const loading = ref(true)
-const ids = ref([])
-const deptName = ref('')
-const single = ref(true)
-const multiple = ref(true)
+import {
+  saveDeptUser,
+  deptTreeSelect,
+  delDeptUser,
+  getDeptUser,
+} from "@/api/system/user";
+import { delDept } from "@/api/system/dept";
+import { deleteGroupDetail } from "@/api/business/resourceGroupDetail";
+import deptForm from "./form";
+import userForm from "./formUser";
+import person from "@/views/dialog/person.vue";
+const { proxy } = getCurrentInstance();
+/**字典 */
+const { work_section_status } = proxy.useDict("work_section_status");
+//部门
+const currentDept = ref({});
+const deptList = ref([]);
+const deptLoading = ref(true);
+//员工
+const userList = ref([]);
+const userLoading = ref(false);
+const total = ref(0);
+const ids = ref([]);
 
-//多选员工数据
-const deptUser = ref([])
-const currentDept = ref({})
-const total = ref(0)
+const single = ref(true);
+const multiple = ref(true);
 /** 查询对象 */
 const queryParams = ref({
   deptId: 0,
   pageNum: 1,
   pageSize: 10,
-  code: '',
-  name: ''
-})
+  code: "",
+  name: "",
+});
 const queryDeptParams = ref({
-  deptCode:''
-})
+  deptCode: "",
+});
 
 const yesOrNo = [
-  { label: '是', value: '1', elTagType: 'primary', elTagClass: '' },
-  { label: '否', value: '0', elTagType: 'danger', elTagClass: '' }
-]
+  { label: "是", value: "1", elTagType: "primary", elTagClass: "" },
+  { label: "否", value: "0", elTagType: "danger", elTagClass: "" },
+];
 
 /***********************  方法区  ****************************/
-
-/** 查询标准工序管理列表 */
+/***********************  部门管理相关事件  ****************************/
+/** 查询工段列表 */
 function getList() {
-  loading.value = true
+  deptLoading.value = true;
   deptTreeSelect(queryDeptParams.value).then((response) => {
     deptList.value = response.data.filter((item) => {
-      return item.deptType == '0'
-    })
+      return item.deptType == "0";
+    });
     if (deptList.value.length > 0) {
-      currentDept.value = deptList.value[0]
-      proxy.$refs.departmentTable.setCurrentRow(deptList.value[0])
-    }
-    else {
-      userList.value = []
+      currentDept.value = deptList.value[0];
+      proxy.$refs.departmentTable.setCurrentRow(deptList.value[0]);
+    } else {
+      userList.value = [];
     }
-    loading.value = false
-  })
+    deptLoading.value = false;
+  });
 }
-
+/**部门查询 */
 function handleSearch() {
-  getList()
+  getList();
+}
+/** 部门新增按钮操作 */
+function handleAdd() {
+  proxy.$refs.deptRef.open();
+}
+/** 部门修改按钮操作 */
+function handleUpdate(row) {
+  proxy.$refs.deptRef.open(row);
+}
+/**部门名称表点击事件 */
+function handleGetUser(row) {
+  if (row) {
+    currentDept.value = row;
+    getUserList();
+  } else {
+    userList.value = [];
+    total.value = 0;
+  }
 }
 
+/***********************  员工相关事件  ****************************/
+
 //打开添加人员
 const openUser = () => {
-  handleAddBatchUsers()
-}
-/** 多选添加 */
+  handleAddBatchUsers();
+};
+/** 新增员工 */
 function handleAddBatchUsers() {
-  multiple.value = true
-  const userInfo = {}
-  userInfo.identifying = true
-  userInfo.deptId = currentDept.value.id
-  proxy.$refs.personRef.open(userInfo)
+  multiple.value = true;
+  const userInfo = {};
+  userInfo.identifying = true;
+  userInfo.deptId = currentDept.value.id;
+  proxy.$refs.personRef.open(userInfo);
 }
-
+/**员工多选带回 */
 function handleMultipleSelected(selection) {
-  var newList = []
+  var newList = [];
   for (var i = 0; i < selection.length; ++i) {
-    var newPerson = {}
-
-    newPerson.userId = selection[i].userId
-    newPerson.deptId = currentDept.value.id
-
-    newList.push(newPerson)
+    var newPerson = {};
+    newPerson.userId = selection[i].userId;
+    newPerson.deptId = currentDept.value.id;
+    newList.push(newPerson);
   }
   saveDeptUser(newList).then((response) => {
     if (response.code == 200) {
-      proxy.$modal.msgSuccess('操作成功')
-      handleGetUser(currentDept.value)
+      proxy.$modal.msgSuccess("操作成功");
+      handleGetUser(currentDept.value);
     }
-  })
+  });
 }
 
 // 多选框选中数据
 function handleSelectionChange(selection) {
   ids.value = selection.map((item) => {
-    return { userId: item.userId, deptId: currentDept.value.id }
-  })
-  console.log(ids.value)
-  single.value = selection.length != 1
-  multiple.value = !selection.length
-}
-
-/** 新增按钮操作 */
-function handleAdd() {
-  proxy.$refs.deptRef.open()
-}
-
-/** 修改按钮操作 */
-function handleUpdate(row) {
-  // getDept(row.id).then((res) => {})
-  proxy.$refs.deptRef.open(row)
-}
-
-/**部门名称表点击事件 */
-function handleGetUser(row) {
-  if (row) {
-    currentDept.value = row
-    getUserList()
-  }
-  else {
-    userList.value = []
-      total.value = 0
-  }
+    return { userId: item.userId, deptId: currentDept.value.id };
+  });
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
 }
 
 /** 获取员工列表 */
-function getUsers() {
-  queryParams.value.deptId = currentDept.value.id
-  getDeptUser(queryParams.value).then((response) => {
-    if (response.code == 200) {
-      userList.value = response.rows
-      total.value = response.total
-    }
-  })
-}
-
 function getUserList() {
-  queryParams.value.deptId = currentDept.value.id
+  userLoading.value = true;
+  queryParams.value.deptId = currentDept.value.id;
   getDeptUser(queryParams.value).then((response) => {
     if (response.code == 200) {
-      userList.value = response.rows
-      total.value = response.total
+      userList.value = response.rows;
+      userLoading.value = false;
+      total.value = response.total;
     }
-  })
-  console.log(currentDept.value)
+  });
 }
 
-/** 修改按钮操作 */
+/** 员工修改按钮操作 */
 function handleUpdateUser(row) {
-  const id = row.id
-  const userData = row
-  userData.deptId = queryParams.value.deptId
-  userData.sysDept = currentDept.value
-  proxy.$refs.updateUser.open(userData)
+  const userData = row;
+  userData.deptId = queryParams.value.deptId;
+  userData.sysDept = currentDept.value;
+  proxy.$refs.updateUser.open(userData);
 }
 
-/** 删除按钮操作 */
+/** 员工删除按钮操作 */
 function handleDelete(row) {
-  var showErrorMessage = false
-  const _ids = row.id || ids.value
+  var showErrorMessage = false;
+  const _ids = row.id || ids.value;
   proxy.$modal
-    .confirm('是否确认删除选中的数据项?')
+    .confirm("是否确认删除选中的数据项?")
     .then(function () {
       if (row.children) {
-         showErrorMessage = true;
-         return Promise.reject(new Error("HasChildrenError"));
+        showErrorMessage = true;
+        return Promise.reject(new Error("HasChildrenError"));
       }
-      return delDept(_ids)
+      return delDept(_ids);
     })
     .then(() => {
-      getList()
-      proxy.$modal.msgSuccess('删除成功!')
+      getList();
+      proxy.$modal.msgSuccess("删除成功!");
     })
     .catch(() => {})
     .finally(() => {
       if (showErrorMessage) {
         proxy.$modal.msgError("该部门下有子部门,不能删除!");
       }
-    })
+    });
 }
 /** 人员删除按钮操作 */
 function handleUserDelete(row) {
-  console.log(ids.value)
   proxy.$modal
-    .confirm('是否确认删除选中的人员,资源组明细也将同步删除该人员?')
+    .confirm("是否确认删除选中的人员,资源组明细也将同步删除该人员?")
     .then(function () {
-      return delDeptUser(ids.value)
+      return delDeptUser(ids.value);
     })
     .then(function () {
-      deleteGroupDetail(ids.value)
+      deleteGroupDetail(ids.value);
     })
     .then(() => {
-      handleGetUser(currentDept.value)
-      proxy.$modal.msgSuccess('删除成功!')
+      handleGetUser(currentDept.value);
+      proxy.$modal.msgSuccess("删除成功!");
     })
-    .catch(() => {})
+    .catch(() => {});
 }
-
 onMounted(() => {
-  getList()
-})
+  getList();
+});
 </script>