Explorar o código

新增物理检测和外观检测节点定制弹窗

lph hai 1 ano
pai
achega
c87cc576bc

+ 17 - 0
zkqy-ui/src/api/bussiness/bpmExcuteProcess.js

@@ -59,3 +59,20 @@ export function editQualityInspectionCertificate(data) {
     data,
   })
 }
+
+// 质检信息新增接口
+export function addInspectionList(data) {
+  return request({
+    url: '/system/inspectionList',
+    method: 'post',
+    data,
+  })
+}
+// 质检信息修改接口
+export function updateInspectionList(data) {
+  return request({
+    url: '/system/inspectionList',
+    method: 'put',
+    data,
+  })
+}

+ 9 - 1
zkqy-ui/src/api/tablelist/commonTable.js

@@ -246,4 +246,12 @@ export function checkOrderNo(data) {
   })
 }
 
-// 
+// 订单管理  订单删除按钮
+export function delOrder(data = []) {
+  let temp = data.join(',')
+  return request({
+    url: `/system/order/${temp}`,
+    method: 'delete',
+    baseURL: process.env.VUE_APP_BASE_API1
+  })
+}

+ 173 - 0
zkqy-ui/src/utils/print/test.html

@@ -0,0 +1,173 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <title>Title</title>
+</head>
+<style>
+
+</style>
+
+<body>
+  <div style="width: 818px;position: relative;">
+    <span style="position: absolute;right: 0;top:60px;writing-mode:vertical-lr;transform: translateX(110%);">一联存根(白)
+      二联客户(红)
+      三联记账(蓝)</span>
+    <div style="width: 818px;position: relative;text-align: center;">
+      <h1 style="display: inline;"><span style="text-decoration: underline;">中科擎云</span>有限公司入库单</h1>
+      <span style="position: absolute; right: 0;bottom: 0;font-size: 20px;">No:<span
+          style="color: red;">0006211</span></span>
+    </div>
+    <div style="width: 818px;position: relative;">
+      <span style="margin-left: 20px;">单位:<span style="margin-left: 5px;">中科擎云智能技术有限公司</span></span>
+      <span style="position: absolute;right: 20px;"><span>2024</span>年<span>2</span>月<span>21</span>日</span>
+    </div>
+    <table style="width: 818px;height:100px;border-collapse:collapse;" border="1">
+      <tr style="text-align: center">
+        <td>物资名称</td>
+        <td>单位</td>
+        <td>规格及代号</td>
+        <td>数量</td>
+        <td>单价</td>
+        <td>金额</td>
+        <td>备注</td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <tr style="text-align: center">
+        <td>数据</td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+        <td></td>
+      </tr>
+      <td colspan="7">&nbsp;&nbsp;用 途 <span
+          style="margin-left: 10px;text-wrap: wrap;">内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊内容啊啊啊啊啊啊</span>
+      </td>
+      </tr>
+    </table>
+    <div style="width: 100%;display: flex;justify-content: space-around;margin-top: 5px;">
+      <span style="width: 30%;">批准:</span>
+      <span style="width: 30%;">交料人:</span>
+      <span style="width: 30%;">仓管员:</span>
+    </div>
+  </div>
+
+  <!--<div v-if="false">-->
+  <!--  <table style="width: 818px;">-->
+  <!--    <tr style="text-align: center">-->
+  <!--      <td colspan="6"><h1>禹州市宜鑫建材有限公司发货单</h1></td>-->
+  <!--    </tr>-->
+  <!--    <tr>-->
+  <!--      <td colspan="2">车号:</td>-->
+  <!--      <td style="text-align: right">年</td>-->
+  <!--      <td style="text-align: right">月</td>-->
+  <!--      <td style="text-align: right;padding-right: 50px">日</td>-->
+  <!--      <td>No:</td>-->
+  <!--    </tr>-->
+  <!--  </table>-->
+
+
+  <!--  <table border="1px" style="border-collapse:collapse;width: 818px; ">-->
+  <!--    <tr style="text-align: center">-->
+  <!--      <td rowspan="2">品 名</td>-->
+  <!--      <td rowspan="2">规格</td>-->
+  <!--      <td rowspan="2">单位</td>-->
+  <!--      <td rowspan="2">数量</td>-->
+  <!--      <td style="border: 0px">发料</td>-->
+  <!--      <td rowspan="2">备注</td>-->
+  <!--    </tr>-->
+  <!--    <tr style="text-align: center;">-->
+  <!--      <td style=" border: 0px">(盖章有效)</td>-->
+  <!--    </tr>-->
+  <!--    <tr style="text-align: center">-->
+  <!--      <td>石英砂1号</td>-->
+  <!--      <td>1mm-2mm</td>-->
+  <!--      <td>吨</td>-->
+  <!--      <td>0</td>-->
+  <!--      <td>100</td>-->
+  <!--      <td>暂无</td>-->
+  <!--    </tr>-->
+  <!--    <tr>-->
+  <!--      <td colspan="6" rowspan="2">发料人签字:</td>-->
+  <!--    </tr>-->
+  <!--  </table>-->
+
+  <!--</div>-->
+</body>
+
+</html>

+ 293 - 0
zkqy-ui/src/views/bussiness/dialogCompments/GongYi/AppearanceInspection.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="form-wrap">
+    <div class="cardwrap">
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <div class="title">
+            <span class="desc">产品名称:</span>
+            <span class="content">{{ productName }}</span>
+          </div>
+        </el-col>
+        <el-form
+          v-if="dict.type.appearance_index.length > 0 && formShow"
+          :model="dictForm"
+          ref="formRef"
+          label-width="120px"
+          :inline="true"
+          size="normal"
+        >
+          <el-col
+            v-for="item of dict.type.appearance_index"
+            :key="item.value"
+            :span="12"
+          >
+            <el-form-item :label="item.label">
+              <el-input v-model="dictForm[item.value]"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注">
+              <el-input type="textarea" v-model="dictForm.remark"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="btn">
+        <el-button class="mt10" type="primary" size="default" @click="record">{{
+          isEdit ? "确认修改" : "记录"
+        }}</el-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import getNodeSequence from "@/utils/bpmn/getNodeSequence";
+import { xmlStr2XmlObj } from "@/utils/bpmn/xml";
+import { mapState } from "vuex";
+import { v4 as uuidv4 } from "uuid";
+import {
+  addQualityInspectionCertificate,
+  editQualityInspectionCertificate,
+  addInspectionList,
+  updateInspectionList,
+} from "@/api/bussiness/bpmExcuteProcess";
+import moment from "moment";
+import { getDicts } from "@/api/system/dict/data";
+export default {
+  name: "AppearanceInspection",
+  props: ["formData", "row"],
+  dicts: ["appearance_index"],
+  components: {},
+  data() {
+    return {
+      productName: "",
+      productNo: "",
+      saleProductNo: "",
+      inspectionId: "",
+      remark: "",
+      rowData: {},
+      isEdit: false,
+      inspectionListNo: "",
+      dictData: [],
+      dictForm: {
+        remark: "",
+      },
+      tableData: [
+        {
+          productName: "",
+          productNo: "",
+          // 物理指标
+          intensity: "", //强度
+          elongation: "", //伸长率
+          titer: "", //纤度
+          oilContent: "", //含油率
+          crimpRate: "", //卷缩率
+          boilingWaterShrinkage: "", //沸水收缩率
+          // 外观指标
+          fuzz: "", //毛丝
+          coilWire: "", //圈丝
+          arachnoidSilk: "", //蛛网丝
+          takeShapeBadness: "", //成型不良
+          oilFree: "", //无油
+          chromaticAberrationWire: "", //色差丝
+          filaments: "", //污丝
+        },
+      ],
+      formShow: true,
+    };
+  },
+  watch: {
+    myFormData: {
+      immediate: true,
+      deep: true,
+      async handler(val) {
+        console.log(val);
+        await this.initFormInfo(); //初始化表单数据
+        this.isEdit = Object.keys(val.resultMap.inspectionList.resultMap).length
+          ? true
+          : false;
+        if (this.isEdit) {
+          //第二次修改
+          this.inspectionListNo =
+            val.resultMap.inspectionList.resultMap.inspection_list_no;
+          this.dictForm.remark = val.resultMap.inspectionList.resultMap.remark;
+          this.inspectionId = val.resultMap.inspectionList.resultMap.id;
+          let fieldList = val.resultMap.inspectionListInfo.map(
+            (item) => item.resultMap
+          );
+          this.dictData.forEach((item) => {
+            let prop = item.value;
+            let target = fieldList.find((item) => item.indexName == prop);
+            if (target) {
+              this.dictForm[prop] = target.indexContent;
+              item.id = target.id;
+            } else {
+              console.log("没有找到");
+            }
+          });
+          this.formShow = false;
+          this.$nextTick(() => {
+            this.formShow = true;
+          });
+        } else {
+          //第一次检验
+          let { product_name, product_no, sale_product_no } =
+            val.resultMap.saleProducts.resultMap;
+          this.productName = product_name;
+          this.productNo = product_no;
+          this.saleProductNo = sale_product_no;
+        }
+      },
+    },
+    myRow: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        this.rowData = val;
+      },
+    },
+  },
+  computed: {
+    myFormData() {
+      return this.formData;
+    },
+    myRow() {
+      return this.row;
+    },
+    ...mapState({
+      nickName: (state) => state.user.nickName,
+    }),
+  },
+  created() {},
+  methods: {
+    // 初始化表单数据
+    async initFormInfo() {
+      try {
+        let res = await getDicts("appearance_index");
+        if (res.code == 200) {
+          console.log(res.data);
+          this.dictData = res.data.map((item) => {
+            return {
+              value: item.dictValue,
+              label: item.dictLabel,
+              data: item,
+            };
+          });
+          console.log(this.dictData);
+        }
+      } catch (error) {}
+      console.log(this.dict.type.appearance_index);
+      this.dict.type.appearance_index.map((item) => {
+        // this.dictForm[item.key] = "";
+        this.$set(this.dictForm, item.key, "");
+      });
+    },
+    // 记录质检结果
+    async record() {
+      let uuid = uuidv4();
+      let { bepTaskName, bepTaskKey, benTaskNodeKey } = this.rowData;
+      let payLoad = {
+        id: this.isEdit ? this.inspectionId : null,
+        inspectionListNo: this.isEdit ? this.inspectionListNo : uuid, //检验单编号
+        saleNo: bepTaskName, // 销售单编号
+        taskProcessKey: bepTaskKey, //任务编码
+        taskNodeKey: benTaskNodeKey, //任务节点编码
+        inspectionTime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"), //检验时间
+        inspectionPersonnel: this.nickName, //检验人员
+        remark: this.dictForm.remark, //备注
+        indexType: "2", //1:物理指标  2:外观指标
+        saleProductNo: this.saleProductNo, //销售产品编号
+        inspectionListInfoList: [],
+      };
+      // payLoad.inspectionListInfo = {
+      //   ...this.dictForm,
+      //   taskProcessKey: bepTaskKey, //任务编码
+      //   taskNodeKey: benTaskNodeKey, //任务节点编码
+      // };
+      payLoad.inspectionListInfoList = this.dict.type.appearance_index.map(
+        (item) => {
+          if (this.isEdit) {
+            return {
+              id: this.dictData.find((i) => i.value == item.value).id,
+              inspectionListNo: this.inspectionListNo, //检验单编号
+              productNo: this.productNo,
+              productName: this.productName,
+              indexName: item.value,
+              indexContent: this.dictForm[item.value],
+            };
+          } else {
+            return {
+              inspectionListNo: uuid, //检验单编号
+              productNo: this.productNo,
+              productName: this.productName,
+              indexName: item.value,
+              indexContent: this.dictForm[item.value],
+            };
+          }
+        }
+      );
+      // return;
+      // payLoad.inspectionListInfo = this.tableData.map((item) => {
+      //   return {
+      //     inspectionListNo: payLoad.inspectionList.inspectionListNo,
+      //     ...item,
+      //     taskProcessKey: bepTaskKey, //任务编码
+      //     taskNodeKey: benTaskNodeKey, //任务节点编码
+      //   };
+      // });
+      try {
+        let apiFun = this.isEdit ? updateInspectionList : addInspectionList;
+        let res = await apiFun(payLoad);
+        if (res.code == 200) {
+          let msg = this.isEdit ? "修改成功" : "记录成功";
+          this.$message.success(msg);
+        } else {
+          this.$message.error(res.msg);
+        }
+      } catch (error) {
+        console.log(error);
+      }
+    },
+    async getFormData() {
+      let formData = {
+        flag: false,
+        msg: "",
+      };
+
+      return {
+        flag: true,
+        data: {},
+      };
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.title {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 20px;
+  font-weight: 700;
+  margin-bottom: 10px;
+  .desc {
+    margin-right: 10px;
+  }
+}
+.btn {
+  display: flex;
+  flex-direction: row-reverse;
+}
+.remark {
+  display: flex;
+  margin-top: 10px;
+  .label {
+    display: block;
+    width: 100px;
+    text-align: center;
+  }
+}
+</style>
+./PhysicalInSpection.vue

+ 293 - 0
zkqy-ui/src/views/bussiness/dialogCompments/GongYi/PhysicalInspection.vue

@@ -0,0 +1,293 @@
+<template>
+  <div class="form-wrap">
+    <div class="cardwrap">
+      <el-row :gutter="20">
+        <el-col :span="24">
+          <div class="title">
+            <span class="desc">产品名称:</span>
+            <span class="content">{{ productName }}</span>
+          </div>
+        </el-col>
+        <el-form
+          v-if="dict.type.physical_index.length > 0 && formShow"
+          :model="dictForm"
+          ref="formRef"
+          label-width="120px"
+          :inline="true"
+          size="normal"
+        >
+          <el-col
+            v-for="item of dict.type.physical_index"
+            :key="item.value"
+            :span="12"
+          >
+            <el-form-item :label="item.label">
+              <el-input v-model="dictForm[item.value]"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="备注">
+              <el-input type="textarea" v-model="dictForm.remark"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div class="btn">
+        <el-button class="mt10" type="primary" size="default" @click="record">{{
+          isEdit ? "确认修改" : "记录"
+        }}</el-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import getNodeSequence from "@/utils/bpmn/getNodeSequence";
+import { xmlStr2XmlObj } from "@/utils/bpmn/xml";
+import { mapState } from "vuex";
+import { v4 as uuidv4 } from "uuid";
+import {
+  addQualityInspectionCertificate,
+  editQualityInspectionCertificate,
+  addInspectionList,
+  updateInspectionList,
+} from "@/api/bussiness/bpmExcuteProcess";
+import moment from "moment";
+import { getDicts } from "@/api/system/dict/data";
+export default {
+  name: "PhysicalInspection",
+  props: ["formData", "row"],
+  dicts: ["physical_index"],
+  components: {},
+  data() {
+    return {
+      productName: "",
+      productNo: "",
+      saleProductNo: "",
+      inspectionId: "",
+      remark: "",
+      rowData: {},
+      isEdit: false,
+      inspectionListNo: "",
+      dictData: [],
+      dictForm: {
+        remark: "",
+      },
+      tableData: [
+        {
+          productName: "",
+          productNo: "",
+          // 物理指标
+          intensity: "", //强度
+          elongation: "", //伸长率
+          titer: "", //纤度
+          oilContent: "", //含油率
+          crimpRate: "", //卷缩率
+          boilingWaterShrinkage: "", //沸水收缩率
+          // 外观指标
+          fuzz: "", //毛丝
+          coilWire: "", //圈丝
+          arachnoidSilk: "", //蛛网丝
+          takeShapeBadness: "", //成型不良
+          oilFree: "", //无油
+          chromaticAberrationWire: "", //色差丝
+          filaments: "", //污丝
+        },
+      ],
+      formShow: true,
+    };
+  },
+  watch: {
+    myFormData: {
+      immediate: true,
+      deep: true,
+      async handler(val) {
+        console.log(val);
+        await this.initFormInfo(); //初始化表单数据
+        this.isEdit = Object.keys(val.resultMap.inspectionList.resultMap).length
+          ? true
+          : false;
+        if (this.isEdit) {
+          //第二次修改
+          this.inspectionListNo =
+            val.resultMap.inspectionList.resultMap.inspection_list_no;
+          this.dictForm.remark = val.resultMap.inspectionList.resultMap.remark;
+          this.inspectionId = val.resultMap.inspectionList.resultMap.id;
+          let fieldList = val.resultMap.inspectionListInfo.map(
+            (item) => item.resultMap
+          );
+          this.dictData.forEach((item) => {
+            let prop = item.value;
+            let target = fieldList.find((item) => item.indexName == prop);
+            if (target) {
+              this.dictForm[prop] = target.indexContent;
+              item.id = target.id;
+            } else {
+              console.log("没有找到");
+            }
+          });
+          this.formShow = false;
+          this.$nextTick(() => {
+            this.formShow = true;
+          });
+        } else {
+          //第一次检验
+          let { product_name, product_no, sale_product_no } =
+            val.resultMap.saleProducts.resultMap;
+          this.productName = product_name;
+          this.productNo = product_no;
+          this.saleProductNo = sale_product_no;
+        }
+      },
+    },
+    myRow: {
+      immediate: true,
+      deep: true,
+      handler(val) {
+        this.rowData = val;
+      },
+    },
+  },
+  computed: {
+    myFormData() {
+      return this.formData;
+    },
+    myRow() {
+      return this.row;
+    },
+    ...mapState({
+      nickName: (state) => state.user.nickName,
+    }),
+  },
+  created() {},
+  methods: {
+    // 初始化表单数据
+    async initFormInfo() {
+      try {
+        let res = await getDicts("physical_index");
+        if (res.code == 200) {
+          console.log(res.data);
+          this.dictData = res.data.map((item) => {
+            return {
+              value: item.dictValue,
+              label: item.dictLabel,
+              data: item,
+            };
+          });
+          console.log(this.dictData);
+        }
+      } catch (error) {}
+      console.log(this.dict.type.physical_index);
+      this.dict.type.physical_index.map((item) => {
+        // this.dictForm[item.key] = "";
+        this.$set(this.dictForm, item.key, "");
+      });
+    },
+    // 记录质检结果
+    async record() {
+      let uuid = uuidv4();
+      let { bepTaskName, bepTaskKey, benTaskNodeKey } = this.rowData;
+      let payLoad = {
+        id: this.isEdit ? this.inspectionId : null,
+        inspectionListNo: this.isEdit ? this.inspectionListNo : uuid, //检验单编号
+        saleNo: bepTaskName, // 销售单编号
+        taskProcessKey: bepTaskKey, //任务编码
+        taskNodeKey: benTaskNodeKey, //任务节点编码
+        inspectionTime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"), //检验时间
+        inspectionPersonnel: this.nickName, //检验人员
+        remark: this.dictForm.remark, //备注
+        indexType: "1", //1:物理指标  2:外观指标
+        saleProductNo: this.saleProductNo, //销售产品编号
+        inspectionListInfoList: [],
+      };
+      // payLoad.inspectionListInfo = {
+      //   ...this.dictForm,
+      //   taskProcessKey: bepTaskKey, //任务编码
+      //   taskNodeKey: benTaskNodeKey, //任务节点编码
+      // };
+      payLoad.inspectionListInfoList = this.dict.type.physical_index.map(
+        (item) => {
+          if (this.isEdit) {
+            return {
+              id: this.dictData.find((i) => i.value == item.value).id,
+              inspectionListNo: this.inspectionListNo, //检验单编号
+              productNo: this.productNo,
+              productName: this.productName,
+              indexName: item.value,
+              indexContent: this.dictForm[item.value],
+            };
+          } else {
+            return {
+              inspectionListNo: uuid, //检验单编号
+              productNo: this.productNo,
+              productName: this.productName,
+              indexName: item.value,
+              indexContent: this.dictForm[item.value],
+            };
+          }
+        }
+      );
+      console.log(payLoad);
+      // return;
+      // payLoad.inspectionListInfo = this.tableData.map((item) => {
+      //   return {
+      //     inspectionListNo: payLoad.inspectionList.inspectionListNo,
+      //     ...item,
+      //     taskProcessKey: bepTaskKey, //任务编码
+      //     taskNodeKey: benTaskNodeKey, //任务节点编码
+      //   };
+      // });
+      try {
+        let apiFun = this.isEdit ? updateInspectionList : addInspectionList;
+        let res = await apiFun(payLoad);
+        if (res.code == 200) {
+          let msg = this.isEdit ? "修改成功" : "添加成功";
+          this.$message.success(msg);
+        } else {
+          this.$message.error(res.msg);
+        }
+      } catch (error) {
+        console.log(error);
+      }
+    },
+    async getFormData() {
+      let formData = {
+        flag: false,
+        msg: "",
+      };
+
+      return {
+        flag: true,
+        data: {},
+      };
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+.title {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  font-size: 20px;
+  font-weight: 700;
+  margin-bottom: 10px;
+  .desc {
+    margin-right: 10px;
+  }
+}
+.btn {
+  display: flex;
+  flex-direction: row-reverse;
+}
+.remark {
+  display: flex;
+  margin-top: 10px;
+  .label {
+    display: block;
+    width: 100px;
+    text-align: center;
+  }
+}
+</style>./PhysicalInSpection.vue

+ 15 - 6
zkqy-ui/src/views/bussiness/processMange.vue

@@ -188,13 +188,15 @@
             v-if="myForm"
           ></component>
 
-          <!-- <Loading :formData="formData" :row="row" ref="myFormRef"></Loading> -->
-          <!--  <Processing :formData="formData" :row="row" ref="myFormRef"></Processing> -->
-          <!--  <Assemble :formData="formData" :row="row" ref="myFormRef"></Assemble> -->
-          <!-- <Detection :formData="formData" :row="row" ref="myFormRef"></Detection> -->
-          <!--  <WareHousing :formData="formData" :row="row" ref="myFormRef"></WareHousing> -->
+          <!-- <AppearanceInspection
+            :formData="formData"
+            :row="row"
+          ></AppearanceInspection> -->
+          <!-- <PhysicalInspection
+            :formData="formData"
+            :row="row"
+          ></PhysicalInspection> -->
 
-          <!-- <QRCode :formData="formData" :row="row" ref="myFormRef" /> -->
           <span slot="footer" class="dialog-footer">
             <el-button @click="closeExecuteNode">取消</el-button>
             <el-button type="primary" @click="executeNode">确认运行</el-button>
@@ -255,6 +257,11 @@ import ScrapDisposition from "./dialogCompments/Mec/ScrapDisposition.vue";
 import QRCode from "./dialogCompments/Mec/QRCode.vue";
 import Inspect from "./dialogCompments/GongYi/Inspect.vue";
 
+// 物理指标
+import PhysicalInspection from "./dialogCompments/GongYi/PhysicalInspection.vue";
+// 外观指标
+import AppearanceInspection from "./dialogCompments/GongYi/AppearanceInspection.vue";
+
 export default {
   name: "processMange",
   props: [],
@@ -291,6 +298,8 @@ export default {
     Assemble,
     Detection,
     WareHousing,
+    PhysicalInspection,
+    AppearanceInspection,
   },
   dicts: ["bpm_type", "task_process_state"],
   data() {

+ 34 - 0
zkqy-ui/src/views/orderMange/components/test.html

@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <title>Title</title>
+</head>
+<style>
+
+</style>
+
+<body>
+  <div style="width: 1200px;position: relative;">
+
+    <div style="width: 100%;position: relative;text-align: center;">
+
+    </div>
+    <table style="width: 100%;height:100px;border-collapse:collapse;" cellpadding="10" border="1">
+      <tr style="text-align: left;">
+        <td colspan="4">合同号:</td>
+        <td colspan="2">日期:</td>
+      </tr>
+      <tr style="text-align: center;height: 50px;">
+        <td style="width: 400px;" colspan="2">客户名称:</td>
+        <td style="width: 400px;" colspan="2"></td>
+        <td style="width: 200px;">联系人:</td>
+        <td style="width: 200px;"></td>
+      </tr>
+
+    </table>
+  </div>
+</body>
+
+</html>

+ 1715 - 0
zkqy-ui/src/views/orderMange/index2.vue

@@ -0,0 +1,1715 @@
+<template>
+  <div class="app-container">
+    <el-dialog
+      :title="upload.title"
+      :visible.sync="upload.open"
+      width="400px"
+      append-to-body
+    >
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="
+          upload.url +
+          '?updateSupport=' +
+          upload.updateSupport +
+          '&tableName=' +
+          tableName +
+          '&sqlKey=' +
+          tableKey
+        "
+        v-loading="upload.isUploading"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :auto-upload="false"
+        :onChange="handleChange"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+        <div class="el-upload__tip text-center" slot="tip">
+          <!--          <div class="el-upload__tip" slot="tip">-->
+          <!--            <el-checkbox v-model="upload.updateSupport"/>-->
+          <!--            是否更新已经存在的用户数据-->
+          <!--          </div>-->
+          <span>仅允许导入xls、xlsx格式文件。</span>
+          <el-link
+            type="primary"
+            :underline="false"
+            style="font-size: 12px; vertical-align: baseline"
+            @click="importTemplate"
+            >下载模板
+          </el-link>
+        </div>
+      </el-upload>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFileForm">确 定</el-button>
+        <el-button @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+    <Queryfrom
+      :form-vals="templateInfo.where"
+      :statisticList="statisticList"
+      :showCount="showCount"
+      :showSearch="showSearch"
+      @getList="getList"
+      ref="mychild"
+    />
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="addHandler"
+          >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5" v-if="false">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleBatchDelete"
+          >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          plain
+          icon="el-icon-upload2"
+          size="mini"
+          @click="upload.open = true"
+          >导入
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          >导出
+        </el-button>
+      </el-col>
+      <right-toolbar
+        :showCount.sync="showCount"
+        :showSearch.sync="showSearch"
+        :counts="true"
+        @queryTable="pageList"
+      ></right-toolbar>
+    </el-row>
+    <el-table
+      v-loading="loading"
+      :data="tableList"
+      @selection-change="handleSelectionChange"
+      ref="tableRef"
+      :cell-style="cellStyle"
+      :reserve-selection="true"
+      :row-key="getRowKey"
+    >
+      <el-table-column
+        type="selection"
+        width="55"
+        reserve-selection
+        align="center"
+      >
+      </el-table-column>
+      <!-- <span v-for="(key, val) in columns" :key="key">
+        <el-table-column :label="key" align="center" :prop="val" />
+      </span> -->
+      <el-table-column
+        v-for="item in columns"
+        :key="item.key"
+        :label="item.value"
+        align="center"
+        :prop="item.key"
+      >
+        <template slot-scope="scope">
+          <!-- 存在字段样式或字典样式 -->
+          <template
+            v-if="
+              scope.row.styleFieldObj != undefined &&
+              scope.row.styleFieldObj[item.key]
+            "
+          >
+            <!-- 字段样式 -->
+            <template v-if="scope.row.styleFieldObj[item.key].styleType == 1">
+              <!-- 一般字体样式 -->
+              <template
+                v-if="scope.row.styleFieldObj[item.key].fieldStyleType == 0"
+              >
+                <span
+                  :style="`color:${
+                    scope.row.styleFieldObj[item.key].fontColor
+                  }`"
+                  >{{ scope.row[item.key] }}</span
+                >
+              </template>
+              <!-- 标签字体样式 -->
+              <template
+                v-else-if="
+                  scope.row.styleFieldObj[item.key].fieldStyleType == 1
+                "
+              >
+                <el-tag
+                  :type="scope.row.styleFieldObj[item.key].tagType"
+                  :effect="
+                    scope.row.styleFieldObj[item.key].isTagFullBg
+                      ? 'dark'
+                      : 'light'
+                  "
+                >
+                  {{ scope.row[item.key] }}
+                </el-tag>
+              </template>
+            </template>
+            <!-- 字典样式 -->
+            <template
+              v-else-if="scope.row.styleFieldObj[item.key].styleType == 2"
+            >
+              <span
+                v-if="
+                  scope.row.styleFieldObj[item.key].listClass == '' ||
+                  scope.row.styleFieldObj[item.key].listClass == 'default'
+                "
+                >{{ scope.row.styleFieldObj[item.key].dictLabel }}</span
+              >
+              <el-tag
+                v-else
+                :type="
+                  scope.row.styleFieldObj[item.key].listClass == 'primary'
+                    ? ''
+                    : scope.row.styleFieldObj[item.key].listClass
+                "
+                >{{ scope.row.styleFieldObj[item.key].dictLabel }}</el-tag
+              >
+            </template>
+          </template>
+          <!-- 显示默认值 -->
+          <template v-else>
+            {{ scope.row[item.key] }}
+          </template>
+        </template>
+      </el-table-column>
+      <el-table-column
+        v-if="isShowExcuteCol"
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
+        <template slot-scope="scope">
+          <Menu
+            :row="scope.row"
+            v-for="btnObj in excuteBtnArr"
+            :key="btnObj.id"
+            :listAll="btnObj"
+            @excuteHandler="excuteHandler"
+          ></Menu>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="pageList"
+    />
+    <!-- 添加或修改销售出库单:- 过磅记录生成数据对话框 -->
+    <el-dialog :title="title" :visible.sync="open" append-to-body>
+      <!-- <iframe
+        :src="iframeUrl"
+        width="100%"
+        height="600px"
+        style="border: none"
+        scrolling="no"
+      >
+      </iframe> -->
+      <!-- <k-form-build
+        v-if="jsonData"
+        class="formBuild"
+        ref="addFromRef"
+        :dynamicData="dynamicData"
+        :defaultValue="defaultValue"
+        @submit="tempSubBtn"
+        @change="formChangeHandler"
+        :value="jsonData"
+      /> -->
+      <el-form
+        :model="formData"
+        ref="formData"
+        :rules="rules"
+        label-width="100px"
+        :inline="true"
+        size="normal"
+      >
+        <el-form-item prop="saleNo" label="合同号:">
+          <el-input size="small" v-model="formData.saleNo"></el-input>
+        </el-form-item>
+        <el-form-item prop="saleDate" label="日期:">
+          <el-date-picker
+            size="small"
+            v-model="formData.saleDate"
+            type="date"
+            placeholder="选择日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item prop="saleCustomNo" label="客户名称:">
+          <el-select
+            size="small"
+            v-model="formData.saleCustomNo"
+            placeholder="请选择客户"
+            clearable
+            filterable
+            @change="customChangeHandler"
+          >
+            <el-option
+              v-for="item in customerOptions"
+              :key="item.customNo"
+              :label="item.customName"
+              :value="item.customNo"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="联系人:" size="normal">
+          {{ formData.contactPerson }}
+        </el-form-item>
+        <el-form-item label="客户地址:" size="normal">
+          {{ formData.customAddress }}
+        </el-form-item>
+        <el-form-item label="客户国别:" size="normal">
+          {{ formData.customCountryType }}
+        </el-form-item>
+        <el-divider>货品明细</el-divider>
+        <el-table
+          :data="productionTableData"
+          border
+          show-summary
+          :summary-method="getSummaries"
+          sum-text="小计"
+          style="width: 100%"
+        >
+          <el-table-column prop="productName" label="品名" width="180">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.productName"
+                size="small"
+                clearable
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productNumber" label="数量/kg">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.productNumber"
+                size="small"
+                clearable
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productUnitPrice" label="单价">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.productUnitPrice"
+                size="small"
+                clearable
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productAmounts" label="金额">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.productAmounts"
+                size="small"
+                clearable
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column prop="remark" label="备注">
+            <template slot-scope="scope">
+              <el-input
+                v-model="scope.row.remark"
+                size="small"
+                clearable
+              ></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button
+                type="danger"
+                size="small"
+                @click="deleteProduct(scope.$index)"
+                >删除</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-button
+          class="mt5"
+          type="primary"
+          style="width: 100%"
+          size="small"
+          @click="addProduct"
+          >添加货品</el-button
+        >
+        <el-form-item label-width="120px" label="合计金额(大写)">
+          <el-input
+            v-model="formData.saleAmountInWords"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="付款方式">
+          <el-input
+            v-model="formData.salePayType"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-divider>工艺要求</el-divider>
+        <el-form-item label="网格:">
+          <el-input
+            v-model="formData.craftGrid"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="油剂:">
+          <el-input
+            v-model="formData.craftOil"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="卷装:">
+          <el-input
+            v-model="formData.craftPackage"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="色牢度:">
+          <el-input
+            v-model="formData.craftColorFastness"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="其它:">
+          <el-input
+            v-model="formData.craftOther"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="包装/贴唛:">
+          <el-input
+            v-model="formData.craftMark"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="运输方式:">
+          <el-input
+            v-model="formData.shippingMethod"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-divider>审计人员数据</el-divider>
+        <el-form-item label="业务员:">
+          <el-input
+            v-model="formData.salesman"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="业务主管:">
+          <el-input
+            v-model="formData.saleLeader"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="财务部:">
+          <el-input
+            v-model="formData.finance"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="生产部:">
+          <el-input
+            v-model="formData.production"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+        <el-form-item label="批准人:">
+          <el-input
+            v-model="formData.saleApprover"
+            size="small"
+            clearable
+          ></el-input>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="editConfirm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+    <!-- 绑定按钮dialog -->
+    <el-dialog
+      title="提示"
+      :visible.sync="btnDialogVisible"
+      :before-close="handleClose"
+    >
+      <DialogTemplate
+        ref="dialogRef"
+        :groupKey="groupKey"
+        :rowobj="rowobj"
+        :subCount="subCount"
+        :tableCount="tableCount"
+        :subTableName="subTableName"
+        @addList="addListHandler"
+      >
+      </DialogTemplate>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="btnDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="btnComfirm">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <!-- 自定义弹窗 -->
+    <el-dialog
+      title="提示"
+      :visible.sync="btnDialogVisible"
+      :before-close="handleClose"
+    >
+      <DialogTemplate
+        ref="dialogRef"
+        :groupKey="groupKey"
+        :rowobj="rowobj"
+        :subCount="subCount"
+        :tableCount="tableCount"
+        :subTableName="subTableName"
+        @addList="addListHandler"
+      >
+      </DialogTemplate>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="btnDialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="btnComfirm">确 定</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import {
+  delTableData,
+  dragTableInfo,
+  listTable,
+  unionListTableData,
+  getInfoBySqlKey,
+  btnCommonApi,
+  addTableData,
+  batchEdit,
+  getStatisticList,
+} from "@/api/tablelist/commonTable";
+import { listData } from "@/api/system/tenant/data";
+import { getToken } from "@/utils/auth";
+import Queryfrom from "@/views/tablelist/commonTable/queryfrom.vue";
+import { camelCase, toUnderline } from "@/utils";
+import { inputDisableComplete } from "@/utils/other";
+import Menu from "@/views/tablelist/commonTable/BtnMenu.vue";
+import { checkRole } from "@/utils/permission";
+import DialogTemplate from "@/views/dialogTemplate/components/index.vue";
+import { queryDropDownBoxData } from "@/api/dragform/form";
+
+export default {
+  name: "listInfo",
+  components: { Queryfrom, Menu, DialogTemplate },
+  data() {
+    return {
+      // 新的自定义数据 start
+      formData: {
+        //订单表数据
+        saleNo: "", //合同号
+        saleCustomNo: "", //客户编号
+        saleDate: "", //销售单日期
+        saleOrderEstimatedTime: "", //预计下单时间
+        saleLeadTime: "", //交货周期
+        saleAmounts: "", //合计金额 小写
+        saleAmountInWords: "", //合计金额 大写
+        salePayType: "", //支付方式
+        salesman: "", //业务员
+        saleLeader: "", //业务主管
+        finance: "", //财务部
+        production: "", //生产部
+        saleApprover: "", //批准人
+        customAddress: "", //客户地址
+        customCountryType: "", //国家类型
+        contactPerson: "", //联系人
+        // 货品明细表数据
+        productName: "", //货品名称
+        productNumber: "", //销售数量
+        productWeight: "", //销售重量kg
+        productUnitPrice: "", //单价
+        productAmounts: "", //金额
+        remark: "", //备注
+        // 工艺表
+        craftGrid: "", //网格
+        craftOil: "", //油剂
+        craftPackage: "", //卷装
+        craftColorFastness: "", //色牢度
+        craftOther: "", //其它工艺要求
+        craftMark: "", //包装/贴唛
+        shippingMethod: "", //运输方式
+      },
+      productionOptions: [],
+      customerOptions: [],
+      productionTableData: [
+        {
+          productName: "一号货品", //货品名称
+          productNumber: 2, //销售数量
+          productWeight: 1, //销售重量kg
+          productUnitPrice: 20, //单价
+          productAmounts: 20, //金额
+          remark: "", //备注
+        },
+      ],
+      rules: {},
+
+      // end
+
+      // 绑定按钮dialog
+      btnDialogVisible: false,
+      // 绑定修改dialog
+      groupKey: "",
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示统计
+      showCount: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 用户表格数据
+      tableList: [],
+      // 弹出层标题
+      title: "",
+      // 日期范围
+      dateRange: [],
+      // 表单参数
+      form: {},
+      rules: {},
+      // cru 弹窗
+      open: false,
+      // excel共通导入数据
+      upload: {
+        // 是否显示弹出层
+        open: false,
+        // 弹出层标题(
+        title: "",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的数据
+        updateSupport: 0,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API3 + "common/uploadData",
+      },
+      // 排序方式 默认降序
+      sortOrder: true,
+      // 共通查询参数接受子组件的参数
+      queryParams: {
+        pageNum: 1, // 第几页
+        pageSize: 10, // 每页大小
+        orderByColumn: "", // 根据某列排序
+        isAsc: "", // desc(降序)或 asc(升序)
+        // 基本查询参数
+        basicMap: {
+          tableName: "drag_form",
+        },
+        // 当前表字段筛选参数
+        queryMap: {
+          // 当前查询基本参数
+          // ... key : value         当前页面的筛选条件
+          // 超级查询的唯一值
+          queryCriteriaValue: "",
+        },
+      },
+      // 列信息
+      columns: {},
+      // 当前模版信息
+      templateInfo: {},
+      // 查询条件
+      queryFromWhere: {},
+      // 当前table唯一标识
+      tableKey: null,
+      // 当前表名称
+      tableName: null,
+      //存放html代码块
+      iframeUrl: "",
+      //存放表单渲染数据
+      jsonData: {},
+      // 回显表格数据,
+      defaultValue: {},
+      // 统计card
+      statisticList: [],
+      // 样式表
+      styleList: [],
+      // 字典样式对象
+      dictStyleObj: {},
+      // 操作列 按钮数据
+      excuteBtnArr: [],
+      // 下拉框动态数据
+      dynamicData: {},
+      // 当前点击按钮的数据
+      currentBtnData: {},
+      // 修改选中行
+      rowobj: {},
+      // 该行的统计信息
+      subCount: [],
+      tableCount: [],
+      // 弹窗新增数据
+      addLists: [],
+      subTableName: "",
+      // 当前点击行的数据
+      currentRow: {},
+    };
+  },
+
+  created() {
+    // 得到当前展示的table的唯一标识
+    this.tableKey = this.$route.query.tableKey;
+  },
+  watch: {},
+  computed: {
+    isShowExcuteCol() {
+      return !this.excuteBtnArr?.every((arr) => arr.children.length == 0);
+    },
+  },
+  methods: {
+    // 自定义的小计计算方法
+    getSummaries(param) {
+      const { columns, data } = param;
+      console.log(columns, data);
+      const sums = [];
+      columns.forEach((column, index) => {
+        if (index === 0) {
+          sums[index] = "小计";
+          return;
+        }
+        const values = data.map((item) => Number(item[column.property]));
+        if (index === 2 || index === 4 || index === 5) {
+          sums[index] = "";
+        } else if (!values.every((value) => isNaN(value))) {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr);
+            if (!isNaN(value)) {
+              return prev + curr;
+            } else {
+              return prev;
+            }
+          }, 0);
+          sums[index];
+        } else {
+          sums[index] = "N/A";
+        }
+      });
+
+      return sums;
+    },
+    // 货品表格数据删除回调
+    deleteProduct(index) {
+      this.productionTableData.splice(index, 1);
+    },
+    // 货品表格数据新增回调
+    addProduct() {
+      this.productionTableData.push({
+        productName: "", //货品名称
+        productNumber: 0, //销售数量
+        productWeight: 0, //销售重量kg
+        productUnitPrice: 0, //单价
+        productAmounts: 0, //金额
+        remark: "", //备注
+      });
+    },
+    // 客户名称改变回调
+    customChangeHandler(val) {
+      // if (!val) return;
+      let customData = this.customerOptions.find(
+        (item) => item.customNo == val
+      );
+      this.formData.customAddress = customData?.customAddress || "无";
+      this.formData.customCountryType = customData?.customCountryType || "无";
+      this.formData.contactPerson = customData?.contactPerson || "无";
+    },
+    // 获取row-key
+    getRowKey(row) {
+      return row[
+        camelCase(this.tableName + "_" + this.templateInfo.template?.primaryKey)
+      ];
+    },
+    /** 查询列表 */
+    getList(queryParams) {
+      this.loading = true;
+      // 序列化当前查询参数列表
+      queryParams && (this.queryParams.queryMap = queryParams.queryMap);
+      // 获取当前表单结构信息
+      dragTableInfo({ queryMap: { tableKey: this.tableKey } })
+        .then((res) => {
+          // 得到当前模版信息 --- sql columns queryWhere
+          this.templateInfo = res.data.resultMap;
+          this.styleList = res.data.resultMap.style?.map((item) => {
+            item.styleField = camelCase(
+              item.styleField.replace(".", "_") || ""
+            );
+            return item;
+          });
+          // 获取操作列的按钮数据
+          this.excuteBtnArr = res.data.resultMap.button;
+          this.queryParams.orderByColumn =
+            res.data.resultMap.querySql.orderByColumn;
+          this.sortOrder = JSON.parse(res.data.resultMap.querySql.sortOrder);
+          // 根据拖拽时设置当前列表排列顺序
+          this.queryParams.isAsc = this.sortOrder ? "DESC" : "ASC";
+          this.tableName = this.templateInfo.template.dtTableName;
+          // 得到查询条件
+          this.queryFromWhere = res.data.resultMap.where;
+          //  得到当前列表信息
+          this.columns = this.columnsHandler(
+            JSON.parse(this.templateInfo.template.dtColumnName)
+          );
+        })
+        .finally((fes) => {
+          if (this.templateInfo == {}) return;
+          // 调用查询需要携带当前table的唯一标识
+          this.queryParams.queryMap.sqlkey = this.templateInfo.template.sqlKey;
+          this.queryParams.orderByColumn = camelCase(
+            this.queryParams.orderByColumn || ""
+          );
+          // 根据sql语句查询当前表数据
+          unionListTableData(this.queryParams).then(async (res) => {
+            this.tableList = [];
+            res.rows.forEach((item) => {
+              this.tableList.push(item.resultMap);
+            });
+            // 驼峰转换
+            let tempTableList = [];
+            tempTableList = this.tableList.map((item) => {
+              let kv = {};
+              for (let itemKey in item) {
+                kv[camelCase(itemKey)] = item[itemKey];
+              }
+              return kv;
+            });
+            // this.setDictStyleData().then(() => {
+            //   this.tableList = this.setFieldStyleData(this.tableList);
+            // });
+            this.tableList = await this.setFieldStyleData(tempTableList);
+            this.total = res.total;
+            // this.$nextTick(() => {
+            //   this.$refs.tableRef?.clearSelection();
+            // });
+            this.loading = false;
+          });
+
+          // 查询统计信息
+          getStatisticList({
+            queryMap: {
+              tableKey: this.templateInfo.template.tableKey,
+              queryCriteriaValue: this.queryParams.queryMap.queryCriteriaValue,
+            },
+          }).then((res) => {
+            this.statisticList = res.data;
+          });
+        });
+    },
+    isUpperCase(char) {
+      return char === char.toUpperCase();
+    },
+    // 下划线命名转驼峰命名
+    toUnderScoreCase(str) {
+      if (str === null) {
+        return null;
+      }
+      let sb = "";
+      // 前置字符是否大写
+      let preCharIsUpperCase = true;
+      // 当前字符是否大写
+      let curreCharIsUpperCase = true;
+      // 下一字符是否大写
+      let nexteCharIsUpperCase = true;
+      for (let i = 0; i < str.length; i++) {
+        let c = str.charAt(i);
+        if (i > 0) {
+          preCharIsUpperCase = isUpperCase(str.charAt(i - 1));
+        } else {
+          preCharIsUpperCase = false;
+        }
+
+        curreCharIsUpperCase = isUpperCase(c);
+
+        if (i < str.length - 1) {
+          nexteCharIsUpperCase = isUpperCase(str.charAt(i + 1));
+        }
+
+        if (
+          preCharIsUpperCase &&
+          curreCharIsUpperCase &&
+          !nexteCharIsUpperCase
+        ) {
+          sb += SEPARATOR;
+        } else if (i !== 0 && !preCharIsUpperCase && curreCharIsUpperCase) {
+          sb += SEPARATOR;
+        }
+        sb += c.toLowerCase();
+      }
+
+      return sb;
+    },
+    // 处理列表信息
+    columnsHandler(columns) {
+      let resArr = [];
+      columns.forEach((item) => {
+        for (const key in item) {
+          let tempObj = {};
+          tempObj.key = camelCase(key);
+          tempObj.value = item[key];
+          resArr.push(tempObj);
+        }
+      });
+      return resArr;
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      // this.reset();
+    },
+    // 分页查询
+    pageList(row) {
+      // 调用子组件-》携带子组件参数请求后台
+      this.$refs.mychild.pageList(
+        row == undefined
+          ? {
+              limit: this.queryParams.pageSize,
+              page: this.queryParams.pageNum,
+            }
+          : row
+      );
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(
+        (item) =>
+          item[
+            camelCase(
+              this.tableName + "_" + this.templateInfo.template?.primaryKey
+            )
+          ]
+      );
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+
+    // 更多操作触发
+    handleCommand(command, row) {
+      switch (command) {
+        case "handleResetPwd":
+          this.handleResetPwd(row);
+          break;
+        case "handleAuthRole":
+          this.handleAuthRole(row);
+          break;
+        default:
+          break;
+      }
+    },
+    //审计新增
+    async addHandler() {
+      await this.getDropDownData();
+      this.title = "新增审计单";
+      this.open = true;
+    },
+    // 获取下拉框数据
+    async getDropDownData() {
+      try {
+        let payLoad = [
+          {
+            basicMap: {
+              tableName: "production",
+            },
+          },
+          {
+            basicMap: {
+              tableName: "customer",
+            },
+          },
+        ];
+        let res = await queryDropDownBoxData(payLoad);
+        if (res.code == 200) {
+          let { production, customer } = res.data.resultMap;
+          this.productionOptions = production || [];
+          this.customerOptions = customer || [];
+        } else {
+          throw Error("获取下拉框数据失败");
+        }
+      } catch (error) {
+        console.log(error);
+      }
+    },
+    /** 新增按钮操作 */
+    handleAdd(row) {
+      // this.reset();
+      this.defaultValue = {};
+      getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
+        if (!data || !data.dfVueTemplate) {
+          this.jsonData = false;
+          this.$message.error("当前表格未绑定表单!");
+          return;
+        }
+        if (data.dfFormSql) {
+          let dynamicData = JSON.parse(data.dfFormSql);
+          Object.assign(this.dynamicData, dynamicData);
+        }
+        this.jsonData = JSON.parse(data.dfVueTemplate);
+
+        this.title = "添加信息";
+        this.form.password = this.initPassword;
+        this.open = true;
+        this.$nextTick(() => {
+          this.$refs.addFromRef.reset();
+          inputDisableComplete();
+        });
+      });
+    },
+    longestCommonSubstring(strs) {
+      if (!strs || strs.includes("")) return "";
+      let str1_Length = strs[0].length;
+      let str_Nums = strs.length;
+      let flag = 0;
+      for (let i = 0; i < str1_Length && flag == 0; i++) {
+        let char = strs[0][i];
+        for (var j = 1; j < str_Nums; j++) {
+          if (char !== strs[j][i] || i == strs[j].length) {
+            return strs[1].substring(0, i);
+          }
+        }
+      }
+      return strs[0];
+    },
+    // 绑定dialog对话框关闭
+    handleClose() {
+      this.btnDialogVisible = false;
+    },
+    getLastUppercaseWord(text) {
+      const pattern = /\b[A-Z][a-z]*\b/g;
+      const matches = [...text.matchAll(pattern)];
+      if (matches.length > 0) {
+        const lastMatch = matches[matches.length - 1][0];
+        return lastMatch;
+      } else {
+        return null;
+      }
+    },
+    /** 修改按钮操作 */
+    async handleUpdate(row, btnData) {
+      let nameTable = this.templateInfo.template.dtTableName;
+      this.rowobj = {};
+      let obj = {};
+      for (let key in row) {
+        let modifiedTable = key
+          .replace(/[A-Z]/g, (match) => `_${match}`)
+          .toLowerCase();
+
+        this.rowobj[modifiedTable] = row[key];
+
+        let str = modifiedTable.substring(nameTable.length + 1);
+        obj[str] = row[key];
+      }
+      // getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
+      //   if (!data || !data.dfVueTemplate) {
+      //     this.$message.error("当前表格未绑定表单!");
+      //     return;
+      //   }});
+
+      // 新的修改请求
+      try {
+        let payLoad = {
+          basicMap: {
+            btnType: this.currentBtnData.btnType,
+            btnKey: this.currentBtnData.btnKey,
+            visible: "false",
+            sqlKey: this.templateInfo.template.sqlKey,
+            tableName: this.tableName,
+          },
+          conditionMap: {},
+        };
+        let primary = camelCase(
+          this.tableName + "_" + this.templateInfo.template?.primaryKey
+        );
+        payLoad.conditionMap[this.templateInfo.template?.primaryKey] =
+          row[primary];
+        let res = await btnCommonApi(payLoad);
+        // 判断是否绑定dialog弹窗
+        if (!this.currentBtnData.btnTableFormGroupKey) {
+          if (!res.data || !res.data.template) {
+            this.$message.error("当前按钮未绑定表单!");
+            return;
+          }
+
+          res.data.template.dfFormSql &&
+            (this.dynamicData = JSON.parse(res.data.template.dfFormSql));
+          this.addRealFieldName(res.data.result.resultMap);
+          let resultMap = res.data.result.resultMap;
+
+          Object.assign(this.defaultValue, resultMap);
+          this.jsonData = JSON.parse(res.data.template.dfVueTemplate);
+          this.open = true;
+          this.title = "修改信息";
+          this.form.password = this.initPassword;
+          this.$nextTick(() => {
+            this.$refs.addFromRef.setData(res.data.result.resultMap);
+          });
+        } else {
+          this.subTableName = res.data.result.dragTables[1].dtTableName;
+          this.btnDialogVisible = true;
+          this.groupKey = this.currentBtnData.btnTableFormGroupKey;
+          this.$nextTick(() => {
+            let refChild = this.$refs.dialogRef;
+            refChild.getLists(this.groupKey);
+          });
+
+          let tablesubKey = res.data.result.dragTables[1].tableKey;
+
+          // 查询统计信息
+          getStatisticList({
+            queryMap: {
+              tableKey: tablesubKey,
+            },
+          }).then((res) => {
+            this.subCount = res.data;
+          });
+
+          let prmKey = this.templateInfo.template.primaryKey;
+          let pkey = prmKey.replace(/_([a-z])/g, (match, p1) =>
+            p1.toUpperCase()
+          );
+
+          let data = {
+            queryMap: {
+              tableKey: res.data.result.dragTables[2].tableKey,
+            },
+          };
+
+          let key =
+            "#{" +
+            this.templateInfo.template.dtTableName +
+            "." +
+            this.templateInfo.template.primaryKey;
+
+          data.queryMap[key] =
+            "'" + obj[this.templateInfo.template.primaryKey] + "'";
+
+          getStatisticList(data).then((res) => {
+            this.tableCount = res.data;
+          });
+        }
+
+        // let fieldList = Object.keys(resultMap);
+        // let tableName = this.longestCommonSubstring(fieldList);
+        // fieldList.forEach((field) => {
+        //   let realField = field.replace(tableName, "");
+        //   realField = realField[0].toLocaleLowerCase() + realField.substring(1);
+        //   resultMap[realField] = resultMap[field];
+        // });
+      } catch (error) {
+        this.$message.error("网络异常,请稍后再试");
+        console.log(error);
+      }
+      return;
+      // getInfoBySqlKey(this.templateInfo.template.sqlKey).then(({ data }) => {
+      //   if (!data || !data.dfVueTemplate) {
+      //     this.$message.error("当前表格未绑定表单!");
+      //     return;
+      //   }
+      //   // let fieldList = Object.keys(row);
+      //   // let tableName = this.longestCommonSubstring(fieldList);
+      //   // fieldList.forEach((field) => {
+      //   //   let realField = field.replace(tableName, "");
+      //   //   realField = realField[0].toLocaleLowerCase() + realField.substring(1);
+      //   //   row[realField] = row[field];
+      //   // });
+      //   this.addRealFieldName(row);
+      //   Object.assign(this.defaultValue, row);
+      //   this.jsonData = JSON.parse(data.dfVueTemplate);
+      //   this.open = true;
+      //   this.title = "修改信息";
+      //   this.form.password = this.initPassword;
+      //   this.$nextTick(() => {
+      //     this.$refs.addFromRef.setData(row);
+      //   });
+      // });
+      // return;
+      this.reset();
+      const userId = row.userId || this.ids;
+      getUser(userId).then((response) => {
+        this.form = response.data;
+        this.postOptions = response.posts;
+        this.roleOptions = response.roles;
+        this.$set(this.form, "postIds", response.postIds);
+        this.$set(this.form, "roleIds", response.roleIds);
+        this.open = true;
+        this.title = "修改当前信息";
+        this.form.password = "";
+      });
+    },
+    // 添加真正的字段名
+    addRealFieldName(row) {
+      let fieldList = Object.keys(row);
+      // let tableName = this.longestCommonSubstring(fieldList);
+      let tableName = camelCase(this.tableName);
+      fieldList.forEach((field) => {
+        let realField = field.replace(tableName, "");
+        realField = realField[0].toLocaleLowerCase() + realField.substring(1);
+        row[realField] = row[field];
+      });
+    },
+
+    /** 提交按钮 */
+    submitForm: function () {
+      this.$refs["form"].validate((valid) => {
+        if (valid) {
+          if (this.form.userId != undefined) {
+            updateUser(this.form).then((response) => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addUser(this.form).then((response) => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作
+     *
+     * 删除提示信息语句(标识)
+     * */
+    handleDelete(row, btnData) {
+      let delIds = this.ids;
+      let primary = camelCase(this.templateInfo.template?.primaryKey);
+      // let realyKey=
+      this.addRealFieldName(row);
+      if (row[primary] != undefined && row[primary] != null) {
+        delIds = [];
+        delIds.push(row[primary]);
+      }
+      let data = {
+        basicMap: {
+          btnType: btnData.btnType,
+          btnKey: btnData.btnKey,
+          tableName: this.tableName,
+        },
+        conditionMap: {
+          // id: delIds,
+        },
+        btnParametersMap: {},
+      };
+      if (this.currentBtnData.btnParams) {
+        let btnParams = JSON.parse(this.currentBtnData.btnParams);
+        btnParams.forEach((item) => {
+          data.btnParametersMap[
+            this.formatField(item.fieldName, camelCase(this.tableName))
+          ] = item.fieldValue
+            ? item.fieldValue
+            : this.currentRow[item.fieldName];
+        });
+      }
+      data.conditionMap[this.templateInfo.template?.primaryKey] = delIds;
+      this.$modal
+        .confirm('是否确认删除"' + delIds + '"的数据项?')
+        .then(function () {
+          // return delTableData(data);
+          return btnCommonApi(data);
+        })
+        .then(() => {
+          // 调用子组件查询方法 目的是携带上子组件中的查询参数
+          this.$refs.mychild.pageList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    // 批量删除接口
+    handleBatchDelete() {
+      let delIds = this.ids;
+      let primary = camelCase(this.templateInfo.template?.primaryKey);
+      // if (row && row[primary] != undefined && row[primary] != null) {
+      //   delIds = [];
+      //   delIds.push(row[primary]);
+      // }
+      let data = {
+        basicMap: {
+          tableName: this.tableName,
+        },
+        conditionMap: {
+          // id: delIds,
+        },
+      };
+      // if (this.currentBtnData.btnParams) {
+      //   let btnParams = JSON.parse(this.currentBtnData.btnParams);
+      //   btnParams.forEach((item) => {
+      //     data.btnParametersMap[
+      //       this.formatField(item.fieldName, camelCase(this.tableName))
+      //     ] = item.fieldValue
+      //       ? item.fieldValue
+      //       : this.currentRow[item.fieldName];
+      //   });
+      // }
+      data.conditionMap[this.templateInfo.template?.primaryKey] = delIds;
+      this.$modal
+        .confirm('是否确认删除"' + delIds + '"的数据项?')
+        .then(function () {
+          return delTableData(data);
+          // return btnCommonApi(data);
+        })
+        .then(() => {
+          // 调用子组件查询方法 目的是携带上子组件中的查询参数
+          this.$refs.mychild.pageList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      let primary = camelCase(this.templateInfo.template?.primaryKey);
+      let realyKey = camelCase(this.tableName + "_" + primary);
+      if (this.ids.length > 0) {
+        this.queryParams["execlMap"] = [];
+        this.ids.forEach((item) => {
+          this.queryParams.execlMap.push(
+            this.tableList.find((ttem) => {
+              return ttem[realyKey] === item;
+            })
+          );
+        });
+      } else {
+        this.$message.warning("请至少勾选一条导出数据");
+        return;
+      }
+      this.queryParams.execlMap = JSON.stringify(this.queryParams.execlMap);
+      this.download(
+        process.env.VUE_APP_BASE_API3 + "common/export",
+        {
+          ...this.queryParams,
+        },
+        `文件名称_${new Date().getTime()}.xlsx`
+      );
+    },
+    /** 导入按钮操作 */
+    handleImport() {
+      this.upload.title = "当前导入";
+      this.upload.open = true;
+    },
+    /** 下载模板操作 */
+    importTemplate() {
+      this.download(
+        process.env.VUE_APP_BASE_API3 +
+          `common/exportTemplate?tableName=${this.tableName}&sqlkey=${this.templateInfo.template.sqlKey}`,
+        {},
+        `下载模版名称${new Date().getTime()}.xlsx`
+      );
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      this.$alert(
+        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+          response.msg +
+          "</div>",
+        "导入结果",
+        { dangerouslyUseHTMLString: true }
+      );
+      this.$refs.mychild.pageList({
+        limit: this.queryParams.pageSize,
+        page: this.queryParams.pageNum,
+      });
+    },
+    //重点在这里
+    handleChange(file, fileList) {
+      file.name = this.tableName + "." + file.name.split(".")[1];
+      fileList.forEach((item) => {
+        item.name = this.tableName + "." + file.name.split(".")[1];
+      });
+      let newFile = new File(
+        [file],
+        this.tableName + "." + file.name.split(".")[1]
+      ); //创建出来也是不可编辑的file对象
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    // 弹窗新增的数
+    addListHandler(val) {
+      this.addLists.push(...val);
+    },
+    // 绑定弹窗Dialog确定按钮
+    btnComfirm() {
+      // let data = {
+      //   addListMap:[],
+      //   basicMap:{
+      //     btnType: 10,
+      //     tableName: this.subTableName,
+      //     visible: true,
+      //   },
+      //   commMap: {},
+      //   conditionMap: {},
+      // }
+      // // data.addListMap =
+      // btnCommonApi(data).then(res => {
+      //   console.log('弹窗确定', res);
+      // })
+    },
+    // 去掉表名 开头字母小写
+    formatField(field = "", tableName) {
+      let temp = field.replace(tableName, "");
+      return toUnderline(temp[0].toLowerCase() + temp.slice(1));
+    },
+    // 审计   提交编辑结果按钮回调
+    async editConfirm() {},
+    //提交编辑结果按钮回调
+    async editConfirmHandler() {
+      if (this.$refs.addFromRef) {
+        this.$refs.addFromRef
+          .getData()
+          .then(async (values) => {
+            let data = {
+              basicMap: {
+                tableName: this.tableName,
+                // btnKey: btnData.btnKey,
+                btnKey: this.currentBtnData.btnKey,
+              },
+              addListMap: [values],
+              conditionMap: {},
+              commMap: {},
+              btnParametersMap: {},
+            };
+            if (this.currentBtnData.btnParams) {
+              let btnParams = JSON.parse(this.currentBtnData.btnParams);
+              btnParams.forEach((item) => {
+                data.btnParametersMap[
+                  this.formatField(item.fieldName, camelCase(this.tableName))
+                ] = item.fieldValue
+                  ? item.fieldValue
+                  : this.currentRow[item.fieldName];
+              });
+            }
+            if (Object.keys(this.defaultValue).length) {
+              data.conditionMap[this.templateInfo.template?.primaryKey] =
+                this.defaultValue[this.templateInfo.template?.primaryKey];
+              Object.keys(values).map((k) => {
+                data.commMap[k] = values[k];
+              });
+              data.basicMap.btnType = this.currentBtnData.btnType;
+              data.basicMap.visible = true;
+            } else {
+              data.basicMap.btnType = "INSERT";
+              data.basicMap.visible = true;
+            }
+            try {
+              let res = await btnCommonApi(data);
+              if (res.code == 200) {
+                this.$message.success("操作成功");
+              } else {
+                this.$message.error("网络异常,请稍后再试");
+              }
+            } catch (error) {
+              console.log(error);
+              this.$message.error("网络异常,请稍后再试");
+            }
+            this.getList();
+            this.defaultValue = {};
+            this.open = false;
+          })
+          .catch((res) => {
+            console.log(res);
+            this.$modal.msgError("表单校验失败,请规范填写数据");
+          });
+      } else {
+        // 没有绑定表单
+        let data = {
+          basicMap: {
+            tableName: this.tableName,
+            // btnKey: btnData.btnKey,
+            btnKey: this.currentBtnData.btnKey,
+            btnType: this.currentBtnData.btnType,
+            visible: true,
+          },
+          addListMap: [],
+          conditionMap: {},
+          commMap: {},
+          btnParametersMap: {},
+        };
+        if (this.currentBtnData.btnParams) {
+          let btnParams = JSON.parse(this.currentBtnData.btnParams);
+          btnParams.forEach((item) => {
+            data.btnParametersMap[
+              this.formatField(item.fieldName, camelCase(this.tableName))
+            ] = item.fieldValue
+              ? item.fieldValue
+              : this.currentRow[item.fieldName];
+          });
+        }
+        // data.basicMap.btnType = this.currentBtnData.btnType;
+        // data.basicMap.visible = true;
+        try {
+          let res = await btnCommonApi(data);
+          if (res.code == 200) {
+            this.$message.success("操作成功");
+          } else {
+            this.$message.error("网络异常,请稍后再试");
+          }
+        } catch (error) {
+          console.log(error);
+          this.$message.error("网络异常,请稍后再试");
+        }
+        this.getList();
+        this.defaultValue = {};
+        this.open = false;
+      }
+    },
+    // 使用提交数据类型的按钮获取数据
+    tempSubBtn(getData) {
+      getData()
+        .then((values) => {
+          console.log("验证通过", values);
+        })
+        .catch(() => {
+          console.log("验证未通过,获取失败");
+        });
+    },
+    // 判断是否生效行样式
+    cellStyle({ row, column, rowIndex, columnIndex }) {
+      let rowStyleList = this.styleList.filter((item) => item.styleType == 0);
+      if (!rowStyleList.length) return "";
+      let mainTableName = this.templateInfo.querySql.tableAlias; //主表名
+      for (let i = 0; i < rowStyleList.length; i++) {
+        let item = rowStyleList[i];
+        let judgeRes = this.determineCondition(item.styleCondtion, row);
+        if (judgeRes) {
+          let styleCode = JSON.parse(item.styleCode);
+          return `background-color:${styleCode.rowBgColor};`;
+        }
+      }
+    },
+
+    // 获取生效条件组结果
+    determineCondition(conditionStr, row) {
+      let conditionList = JSON.parse(conditionStr);
+      if (!conditionList.length) return false;
+      return conditionList.every((item) => this.judgeOneCondition(item, row));
+    },
+
+    // 获取单个判断条件结果
+    judgeOneCondition(item, row) {
+      let fullField = camelCase(item.tableName + "_" + item.fieldName);
+      switch (item.condition) {
+        case 1:
+          return row[fullField] > item.flagValue;
+        case 2:
+          return row[fullField] < item.flagValue;
+        case 3:
+          return row[fullField] == item.flagValue;
+        case 4:
+          return row[fullField] >= item.flagValue;
+        case 5:
+          return row[fullField] <= item.flagValue;
+        default:
+          return true; //默认为true
+      }
+    },
+
+    // 设置表格字段样式
+    async setFieldStyleData(tableList) {
+      let fieldConditionList = this.styleList.filter(
+        (item) => item.styleType == 1 || item.styleType == 2
+      );
+      if (!fieldConditionList.length) return tableList;
+      let res = await this.setDictStyleData();
+      this.dictStyleObj = res;
+      tableList.forEach((row) => {
+        // if (!row.styleFieldObj) row.styleFieldObj = {};
+        for (let i = 0; i < fieldConditionList.length; i++) {
+          let item = fieldConditionList[i];
+          if (item.styleType == 1) {
+            //字段样式
+            let judgeRes = this.determineCondition(item.styleCondtion, row);
+            if (judgeRes) {
+              let styleCode = JSON.parse(item.styleCode);
+              if (!row.styleFieldObj) row.styleFieldObj = {};
+              row.styleFieldObj[item.styleField] = {
+                styleType: item.styleType,
+                fieldStyleType: styleCode.fieldStyleType,
+                fontColor: styleCode.fontColor,
+                isTagFullBg: styleCode.isTagFullBg,
+                tagType: styleCode.tagType,
+              };
+              // row.styleField = item.styleField; //样式生效字段
+              // row.styleType = item.styleType; //0:行样式 1:字段样式 2:字典样式
+              // row.fieldStyleType = styleCode.fieldStyleType; //0:文本  1:标签
+              // row.fontColor = styleCode.fontColor;
+              // row.isTagFullBg = styleCode.isTagFullBg; //true/false
+              // row.tagType = styleCode.tagType; //string
+            }
+          } else {
+            //字典样式
+            let dicStyle = this.dictStyleObj[item.styleField]?.find((dict) => {
+              return dict.dictValue == row[item.styleField];
+            });
+            if (dicStyle) {
+              if (!row.styleFieldObj) row.styleFieldObj = {};
+              row.styleFieldObj[item.styleField] = dicStyle; //设置该字段应该显示的字典样式
+              row.styleFieldObj[item.styleField].styleType = 2;
+            }
+          }
+        }
+      });
+      return tableList;
+    },
+
+    //设置表格字典相关数据
+    setDictStyleData() {
+      let fieldConditionList = this.styleList.filter(
+        (item) => item.styleType == 2
+      );
+      if (!fieldConditionList.length) return;
+
+      return new Promise((resolve, reject) => {
+        fieldConditionList.forEach((item) => {
+          try {
+            let temp = {};
+            listData({
+              isEnablePaging: false,
+              dictType: item.styleCondtion,
+            }).then((res) => {
+              temp[item.styleField] = res.rows;
+              resolve(temp);
+            });
+          } catch (error) {
+            reject(error);
+          }
+        });
+      });
+    },
+
+    // 内链页面跳转
+    routerHandler(btnData, type) {
+      let { url, commonFieldData } = JSON.parse(btnData.btnParams);
+      let tempArr = [];
+      if (commonFieldData) {
+        let queryArr = JSON.parse(commonFieldData);
+
+        tempArr = queryArr.map((item) => {
+          let key = this.formatField(item.fieldName, camelCase(this.tableName));
+          let value = item.fieldValue
+            ? item.fieldValue
+            : this.currentRow[item.fieldName];
+          return key + "=" + value;
+        });
+      }
+      if (tempArr.length) {
+        url += "?" + tempArr.join("&");
+      }
+      // let link = btnData.btnParams;
+      if (type == "INNERLINK") {
+        this.$router.push(url);
+      } else {
+        window.open("http://" + url, "_blank");
+      }
+    },
+
+    // 操作列回调
+    excuteHandler(btnData, row) {
+      let { btnType, btnParams } = btnData;
+      this.currentBtnData = btnData;
+      this.currentRow = JSON.parse(JSON.stringify(row));
+      switch (btnType) {
+        case "INNERLINK":
+          this.routerHandler(btnData, btnType);
+          break;
+        case "OUTLINK":
+          this.routerHandler(btnData, btnType);
+          break;
+        case "UPDATE":
+          this.handleUpdate(row, btnData);
+          break;
+        case "EXECUTE":
+          this.handleUpdate(row, btnData);
+          break;
+        case "INITIATED":
+          this.handleUpdate(row, btnData);
+          break;
+        case "DELETE":
+          this.handleDelete(row, btnData);
+          break;
+        default:
+          break;
+      }
+    },
+
+    // k-form-build表单变化回调
+    formChangeHandler(value, label) {
+      // console.log(value, label);
+    },
+  },
+};
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-dialog:not(.is-fullscreen) {
+  min-width: 610px !important;
+}
+</style>

+ 128 - 0
zkqy-ui/src/views/orderMange/qualityInspection/test.html

@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <title>Document</title>
+
+</head>
+
+<body>
+  <div class="table" style="display: flex;">
+    <table style="width:900px; border-collapse:collapse;" border="1" cellpadding="10" align="center">
+      <tbody>
+        <tr>
+          <td width="900px" colspan="6" style="font-size: 20px;font-weight: 700;text-align: center;">检验单</td>
+
+        </tr>
+        <tr align="center">
+          <td width="300px" colspan="2">产品名称</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <!-- 物理指标 -->
+        <tr align="center">
+          <td width="150px" rowspan="5">物理指标</td>
+          <td width="150px">强度</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">伸长率</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">纤度</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">含油率</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">沸水收缩率</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <!-- 外观指标 -->
+        <tr align="center">
+          <td width="150px" rowspan="7">外观指标</td>
+          <td width="150px">毛丝</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">圈丝</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">蛛网丝</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">成形不良</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">无油</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">色差丝</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">污丝</td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+          <td width="150px"></td>
+        </tr>
+        <tr align="center">
+          <td width="150px">检验时间</td>
+          <td width="150px"></td>
+          <td width="150px">检验人员</td>
+          <td width="150px"></td>
+          <td width="150px">备注</td>
+          <td width="150px"></td>
+        </tr>
+
+      </tbody>
+    </table>
+  </div>
+</body>
+
+</html>