yusheng 6 месяцев назад
Родитель
Сommit
98556c76c4

+ 10 - 0
src/api/system/file/index.js

@@ -239,3 +239,13 @@ export async function batchImportPBom(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+/**
+ * 导出
+ */
+export async function exportTable(data) {
+  const res = await request.post(data.api, data.data, {
+    responseType: 'blob'
+  });
+  console.log(res.data, '***********');
+  download(res.data, data.fileName + '.xlsx');
+}

+ 45 - 0
src/components/upload/exportButton.vue

@@ -0,0 +1,45 @@
+<template>
+  <el-button
+    type="primary"
+    size="small"
+    icon="el-icon-download"
+    @click="exportFn"
+    >{{btnName}}</el-button
+  >
+</template>
+
+<script>
+  import { exportTable } from '@/api/system/file/index.js';
+  export default {
+    props: {
+      btnName: {
+        type: String,
+        default: '导出'
+      },
+      apiUrl: '',
+      fileName: '',
+      params: {
+        default: () => {
+          return {};
+        }
+      }
+    },
+    //注册组件
+    data() {
+      return {};
+    },
+
+    created() {},
+    methods: {
+      exportFn() {
+        exportTable({
+          api: this.apiUrl,
+          fileName: this.fileName,
+          data:this.params
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 11 - 0
src/utils/util.js

@@ -47,3 +47,14 @@ export function copyObj(obj) {
   } else newobj = obj;
   return newobj;
 }
+//随机id
+export function generateRandomString(num = 5) {
+  let result = '';
+  const characters =
+    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; // 包含字母和数字
+  const charactersLength = characters.length;
+  for (let i = 0; i < num; i++) {
+    result += characters.charAt(Math.floor(Math.random() * charactersLength));
+  }
+  return result;
+}

+ 207 - 0
src/views/rulesManagement/releaseRules/components/experimentationProcess.vue

@@ -0,0 +1,207 @@
+<template>
+  <div class="ele-body">
+    <el-button type="primary" @click="addHtml('customText')"
+      >插入自定义文本</el-button
+    >
+    <el-button type="primary" @click="addHtml('customTable')"
+      >插入表格</el-button
+    >
+    <el-button type="primary" @click="save()">保存</el-button>
+    <div
+      style="
+        display: flex;
+        width: 100%;
+        padding: 10px;
+        border: solid 1px #f1f1f1;
+        margin-top: 10px;
+      "
+    >
+      <vue-draggable
+        v-model="list"
+        group="project1"
+        :animation="300"
+        handle=".sort-handle"
+        style="flex: 1"
+      >
+        <div
+          class="demo-drag-list-item ele-cell"
+          v-for="item in list"
+          :key="item.id"
+        >
+          <div class="listItem">
+            <i class="sort-handle el-icon-_nav move" style="display: none"></i>
+            <i
+              class="sort-handle el-icon-delete delete"
+              style="display: none"
+              @click="del(item.id)"
+            ></i>
+            <customText
+              :ref="'customTextRef' + item.id"
+              style="flex: 1"
+              v-if="item.type == 'customText'"
+              :id="item.id"
+              :form="item.value"
+              :valueObj="item.valueObj"
+              @editShow="editShowFn"
+            ></customText>
+            <customTable
+              :ref="'customTextRef' + item.id"
+              style="flex: 1"
+              v-if="item.type == 'customTable'"
+              :id="item.id"
+              :form="item.value"
+              :valueObj="item.valueObj"
+              @editShow="editShowFn"
+            ></customTable>
+          </div>
+        </div>
+      </vue-draggable>
+
+      <el-card class="box-card" v-show="editShow">
+        <div slot="header" class="clearfix">
+          <span>配置</span>
+        </div>
+        <el-form label-width="100px">
+          <el-form-item label="字段标识:" prop="id">
+            <el-input
+              v-model="domObj.id"
+              placeholder=""
+              @change="editInputChange"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="宽度:" prop="width" v-if="!domObj.isNoWidth">
+            <el-input
+              v-model="domObj.width"
+              type="number"
+              placeholder=""
+              @change="editInputChange"
+            ></el-input>
+          </el-form-item>
+          <el-form-item label="是否只读:" prop="readonly">
+            <el-select
+              v-model="domObj.readonly"
+              placeholder="请选择"
+              @change="editInputChange"
+            >
+              <el-option :key="1" label="否" :value="1"> </el-option>
+              <el-option :key="2" label="是" :value="2"> </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </el-card>
+    </div>
+  </div>
+</template>
+
+<script>
+  import customText from './templateDiv/customText.vue';
+  import customTable from './templateDiv/customTable.vue';
+  import VueDraggable from 'vuedraggable';
+  import { generateRandomString } from '@/utils/util';
+  import { save } from '@/api/businessCode';
+
+  export default {
+    components: {
+      customText,
+      VueDraggable,customTable
+    },
+
+    computed: {},
+    data() {
+      return {
+        list: [],
+        editShow: false,
+        templateDivRef: '',
+        domObj: {}
+      };
+    },
+    mounted() {},
+    created() {
+      if (sessionStorage['valueJSON']) {
+        this.list = JSON.parse(sessionStorage['valueJSON']);
+      }
+       if (localStorage['valueJSON']) {
+        this.list = JSON.parse(localStorage['valueJSON']);
+      }
+
+      if (this.list.length) {
+        this.$nextTick(() => {
+          this.list.forEach((item) => {
+            this.$refs['customTextRef' + item.id][0].init({
+              form: item.value,
+              valueObj: item.valueObj
+            });
+          });
+        });
+      }
+      console.log(this.list);
+    },
+    methods: {
+      editShowFn({ templateDivRef, domObj }) {
+        this.templateDivRef = templateDivRef;
+        this.$set(this, 'domObj', domObj);
+        this.editShow = true;
+      },
+      editInputChange() {
+        this.$nextTick(() => {
+          this.$refs[this.templateDivRef][0].editInputChange(this.domObj);
+        });
+      },
+      del(id) {
+        this.list = this.list.filter((item) => item.id != id);
+      },
+      addHtml(type) {
+        this.list.push({
+          id: generateRandomString(6),
+          type: type,
+          value: '',
+          valueObj: {}
+        });
+      },
+      save() {
+        this.$nextTick(() => {
+          this.list.forEach((item, index) => {
+            let { form, valueObj } =
+              this.$refs['customTextRef' + item.id][0].getValue();
+            this.$set(this.list[index], 'value', form);
+            this.$set(this.list[index], 'valueObj', valueObj);
+          });
+          sessionStorage['valueJSON'] = JSON.stringify(this.list);
+          localStorage['valueJSON'] = JSON.stringify(this.list);
+        });
+      }
+    }
+  };
+</script>
+
+<style scoped lang="scss">
+  .listItem {
+    padding: 5px;
+    padding-top: 15px;
+    border: solid 1px #f1f1f1;
+    display: flex;
+    width: 100%;
+    align-items: center;
+    margin-top: 3px;
+    position: relative;
+  }
+  .sort-handle {
+    font-size: 16px;
+    position: absolute;
+    left: 0;
+    top: 0;
+  }
+  .move {
+    cursor: move;
+  }
+  .delete {
+    cursor: pointer;
+    left: 20px;
+    color: #f56c6c;
+  }
+  .listItem:hover {
+    .sort-handle {
+      display: block !important;
+    }
+  }
+</style>

+ 68 - 16
src/views/rulesManagement/releaseRules/components/permitAdd.vue

@@ -132,7 +132,27 @@
         </el-col>
 
         <el-col :span="8">
-          <el-form-item label="启用日期" required prop="startDate">
+          <el-form-item
+            label="启用日期"
+            prop="startDate"
+            :rules="
+              !qmsReportWorkType.includes(formData.reportWorkType)
+                ? [
+                    {
+                      required: true,
+                      message: '请选择启用日期',
+                      trigger: 'blur'
+                    },
+                    {
+                      required: true,
+                      message: '请选择启用日期',
+                      trigger: 'change'
+                    },
+                    { validator: validateStartDate, trigger: 'change' }
+                  ]
+                : []
+            "
+          >
             <el-date-picker
               v-model="formData.startDate"
               type="date"
@@ -148,7 +168,22 @@
         </el-col>
 
         <el-col :span="8">
-          <el-form-item label="停用日期" required prop="stopDate">
+          <el-form-item
+            label="停用日期"
+            prop="stopDate"
+            :rules="
+              !qmsReportWorkType.includes(formData.reportWorkType)
+                ? [
+                    {
+                      required: true,
+                      message: '请选择停用时间',
+                      trigger: 'change'
+                    },
+                    { validator: validateStopDate, trigger: 'change' }
+                  ]
+                : []
+            "
+          >
             <el-date-picker
               v-model="formData.stopDate"
               type="date"
@@ -225,7 +260,7 @@
           </el-form-item>
         </el-col>
       </el-row>
-      <el-row>
+      <el-row v-if="!qmsReportWorkType.includes(formData.reportWorkType)">
         <el-col :span="24">
           <el-form-item label="周期" prop="frequencyValue" required>
             <rule-cycle
@@ -238,10 +273,17 @@
         </el-col>
       </el-row>
 
-      <header-title title="规则明细"> </header-title>
+      <header-title
+        title="规则明细"
+        v-if="!qmsReportWorkType.includes(formData.reportWorkType)"
+      >
+      </header-title>
 
       <el-tabs
-        v-if="formData.recordTemplateStyle == '4'"
+        v-if="
+          formData.recordTemplateStyle == '4' &&
+          !qmsReportWorkType.includes(formData.reportWorkType)
+        "
         v-model="statisticsType"
         type="card"
       >
@@ -255,6 +297,7 @@
       </el-tabs>
 
       <ele-pro-table
+        v-if="!qmsReportWorkType.includes(formData.reportWorkType)"
         ref="table"
         :columns="bankColumns"
         :datasource="detialsDatasource"
@@ -537,6 +580,13 @@
           </el-link>
         </template>
       </ele-pro-table>
+
+      <header-title :title="formData.reportWorkType==5?'实验过程':formData.reportWorkType==6?'工艺要求':formData.reportWorkType==7?'实验记录':''" v-if="qmsReportWorkType.includes(formData.reportWorkType)">
+      </header-title>
+      <experimentationProcess
+        v-if="qmsReportWorkType.includes(formData.reportWorkType)"
+        ref="experimentationProcess"
+      ></experimentationProcess>
     </el-form>
     <template v-slot:footer>
       <el-button
@@ -616,6 +666,7 @@
   import ProductModal from '@/components/selectProduct/ProductModal.vue';
   import { getTreeByPid } from '@/api/classifyManage';
   import processModal from './processModal.vue';
+  import experimentationProcess from './experimentationProcess.vue';
   import ProductModalCorrelation from './ProductModal.vue';
   import { recordrulesexecutemethodPage } from '@/api/recordrulesexecutemethod/index';
   import { businessTypeList } from '@/views/regulationManagement/components/util';
@@ -630,7 +681,8 @@
       MaterialAdd,
       toolModal,
       processModal,
-      ProductModalCorrelation
+      ProductModalCorrelation,
+      experimentationProcess
     },
     props: {
       typeInfo: {
@@ -971,6 +1023,7 @@
       };
 
       return {
+        qmsReportWorkType:['5','6','7'],
         dialogTitle: '',
         visible: false,
         formDateBase,
@@ -991,15 +1044,15 @@
           ],
           // startDate 启用日期要大于当前时间
           // stopDate 停用时间要大于当前时间并且大于启用日期
-          startDate: [
-            { required: true, message: '请选择启用日期', trigger: 'blur' },
-            { required: true, message: '请选择启用日期', trigger: 'change' },
-            { validator: this.validateStartDate, trigger: 'change' }
-          ],
-          stopDate: [
-            { required: true, message: '请选择停用时间', trigger: 'change' },
-            { validator: this.validateStopDate, trigger: 'change' }
-          ],
+          // startDate: [
+          //   { required: true, message: '请选择启用日期', trigger: 'blur' },
+          //   { required: true, message: '请选择启用日期', trigger: 'change' },
+          //   { validator: this.validateStartDate, trigger: 'change' }
+          // ],
+          // stopDate: [
+          //   { required: true, message: '请选择停用时间', trigger: 'change' },
+          //   { validator: this.validateStopDate, trigger: 'change' }
+          // ],
           deviceName: [
             { required: true, message: '请输入选择设备', trigger: 'blur' }
           ],
@@ -1230,7 +1283,6 @@
             if (this.formData.startDate < now) {
               this.formData.startDate = now;
             }
-
           } else {
             this.getExecuteMethodList();
           }

+ 213 - 0
src/views/rulesManagement/releaseRules/components/templateDiv/customTable.vue

@@ -0,0 +1,213 @@
+<!-- 搜索表单 -->
+<template>
+  <div style="margin-top: 10px">
+    <el-button type="primary" @click="addColumn">新增列</el-button>
+    <el-button type="primary" @click="addRow">新增行</el-button>
+
+    <table style="margin-top: 10px" :id="id">
+      <thead>
+        <tr>
+          <th v-for="(item, index) in columns" class="tableTh">
+            <i
+              class="el-icon-delete delete"
+              style="display: none"
+              @click="removeColumn(index)"
+            ></i>
+            <input
+              v-model="item.value"
+              type="text"
+              class="templateInput"
+              :id="item.id"
+              :readonly="item.readonly == 2"
+              @click="inputClick(item)"
+            />
+          </th>
+          <th></th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr v-for="(row, rowIndex) in rows">
+          <td v-for="item in row.cells"
+            ><input
+              v-model="item.value"
+              type="text"
+              class="templateInput"
+              :id="item.id"
+              :readonly="item.readonly == 2"
+              @click="inputClick(item)"
+          /></td>
+          <td>
+            <i
+              class="sort-handle el-icon-delete delete"
+              style="color: #f56c6c"
+              @click="removeRow(rowIndex)"
+            ></i
+          ></td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+</template>
+
+<script>
+  import dictMixins from '@/mixins/dictMixins';
+  import { generateRandomString } from '@/utils/util';
+
+  export default {
+    props: {},
+    mixins: [dictMixins],
+    props: {
+      id: ''
+    },
+    data() {
+      return {
+        form: null,
+        valueObj: {},
+        domId: '',
+        rightClickShow: false,
+        columns: [],
+        rows: []
+      };
+    },
+    methods: {
+      // 方法:添加新列
+      addColumn() {
+        this.columns.push({
+          value: `列${this.columns.length + 1}`,
+          id: generateRandomString(5),
+          readonly: 1
+        });
+        this.rows.forEach((row) => {
+          row.cells.push({
+            value: '',
+            readonly: 1,
+            id: generateRandomString(5)
+          });
+        });
+      },
+
+      // 方法:删除指定列
+      removeColumn(index) {
+        this.columns.splice(index, 1);
+        this.rows.forEach((row) => {
+          row.cells.splice(index, 1);
+        });
+      },
+
+      // 方法:添加新行
+      addRow() {
+        const newRow = {
+          cells: Array(this.columns.length)
+            .fill(null)
+            .map(() => ({
+              readonly: 1,
+              value: '',
+              id: generateRandomString(5)
+            }))
+        };
+        this.rows.push(newRow);
+      },
+      // 方法:删除指定行
+      removeRow(index) {
+        this.rows.splice(index, 1);
+      },
+
+      objInit() {
+        if (Object.keys(this.valueObj).length) {
+          for (let key in this.valueObj) {
+            this.$nextTick(() => {
+              let dom = document.getElementById(key);
+              dom.value = this.valueObj[key];
+            });
+          }
+        }
+      },
+
+      getValue() {
+        return {
+          form: null,
+          valueObj: {
+            columns: this.columns,
+            rows: this.rows
+          }
+        };
+      },
+      init({ form, valueObj }) {
+        this.form = form;
+        this.columns = valueObj.columns;
+        this.rows = valueObj.rows;
+      },
+      editInputChange(domObj) {
+        let columnsIndex = this.columns.findIndex(
+          (item) => item.id == this.domId
+        );
+        if (columnsIndex >= 0) {
+          this.$set(this.columns, columnsIndex, domObj);
+          return;
+        }
+        this.rows.forEach((item, index) => {
+          let rowsIndex = item.cells.findIndex(
+            (cells) => cells.id == this.domId
+          );
+          // console.log(rowsIndex,'rowsIndex')
+          if (rowsIndex >= 0) {
+            this.$set(this.rows[index].cells, rowsIndex, domObj);
+          }
+        });
+      },
+
+      inputClick(item) {
+        this.domId = item.id;
+        this.$emit('editShow', {
+          templateDivRef: 'customTextRef' + this.id,
+          domObj: {
+            isNoWidth: true,
+            id: item.id,
+            readonly: item.readonly,
+            value: item.value
+          }
+        });
+      }
+    }
+  };
+</script>
+<style lang="scss" scoped>
+  :deep(.templateInput) {
+    width: 100%;
+    border: solid 1px #bfbfbf;
+    padding: 1px;
+    margin: 1px;
+    margin-left: 3px;
+    text-align: center;
+    background-color: #fff;
+  }
+  table {
+    width: 100%;
+    border-collapse: collapse;
+  }
+  th,
+  td {
+    border: 1px solid #ddd;
+    padding: 0;
+    text-align: center;
+  }
+  th {
+    background-color: #f2f2f2;
+  }
+  tr:nth-child(even) {
+    background-color: #f9f9f9;
+  }
+  input:focus {
+    border-color: #66afe9; /* 改变边框颜色 */
+    outline: none; /* 移除默认的轮廓线 */
+  }
+  .tableTh:hover {
+    position: relative;
+    .delete{
+      display: block !important;
+      position: absolute;
+      right: 0;top: 0;
+      color: #F56C6C;
+    }
+  }
+</style>

+ 186 - 0
src/views/rulesManagement/releaseRules/components/templateDiv/customText.vue

@@ -0,0 +1,186 @@
+<!-- 搜索表单 -->
+<template>
+  <div>
+    <el-popover
+      style="position: fixed; z-index: 2000"
+      width="130"
+      ref="popoverRef"
+      v-model="rightClickShow"
+      @click.native="rightClickShow = false"
+    >
+      <div>
+        <el-button type="primary" @click="addHtml">插入输入框</el-button>
+      </div>
+    </el-popover>
+    <div
+      v-html="form"
+      contenteditable
+      class="contenteditable"
+      :ref="'valueChange'"
+      :id="id"
+      @contextmenu.prevent="onRightClick($event)"
+    >
+    </div>
+  </div>
+</template>
+
+<script>
+  import dictMixins from '@/mixins/dictMixins';
+  import { generateRandomString } from '@/utils/util';
+
+  export default {
+    props: {},
+    mixins: [dictMixins],
+    props: {
+      id: ''
+    },
+    data() {
+      return {
+        form: null,
+        valueObj: {},
+        domId: '',
+        rightClickShow: false
+      };
+    },
+    methods: {
+      addHtml() {
+        this.insertInput();
+
+        this.objInit();
+      },
+      objInit() {
+        if (Object.keys(this.valueObj).length) {
+          for (let key in this.valueObj) {
+            this.$nextTick(() => {
+              let dom = document.getElementById(key);
+              dom.value = this.valueObj[key];
+            });
+          }
+        }
+      },
+      insertInput() {
+        const selection = window.getSelection();
+        if (selection.rangeCount > 0) {
+          const range = selection.getRangeAt(0);
+          console.log(range, 'range');
+          this.getParentID(range.commonAncestorContainer);
+          if (this.getParentID(range.commonAncestorContainer)) {
+            range.setStart(selection.anchorNode, selection.anchorOffset);
+            range.setEnd(selection.focusNode, selection.focusOffset);
+            range.deleteContents(); // 删除选中的内容(如果需要)
+            range.insertNode(this.getInput()); // 插入input元素
+            // 可以设置光标位置在input之后
+            range.selectNodeContents(this.getInput());
+            range.collapse(false); // 光标放在input之后
+            selection.removeAllRanges();
+            selection.addRange(range);
+          }
+
+          // return
+        }
+      },
+      getParentID(data) {
+        if (data.id == this.id) {
+          return true;
+        }
+        if (data.parentElement) {
+          return this.getParentID(data.parentElement);
+        }
+      },
+
+      getInput() {
+        let id = generateRandomString();
+        const inputElement = document.createElement('input');
+        inputElement.setAttribute('type', 'text');
+        inputElement.setAttribute('class', 'templateInput');
+        inputElement.setAttribute('id', id);
+        return inputElement;
+      },
+      getValue() {
+        // this.form = this.$refs['valueChange'].innerHTML;
+        return {
+          form: this.$refs['valueChange'].innerHTML,
+          valueObj: this.valueObj
+        };
+      },
+      init({ form, valueObj }) {
+        this.form = form;
+        this.valueObj = valueObj;
+        this.objInit();
+      },
+      editInputChange(domObj) {
+        let dom = document.getElementById(this.domId);
+        dom.style.width = domObj.width + 'px';
+        if (domObj.readonly == 2) {
+          dom.setAttribute('readonly', 'readonly');
+        } else {
+          dom.removeAttribute('readonly');
+        }
+        delete this.valueObj[dom.id];
+        this.valueObj[domObj.id] = dom.value;
+        dom.id = domObj.id;
+      },
+      onRightClick(PointerEvent) {
+        this.rightClickShow = true;
+        this.$nextTick(() => {
+          let y = PointerEvent.pageY;
+          let x = PointerEvent.pageX + 10;
+          if (PointerEvent.screenY >= PointerEvent.view.innerHeight) {
+            y -= 80;
+          }
+          this.$refs.popoverRef.$el.style.top = y + 'px';
+          this.$refs.popoverRef.$el.style.left = x + 'px';
+        });
+      },
+      inputChange(event) {
+        if (event.target && event.target.className == 'templateInput') {
+          this.valueObj[event.target.id] = event.target.value;
+        }
+      },
+      inputClick(event) {
+        if (event.target && event.target.className == 'templateInput') {
+          this.domId = event.target.id;
+          console.log(event, 'event');
+          // event.getAttribute('class', 'templateInput');
+          this.$emit('editShow', {
+            templateDivRef: 'customTextRef' + this.id,
+            domObj: {
+              width: event.target.offsetWidth,
+              id: event.target.id,
+              readonly: event.target.readOnly ? 2 : 1
+            }
+          });
+        }
+      }
+    },
+
+    mounted() {
+      this.$nextTick(() => {
+        console.log(document.getElementById(this.id), 'dsd');
+        document
+          .getElementById(this.id)
+          .addEventListener('change', this.inputChange);
+
+        document
+          .getElementById(this.id)
+          .addEventListener('click', this.inputClick);
+      });
+    }
+  };
+</script>
+<style lang="scss" scoped>
+  :deep(.templateInput) {
+    width: 80px;
+    border: solid 1px #bfbfbf;
+    padding: 1px;
+    margin: 1px;
+    margin-left: 3px;
+  }
+  .contenteditable {
+    // padding: 5px;
+    width: 100%;
+    min-height: 20px;
+    padding-left: 10px;
+    // border: solid 1px #b3b0b0;
+  }
+</style>

+ 1 - 1
src/views/rulesManagement/releaseRules/index.vue

@@ -421,7 +421,7 @@
     },
     methods: {
       addPermit(row, type, title) {
-        console.log('this.treeNode 1122', this.treeNode);
+     
         if (type == 'add') {
           if (!this.treeNode) {
             return this.$message.warning('请先选择类型节点!');

+ 12 - 3
src/views/technology/route/index.vue

@@ -47,6 +47,11 @@
           >
             导入
           </el-button>
+          <exportButton
+            fileName="工艺路线"
+            apiUrl="/main/producerouting/exeportProduceTask"
+            :params="params"
+          ></exportButton>
         </template>
 
         <template v-slot:code="{ row }">
@@ -202,6 +207,8 @@
   import importDialog from '@/components/upload/import-dialogNew.vue';
   import { parameterGetByCode } from '@/api/system/dictionary-data';
   import chooseCategory from './components/chooseCategory.vue';
+  import exportButton from '@/components/upload/exportButton.vue';
+
   export default {
     name: 'technologyRoute',
     mixins: [tabMixins],
@@ -212,11 +219,12 @@
       historyModal,
       processSubmitDialog,
       importDialog,
-      chooseCategory
+      chooseCategory,exportButton
     },
     data() {
       return {
         isUpdate: false,
+        params: {},
         // 表格列配置
         columns: [
           {
@@ -363,12 +371,13 @@
       },
       /* 表格数据源 */
       async datasource({ page, limit, where, order }) {
-        const res = await route.list({
+        this.params = {
           ...where,
           ...order,
           pageNum: page,
           size: limit
-        });
+        };
+        const res = await route.list({ ...this.params });
         return res;
       },
       importDialog() {