From 1bdf1c1ef2ad11b31f10cd21d71b575c7b4a72c4 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期五, 10 十一月 2023 19:47:39 +0800
Subject: [PATCH] 	modified:   src/views/basic/param/index.vue

---
 src/views/basic/param/index.vue |  809 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 498 insertions(+), 311 deletions(-)

diff --git a/src/views/basic/param/index.vue b/src/views/basic/param/index.vue
index 217e2ef..03c511f 100644
--- a/src/views/basic/param/index.vue
+++ b/src/views/basic/param/index.vue
@@ -1,381 +1,568 @@
 <template>
-  <div class="mod-config">
-    <basic-container>
-      <!-- <ttable
-        :table="table"
-        :row-key="id"
-        :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
-        @handleSelectionChange="handleSelectionChange"
-        :uploadInfo="uploadInfo"
-        :prelang="prelang"
-        :options="options"
-        :ajaxFun="ajaxFun"
-        ref="paramTable"
-      >
-        <template #toolbar></template>
-      </ttable> -->
-      <el-row style="margin-left: 10px;">
-        <el-form :inline="true" :model="table" class="demo-form-inline">
-          <el-form-item label="鍙傛暟椤�">
-            <el-input v-model="table.param" placeholder="鍙傛暟椤�"></el-input>
-          </el-form-item>
-          <el-form-item label="鍙傛暟缂栧彿">
-            <el-input v-model="table.code" placeholder="鍙傛暟缂栧彿"></el-input>
-          </el-form-item>
-          <el-form-item>
-            <el-button type="primary" @click="onSearch">鏌ヨ</el-button>
-          </el-form-item>
-        </el-form>
-      </el-row>
-      <el-row style="margin-left: 10px;height: 80vh;">
+  <div>
+    <div class="param-basic">
+      <el-form style="width:100%;margin-top: 20px;" class="l-mes" :inline="true" :model="searchForm">
         <el-row>
-          <el-button type="defult" @click="addOrUpdateHandle">鏂板</el-button>
-          <el-button type="defult" @click="onSearch">瀵煎叆</el-button>
-          <!-- <el-button type="defult" @click="isExpandAllClick">灞曞紑/鎶樺彔</el-button> -->
+          <el-col :span="4">
+            <el-form-item label="鍙傛暟椤�:">
+              <el-input clearable style="width: 100%;" v-model="searchForm.param" placeholder="鍙傛暟椤�"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="5">
+            <el-form-item label="鍙傛暟缂栧彿:">
+              <el-input clearable style="width: 100%;" v-model="searchForm.code" placeholder="鍙傛暟缂栧彿"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="6">
+            <el-form-item class="btn-group">
+              <el-button type="" @click="onSearch">鏌ヨ</el-button>
+              <el-button type="primary" @click="addOrUpdateHandle">鏂板</el-button>
+              <el-button @click="showImportDialog">瀵煎叆</el-button>
+            </el-form-item>
+          </el-col>
         </el-row>
-        <el-row style="padding-top: 20px;">
-          <!--    琛ㄦ牸鏁版嵁鍖�-->
-          <el-table  height="480" style="width: 100%;" :data="table.data" row-key="id"
-            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
-            <el-table-column type="index" label="搴忓彿" width="50">
-            </el-table-column>
-            <el-table-column prop="code" label="鍙傛暟缂栧彿"></el-table-column>
-            <el-table-column prop="parameterItem" label="鍙傛暟椤�"></el-table-column>
-            <el-table-column prop="type" label="鍙傛暟绫诲瀷">
-              <template slot-scope="scope">
-                <el-col v-show="scope.row.bianJi===false">{{ scope.row.type }}</el-col>
-                <el-col v-show="scope.row.bianJi">
-                  111
-                  <!-- <el-select v-model="scope.row.type" filterable placeholder="璇烽�夋嫨鍙傛暟绫诲瀷" style="width:100%"
-                    @change="changeType">
-                    <el-option v-for="(item, index) in this.typeOptions" :label="item.label" :value="item.value"
-                      :key="item.value">
-                    </el-option>
-                  </el-select> -->
-                </el-col>
-              </template>
-            </el-table-column>
-            <el-table-column prop="parameterFormat" label="鍙傛暟鏍煎紡"></el-table-column>
-            <el-table-column prop="unit" label="鍗曚綅"></el-table-column>
-            <el-table-column prop="code" label="鎿嶄綔">
-              <template slot-scope="scope">
-                <el-row style=" display: flex;width: 100%;">
-                  <el-col><el-button type="text">鍒犻櫎</el-button></el-col>
-                  <el-col v-if="scope.row.isBianji">
-                  <el-button @click="bianji(scope.row)" type="text">{{ scope.row.bianJiBtn }}</el-button>
-                  </el-col>
-                </el-row>
-              </template>
-            </el-table-column>
-          </el-table>
-          <el-row style="display: flex; justify-content: end;">
-            <el-pagination :current-page="table.currentPage" @current-change="handlesCurrentChange"
-              @size-change="sizeChangeHandle" :page-sizes="[10, 20, 50, 100]" :page-size="table.pageSize"
-              layout="total, sizes, prev, pager, next, jumper" :total="table.total"></el-pagination>
-          </el-row>
-        </el-row>
-      </el-row>
-      <!-- 寮圭獥, 鏂板 / 淇敼 -->
-      <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form>
+      </el-form>
+    </div>
+    <basic-container>
+      <avue-crud :data="tableData" ref="crud" :option="option" :span-method="spanMethod" @refresh-change="getData"
+        :page="page" :table-loading="loading" @row-update="updateParam" @row-del="delParam">
+        <template #menu="{ row, index }">
+          <el-button type="text" icon="el-icon-edit" size="small" @click="showEdit(row, index)">缂栬緫</el-button>
+          <el-button type="text" icon="el-icon-delete" size="small" @click="showDel(row, index)">鍒犻櫎</el-button>
+        </template>
+        <template slot-scope="scope" slot="paramTypeForm">
+          <el-select v-model="scope.row.paramType" @change="changeType(scope.row)" filterable placeholder="璇烽�夋嫨鍙傛暟绫诲瀷"
+            :disabled="formDisabled">
+            <el-option v-for="(item, index) in typeOptions" :key="index" :label="item.label" :value="item.value" />
+          </el-select>
+        </template>
+        <template slot="paramFormatLabel" slot-scope="scope">
+          <span v-if="scope.row.paramType != '2'">鍙傛暟鏍煎紡</span>
+          <span v-else>鏁版嵁瀛楀吀</span>
+        </template>
+        <template slot-scope="scope" slot="paramFormatForm">
+          <el-input v-if="scope.row.paramType != '2'" v-model="scope.row.paramFormat" placeholder="璇疯緭鍏ュ弬鏁版牸寮�"
+            :disabled="formDisabled" />
+          <el-select v-else v-model="scope.row.paramFormat" filterable placeholder="璇烽�夋嫨鏁版嵁瀛楀吀" :disabled="formDisabled">
+            <el-option v-for="(item, index) in dictOptions" :key="index" :label="item.description" :value="item.type" />
+          </el-select>
+        </template>
+      </avue-crud>
     </basic-container>
+    <!-- 寮圭獥, 鏂板 / 淇敼 -->
+    <table-form v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getData"></table-form>
+    <el-dialog title="瀵煎叆" :visible.sync="importDialog" width="22%">
+      <el-upload ref="upload" style="width:100%;" class="upload-demo" drag action="#" :multiple="false"
+        :file-list="fileList" :auto-upload="false" show-file-list :on-change="handleUpload">
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+        <div class="el-upload__tip" slot="tip">
+          鍙兘涓婁紶xls/xlsx鏂囦欢锛屼笖涓嶈秴杩�10MB
+          <el-button type="text" style="font-size:15px;text-decoration: underline;"
+            @click="downloadTemplate">涓嬭浇妯℃澘</el-button>
+        </div>
+      </el-upload>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="importDialog = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="confirmImport()">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
+
 <script>
-import { fetchList, delObj } from '@/api/basic/param'
+import { fetchList, delObj, putObj, uploadParam } from '@/api/basic/param'
+import { uploadTemplate } from '@/api/basic/template'
 import TableForm from './param-form'
-import ttable from '@/views/common/ztt-table.vue'
 import { mapGetters } from 'vuex'
-import { remote } from '../../../api/admin/dict'
+import { remote, fetchList as fetchDictList } from '@/api/admin/dict'
 export default {
   data() {
     return {
-      isExpandAll: false,
-      // 閲嶆柊娓叉煋琛ㄦ牸鐘舵��
-      refreshTable: true,
-      ajaxFun: fetchList,
+      fileList: [],
+      importDialog: false,
+      formDisabled: false,
+      dictOptions: [],
       typeOptions: [],
-      multipleSelection: [],
-      isShowQuery: false,
-      uploadInfo: {
-        // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
-        isShow: true,
-        url: '/mes/param/upload'
-      },
-      prelang: 'operation',
-      options: {
-        height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
-        stripe: true, // 鏄惁涓烘枒椹汗 table
-        highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
-        border: true, // 鏄惁鏈夌旱鍚戣竟妗�
-        lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
-        fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
-        multiSelect: false, //
-        seqNo: true,
-        isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳
-        isSearch: false, // 楂樼骇鏌ヨ鎸夐挳
-        defaultOrderBy: { column: 'createTime', direction: 'desc' }
-      },
-      table: {
+      searchForm: {
         param: null,
-        total: 0,
-        code: null,
+        code: null
+      },
+      loading: true,
+      page: {
+        total: 10,
         currentPage: 1,
-        pageSize: 20,
-        data: [],
-        // 鏍囬
+        pageSize: 10
+      },
+      tableData: [],
+      option: {
+        height: 585,
+        columnBtn: false,
+        index: true,
+        indexLabel: '搴忓彿',
+        menuAlign: 'center',
+        editBtn: false,
+        delBtn: false,
+        addBtn: false,
+        border: true,
+        align: 'center',
         column: [
           {
-            minWidth: 'code',
-            prop: 'code',
             label: '鍙傛暟缂栧彿',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text',
-            render: { fun: this.addOrUpdateHandle }
+            prop: 'code',
+            disabled: true
           },
           {
-            minWidth: '120',
-            prop: 'parameterItem',
             label: '鍙傛暟椤�',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
+            prop: 'paramItem',
+            disabled: true
           },
           {
-            minWidth: '120',
-            prop: 'second',
             label: '浜岀骇鍙傛暟',
-            sort: true,
-            isTrue: true,
-            isSearch: false,
-            searchInfoType: 'text'
+            prop: 'paramItemTwo',
+            disabled: true
           },
           {
-            minWidth: '130',
-            prop: 'third',
             label: '涓夌骇鍙傛暟',
-            sort: true,
-            isTrue: true,
-            isSearch: false,
-            searchInfoType: 'text'
+            prop: 'paramItemThree',
+            disabled: true
           },
           {
-            minWidth: '140',
-            prop: 'type',
             label: '鍙傛暟绫诲瀷',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'select',
-            formatter: this.getParam,
-            optList: () => {
-              return this.typeOptions
-            }
+            prop: 'paramType',
+            formslot: true,
+            rules: [{
+              required: true,
+              message: "璇烽�夋嫨鍙傛暟绫诲瀷",
+              trigger: "change"
+            }]
           },
           {
-            minWidth: '120',
-            prop: 'parameterFormat',
             label: '鍙傛暟鏍煎紡',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
-          },
-          {
-            minWidth: '120',
-            prop: 'unit',
+            prop: 'paramFormat',
+            formslot: true,
+            labelslot: true
+          }, {
             label: '鍗曚綅',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
+            prop: 'unit',
+            rules: [{
+              required: true,
+              message: "鍗曚綅涓嶈兘涓虹┖",
+              trigger: "blur"
+            }]
           },
-          {
-            minWidth: '200',
-            prop: 'createUser',
-            label: '鍒涘缓浜�',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
-          },
-          {
-            minWidth: '140',
-            prop: 'updateUser',
-            label: '鏇存柊浜�',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text'
-          },
-          {
-            minWidth: '120',
-            prop: 'createTime',
-            label: '鍒涘缓鏃ユ湡',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'datetimerange'
-          },
-          {
-            minWidth: '200',
-            prop: 'updateTime',
-            label: '鏇存柊鏃ユ湡',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'datetimerange'
-          }
-        ],
-        toolbar: [
-          {
-            text: '鏂板',
-            type: 'primary',
-            fun: this.addOrUpdateHandle
-          }
-        ],
-        operator: [
-          {
-            text: '鍒犻櫎',
-            icon: 'el-icon-delete',
-            type: 'text',
-            size: 'small',
-            fun: this.deleteHandle
-          }
-        ],
-        operatorConfig: {
-          fixed: 'right',
-          label: '鎿嶄綔',
-          width: 100,
-          minWidth: 100
-        }
+        ]
       },
+      spanArr: [{
+        prop: 'code',
+        span: []
+      }, {
+        prop: 'paramItem',
+        span: []
+      }, {
+        prop: 'paramItemTwo',
+        span: []
+      }],
       addOrUpdateVisible: false
     }
   },
   components: {
-    ttable,
     TableForm
   },
   computed: {
     ...mapGetters(['permissions'])
   },
   created() {
-    this.getParamType()
     this.getData()
+    this.getParamType()
   },
+  beforeUpdate() {
+    console.log("updated");
+    this.rowSort()
+    this.rowCalc()
+    this.loading = false
+  },
+  watch: {},
   methods: {
-    changeType(){},
-    bianji(row){
-      // this.$set(row.bianJi,false,true)
-      row.bianJi=true
-      row.bianJiBtn='淇濆瓨'
-      console.log(row)
-    },
-    isExpandAllClick() {
-      // console.log(1111);
-      this.isExpandAll = !this.isExpandAll;
-      this.$nextTick(() => {
-        this.refreshTable = true;
-      });
-      // console.log(this.isExpandAll);
-    },
-    handlesCurrentChange() { },
-    sizeChangeHandle() { },
-    onSearch() { },
-    // 鑾峰彇鏁版嵁鍒楄〃
-    getData() {
-      let param = {
-        parentId: 0,
-        code: this.table.code,
-        size: this.table.pageSize,
-        current: this.table.currentPage,
-        parameterItem: this.table.param
-      }
-      fetchList(param).then((res) => {
-        console.log(res.data);
-        this.table.total = res.data.data.total
-        this.table.data = res.data.data.records
-        let datas=JSON.parse(JSON.stringify(this.table.data))
-        datas.forEach(l => {
-          l.bianJi = false
-          if (l.children.length < 1) {
-            l.isBianji = true
-            l.bianJiBtn='缂栬緫'
-          }
-          if (l.children.length > 0) {
-            l.isBianji = false
-            l.children.forEach(c => {
-              c.bianji = false
-              if (c.children.length < 1) {
-                c.isBianji = true
-                c.bianJiBtn='缂栬緫'
-              } else {
-                l.isBianji = false
-                c.children.forEach(cc => {
-                  cc.bianJi = false
-                  cc.isBianji = true
-                  c.bianJiBtn='缂栬緫'
-                })
-              }
-            })
-          }
+    //涓嬭浇妯℃澘
+    downloadTemplate() {
+      uploadTemplate('param').then((response) => {
+        const blob = new Blob([response.data], {
+          type: 'application/force-download'
         })
-        this.table.data=datas
-        console.log(this.table.data);
+        const filename = decodeURI('鍙傛暟妯℃澘.xlsx')
+        // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
+        const elink = document.createElement('a')
+        elink.download = filename
+        elink.style.display = 'none'
+        elink.href = URL.createObjectURL(blob)
+        document.body.appendChild(elink)
+        elink.click()
+        URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+        document.body.removeChild(elink)
       })
     },
-    // 鏂板 / 淇敼
-    addOrUpdateHandle(row) {
-      this.addOrUpdateVisible = true
-      this.$nextTick(() => {
-        this.$refs.addOrUpdate.init(row == null ? null : row.id)
+    // 鏂囦欢涓婁紶
+    handleUpload(file, fileList) {
+      const maxSize = 10 * 1024 * 1024 * 1024;//10MB
+      const xlsType = "application/vnd.ms-excel";
+      const xlsxType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
+      if (file.raw.type != xlsType && file.raw.type != xlsxType) {
+        this.$message.warning("瀵煎叆鏂囦欢鏍煎紡涓嶇锛�");
+        fileList.pop()
+        return;
+      }
+      if (Number.parseInt(file.size) > maxSize) {
+        this.$message.warning("瀵煎叆鏂囦欢杩囧ぇ锛�");
+        fileList.pop()
+        return;
+      }
+      if (fileList.length > 1) {
+        this.$message.warning("鍙兘瀵煎叆鍗曚釜鏂囦欢!")
+        fileList.pop()
+      }
+      this.fileList = fileList;
+      // this.importFile = file;
+    },
+    showImportDialog() {
+      this.importDialog = true
+    },
+    //纭畾瀵煎叆
+    confirmImport() {
+      console.log(this.fileList)
+      const fileData = new FormData();
+      fileData.append('file', this.fileList[0].raw);
+      uploadParam(fileData).then((res) => {
+        this.$message.success("瀵煎叆鍙傛暟鎴愬姛!")
+        this.fileList = []
+        this.importDialog = false
+        this.getData()
+        this.getParamType()
+      }).catch()
+    },
+    // 淇敼鍙傛暟绫诲瀷
+    changeType(row) {
+      if (row.paramType === '1') {
+        row.paramFormat = '#.0000'
+      } else if (row.paramType === '2') {
+        this.getDictOptions()
+      } else {
+        row.paramFormat = ''
+      }
+    },
+    // 鑾峰彇鎵�鏈夊瓧鍏�
+    getDictOptions() {
+      fetchDictList(
+        Object.assign({
+          current: 1,
+          size: 9999
+        })
+      ).then((response) => {
+        if (response.data.code === 0) {
+          this.dictOptions = response.data.data.records
+        }
       })
+    },
+    showEdit(row, index) {
+      this.option.column.forEach(item => {
+        if (row.paramItemThree == "" && item.prop == 'paramItemThree') {
+          item.display = false
+        }else if(row.paramItemThree != "" && item.prop == 'paramItemThree'){
+          item.display = true
+        }
+        if (row.paramItemTwo == "" && item.prop == 'paramItemTwo') {
+          item.display = false
+        }else if(row.paramItemTwo != "" && item.prop == 'paramItemTwo'){
+          item.display = true
+        }
+      })
+      console.log(row);
+      // let type=this.typeOptions.filter(t=>{
+      //   return t.label==row.paramType
+      // })[0]
+      // row.paramType=type.value
+      this.$refs.crud.rowEdit(row, index)
+    },
+    showDel(row, index) {
+      this.$refs.crud.rowDel(row, index)
+    },
+    updateParam(row, index, done, loading) {
+      // console.log(row);
+      // this.formDisabled = true
+      let data = {
+        dict: '',
+        id: '',
+        parameterFormat: '',
+        parameterItem: '',
+        type: row.paramType,
+        unit: row.unit,
+      }
+      row.paramType == '2' ? data.dict = row.paramFormat : data.parameterFormat = row.paramFormat
+      if (row.threeId!="null") {
+        data.id = row.threeId
+        data.parameterItem = row.paramItemThree
+      } else {
+        if (row.twoId!="null") {
+          data.id = row.twoId
+          data.parameterItem = row.paramItemTwo
+        } else {
+          data.id = row.oneId
+          data.parameterItem = row.paramItem
+        }
+      }
+      if(data.type=='鏂囨湰鏍煎紡'){
+        let type=this.typeOptions.filter(t=>{
+        return t.label==row.paramType
+      })[0]
+      data.type=type.value
+      }
+      // console.log(data);
+      // return
+      putObj(data).then(res => {
+        if (res.data.data.code == 0) {
+          this.$message.success("鏇存柊鎴愬姛")
+        } else {
+          this.$message.error(res.data.data.msg)
+        }
+        this.getData()
+        done(row)
+      }).catch(error => {
+        console.log(error)
+      })
+    },
+    delParam(row) {
+      let id;
+      if (row.threeId) {
+        id = row.threeId
+      } else {
+        if (row.twoId) {
+          id = row.twoId
+        } else {
+          id = row.oneId
+        }
+      }
+      this.$confirm('鏄惁纭鍒犻櫎缂栧彿涓恒��' + row.code + '銆戠殑鏁版嵁?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        delObj(id).then(res => {
+          if (res.data.code == 0) {
+            this.$message.success("鍒犻櫎鎴愬姛")
+          } else {
+            this.$message.error("鍒犻櫎澶辫触")
+          }
+          this.getData()
+        })
+      }).catch(() => { });
     },
     // 鑾峰彇宸ュ簭鍙傛暟绫诲瀷
     getParamType() {
       remote('technology_param').then((response) => {
         if (response.data.code === 0) {
           this.typeOptions = response.data.data
+          this.optionType = response.data.data
         }
       })
     },
-    // 閫変腑浠撳簱琛�
-    handleSelectionChange(val) {
-      this.multipleSelection = val
+    onSearch() {
+      this.getData()
     },
-    // 琛ㄦ牸瀛楁鏍煎紡鍖�
-    getParam(row, column, cellValue) {
-      for (let i = 0, len = this.typeOptions.length; i < len; i++) {
-        if (cellValue == this.typeOptions[i].value) {
-          return this.typeOptions[i].label
+    // 鏂板 / 淇敼
+    addOrUpdateHandle(row) {
+      console.log("1111",row);
+      this.addOrUpdateVisible = true
+      this.$nextTick(() => {
+        this.$refs.addOrUpdate.init(row == null ? null : row.id)
+      })
+    },
+    // 鑾峰彇鏁版嵁鍒楄〃
+    getData() {
+      this.loading = true
+      let param = {
+        code: this.searchForm.code,
+        size: 20,
+        current: 1,
+        parameterItem: this.searchForm.param
+      }
+      fetchList(param).then((res) => {
+        this.tableData = res.data.data.records
+        this.page.total = res.data.data.total
+        this.page.currentPage = res.data.data.records.pages
+      })
+    },
+    //鍔ㄦ�佸悎骞舵柟娉�
+    rowCalc() {
+      this.spanArr.forEach((ele, index) => {
+        let parent
+        if (index !== 0) parent = this.spanArr[ele.parent || index - 1].span
+        ele.span = this.rowSpan(ele.prop, parent)
+      })
+    },
+    rowSort(list) {
+      let propList = this.spanArr.map(ele => ele.prop)
+      this.spanArr.forEach((ele, index) => {
+        let key = ele.prop
+        this.tableData = this.tableData.sort((a, b) => {
+          let flag = true;
+          for (let i = 0; i < index; i++) {
+            let prop = this.spanArr[i].prop
+            flag = flag && a[prop] == b[prop]
+          }
+          if (flag) {
+            if (a[key] < b[key]) { return 1; }
+            else if (a[key] > b[key]) { return -1; }
+            return 0;
+          }
+          return 0;
+        })
+      })
+    },
+    rowSpan(key, parent) {
+      let list = [];
+      let position = 0;
+      this.tableData.forEach((item, index) => {
+        if (index === 0) {
+          list.push(1)
+          let position = 0;
+        } else {
+          if (this.tableData[index][key] === this.tableData[index - 1][key]) {
+            if (parent && parent[index] !== 0) {
+              list.push(1)
+              position = index
+            } else {
+              list[position] += 1;
+              list.push(0)
+            }
+          } else {
+            list.push(1)
+            position = index
+          }
+        }
+      })
+      return list
+    },
+    spanMethod({ row, column, rowIndex, columnIndex }) {
+      for (let i = 0; i < this.spanArr.length; i++) {
+        const ele = this.spanArr[i]
+        if (column.property == ele.prop) {
+          const _row = ele.span[rowIndex];
+          const _col = _row > 0 ? 1 : 0;
+          return {
+            rowspan: _row,
+            colspan: _col
+          }
         }
       }
-    },
-    // 鍒犻櫎
-    deleteHandle(row) {
-      this.$confirm('鏄惁纭鍒犻櫎缂栧彿涓�' + row.code, '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      })
-        .then(function () {
-          return delObj(row.id)
-        })
-        .then((data) => {
-          this.$message.success('鍒犻櫎鎴愬姛')
-          this.getData()
-        })
     }
   }
 }
 </script>
-<style scoped>
-table,
-tr,
-td {
-  text-align: center;
+
+<style>
+/* .grid-header {
+  display: none;
+} */
+
+.param-basic {
+  margin: 0 10px;
+  border-radius: 0px;
+  background-color: #fff;
+  height: 100px;
+  display: flex;
+  flex-wrap: wrap;
+  padding: 10px 20px;
+  border: 1px solid #ddd;
+  box-sizing: border-box;
 }
-</style>
+
+.btn-group .el-button,
+.btn-custom .el-button {
+  border-radius: 0;
+  padding: 9px 30px;
+}
+
+.btn-group .el-dropdown .el-button {
+  border-radius: 0;
+  padding: 9px 20px;
+}
+
+/*鑷畾涔塪isabled鐘舵�佷笅checkbox鐨勬牱寮�*/
+.completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
+  background-color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout .el-checkbox__input.is-disabled.is-checked+span.el-checkbox__label {
+  color: #006eff;
+  border-color: #006eff;
+}
+
+.completeproductstructure-checkout .el-checkbox__input.is-disabled .el-checkbox__inner {
+  background-color: #ffffff;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout .el-checkbox__input.is-disabled+span.el-checkbox__label {
+  color: #606266;
+  cursor: pointer;
+}
+
+.completeproductstructure-checkout .el-checkbox__inner::after {
+  border: 1px solid #fff !important;
+  border-left: 0 !important;
+  border-top: 0 !important;
+  cursor: pointer !important;
+}
+
+.structure-detail-table th.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.structure-detail-table colgroup.gutter {
+  display: table-cell !important;
+  width: 10px !important;
+}
+
+.final-product-checkout .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.final-product-checkout .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.orimaterial-quantity .el-card__header {
+  padding: 0px 20px;
+  border-bottom: 0px;
+}
+
+.orimaterial-quantity .el-card__body {
+  padding: 0px 20px 20px;
+}
+
+.GooFlow .ico .ico_start:before {
+  color: red;
+}
+
+.highlight-tab-class {
+  color: #006eff;
+  background: #e4e7ed;
+  border-top: 1px solid #006eff;
+}
+
+.unhighlight-tab-class {
+  border: 1px solid #e4e7ed;
+  border-bottom: none;
+}
+
+.el-upload-dragger {
+  width: 300px;
+}
+
+.upload-demo {
+  width: 300px;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3