From 302858f921bed077ab54dd31102f086bfe1add3c Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 07 二月 2024 11:59:47 +0800
Subject: [PATCH] srm项目 系统参数设置的前端页面开发+增加相关路由+公共列表组件增加是否可以配置表头的逻辑

---
 src/components/makepager/TableCommonView.vue                     |    9 +
 src/views/systemSet/commonSet/compontents/SystemParameterSet.vue |  180 ++++++++++++++++++++++++++++++
 src/views/systemSet/commonSet/index.vue                          |  141 +++++++++++++++++++++++
 src/router/index.js                                              |   10 +
 src/api/systemSet/commonSet.js                                   |   18 +++
 5 files changed, 355 insertions(+), 3 deletions(-)

diff --git a/src/api/systemSet/commonSet.js b/src/api/systemSet/commonSet.js
new file mode 100644
index 0000000..c548aa4
--- /dev/null
+++ b/src/api/systemSet/commonSet.js
@@ -0,0 +1,18 @@
+import request from "@/common/untils/request.js"
+
+// 鑾峰彇绯荤粺璁剧疆
+export function getSystemSet(data) {
+  return request({
+    url: "/api/system/getSystemSet",
+    method: "get",
+    data,
+  });
+}
+// 淇濆瓨绯荤粺璁剧疆
+export function saveSystemSet(data) {
+  return request({
+    url: "/api/system/saveSystemSet",
+    method: "post",
+    data,
+  });
+}
\ No newline at end of file
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index 42f2469..5c97946 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -106,7 +106,7 @@
     </el-table>
     <div class="overSpread1" v-show="iscolopen" @click="onMaskClick"></div>
     <div class="styleBtn">
-      <i @click="checkCol()" class="label">...</i>
+      <i @click="checkCol()" v-if="colOpenShow" class="label">...</i>
       <el-checkbox-group v-model="showcol" v-show="iscolopen" class="checkbox-group" @change="selectCheckBoxList">
         <el-checkbox v-for="item in tableList.allcol" :label="item" :key="item">{{ item }} </el-checkbox>
       </el-checkbox-group>
@@ -152,7 +152,12 @@
       default: () => {
         return {}
       }
-    }
+    },
+    // 鏄惁鍙互閰嶇疆鍒楄〃 琛ㄥご
+    colOpenShow: {
+      type: Boolean,
+      default: true,
+    },
   },
   data() {
     return {
diff --git a/src/router/index.js b/src/router/index.js
index 3bb911a..f04e988 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -15,7 +15,7 @@
 const productManage = (resolve) => require(["@/views/productManage/index"], resolve)
 const PreviewFile = (resolve) => require(["@/views/supplierManage/supplier/PreviewFile"], resolve)
 const noData = (resolve) => require(["@/views/NoData/index"], resolve)
-
+const commonSet = (resolve) => require(["@/views/systemSet/commonSet/index"], resolve) //绯荤当瑷疆
 
 export const routes = [
   // 鏃犳暟鎹〉闈�
@@ -57,6 +57,14 @@
       title: "浜у搧绠$悊",
       isAllways: true
     }
+  },
+  {
+    path: "/systemSet/commonSet",
+    name: "commonSet",
+    component: commonSet,
+    meta: {
+      title: "閫氱敤璁剧疆"
+    }
   }
 ]
 export const constantRoutes = [
diff --git a/src/views/systemSet/commonSet/compontents/SystemParameterSet.vue b/src/views/systemSet/commonSet/compontents/SystemParameterSet.vue
new file mode 100644
index 0000000..96f8e36
--- /dev/null
+++ b/src/views/systemSet/commonSet/compontents/SystemParameterSet.vue
@@ -0,0 +1,180 @@
+<template>
+  <div class="system-parameter-set-box">
+    <el-button
+      class="system-button"
+      type="primary"
+      :loading="isBtnloading"
+      size="mini"
+      @click="onSubmit()"
+      >淇濆瓨</el-button
+    >
+    <el-tabs
+      class="system-tabs"
+      v-model="activeName"
+      @tab-click="handleTabClick"
+    >
+      <el-tab-pane label="SRM绯荤粺鍙傛暟" name="srm" style="height: 100%">
+        <TableCommonView
+          ref="tableListRef"
+          :loading="isBtnloading"
+          :table-list="srmTableList"
+          @selTableCol="selSrmTableCol"
+          :showHeader="false"
+          :colOpenShow="false"
+        >
+          <template slot="tableButton">
+            <el-table-column prop="value" label="鍊�" width="210" fixed="right">
+              <template slot-scope="scope">
+                <el-select
+                  size="small"
+                  v-if="scope.row.type == 'select'"
+                  v-model="scope.row.value"
+                  placeholder="璇烽�夋嫨"
+                >
+                  <el-option
+                    v-for="item in scope.row.select"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id"
+                  ></el-option>
+                </el-select>
+                <el-input
+                  v-else
+                  size="small"
+                  v-model="scope.row.value"
+                  placeholder="璇疯緭鍏�"
+                ></el-input>
+              </template>
+            </el-table-column>
+          </template>
+        </TableCommonView>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+import { saveSystemSet } from "@/api/systemSet/commonSet";
+export default {
+  components: {},
+  props: {
+    tableConfig: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      activeName: "srm",
+      srmTableList: {},
+      showcolSrm: [],
+      isBtnloading: false,
+    };
+  },
+  created() {
+    this.setSrmTable();
+  },
+  watch: {
+    tableConfig: {
+      handler() {
+        this.getInfo();
+      },
+      immediate: true,
+      deep: true,
+    },
+  },
+  methods: {
+    getInfo() {
+      this.activeName = "srm";
+      this.srmTableList.tableInfomation = this.tableConfig.SRM;
+    },
+    // srm
+    setSrmTable() {
+      this.srmTableList = {
+        tableInfomation: [],
+        selectIndex: true,
+        maxHeight: "930px",
+        highlight: true,
+        key: "id",
+        showcol: this.showcolSrm,
+        allcol: [],
+        tableColumn: this.setSrmTableColumn(this.showcolSrm),
+      };
+      let allcol = [];
+      for (let i = 0; i < this.srmTableList.tableColumn.length; i++) {
+        if (!this.srmTableList.tableColumn[i].default) {
+          const label = this.srmTableList.tableColumn[i].label;
+          allcol.push(label);
+        }
+      }
+      this.srmTableList.allcol = allcol;
+    },
+    setSrmTableColumn() {
+      let tableColumn = [
+        {
+          label: "鍐呭",
+          prop: "name",
+          align: "left",
+          isShowColumn: true,
+          default: true,
+        },
+      ];
+      return tableColumn;
+    },
+
+    selSrmTableCol(val) {
+      this.showcolSrm = val;
+      this.srmTableList.tableColumn = this.setSrmTableColumn(val);
+    },
+    handleTabClick() {},
+    onSubmit() {
+      this.isBtnloading = true;
+      let arr = [];
+      arr = arr.concat(this.srmTableList.tableInfomation);
+      for (let i in arr) {
+        delete arr[i].id;
+      }
+      saveSystemSet({
+        sets: arr,
+      })
+        .then((res) => {
+          if (res.code == 200) {
+            this.$message.success("淇敼鎴愬姛锛�");
+            this.$emit("refresh");
+          }
+          this.isBtnloading = false;
+        })
+        .catch(() => {
+          setTimeout(() => {
+            this.isBtnloading = false;
+          }, 3000);
+        });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.system-parameter-set-box {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+
+  .system-button {
+    float: right;
+    position: relative;
+    right: 20px;
+    top: 5px;
+    z-index: 5;
+  }
+  .system-tabs {
+    width: 100%;
+    height: 100%;
+    ::v-deep .el-tabs__content {
+      height: calc(100% - 55px) !important;
+    }
+  }
+}
+</style>
diff --git a/src/views/systemSet/commonSet/index.vue b/src/views/systemSet/commonSet/index.vue
new file mode 100644
index 0000000..24a3fd2
--- /dev/null
+++ b/src/views/systemSet/commonSet/index.vue
@@ -0,0 +1,141 @@
+<template>
+    <div class="body">
+      <div class="body-card">
+        <el-tabs
+          v-model="activeName"
+          @tab-click="handleTabClick"
+          tab-position="left"
+        >
+          <el-tab-pane label="绯荤粺鍙傛暟璁剧疆" name="systemParameterSet" style="height: 100%">
+            <SystemParameterSet :tableConfig="tableConfig" @refresh="getSystem"/>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
+    </div>
+</template>
+
+<script>
+import SystemParameterSet from './compontents/SystemParameterSet'
+import { getSystemSet } from "@/api/systemSet/commonSet"
+export default {
+  name: "commonSet",
+  components: {
+    SystemParameterSet
+  },
+  data() {
+    return {
+      activeName: "systemParameterSet",
+        // 绯荤粺鍙傛暟璁剧疆
+        tableConfig:{
+          APS:[],
+          WMS:[],
+          CRM:[],
+          SRM:[]
+        },
+    };
+  },
+  mounted() {
+    this.handleTabClick()
+  },
+  computed: {
+  },
+  watch:{
+    
+  },
+  methods: {
+    handleTabClick() {
+      if(this.activeName=='systemParameterSet') this.getSystem();
+    },
+    getSystem(){
+      getSystemSet().then((res) => {
+        if (res.code == 200) {
+          if (res.data) {
+            this.getTableSet('SRM',res.data.SRM)
+          }
+        }
+      });
+    },
+    getTableSet(value,data){
+      let arr=[]
+      if(data&&Object.keys(data).length>0){
+        for(let i in data){
+          let list=[]
+          if(data[i].type=='select'){
+            let select=data[i].select
+            if(select&&Object.keys(select).length>0){
+              for(let j in select){
+                list.push({
+                  name:select[j],
+                  id:select[j]
+                })
+              }
+            }
+          }
+          let item={
+            name:i,
+            id:value+'&'+i,
+            value:data[i].value,
+            type:data[i].type,
+            select:data[i].type=='select'?list:data[i].select,
+            modeType:data[i].modeType
+          }
+          arr.push(item)
+        }
+      }
+      this.tableConfig[value]=arr;
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+  .body{
+    box-sizing: border-box;
+    padding: 10px 20px;
+    border-radius: 12px;
+    height: calc(100% - 20px);
+    .body-card {
+      background-color: #fff;
+      border-radius: 12px;
+      height: 100%;
+      overflow: hidden;
+    }
+  ::v-deep .el-tabs__content{
+    height:100%;
+  }
+  .cursor{
+      cursor: pointer;
+    }
+  .rests-form{
+    width:50%;
+    
+    .add-area {
+      width: 60px;
+      height: 60px;
+      border: 2px solid #ddd;
+      border-radius: 3px;
+      text-align: center;
+      line-height: 60px;
+    }
+    .add-area img {
+      width: 100%;
+      height: 100%;
+    }
+  }
+}
+::v-deep .el-tabs.el-tabs--left {
+  height: 100%;
+  .el-tabs__header.is-left {
+    width: 150px;
+    height: 100%;
+    border-right: 1px solid #eee;
+  }
+  .el-tabs__item.is-left {
+    text-align: left;
+  }
+  .el-tabs__item.is-left.is-active {
+    background: rgba(64, 158, 255, 0.1);
+  }
+
+}
+</style>
+

--
Gitblit v1.8.0