Explorar el Código

设备表格数据填充

dengrui hace 8 meses
padre
commit
34758b26aa

+ 15 - 0
src/api/excel/index.ts

@@ -118,3 +118,18 @@ export function getExcelDataByWorkOrderid(workOrderId: string, id: string) {
     method: "get",
   });
 }
+//设备表格填充
+export function setExcelDatas(formType: string, recordId: string) {
+  return request({
+    url: `/api/v1/ProcessFormData/deviceForm/${formType}/${recordId}`,
+    method: "get",
+  });
+}
+//新增过程表单
+export function addProExcel(data: any) {
+  return request({
+    url: `/api/v1/ProcessFormData/device/add`,
+    method: "post",
+    data,
+  });
+}

+ 9 - 9
src/views/device/allocate/components/proWorkOrderExcel.vue

@@ -20,7 +20,7 @@
     </div>
   </div>
 </template>
-<script setup lang="ts">
+<script setup>
 import { ref } from "vue";
 import { updateProExcel } from "@/api/excel/index.ts";
 import ExcelView from "@/components/ExcelView/index.vue";
@@ -74,7 +74,7 @@ const useAddTemplateHook = () => {
   const excelStatus = ref(true);
 
   //获取组件内实时数据赋值到外层
-  const confirm = (data: any) => {
+  const confirm = (data) => {
     exceldata.value = data;
   };
   return {
@@ -119,12 +119,12 @@ const useFormHook = () => {
     ],
   });
   //新增模版
-  const submitForm = async (formEl: any) => {
+  const submitForm = async (formEl) => {
     //@ts-ignore;
     excelViewRef.value.confirm();
     if (exceldata.value == null) return ElMessage.error("请提供表格数据!");
     if (!formEl) return;
-    await formEl.validate(async (valid: any, fields: any) => {
+    await formEl.validate(async (valid, fields) => {
       if (valid) {
         const { data, code } = await addExcel({
           ...formVlaue,
@@ -140,14 +140,14 @@ const useFormHook = () => {
     });
   };
   //更新行内信息
-  const updateExForm = async (formEl: any) => {
+  const updateExForm = async (formEl) => {
     //@ts-ignore;
     excelViewRef.value.saveCellData();
     //@ts-ignore;
     excelViewRef.value.confirm();
     if (exceldata.value == null) return ElMessage.error("请提供表格数据!");
     if (!formEl) return;
-    await formEl.validate(async (valid: any, fields: any) => {
+    await formEl.validate(async (valid, fields) => {
       if (valid) {
         const { data, code } = await updateExcel({
           ...formVlaue,
@@ -164,7 +164,7 @@ const useFormHook = () => {
     });
   };
   //表达数据重置
-  const resetForm = (formEl: any) => {
+  const resetForm = (formEl) => {
     if (!formEl) return;
     formEl.resetFields();
   };
@@ -235,7 +235,7 @@ const useAddFormHook = () => {
       getSettingData();
     }
   };
-  const deleteSettings = async (id: any) => {
+  const deleteSettings = async (id) => {
     const { data, code } = await deleteSettingsData({ id: id });
     if (code == "200") {
       ElMessage.success("删除成功");
@@ -256,7 +256,7 @@ const useAddFormHook = () => {
     settings.value = [];
   };
   const creatAddForm = async () => {
-    await formRef1.value.validate(async (valid: any, fields: any) => {
+    await formRef1.value.validate(async (valid, fields) => {
       if (valid) {
         addSettings();
       }

+ 19 - 3
src/views/device/allocate/index.vue

@@ -48,7 +48,7 @@
         <el-button
           icon="el-icon-setting"
           text
-          @click="showProExcel('153')"
+          @click="showExcel(row)"
           type="primary"
           >表格填充</el-button
         >
@@ -77,7 +77,7 @@
       @close="workOderShow = false"
       width="1600"
     >
-      <proWorkOrderExcel :data="ExDataObj" @close="closeShow" />
+      <AddExcelInfo :data="ExDataObj" :rowDatas="rowData" @close="closeShow" />
     </el-dialog>
     <el-dialog
       v-model="dialog1.visible"
@@ -533,9 +533,25 @@ import { checkPerm } from "@/directive/permission";
 import { getUserList } from "@/api/system/user";
 import { allocateAudit, allocateExport } from "@/api/device/index";
 import { useCommonStoreHook } from "@/store";
-import { getProExcel } from "@/api/excel";
 import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
+import { getProExcel, setExcelDatas } from "@/api/excel";
+import AddExcelInfo from "../components/addExcelInfo.vue";
 import dictDataUtil from "@/common/configs/dictDataUtil";
+const showExcel = async (row) => {
+  await getExcelData(row);
+};
+const getExcelData = async (row) => {
+  const { data, code } = await setExcelDatas("7", row.id);
+  if (code == "200") {
+    ExDataObj.value = data;
+    ExDataObj.value.formType = "7";
+    ExDataObj.value.recordId = row.id;
+    workOderShow.value = true;
+  } else {
+    ExDataObj.value = {};
+    workOderShow.value = false;
+  }
+};
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const ExDataObj = ref({});
 const workOderShow = ref(false);

+ 349 - 0
src/views/device/components/addExcelInfo.vue

@@ -0,0 +1,349 @@
+<template>
+  <div class="dialogBody">
+    <div class="exView" :key="excelKey1">
+      <ExcelView
+        ref="excelViewRef"
+        :option="options"
+        @confirm="confirm"
+        v-model:data="exceldata"
+        :checkStatus="true"
+        :verifications="setting"
+      />
+    </div>
+    <div class="btns" v-if="options.edit !== false">
+      <el-button class="btn" type="success" @click="submit">确 定 </el-button>
+      <el-button class="btn" type="info" @click="cancel">取 消 </el-button>
+    </div>
+    <div class="btns" v-else>
+      <el-button class="btn" type="info" @click="cancel">返 回 </el-button>
+    </div>
+  </div>
+</template>
+<script setup>
+import { ref } from "vue";
+import { addProExcel } from "@/api/excel/index.ts";
+import ExcelView from "@/components/ExcelView/index.vue";
+const setting = ref([]);
+const props = defineProps({
+  data: {
+    type: Object,
+  },
+});
+const rowData = ref({});
+const emits = defineEmits(["update:modelValue", "close", "refresh"]);
+const excelKey1 = ref(false);
+const submit = async () => {
+  //@ts-ignore
+  excelViewRef.value.confirm();
+  const { data, code } = await addProExcel({
+    excelData: JSON.stringify(exceldata.value),
+    excelFormId: props.data.excelFormId,
+    recordId: props.data.recordId,
+    formName: props.data.formName,
+    formType: props.data.formType,
+  });
+  if (code == "200") {
+    ElMessage.success("修改成功!");
+    cancel();
+  }
+};
+const cancel = () => {
+  excelKey1.value = !excelKey1.value;
+  emits("close");
+};
+// 存放操作表格相关业务代码
+const useAddTemplateHook = () => {
+  //excelView 组件实例
+  const excelViewRef = ref(null);
+  //表格配置项
+  const options = ref({
+    //头部操作区域
+    opreaState: true,
+    //导入按钮展示
+    in: false,
+    //导出按钮展示
+    out: true,
+    print: true,
+    //编辑状态 false:为查看状态
+    edit: true,
+    //当前操作表格名称
+    inName: "",
+    opreaTitle: false,
+  });
+  //双向绑定表格data变量
+  const exceldata = ref(null);
+  //控制表格组件展示界面变量(包括表格展示页面和操作页面)
+  const excelStatus = ref(true);
+
+  //获取组件内实时数据赋值到外层
+  const confirm = (data) => {
+    exceldata.value = data;
+  };
+  return {
+    excelStatus,
+    options,
+    confirm,
+    exceldata,
+    excelViewRef,
+  };
+};
+const { options, confirm, exceldata, excelViewRef } = useAddTemplateHook();
+const useFormHook = () => {
+  //KEY告知组件刷新
+  const excelKey = ref(1);
+  //表单data
+  const formVlaue = reactive({ formType: null, formName: null, state: null });
+  //表单是否为编辑状态变量
+  const operaEditStatus = ref(false);
+  //选中的行id
+  const selectId = ref(null);
+  //表单ref实例
+  const formRef = ref(null);
+  //表单校验规则
+  const rules = reactive({
+    formName: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+    formType: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+    state: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+  });
+  //新增模版
+  const submitForm = async (formEl) => {
+    //@ts-ignore;
+    excelViewRef.value.confirm();
+    if (exceldata.value == null) return ElMessage.error("请提供表格数据!");
+    if (!formEl) return;
+    await formEl.validate(async (valid, fields) => {
+      if (valid) {
+        const { data, code } = await addExcel({
+          ...formVlaue,
+          excelData: exceldata.value,
+        });
+        if (code == "200") {
+          ElMessage.success("添加成功!");
+          resetData();
+          dataEditList();
+          editTep(data);
+        }
+      }
+    });
+  };
+  //更新行内信息
+  const updateExForm = async (formEl) => {
+    //@ts-ignore;
+    excelViewRef.value.saveCellData();
+    //@ts-ignore;
+    excelViewRef.value.confirm();
+    if (exceldata.value == null) return ElMessage.error("请提供表格数据!");
+    if (!formEl) return;
+    await formEl.validate(async (valid, fields) => {
+      if (valid) {
+        const { data, code } = await updateExcel({
+          ...formVlaue,
+          excelData: exceldata.value,
+          id: selectId.value,
+          settings: settings.value,
+        });
+        if (code == "200") {
+          ElMessage.success("修改成功!");
+          resetData();
+          dataEditList();
+        }
+      }
+    });
+  };
+  //表达数据重置
+  const resetForm = (formEl) => {
+    if (!formEl) return;
+    formEl.resetFields();
+  };
+  return {
+    formVlaue,
+    formRef,
+    rules,
+    selectId,
+    excelKey,
+    operaEditStatus,
+    submitForm,
+    resetForm,
+    updateExForm,
+  };
+};
+
+const {
+  formVlaue,
+  formRef,
+  rules,
+  selectId,
+  excelKey,
+  operaEditStatus,
+  submitForm,
+  resetForm,
+  updateExForm,
+} = useFormHook();
+//表格新增 分页
+const useAddFormHook = () => {
+  const formRef1 = ref(null);
+  const settings = ref([]);
+  const searchForm = ref({
+    pageNo: 1,
+    pageSize: 5,
+    totalPages: 0,
+  });
+  const addForm = ref({
+    paramName: "",
+    position: "",
+  });
+  const addPage = () => {
+    searchForm.value.pageNo = searchForm.value.pageNo + 1;
+    getSettingData();
+  };
+  const deletePage = () => {
+    searchForm.value.pageNo = searchForm.value.pageNo - 1;
+    getSettingData();
+  };
+  const getSettingData = async () => {
+    const { data } = await getSettingsData({
+      excelFormId: selectId.value,
+      ...searchForm.value,
+    });
+    settings.value = data.records;
+    if (settings.value.length == 0 && searchForm.value.pageNo > 1) {
+      deletePage();
+    }
+    searchForm.value.totalPages = data.totalPages;
+  };
+  const addSettings = async () => {
+    const { data, code } = await addSettingsData({
+      excelFormId: selectId.value,
+      ...addForm.value,
+    });
+    if (code == "200") {
+      ElMessage.success("添加成功");
+      resetAddForm();
+      getSettingData();
+    }
+  };
+  const deleteSettings = async (id) => {
+    const { data, code } = await deleteSettingsData({ id: id });
+    if (code == "200") {
+      ElMessage.success("删除成功");
+      getSettingData();
+    }
+  };
+
+  const resetAddForm = () => {
+    addForm.value = {
+      paramName: "",
+      position: "",
+    };
+    searchForm.value = {
+      pageNo: 1,
+      pageSize: 5,
+      totalPages: 0,
+    };
+    settings.value = [];
+  };
+  const creatAddForm = async () => {
+    await formRef1.value.validate(async (valid, fields) => {
+      if (valid) {
+        addSettings();
+      }
+    });
+  };
+  const addRules = reactive({
+    paramName: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+    position: [
+      {
+        required: true,
+        trigger: "blur",
+      },
+    ],
+  });
+  return {
+    formRef1,
+    addForm,
+    searchForm,
+    settings,
+    addRules,
+    creatAddForm,
+    resetAddForm,
+    getSettingData,
+    addSettings,
+    addPage,
+    deleteSettings,
+    deletePage,
+  };
+};
+
+const {
+  formRef1,
+  addForm,
+  searchForm,
+  settings,
+  addRules,
+  creatAddForm,
+  deletePage,
+  addPage,
+  resetAddForm,
+  getSettingData,
+  deleteSettings,
+} = useAddFormHook();
+watch(
+  () => props.data,
+  () => {
+    //@ts-ignore
+    rowData.value = props.data;
+    exceldata.value = JSON.parse(rowData.value.excelData);
+    excelKey1.value = !excelKey1.value;
+    if (rowData.value.lookStatus == true) {
+      options.value.edit = false;
+    }
+    setting.value = rowData.value.settings;
+  },
+  { immediate: true }
+);
+</script>
+<style lang="scss" scoped>
+.dialogBody {
+  width: 1560px;
+  height: 560px;
+  display: flex;
+  .exView {
+    width: 1330px;
+    height: 560px;
+    display: flex;
+    position: relative;
+  }
+  .btns {
+    width: 200px;
+    height: 560px;
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    padding: 40px 0 0 20px;
+    .btn {
+      width: 100%;
+      margin: 10px;
+    }
+  }
+}
+</style>

+ 20 - 4
src/views/device/disable/index.vue

@@ -55,7 +55,7 @@
         <el-button
           icon="el-icon-setting"
           text
-          @click="showProExcel('153')"
+          @click="showExcel(row)"
           type="primary"
           >表格填充</el-button
         >
@@ -67,7 +67,7 @@
       @close="workOderShow = false"
       width="1600"
     >
-      <proWorkOrderExcel :data="ExDataObj" @close="closeShow" />
+      <AddExcelInfo :data="ExDataObj" :rowDatas="rowData" @close="closeShow" />
     </el-dialog>
     <el-dialog
       v-model="dialog1.visible"
@@ -321,8 +321,24 @@ import { useCrud } from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
 import { useCommonStoreHook } from "@/store";
 import { disableAudit } from "@/api/device";
-import { getProExcel } from "@/api/excel";
 import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
+import { getProExcel, setExcelDatas } from "@/api/excel";
+import AddExcelInfo from "../components/addExcelInfo.vue";
+const showExcel = async (row) => {
+  await getExcelData(row);
+};
+const getExcelData = async (row) => {
+  const { data, code } = await setExcelDatas("8", row.id);
+  if (code == "200") {
+    ExDataObj.value = data;
+    ExDataObj.value.formType = "8";
+    ExDataObj.value.recordId = row.id;
+    workOderShow.value = true;
+  } else {
+    ExDataObj.value = {};
+    workOderShow.value = false;
+  }
+};
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const ExDataObj = ref({});
 const workOderShow = ref(false);
@@ -372,7 +388,7 @@ const rowSelectable = (row, index) => {
 
 onMounted(() => {
   // console.log("crudRef", crudRef)
-  search.value.tag = "0"
+  search.value.tag = "0";
   dataList();
 });
 const ctableRef = ref(null);

+ 28 - 12
src/views/device/maintenance/index.vue

@@ -68,7 +68,7 @@
         <el-button
           icon="el-icon-setting"
           text
-          @click="showProExcel('153')"
+          @click="showExcel(row)"
           type="primary"
           >表格填充</el-button
         >
@@ -83,14 +83,6 @@
       <device-page @device-info="deviceInfo" :operate="operate" />
     </el-dialog>
     <el-dialog
-      v-model="workOderShow"
-      :title="updateTitle"
-      @close="workOderShow = false"
-      width="1600"
-    >
-      <proWorkOrderExcel :data="ExDataObj" @close="closeShow" />
-    </el-dialog>
-    <el-dialog
       v-model="dialog1.visible"
       :title="dialog1.title"
       width="750px"
@@ -210,6 +202,14 @@
     >
       <record-page :maintenance="clickRecord" />
     </el-dialog>
+    <el-dialog
+      v-model="workOderShow"
+      :title="updateTitle"
+      @close="workOderShow = false"
+      width="1600"
+    >
+      <AddExcelInfo :data="ExDataObj" :rowDatas="rowData" @close="closeShow" />
+    </el-dialog>
   </div>
 </template>
 <script setup>
@@ -221,20 +221,33 @@ import { maintenanceUpdate } from "@/api/device/index";
 import { useCommonStoreHook } from "@/store";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import RecordPage from "./components/record-page.vue";
-import { getProExcel } from "@/api/excel";
+import { getProExcel, setExcelDatas } from "@/api/excel";
+import AddExcelInfo from "../components/addExcelInfo.vue";
 import { checkPerm } from "@/directive/permission";
-import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
+
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const ExDataObj = ref({});
 const workOderShow = ref(false);
 const closeShow = () => {
   workOderShow.value = false;
 };
-
+const updateTitle = ref("表格填充");
 const test = () => {
   isShowTable.value = true;
   tableType.value = tableType.value == 1 ? 2 : 1;
 };
+const getExcelData = async (row) => {
+  const { data, code } = await setExcelDatas("5", row.id);
+  if (code == "200") {
+    ExDataObj.value = data;
+    ExDataObj.value.formType = "5";
+    ExDataObj.value.recordId = row.id;
+    workOderShow.value = true;
+  } else {
+    ExDataObj.value = {};
+    workOderShow.value = false;
+  }
+};
 const permission = reactive({
   delBtn: checkPerm(ButtonPermKeys.DEVICE.BTNS.maintenance_del),
   addBtn: checkPerm(ButtonPermKeys.DEVICE.BTNS.maintenance_add),
@@ -264,6 +277,9 @@ const showProExcel = async (id) => {
     workOderShow.value = false;
   }
 };
+const showExcel = async (row) => {
+  await getExcelData(row);
+};
 const userList = ref([]);
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =

+ 19 - 4
src/views/device/repair/index.vue

@@ -39,7 +39,7 @@
         <el-button
           icon="el-icon-setting"
           text
-          @click="showProExcel('153')"
+          @click="showExcel(row)"
           type="primary"
           >表格填充</el-button
         >
@@ -522,7 +522,7 @@
       @close="workOderShow = false"
       width="1600"
     >
-      <proWorkOrderExcel :data="ExDataObj" @close="closeShow" />
+      <AddExcelInfo :data="ExDataObj" :rowDatas="rowData" @close="closeShow" />
     </el-dialog>
   </div>
 </template>
@@ -534,7 +534,8 @@ import { checkPerm } from "@/directive/permission";
 import { getUserList } from "@/api/system/user";
 import { repair, audit } from "@/api/device/index";
 import { useCommonStoreHook } from "@/store";
-import { getProExcel } from "@/api/excel";
+import { getProExcel, setExcelDatas } from "@/api/excel";
+import AddExcelInfo from "../components/addExcelInfo.vue";
 import dictDataUtil from "@/common/configs/dictDataUtil";
 import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
@@ -654,7 +655,21 @@ const maintenanceSubmit2 = () => {
     }
   });
 };
-
+const showExcel = async (row) => {
+  await getExcelData(row);
+};
+const getExcelData = async (row) => {
+  const { data, code } = await setExcelDatas("6", row.id);
+  if (code == "200") {
+    ExDataObj.value = data;
+    ExDataObj.value.formType = "6";
+    ExDataObj.value.recordId = row.id;
+    workOderShow.value = true;
+  } else {
+    ExDataObj.value = {};
+    workOderShow.value = false;
+  }
+};
 const maintenanceSubmit3 = () => {
   //alert(JSON.stringify(maintenanceInfo.value))
   maintenanceInfoForm3.value.validate((isValid, invalidFields) => {

+ 21 - 5
src/views/device/scrap/index.vue

@@ -55,7 +55,7 @@
         <el-button
           icon="el-icon-setting"
           text
-          @click="showProExcel('153')"
+          @click="showExcel(row)"
           type="primary"
           >表格填充</el-button
         >
@@ -67,7 +67,7 @@
       @close="workOderShow = false"
       width="1600"
     >
-      <proWorkOrderExcel :data="ExDataObj" @close="closeShow" />
+      <AddExcelInfo :data="ExDataObj" :rowDatas="rowData" @close="closeShow" />
     </el-dialog>
     <el-dialog
       v-model="dialog1.visible"
@@ -321,8 +321,24 @@ import { useCrud } from "@/hooks/userCrud";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
 import { useCommonStoreHook } from "@/store";
 import { disableAudit } from "@/api/device";
-import { getProExcel } from "@/api/excel";
 import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
+import { getProExcel, setExcelDatas } from "@/api/excel";
+import AddExcelInfo from "../components/addExcelInfo.vue";
+const showExcel = async (row) => {
+  await getExcelData(row);
+};
+const getExcelData = async (row) => {
+  const { data, code } = await setExcelDatas("9", row.id);
+  if (code == "200") {
+    ExDataObj.value = data;
+    ExDataObj.value.formType = "9";
+    ExDataObj.value.recordId = row.id;
+    workOderShow.value = true;
+  } else {
+    ExDataObj.value = {};
+    workOderShow.value = false;
+  }
+};
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
 const ExDataObj = ref({});
 const workOderShow = ref(false);
@@ -372,7 +388,7 @@ const rowSelectable = (row, index) => {
 
 onMounted(() => {
   // console.log("crudRef", crudRef)
-  search.value.tag = "1"
+  search.value.tag = "1";
   dataList();
 });
 const ctableRef = ref(null);
@@ -575,7 +591,7 @@ option.value = Object.assign(option.value, {
       overHidden: true,
       display: false,
       hide: true,
-      value: "1"
+      value: "1",
     },
     {
       label: "状态",