From 4bf10a1ba42ddaeab565c105b376c5732b0f3dab Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期二, 09 四月 2024 11:47:11 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/silk/silk-web

---
 src/views/systemSetting/dataDictionary/index.vue                          |  307 +++++++
 vue.config.js                                                             |    2 
 src/views/systemSetting/workshopManage/components/silkTableList.vue       |   97 ++
 src/views/systemSetting/dataDictionary/components/addDataDictionaries.vue |  147 +++
 src/components/makepager/TableCommonView.vue                              |   17 
 src/views/systemSetting/encodeManage/index.vue                            |  177 +++
 src/views/systemSetting/dataDictionary/components/silkTableList.vue       |  402 +++++++++
 src/api/systemSetting/dataDictionary.js                                   |   19 
 src/views/systemSetting/workshopManage/components/addDialog.vue           |  213 ++++
 src/api/systemSetting/workshopManage.js                                   |   35 
 src/views/systemSetting/encodeManage/components/silkTableList.vue         |  402 +++++++++
 src/views/systemSetting/encodeManage/components/addWorkshop.vue           |   62 +
 src/views/systemSetting/silkPriceStandard/index.vue                       |   17 
 src/views/systemSetting/workshopManage/components/addWorkshop.vue         |  382 +++++++
 src/views/systemSetting/workshopManage/index.vue                          |  260 +++--
 src/views/systemSetting/silkPriceStandard/components/silkTableList.vue    |    4 
 16 files changed, 2,372 insertions(+), 171 deletions(-)

diff --git a/src/api/systemSetting/dataDictionary.js b/src/api/systemSetting/dataDictionary.js
new file mode 100644
index 0000000..1889e51
--- /dev/null
+++ b/src/api/systemSetting/dataDictionary.js
@@ -0,0 +1,19 @@
+import request from "@/common/untils/request.js"
+
+// 瀛楀吀鍒楄〃
+export function getDict(data) {
+  return request({
+    url: "/api-jl/v1/system/dict?dictType="+data.dictType,
+    method: "get",
+    data
+  })
+}
+
+// 娣诲姞瀛楀吀
+export function addDict(data) {
+  return request({
+    url: "/api-jl/v1/system/dict",
+    method: "post",
+    data
+  })
+}
diff --git a/src/api/systemSetting/workshopManage.js b/src/api/systemSetting/workshopManage.js
new file mode 100644
index 0000000..9a48a80
--- /dev/null
+++ b/src/api/systemSetting/workshopManage.js
@@ -0,0 +1,35 @@
+import request from "@/common/untils/request.js"
+
+// 杞﹂棿鍒楄〃
+export function getWorkshopManageList(data) {
+  return request({
+    url: "/api-jl/v1/system/getWorkshopManageList"+'?keyWord='+data.keyWord,
+    method: "get",
+    data
+  })
+}
+// 瀛楀吀鍒楄〃
+export function getDict(data) {
+  return request({
+    url: "/api-jl/v1/system/dict?dictType="+data.dictType,
+    method: "get",
+    data
+  })
+}
+// 淇濆瓨杞﹂棿鍒楄〃
+export function saveWorkshopManage(data) {
+  return request({
+    url: "/api-jl/v1/system/saveWorkshopManage",
+    method: "post",
+    data
+  })
+}
+// 鍒犻櫎杞﹂棿
+export function deleteWorkshopManage(data) {
+  return request({
+    url: "/api-jl/v1/system/deleteWorkshopManage/"+data.id,
+    method: "delete",
+    data
+  })
+}
+
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index cf76fd4..350d107 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -39,6 +39,17 @@
         :fixed="item.fixed"
         v-if="item.isShowColumn"
       >
+      
+      <template slot="header">
+          {{ item.label }}
+          <span v-if="item.iconRight">
+            <i
+              :class="item.iconRight"
+              style="font-size: 16px; margin-left: 5px; cursor: pointer"
+              @click="handleShow(item)"
+            ></i>
+          </span>
+        </template>
         <template slot-scope="scope">
           <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
           <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div>
@@ -412,7 +423,11 @@
       } else {
         return false
       }
-    }
+    },
+    // 鑷畾涔夎〃澶寸偣鍑讳簨浠�
+    handleShow(item) {
+      this.$emit("handleShow", item);
+    },
   }
 }
 </script>
diff --git a/src/views/systemSetting/dataDictionary/components/addDataDictionaries.vue b/src/views/systemSetting/dataDictionary/components/addDataDictionaries.vue
new file mode 100644
index 0000000..aac1404
--- /dev/null
+++ b/src/views/systemSetting/dataDictionary/components/addDataDictionaries.vue
@@ -0,0 +1,147 @@
+<template>
+  <div class="add_wordshop">
+    <el-dialog
+      :title="editConfig.dialogTitle+editConfig.dialogTitleType"
+      :visible.sync="editConfig.visible"
+      width="30%"
+      :before-close="handleClose">
+      <el-form :inline="true" label-width="20%" style="width: 100%;" :model="form" >
+        <template v-if="editConfig.infomitton.TabsIndex===0||editConfig.infomitton.TabsIndex===1">
+          <el-form-item label="缂栫爜" style="width: 100%;" >
+            <el-input   v-model="form.number" placeholder="璇疯緭鍏�"></el-input>
+          </el-form-item>
+          <el-form-item label="鍚嶇О" style="width: 100%;" >
+            <el-input   v-model="form.name" placeholder="璇疯緭鍏ュ瓧姣嶆垨鏁板瓧锛屼笉鍏佽鏈夌┖鏍笺�佷腑鏂�"></el-input>
+          </el-form-item>
+        </template>
+
+        <template v-if="editConfig.infomitton.TabsIndex===2">
+          <el-form-item label="甯﹀彿棰滆壊" style="width: 100%;" >
+            <el-input  v-model="form.name" placeholder="璇疯緭鍏ュ瓧姣嶆垨鏁板瓧锛屼笉鍏佽鏈夌┖鏍笺�佷腑鏂�"></el-input>
+          </el-form-item>
+        </template>
+        
+        <template v-if="editConfig.infomitton.TabsIndex===3">
+          <el-form-item label="瑙勬牸" style="width: 100%;" >
+            <el-input  v-model="form.number" placeholder="璇疯緭鍏ュ瓧姣嶆垨鏁板瓧锛屼笉鍏佽鏈夌┖鏍笺�佷腑鏂�"></el-input>
+          </el-form-item>
+        </template>
+
+        <el-form-item label="鎻忚堪" style="width: 100%;" >
+          <el-input
+            v-model="form.remark"
+            type="textarea"
+            :rows="4"
+            style="resize: none !important;"
+            placeholder="璇疯緭鍏�"
+            >
+          </el-input>
+        </el-form-item>
+        
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="editConfig.visible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="commitForm">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {addDict} from "@/api/systemSetting/dataDictionary"
+export default {
+  props: {
+    editDiaConfig:{
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          dialogTitle:"娣诲姞",
+          infomitton: {
+
+          }
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      editConfig:this.editDiaConfig,
+      form: {
+        name: '',
+        number: '',
+        remark:""
+      }
+    };
+  },
+  computed: {
+
+  },
+  created() {
+
+  },
+  mounted() {
+  },
+  watch: {
+
+  },
+  methods: {
+    handleClose(done) {
+      done();
+    },
+    saveParams(type){
+      let params={}
+      if(type===0||type===1){
+        params={
+          dictType:this.editConfig.infomitton.TabsIndex,
+          name: this.form.name,
+          number: this.form.number,
+          remark:this.form.remark,
+        }
+      }else if(type===2){
+        params={
+          dictType:this.editConfig.infomitton.TabsIndex,
+          name: this.form.name,
+          number: this.form.number,
+          remark:this.form.remark,
+        }
+      }else if(type===3){
+        params={
+          dictType:this.editConfig.infomitton.TabsIndex,
+          name: this.form.name,
+          number: this.form.number,
+          remark:this.form.remark,
+        }
+      }
+      return params
+    },
+    commitForm(){
+      let params=this.saveParams(this.editConfig.infomitton.TabsIndex)
+      if(this.editConfig.dialogTitle==="鏂板"){
+        addDict(params).then((res)=>{
+          if(res&&res.code===200){
+            this.editConfig.visible=false
+            this.$parent.getData()
+            this.$message({
+              message: `鏂板${this.editConfig.dialogTitleType}鎴愬姛!`,
+              type: 'success'
+            });
+          }
+          console.log(res,"res")
+        })
+      }else if(this.editConfig.dialogTitle==="淇敼"){
+        console.log("淇敼")
+      }
+    }
+  },
+  components: {
+
+  },
+};
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-form-item__content{
+  width: 70% !important;
+}
+</style>
diff --git a/src/views/systemSetting/dataDictionary/components/silkTableList.vue b/src/views/systemSetting/dataDictionary/components/silkTableList.vue
new file mode 100644
index 0000000..b75b518
--- /dev/null
+++ b/src/views/systemSetting/dataDictionary/components/silkTableList.vue
@@ -0,0 +1,402 @@
+<template>
+  <div class="page-view">
+    <div class="top-box">
+      <div class="table-box" :style="{ width: detailEnter ? '95%' : '100%' }">
+        <el-form ref="form" :model="tableList" :show-message="false" label-position="right">
+          <el-table
+            ref="fromTable"
+            :data="tableList.tableData"
+            style="width: 100%"
+            @selection-change="handleSelectionChange"
+            :row-key="(row) => row.productId"
+            :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '14px' }"
+            border
+          >
+            <el-table-column v-if="selectBox" type="selection" :reserve-selection="true" width="40" align="center">
+            </el-table-column>
+            <el-table-column
+              v-if="tableList.isReturn"
+              type="index"
+              label="#"
+              width="50"
+              align="center"
+            ></el-table-column>
+            <el-table-column
+              v-for="(item, i) in tableList.tableColumn"
+              :key="i"
+              :prop="item.prop"
+              :label="item.label"
+              :width="item.width"
+              :min-width="item.min"
+              align="center"
+            >
+              <!-- 琛ㄥご鏍峰紡 -->
+              <template slot="header">
+                <span v-if="item.isRequird" style="color: #f56c6c">*</span>
+                <div v-else-if="item.addColumn" class="add-column-box">
+                  <el-input
+                    placeholder="璇疯緭鍏�"
+                    v-model="item.label"
+                    size="mini"
+                    clearable
+                    @change="
+                      (val) => {
+                        addColumnInputChange(val, item.prop)
+                      }
+                    "
+                  ></el-input>
+                  <div class="common-select-btn" @click="clearupColumn(item.prop)">
+                    <i class="el-icon-remove" title="鍒犻櫎"></i>
+                  </div>
+                </div>
+                <span v-else>{{ item.label }}</span>
+              </template>
+              <!-- column鏍峰紡 -->
+              <template slot-scope="scope">
+                <template v-if="detailEnter">
+                  <el-form-item
+                    v-if="item.input"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input
+                      v-model.trim="scope.row[item.prop]"
+                      maxlength="50"
+                      size="mini"
+                      :disabled="!isOperate"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.projectName"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                  >
+                    <div class="custom-name">
+                      <el-select v-model="scope.row[item.prop]" clearable size="mini" placeholder="璇烽�夋嫨">
+                        <el-option
+                          v-for="(item, index) in projectOptions"
+                          :key="index"
+                          :label="item.value"
+                          :value="item.value"
+                        >
+                        </el-option>
+                      </el-select>
+                      <div class="common-select-btn" @click="clearupClient(scope)">
+                        <i class="el-icon-remove" title="鍒犻櫎"></i>
+                      </div>
+                    </div>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.inputNumber"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input-number
+                      v-model="scope.row[item.prop]"
+                      placeholder=""
+                      :min="0"
+                      :controls="false"
+                      :disabled="!isOperate"
+                      size="mini"
+                      style="width: 100%; margin-right: 5px"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input-number>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.inputFloat"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input-number
+                      v-model="scope.row[item.prop]"
+                      placeholder=""
+                      :min="0"
+                      :precision="4"
+                      :disabled="!isOperate"
+                      :controls="false"
+                      size="mini"
+                      style="width: 100%; margin-right: 5px"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input-number>
+                  </el-form-item>
+                  <span v-else>
+                    <template>
+                      {{ scope.row[item.prop] }}
+                    </template>
+                  </span>
+                </template>
+                <el-form-item
+                  v-else-if="item.inputNumber && selectBox"
+                  label=" "
+                  :prop="'tableData.' + scope.$index + '.' + item.prop"
+                  :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                >
+                  <el-input-number
+                    v-model="scope.row[item.prop]"
+                    placeholder=""
+                    :min="0"
+                    :controls="false"
+                    :disabled="!isOperate"
+                    size="mini"
+                    style="width: 100%; margin-right: 5px"
+                    @change="
+                      (val) => {
+                        commonInputChange(val, item.prop, scope.row, scope)
+                      }
+                    "
+                  ></el-input-number>
+                </el-form-item>
+                <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="鎿嶄綔" width="80" v-if="!detailEnter" align="center">
+              <template slot-scope="scope">
+                <el-button type="text" size="small" :disabled="!isOperate" @click="deleteClick(scope)">鍒犻櫎</el-button>
+              </template>
+            </el-table-column>
+            <slot name="tableButton" />
+            <div slot="empty">
+              <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+            </div>
+          </el-table>
+        </el-form>
+      </div>
+      <div
+        v-if="detailEnter"
+        class="add-column-box"
+        @click="addColumnClick"
+        :style="{ width: detailEnter ? '40px' : '0px' }"
+      >
+        <i class="el-icon-circle-plus"></i>
+      </div>
+    </div>
+    <div v-if="detailEnter" style="margin: 10px">
+      <div class="add-btn-box" @click="addRowClick">
+        <i class="el-icon-circle-plus"></i>
+      </div>
+      <!-- <el-button size="small" type="primary" :disabled="!isOperate" @click="add">鏂板</el-button> -->
+      <!-- <el-button size="small" type="primary" disabled>瀵煎叆鏄庣粏</el-button> -->
+    </div>
+  </div>
+</template>
+
+<script>
+// import { getProductList } from "@/api/common/other"
+export default {
+  name: "CommmonFormTableView",
+  components: {},
+  props: {
+    detailEnter: {
+      type: Boolean,
+      default: false
+    },
+    selectBox: {
+      type: Boolean,
+      default: false
+    },
+    // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
+    pageName: {
+      type: String,
+      default: ""
+    },
+    // 鍒楄〃鏂板鏄惁澶氶��
+    addTypeIdMultiple: {
+      type: Boolean,
+      default: false
+    },
+    // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+    quotationNumber: {
+      type: [String, Number],
+      default: ""
+    },
+    // 鏄惁鍙互鎿嶄綔 娣诲姞绛�
+    isOperate: {
+      type: Boolean,
+      default: true
+    },
+    silkTableList: {
+      type: Object,
+      default: () => {
+        return {
+          tableData: [], // 鎺ュ彛杩斿洖鏁版嵁
+          isReturn: false,
+          tableColumn: [
+            // table琛ㄥ崟
+            { label: "", prop: "", min: 200, tooltip: true }
+          ]
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      total: 0,
+      productList: [],
+      tableList: [],
+      projectIndex: 0,
+      projectOptions: [
+        { id: 1, value: "绾ゅ害鍋忓樊" },
+        { id: 2, value: "浜屾鍙樺寲" },
+        { id: 3, value: "娓呮磥鍒�" },
+        { id: 4, value: "娲佸噣鍒�" },
+        { id: 5, value: "鏈�澶у亸宸�" }
+      ]
+    }
+  },
+  created() {
+    // if (!this.selectBox) {
+    //   this.getProductList()
+    // }
+    this.getTableInfo()
+  },
+  watch: {
+    silkTableList: {
+      handler() {
+        this.getTableInfo()
+      },
+      immediate: true
+    }
+  },
+  computed: {},
+  methods: {
+    getTableInfo() {
+      this.tableList = this.silkTableList
+      if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
+        this.isRecalculate = false
+      } else {
+        this.isRecalculate = true
+      }
+    },
+    // 澶氶��
+    handleSelectionChange(val) {
+      this.$emit("getSelectArray", val)
+    },
+
+    // 鏂板
+    addRowClick() {
+      if (this.addTypeIdMultiple) {
+        this.projectIndex = this.tableList.tableData.length
+        this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+        this.editSelCommonConfig.isSelectBox = true
+        this.editSelCommonConfig.editVisible = true
+      } else {
+        this.$emit("addProjectClick")
+      }
+    },
+    commonInputChange(val, prop, row, scope) {
+      this.$emit("inputContent", val, prop, row, scope)
+    },
+    // 鍒犻櫎
+    deleteClick(scope) {
+      this.$emit("clearupProject", this.tableList.tableData, scope.$index)
+    },
+    // 鍒犻櫎
+    clearupClient(scope) {
+      this.$emit("clearupProject", this.tableList.tableData, scope.$index)
+    },
+    // 娣诲姞鍒楁寜閽�
+    addColumnClick() {
+      this.$emit("addColumnClick")
+    },
+    // 娣诲姞鍒楀ご閮ㄦ爣棰樿緭鍏�
+    addColumnInputChange(val, prop) {
+      console.log(val, prop, "娣诲姞鍒楀ご閮ㄦ爣棰樿緭鍏�")
+    },
+    // 鍒犻櫎鍒�
+    clearupColumn(prop) {
+      console.log(prop)
+      this.$emit("clearupColumn", prop)
+    }
+  },
+  //瑙e喅琛ㄦ牸鎶栧姩闂
+  beforeUpdate() {
+    this.$nextTick(() => {
+      this.$refs["fromTable"].doLayout()
+    })
+  },
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.page-view {
+  .top-box {
+    display: flex;
+    .table-box {
+      flex: 1;
+      .el-form-item {
+        margin-bottom: 0;
+        .custom-name {
+          display: flex;
+          .common-select-btn {
+            margin-left: 5px;
+            font-size: 18px;
+            cursor: pointer;
+            color: #ff0000;
+          }
+        }
+      }
+    }
+    .add-column-box {
+      // width: 40px;
+      margin-top: 10px;
+      font-size: 26px;
+      color: #5582f3;
+      margin-left: 20px;
+      cursor: pointer;
+    }
+  }
+  .add-btn-box {
+    font-size: 26px;
+    color: #5582f3;
+    margin-left: 50px;
+    cursor: pointer;
+  }
+  .add-column-box {
+    display: flex;
+    .common-select-btn {
+      margin-left: 5px;
+      font-size: 18px;
+      cursor: pointer;
+      color: #ff0000;
+    }
+  }
+}
+::v-deep {
+  .el-form-item__label {
+    display: none;
+  }
+  .el-table__footer-wrapper tbody td.el-table__cell {
+    background-color: #fff;
+    // text-align: right;
+    font-weight: bold;
+  }
+  .el-input--suffix .el-input__inner {
+    padding-right: 0px;
+  }
+  .el-table .cell,
+  .el-table th.el-table__cell > .cell {
+    padding: 0 5px;
+  }
+  .el-input__inner {
+    // text-align: left;
+    text-align: center !important;
+  }
+}
+</style>
diff --git a/src/views/systemSetting/dataDictionary/index.vue b/src/views/systemSetting/dataDictionary/index.vue
index 43c4ab0..4c7b83e 100644
--- a/src/views/systemSetting/dataDictionary/index.vue
+++ b/src/views/systemSetting/dataDictionary/index.vue
@@ -1,21 +1,316 @@
 <template>
-  <div class="container"></div>
+  <div class="silkStandardSetting-container">
+    <div class="filter-card">
+      <CommonSearch :show-add="false" :amount-view="false" placeholder="璇疯緭鍏ュ叧閿瘝" @searchClick="onFilterSearch">
+        <template slot="leftButton">
+          <el-button size="small" type="primary" @click="addBtnClick">鏂板</el-button>
+          <el-button size="small" type="primary" @click="refreshClick">鍒锋柊</el-button>
+        </template>
+      </CommonSearch>
+    </div>
+    <div class="body-card">
+      <div>
+        <div class="bottom-tabs" >
+          <div class="tab-pane" @click="getTab(0)" :style="{
+            background: TabsIndex == 0 ? '#2a78fb' : '#F1F3F8',
+            color: TabsIndex == 0 ? '#fff' : '#666'
+          }">
+            搴勫彛绠$悊
+          </div>
+          <div class="tab-pane" @click="getTab(1)" :style="{
+            background: TabsIndex == 1 ? '#2a78fb' : '#F1F3F8',
+            color: TabsIndex == 1 ? '#fff' : '#666'
+          }">
+            杞﹂棿绠$悊
+          </div>
+          <div class="tab-pane" @click="getTab(2)" :style="{
+            background: TabsIndex == 2 ? '#2a78fb' : '#F1F3F8',
+            color: TabsIndex == 2 ? '#fff' : '#666'
+          }">
+            甯﹀彿棰滆壊
+          </div>
+          <div class="tab-pane" @click="getTab(3)" :style="{
+            background: TabsIndex == 3 ? '#2a78fb' : '#F1F3F8',
+            color: TabsIndex == 3 ? '#fff' : '#666'
+          }">
+            瑙勬牸
+          </div>
+        </div>
+        <div class="list-view">
+          <TableCommonView :loading="loading" :table-list="productTableList" @selTableCol="selBottomTableCol">
+            <template slot="tableButton">
+              <el-table-column label="鎿嶄綔" width="160" fixed="right">
+                <template slot-scope="scope">
+                  <!-- <el-button>{{ scope.row }}</el-button> -->
+                  <el-button @click="rowClick(scope.row,'鏌ョ湅')" type="text" size="small">鏌ョ湅</el-button>
+                  <el-button @click="rowClick(scope.row,'淇敼')" type="text" size="small">淇敼</el-button>
+                  <el-button @click="rowClick(scope.row,'鍒犻櫎')" type="text" size="small">鍒犻櫎</el-button>
+                </template>
+              </el-table-column>
+            </template>
+          </TableCommonView>
+        </div>
+      </div>
+    </div>
+    <AddDataDictionaries 
+      :editDiaConfig="editConfig"
+    />
+  </div>
 </template>
 
 <script>
+import AddDataDictionaries from "@/views/systemSetting/dataDictionary/components/addDataDictionaries.vue"
+import {getDict} from "@/api/systemSetting/dataDictionary"
 export default {
   name: "dataDictionary",
   props: {},
-  components: {},
+  components: {AddDataDictionaries},
   mixins: [],
   computed: {},
   data() {
-    return {}
+    return {
+      TabsIndex:0,
+      loading: false,
+      productTableList: {},
+      editConfig:{
+        visible:false,
+        dialogTitleType:"搴勫彛",
+        infomitton:{
+          TabsIndex:0,
+        }
+      },
+      tableColumn: [
+        { label: "搴忓彿", prop: "number",},
+        { label: "搴勫彛鍚嶇О", prop: "name",},
+        { label: "鎻忚堪", prop: "remark" },
+      ],
+      showCol: ["搴忓彿","搴勫彛鍚嶇О", "鎻忚堪",],
+      workshopTableColumn:[
+        { label: "缂栫爜", prop: "number" },
+        { label: "杞﹂棿鍚嶇О", prop: "name" },
+        { label: "鎻忚堪", prop: "remark" },
+      ],
+      showWorkshopCol: ["缂栫爜","杞﹂棿鍚嶇О", "鎻忚堪",],
+      colorTableColumn:[
+        { label: "甯﹀彿棰滆壊", prop: "member_name" },
+        { label: "鎻忚堪", prop: "remark" },
+      ],
+      showColorCol: ["甯﹀彿棰滆壊", "鎻忚堪",],
+      specsTableColumn:[
+        { label: "瑙勬牸", prop: "member_name" },
+        { label: "鎻忚堪", prop: "remark" },
+      ],
+      showSpecsCol: ["瑙勬牸", "鎻忚堪",],
+      getDataParams:{
+        page: 1,
+        pageSize:10,
+        dictType:0,
+      },
+    }
   },
-  created() {},
-  methods: {}
+  created() {
+    this.getProductOrderInfo()
+    // this.setTable()
+    this.getData()
+  },
+  methods: {
+    // 鎼滅储
+    onFilterSearch(searchText) {
+      console.log(searchText)
+    },
+    // 鏂板
+    addBtnClick() {
+      this.editConfig.dialogTitle="鏂板"
+      this.editConfig.visible=true
+    },
+    // 鍒锋柊
+    refreshClick() {
+      console.log("a")
+     },
+    // 鎵撳嵃
+    printClick() { 
+      console.log("a")},
+    //tabs鍒囨崲
+    getTab(tab) {
+      this.TabsIndex = tab
+      this.editConfig.infomitton.TabsIndex=tab
+      // if (this.TabsIndex == 1) {
+      //   this.isRequest = true;
+      // } else {
+      //   this.isRequest = false;
+      // }
+      this.getProductOrderInfo()
+    },
+    // setTable() {
+    //   this.tableBottomColumn = this.tableColumn
+    //   this.showBottomCol = this.showCol
+    //   this.setBottomList()
+    // },
+    selTableCol(val) {
+      this.showcol = val
+      this.tableList.tableColumn = this.setColumnVisible(val, this.tableColumn)
+    },
+    async getProductOrderInfo() {
+        this.getData()
+        if (this.TabsIndex == 0) {
+          // 搴勫彛绠$悊
+          this.editConfig.dialogTitleType="搴勫彛"
+          this.tableBottomColumn = this.tableColumn // 琛ㄥご
+          this.showBottomCol = this.showCol  // 鍔ㄦ�佽〃澶�
+          this.setBottomList()
+        }else if (this.TabsIndex == 1) {
+          // 杞﹂棿绠$悊
+          this.editConfig.dialogTitleType="杞﹂棿"
+          this.tableBottomColumn = this.workshopTableColumn
+          this.showBottomCol = this.showWorkshopCol
+          this.setBottomList()
+        } else if (this.TabsIndex == 2) {
+          // 甯﹀彿棰滆壊
+          this.editConfig.dialogTitleType="甯﹀彿棰滆壊"
+          this.tableBottomColumn = this.colorTableColumn
+          this.showBottomCol = this.showColorCol
+          this.setBottomList()
+
+        } else if (this.TabsIndex == 3) {
+          // 瑙勬牸
+          this.editConfig.dialogTitleType="瑙勬牸"
+          this.tableBottomColumn = this.specsTableColumn
+          this.showBottomCol = this.showSpecsCol
+          this.setBottomList()
+        }
+
+        this.loading = true
+        // this.getProductInventoryInfo(number)
+        // await getProductOrderInfo(number)
+        //   .then((res) => {
+        //     this.productDataBottom = res;
+        //     this.getListValue(this.productDataBottom)
+        //   })
+        //   .catch(() => {
+        //     this.productTableList.tableInfomation = []
+        //   })
+        this.loading = false
+    },
+    setBottomList() {
+      this.productTableList = {
+        selectIndex: true,
+        tableInfomation: [],
+        allcol: [],
+        showcol: this.showBottomCol,
+        tableColumn: this.setColumnVisible(this.showBottomCol, this.tableBottomColumn)
+      }
+      this.setTableList(this.productTableList)
+    },
+    selBottomTableCol(val) {
+      this.showcol = val
+      this.productTableList.tableColumn = this.setColumnVisible(val, this.tableBottomColumn)
+    },
+    setTableList(tableList) {
+      tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
+      this.searchOptions = []
+      for (let i = 0; i < tableList.tableColumn.length; i++) {
+        const label = tableList.tableColumn[i].label
+        const value = tableList.tableColumn[i].prop
+        this.searchOptions.push({ value: value, label: label })
+      }
+    },
+    setColumnVisible(showCol, tableColumn) {
+      return tableColumn.map((ele) => {
+        return {
+          ...ele,
+          isShowColumn: showCol.includes(ele.label)
+        }
+      })
+    },
+    getData(){
+      getDict({
+        dictType:this.TabsIndex,
+        page:this.getDataParams.page,
+        pageSize:this.getDataParams.pageSize,
+      }).then((res)=>{
+        console.log(res,"res")
+        this.productTableList.tableInfomation=res.data
+      })
+    },
+    rowClick(row,type){
+      if(type==="鏌ョ湅"){
+        this.editConfig.dialogTitle="鏌ョ湅"
+        this.editConfig.visible=true
+      }else if(type==="淇敼"){
+        this.editConfig.dialogTitle="淇敼"
+        this.editConfig.visible=true
+      }else if(type==="鍒犻櫎"){
+        console.log("鍒犻櫎")
+      }
+    }
+  }
 }
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.silkStandardSetting-container {
+  height: 100%;
+
+  .filter-card {
+    margin: 20px 30px;
+    height: 80px;
+    display: flex;
+    align-items: center;
+    padding: 0 20px 0 20px;
+    border-radius: 4px;
+    background-color: #fff;
+  }
+
+  .body-card {
+    margin: 0 30px;
+    background-color: #fff;
+    padding: 10px 15px;
+    height: calc(100% - 180px);
+    border-radius: 4px;
+
+    .edit-save {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+
+      .edit-save-icon {
+        font-size: 24px;
+        color: #5582f3;
+        cursor: pointer;
+      }
+
+      .edit-sace-label {
+        margin-left: 10px;
+        font-size: 14px;
+        color: #000000d8;
+      }
+    }
+  }
+}
+
+.bottom-tabs {
+  height: 40px;
+  line-height: 40px;
+  // background: #e6ecf2;
+  display: flex;
+
+  .tab-pane {
+    width: 100px;
+    margin-right: 20px;
+    font-size: 14px !important;
+    text-align: center;
+    cursor: pointer;
+    background: #2a78fb;
+    border-top-left-radius: 20px;
+    border-top-right-radius: 20px;
+  }
+}
+
+.bgcGrey {
+  background: #fff;
+}
+
+.bgcWhite {
+  background: #fff !important;
+}</style>
diff --git a/src/views/systemSetting/encodeManage/components/addWorkshop.vue b/src/views/systemSetting/encodeManage/components/addWorkshop.vue
new file mode 100644
index 0000000..d6bea83
--- /dev/null
+++ b/src/views/systemSetting/encodeManage/components/addWorkshop.vue
@@ -0,0 +1,62 @@
+<template>
+  <div class="add_wordshop">
+    <el-dialog
+      title="鎻愮ず"
+      :visible.sync="editConfig.visible"
+      width="30%"
+      :before-close="handleClose">
+      <span>杩欐槸涓�娈典俊鎭�</span>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="editConfig.visible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="editConfig.visible = false">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    editDiaConfig:{
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          infomitton: {
+
+          }
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      editConfig:this.editDiaConfig
+    };
+  },
+  computed: {
+
+  },
+  created() {
+
+  },
+  mounted() {
+
+  },
+  watch: {
+
+  },
+  methods: {
+    handleClose(done) {
+      done();
+    }
+  },
+  components: {
+
+  },
+};
+</script>
+
+<style scoped lang="scss">
+
+</style>
diff --git a/src/views/systemSetting/encodeManage/components/silkTableList.vue b/src/views/systemSetting/encodeManage/components/silkTableList.vue
new file mode 100644
index 0000000..8875782
--- /dev/null
+++ b/src/views/systemSetting/encodeManage/components/silkTableList.vue
@@ -0,0 +1,402 @@
+<template>
+  <div class="page-view">
+    <div class="top-box">
+      <div class="table-box" :style="{ width: detailEnter ? '95%' : '100%' }">
+        <el-form ref="form" :model="tableList" :show-message="false" label-position="right">
+          <el-table
+            ref="fromTable"
+            :data="tableList.tableData"
+            style="width: 100%"
+            @selection-change="handleSelectionChange"
+            :row-key="(row) => row.productId"
+            :header-cell-style="{ background: '#f1f3f8', color: '#000009', 'font-size': '14px' }"
+            border
+          >
+            <el-table-column v-if="selectBox" type="selection" :reserve-selection="true" width="40" align="center">
+            </el-table-column>
+            <el-table-column
+              v-if="tableList.isReturn"
+              type="index"
+              label="#"
+              width="50"
+              align="center"
+            ></el-table-column>
+            <el-table-column
+              v-for="(item, i) in tableList.tableColumn"
+              :key="i"
+              :prop="item.prop"
+              :label="item.label"
+              :width="item.width"
+              :min-width="item.min"
+              align="center"
+            >
+              <!-- 琛ㄥご鏍峰紡 -->
+              <template slot="header">
+                <span v-if="item.isRequird" style="color: #f56c6c">*</span>
+                <div v-else-if="item.addColumn" class="add-column-box">
+                  <el-input
+                    placeholder="璇疯緭鍏�"
+                    v-model="item.label"
+                    size="mini"
+                    clearable
+                    @change="
+                      (val) => {
+                        addColumnInputChange(val, item.prop)
+                      }
+                    "
+                  ></el-input>
+                  <div class="common-select-btn" @click="clearupColumn(item.prop)">
+                    <i class="el-icon-remove" title="鍒犻櫎"></i>
+                  </div>
+                </div>
+                <span v-else>{{ item.label }}</span>
+              </template>
+              <!-- column鏍峰紡 -->
+              <template slot-scope="scope">
+                <template v-if="detailEnter">
+                  <el-form-item
+                    v-if="item.input"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input
+                      v-model.trim="scope.row[item.prop]"
+                      maxlength="50"
+                      size="mini"
+                      :disabled="!isOperate"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.projectName"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                  >
+                    <div class="custom-name">
+                      <el-select v-model="scope.row[item.prop]" clearable size="mini" placeholder="璇烽�夋嫨">
+                        <el-option
+                          v-for="(item, index) in projectOptions"
+                          :key="index"
+                          :label="item.value"
+                          :value="item.value"
+                        >
+                        </el-option>
+                      </el-select>
+                      <div class="common-select-btn" @click="clearupClient(scope)">
+                        <i class="el-icon-remove" title="鍒犻櫎"></i>
+                      </div>
+                    </div>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.inputNumber"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input-number
+                      v-model="scope.row[item.prop]"
+                      placeholder=""
+                      :min="0"
+                      :controls="false"
+                      :disabled="!isOperate"
+                      size="mini"
+                      style="width: 100%; margin-right: 5px"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input-number>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.inputFloat"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input-number
+                      v-model="scope.row[item.prop]"
+                      placeholder=""
+                      :min="0"
+                      :precision="4"
+                      :disabled="!isOperate"
+                      :controls="false"
+                      size="mini"
+                      style="width: 100%; margin-right: 5px"
+                      @change="
+                        (val) => {
+                          commonInputChange(val, item.prop, scope.row, scope)
+                        }
+                      "
+                    ></el-input-number>
+                  </el-form-item>
+                  <span v-else>
+                    <template>
+                      {{ scope.row[item.prop] }}
+                    </template>
+                  </span>
+                </template>
+                <el-form-item
+                  v-else-if="item.inputNumber && selectBox"
+                  label=" "
+                  :prop="'tableData.' + scope.$index + '.' + item.prop"
+                  :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                >
+                  <el-input-number
+                    v-model="scope.row[item.prop]"
+                    placeholder=""
+                    :min="0"
+                    :controls="false"
+                    :disabled="!isOperate"
+                    size="mini"
+                    style="width: 100%; margin-right: 5px"
+                    @change="
+                      (val) => {
+                        commonInputChange(val, item.prop, scope.row, scope)
+                      }
+                    "
+                  ></el-input-number>
+                </el-form-item>
+                <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="鎿嶄綔" width="80" v-if="!detailEnter" align="center">
+              <template slot-scope="scope">
+                <el-button type="text" size="small" :disabled="!isOperate" @click="deleteClick(scope)">鍒犻櫎</el-button>
+              </template>
+            </el-table-column>
+            <slot name="tableButton" />
+            <div slot="empty">
+              <el-empty description="鏆傛棤鏁版嵁"></el-empty>
+            </div>
+          </el-table>
+        </el-form>
+      </div>
+      <div
+        v-if="detailEnter"
+        class="add-column-box"
+        @click="addColumnClick"
+        :style="{ width: detailEnter ? '40px' : '0px' }"
+      >
+        <i class="el-icon-circle-plus"></i>
+      </div>
+    </div>
+    <div v-if="detailEnter" style="margin: 10px">
+      <div class="add-btn-box" @click="addRowClick">
+        <i class="el-icon-circle-plus"></i>
+      </div>
+      <!-- <el-button size="small" type="primary" :disabled="!isOperate" @click="add">鏂板</el-button> -->
+      <!-- <el-button size="small" type="primary" disabled>瀵煎叆鏄庣粏</el-button> -->
+    </div>
+  </div>
+</template>
+
+<script>
+// import { getProductList } from "@/api/common/other"
+export default {
+  name: "CommmonFormTableView",
+  components: {},
+  props: {
+    detailEnter: {
+      type: Boolean,
+      default: false
+    },
+    selectBox: {
+      type: Boolean,
+      default: false
+    },
+    // 閭d釜椤甸潰 鐢ㄦ潵鍒ゆ柇璁$畻鏂瑰紡
+    pageName: {
+      type: String,
+      default: ""
+    },
+    // 鍒楄〃鏂板鏄惁澶氶��
+    addTypeIdMultiple: {
+      type: Boolean,
+      default: false
+    },
+    // 鏍规嵁鎶ヤ环鍗曟煡璇骇鍝�
+    quotationNumber: {
+      type: [String, Number],
+      default: ""
+    },
+    // 鏄惁鍙互鎿嶄綔 娣诲姞绛�
+    isOperate: {
+      type: Boolean,
+      default: true
+    },
+    silkTableList: {
+      type: Object,
+      default: () => {
+        return {
+          tableData: [], // 鎺ュ彛杩斿洖鏁版嵁
+          isReturn: false,
+          tableColumn: [
+            // table琛ㄥ崟
+            { label: "", prop: "", min: 200, tooltip: true }
+          ]
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      total: 0,
+      productList: [],
+      tableList: [],
+      projectIndex: 0,
+      projectOptions: [
+        { id: 1, value: "绾ゅ害鍋忓樊" },
+        { id: 2, value: "浜屾鍙樺寲" },
+        { id: 3, value: "娓呮磥鍒�" },
+        { id: 4, value: "娲佸噣鍒�" },
+        { id: 5, value: "鏈�澶у亸宸�" }
+      ]
+    }
+  },
+  created() {
+    // if (!this.selectBox) {
+    //   this.getProductList()
+    // }
+    this.getTableInfo()
+  },
+  watch: {
+    silkTableList: {
+      handler() {
+        this.getTableInfo()
+      },
+      immediate: true
+    }
+  },
+  computed: {},
+  methods: {
+    getTableInfo() {
+      this.tableList = this.silkTableList
+      if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
+        this.isRecalculate = false
+      } else {
+        this.isRecalculate = true
+      }
+    },
+    // 澶氶��
+    handleSelectionChange(val) {
+      this.$emit("getSelectArray", val)
+    },
+
+    // 鏂板
+    addRowClick() {
+      if (this.addTypeIdMultiple) {
+        this.projectIndex = this.tableList.tableData.length
+        this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+        this.editSelCommonConfig.isSelectBox = true
+        this.editSelCommonConfig.editVisible = true
+      } else {
+        this.$emit("addProjectClick")
+      }
+    },
+    commonInputChange(val, prop, row, scope) {
+      this.$emit("inputContent", val, prop, row, scope)
+    },
+    // 鍒犻櫎
+    deleteClick(scope) {
+      this.$emit("clearupProject", this.tableList.tableData, scope.$index)
+    },
+    // 鍒犻櫎
+    clearupClient(scope) {
+      this.$emit("clearupProject", this.tableList.tableData, scope.$index)
+    },
+    // 娣诲姞鍒楁寜閽�
+    addColumnClick() {
+      this.$emit("addColumnClick")
+    },
+    // 娣诲姞鍒楀ご閮ㄦ爣棰樿緭鍏�
+    addColumnInputChange(val, prop) {
+      console.log(val, prop, "娣诲姞鍒楀ご閮ㄦ爣棰樿緭鍏�")
+    },
+    // 鍒犻櫎鍒�
+    clearupColumn(prop) {
+      console.log(prop)
+      this.$emit("clearupColumn", prop)
+    }
+  },
+  //瑙e喅琛ㄦ牸鎶栧姩闂
+  beforeUpdate() {
+    this.$nextTick(() => {
+      this.$refs["fromTable"].doLayout()
+    })
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.page-view {
+  .top-box {
+    display: flex;
+    .table-box {
+      flex: 1;
+      .el-form-item {
+        margin-bottom: 0;
+        .custom-name {
+          display: flex;
+          .common-select-btn {
+            margin-left: 5px;
+            font-size: 18px;
+            cursor: pointer;
+            color: #ff0000;
+          }
+        }
+      }
+    }
+    .add-column-box {
+      // width: 40px;
+      margin-top: 10px;
+      font-size: 26px;
+      color: #5582f3;
+      margin-left: 20px;
+      cursor: pointer;
+    }
+  }
+  .add-btn-box {
+    font-size: 26px;
+    color: #5582f3;
+    margin-left: 50px;
+    cursor: pointer;
+  }
+  .add-column-box {
+    display: flex;
+    .common-select-btn {
+      margin-left: 5px;
+      font-size: 18px;
+      cursor: pointer;
+      color: #ff0000;
+    }
+  }
+}
+::v-deep {
+  .el-form-item__label {
+    display: none;
+  }
+  .el-table__footer-wrapper tbody td.el-table__cell {
+    background-color: #fff;
+    // text-align: right;
+    font-weight: bold;
+  }
+  .el-input--suffix .el-input__inner {
+    padding-right: 0px;
+  }
+  .el-table .cell,
+  .el-table th.el-table__cell > .cell {
+    padding: 0 5px;
+  }
+  .el-input__inner {
+    // text-align: left;
+    text-align: center !important;
+  }
+}
+</style>
diff --git a/src/views/systemSetting/encodeManage/index.vue b/src/views/systemSetting/encodeManage/index.vue
index 62b78c9..b069a09 100644
--- a/src/views/systemSetting/encodeManage/index.vue
+++ b/src/views/systemSetting/encodeManage/index.vue
@@ -1,21 +1,186 @@
 <template>
-  <div class="container"></div>
+  <div class="silkStandardSetting-container">
+    <div class="filter-card">
+      <CommonSearch :show-add="false" :amount-view="false" placeholder="璇疯緭鍏ュ叧閿瘝" @searchClick="onFilterSearch">
+        <template slot="leftButton">
+          <el-button size="small" type="primary" @click="addBtnClick" >鏂板</el-button>
+          <el-button size="small" type="primary" @click="delBtnClick" >鍒犻櫎</el-button>
+          <el-button size="small" type="primary" @click="addBtnClick" >淇敼</el-button>
+          <el-button size="small" type="primary" @click="refreshClick">鍒锋柊</el-button>
+        </template>
+      </CommonSearch>
+    </div>
+    <div class="body-card">
+      <!-- <div class="edit-save">
+        <div class="edit-save-icon" @click="editSaveClick">
+          <i :class="isEdit ? 'el-icon-unlock' : 'el-icon-lock'"></i>
+        </div>
+        <div class="edit-sace-label">{{ isEdit ? "閿佸畾淇濆瓨" : "鐣岄潰璁捐" }}</div>
+      </div> -->
+      <div>
+        <SilkTableList
+          :detail-enter="isEdit"
+          :silk-table-list="silkTableList"
+          @inputContent="inputContent"
+          @addProjectClick="addBtnClick"
+          @clearupProject="clearupProject"
+          @deleteClick="clearupProject"
+          @addColumnClick="addColumnClick"
+          @clearupColumn="clearupColumn"
+        >
+        </SilkTableList>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
+import SilkTableList from "@/views/systemSetting/workshopManage/components/silkTableList"
 export default {
   name: "encodeManage",
   props: {},
-  components: {},
+  components: { SilkTableList },
   mixins: [],
   computed: {},
   data() {
-    return {}
+    return {
+      isEdit: false,
+      silkTableList: {},
+      tableData: [],
+      tableColumn: [
+        { label: "缂栫爜鍚嶇О", prop: "projectName", projectName: true },
+        { label: "缂栫爜绫诲瀷", prop: "start", inputFloat: true },
+        { label: "鎻忚堪", prop: "end", inputFloat: true },
+      ],
+      columnNum: 0,
+      dataObj: {
+        projectName: "",
+        start: 0,
+        end: 0,
+        price1: 0,
+        price2: 0,
+        price3: 0
+      }
+    }
   },
-  created() {},
-  methods: {}
+  created() {
+    this.setTableForm()
+  },
+  methods: {
+    setTableForm() {
+      this.silkTableList = {
+        tableData: this.tableData,
+        isReturn: false,
+        tableColumn: this.tableColumn
+      }
+    },
+    // 鎼滅储
+    onFilterSearch(searchText) {
+      console.log(searchText)
+    },
+    // 鏂板
+    addBtnClick() {
+      if(this.isEdit){
+        this.$message.warning("璇峰厛淇濆瓨褰撳墠缂栬緫")
+      }else{
+        this.isEdit = true
+        // array.splice(index, 0, item)
+        this.tableData.splice(0,0,{
+          projectName: "",
+          start: 0,
+          end: 0,
+          price1: 0,
+          price2: 0,
+          price3: 0,
+          isAdd:true,
+        })
+      }
+      
+      
+    },
+    // 淇濆瓨
+    saveBtnClick(){
+      this.tableData.forEach((item)=>{
+        item.isAdd=false
+      })
+      this.isEdit = false
+    },
+    // 鍒锋柊
+    refreshClick() {},
+    // 鎵撳嵃
+    printClick() {},
+    // 鍒楄〃杈撳叆鍥炶皟
+    inputContent(val, prop, row) {
+      console.log(val, prop, row,"鍒楄〃鎵撳嵃鍥炶皟")
+    },
+    // 鍒犻櫎
+    clearupProject(data, index) {
+      console.log(data)
+      this.tableData.splice(index, 1)
+    },
+    // 淇濆瓨缂栬緫鎸夐挳鍒囨崲
+    editSaveClick() {
+      this.isEdit = !this.isEdit
+    },
+    // 娣诲姞鍒�
+    addColumnClick() {
+      let propStr = "trends" + this.columnNum
+      this.tableColumn.splice(2, 0, { label: "", prop: propStr, inputFloat: true, addColumn: true })
+      this.$set(this.dataObj, propStr, 0)
+      console.log(this.tableColumn)
+      this.silkTableList.tableColumn = this.tableColumn
+      this.columnNum += 1
+    },
+    // 鍒犻櫎鍒�
+    clearupColumn(prop) {
+      let currentIndex = 0
+      this.tableColumn.map((item, index) => {
+        if (item.prop == prop) {
+          currentIndex = index
+        }
+      })
+      this.tableColumn.splice(currentIndex, 1)
+      this.silkTableList.tableColumn = this.tableColumn
+      this.$delete(this.dataObj, prop)
+    }
+  }
 }
 </script>
 
 <!-- Add "scoped" attribute to limit CSS to this component only -->
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.silkStandardSetting-container {
+  height: 100%;
+  .filter-card {
+    margin: 20px 30px;
+    height: 80px;
+    display: flex;
+    align-items: center;
+    padding: 0 20px 0 20px;
+    border-radius: 4px;
+    background-color: #fff;
+  }
+  .body-card {
+    margin: 0 30px;
+    background-color: #fff;
+    padding: 10px 15px;
+    height: calc(100% - 180px);
+    border-radius: 4px;
+    .edit-save {
+      display: flex;
+      align-items: center;
+      margin-bottom: 10px;
+      .edit-save-icon {
+        font-size: 24px;
+        color: #5582f3;
+        cursor: pointer;
+      }
+      .edit-sace-label {
+        margin-left: 10px;
+        font-size: 14px;
+        color: #000000d8;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/systemSetting/silkPriceStandard/components/silkTableList.vue b/src/views/systemSetting/silkPriceStandard/components/silkTableList.vue
index 829f842..baa5c52 100644
--- a/src/views/systemSetting/silkPriceStandard/components/silkTableList.vue
+++ b/src/views/systemSetting/silkPriceStandard/components/silkTableList.vue
@@ -177,14 +177,14 @@
           </el-table>
         </el-form>
       </div>
-      <div
+      <!-- <div
         v-if="detailEnter"
         class="add-column-box"
         @click="addColumnClick"
         :style="{ width: detailEnter ? '40px' : '0px' }"
       >
         <i class="el-icon-circle-plus"></i>
-      </div>
+      </div> -->
     </div>
     <div v-if="detailEnter" style="margin: 10px">
       <div class="add-btn-box" @click="addRowClick">
diff --git a/src/views/systemSetting/silkPriceStandard/index.vue b/src/views/systemSetting/silkPriceStandard/index.vue
index 2645a3d..17559ac 100644
--- a/src/views/systemSetting/silkPriceStandard/index.vue
+++ b/src/views/systemSetting/silkPriceStandard/index.vue
@@ -4,22 +4,15 @@
       <CommonSearch :show-add="false" :amount-view="false" placeholder="璇疯緭鍏ュ叧閿瘝" @searchClick="onFilterSearch">
         <template slot="leftButton">
           <el-button size="small" type="primary" @click="addBtnClick" >鏂板</el-button>
-          <!-- <el-button size="small" type="primary" @click="delBtnClick" >鍒犻櫎</el-button> -->
+          <el-button size="small" type="primary" @click="delBtnClick" >鍒犻櫎</el-button>
           <el-button size="small" type="primary" @click="saveBtnClick" >淇濆瓨</el-button>
-          |
-          <!-- <el-button size="small" type="primary" @click="addBtnClick" >淇敼</el-button> -->
+          <el-button size="small" type="primary" @click="addBtnClick" >淇敼</el-button>
           <el-button size="small" type="primary" @click="refreshClick">鍒锋柊</el-button>
           <el-button size="small" type="primary" @click="printClick">鎵撳嵃</el-button>
         </template>
       </CommonSearch>
     </div>
     <div class="body-card">
-      <!-- <div class="edit-save">
-        <div class="edit-save-icon" @click="editSaveClick">
-          <i :class="isEdit ? 'el-icon-unlock' : 'el-icon-lock'"></i>
-        </div>
-        <div class="edit-sace-label">{{ isEdit ? "閿佸畾淇濆瓨" : "鐣岄潰璁捐" }}</div>
-      </div> -->
       <div>
         <SilkTableList
           :detail-enter="isEdit"
@@ -147,7 +140,11 @@
       this.tableColumn.splice(currentIndex, 1)
       this.silkTableList.tableColumn = this.tableColumn
       this.$delete(this.dataObj, prop)
-    }
+    },
+    // 鍒犻櫎
+    delBtnClick(){
+      
+    },
   }
 }
 </script>
diff --git a/src/views/systemSetting/workshopManage/components/addDialog.vue b/src/views/systemSetting/workshopManage/components/addDialog.vue
new file mode 100644
index 0000000..c88406a
--- /dev/null
+++ b/src/views/systemSetting/workshopManage/components/addDialog.vue
@@ -0,0 +1,213 @@
+<template>
+  <div class="add_wordshop">
+    <el-dialog
+      :title="editConfig.dialogTitle+'杞﹂棿绠$悊'"
+      :visible.sync="editConfig.visible"
+      width="30%"
+      :before-close="handleClose">
+      <el-form :inline="true" label-width="20%" style="width: 100%;" :model="form" >
+        <el-form-item  label="杞﹂棿" style="width: 100%;" >
+          <el-select 
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'" v-model="editConfig.infomitton.workshopNumber" placeholder="璇烽�夋嫨杞﹂棿">
+            <el-option
+              v-for="item in workshopList"
+              :key="item.ID"
+              :label="item.name"
+              :value="item.ID">
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="缁勫埆" style="width: 100%;" >
+          <!-- <el-input-number
+            v-model="form.workshopNumber"
+            placeholder="璇疯緭鍏ョ粍鍒�"
+            :controls="false"
+            style="width: 100%; margin-right: 5px;text-align:left;"
+          ></el-input-number> -->
+          <el-input
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'"
+            v-model="editConfig.infomitton.groupNumber"
+            :rows="4"
+            style="resize: none !important;"
+            placeholder="璇疯緭鍏ョ粍鍒�"
+            >
+          </el-input>
+        </el-form-item>
+        
+        <el-form-item label="寮�濮嬭溅鍙�" style="width: 100%;" >
+          <el-input
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'"
+            v-model="editConfig.infomitton.startCarNumber"
+            :rows="4"
+            style="resize: none !important;"
+            placeholder="璇疯緭鍏ュ紑濮嬭溅鍙�"
+            >
+          </el-input>
+        </el-form-item>
+        <el-form-item label="缁撴潫杞﹀彿" style="width: 100%;" >
+          <el-input
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'"
+            v-model="editConfig.infomitton.endCarNumber"
+            :rows="4"
+            style="resize: none !important;"
+            placeholder="璇疯緭鍏ョ粨鏉熻溅鍙�"
+            >
+          </el-input>
+        </el-form-item>
+        <el-form-item label="鍗婅溅鏍囧織" style="width: 100%;" >
+          <el-select 
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'" v-model="editConfig.infomitton.carFlag" placeholder="璇烽�夋嫨鍗婅溅鏍囧織">
+            <el-option
+              v-for="item in carFlagList"
+              :key="item.id"
+              :label="item.name"
+              :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="澶囨敞" style="width: 100%;" >
+          <el-input
+            :disabled="this.editConfig.dialogTitle==='鏌ョ湅'"
+            v-model="editConfig.infomitton.notes"
+            type="textarea"
+            :rows="4"
+            style="resize: none !important;"
+            placeholder=""
+            >
+          </el-input>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="editConfig.visible = false">鍙� 娑�</el-button>
+        <el-button type="primary" @click="commitForm">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {getDict,saveWorkshopManage} from "@/api/systemSetting/workshopManage"
+export default {
+  props: {
+    editDiaConfig:{
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          dialogTitle:"娣诲姞",
+          isReadonly:true,
+          infomitton: {
+            workshopNumber:null,
+            groupNumber:null,
+            startCarNumber:null,
+            endCarNumber:null,
+            carFlag:null,
+            notes:null
+          },
+        }
+      }
+    }
+  },
+  data() {
+    return {
+      editConfig:this.editDiaConfig,
+      form: {
+        workshopNumber:null,
+        groupNumber:null,
+        startCarNumber:null,
+        endCarNumber:null,
+        carFlag:null,
+        notes:null
+      },
+      workshopList:[],
+      carFlagList:[
+        {id:1,name:"宸﹀崐杞�"},
+        {id:2,name:"鍙冲崐杞�"},
+        {id:3,name:"鍏ㄨ溅缁撴潫"},
+      ]
+    };
+  },
+  computed: {
+  },
+  created() {
+    this.getDictData()
+  },
+  mounted() {
+
+  },
+  watch: {
+
+  },
+  methods: {
+    handleClose(done) {
+      done();
+    },
+    async getDictData(){
+      await getDict({dictType:1}).then((res)=>{
+        if(res&&res.code===200){
+          this.workshopList=res.data
+        }
+      })
+    },
+    setParams(){
+      let params={
+        workshopNumber:this.editConfig.infomitton.workshopNumber+'',
+        groupNumber:Number(this.editConfig.infomitton.groupNumber),
+        startCarNumber:Number(this.editConfig.infomitton.startCarNumber),
+        endCarNumber:Number(this.editConfig.infomitton.endCarNumber),
+        carFlag:Number(this.editConfig.infomitton.carFlag),
+        notes:this.editConfig.infomitton.notes,
+        // id:Number(this.editConfig.infomitton.workshopId),
+      }
+      return params
+    },
+    async commitForm(){
+      let params=this.setParams()
+      if(this.editConfig.dialogTitle==="鏂板"){
+        await saveWorkshopManage(params).then((res)=>{
+          if(res&&res.code===200){
+            this.editConfig.visible=false
+            this.$message({
+              message: "淇濆瓨鎴愬姛!",
+              type: "success",
+            });
+            this.$parent.getData()
+          }
+        })
+      }else if(this.editConfig.dialogTitle==="淇敼"){
+        this.editConfig.infomitton.workshopNumber=this.editConfig.infomitton.workshopNumber+""
+        await saveWorkshopManage(this.editConfig.infomitton).then((res)=>{
+          if(res&&res.code===200){
+            this.editConfig.visible=false
+            this.$message({
+              message: "淇濆瓨鎴愬姛!",
+              type: "success",
+            });
+            this.$parent.getData()
+          }
+        })
+      }
+    }
+  },
+  components: {
+
+  },
+};
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-form-item__content{
+  width: 70% !important;
+}
+::v-deep{
+  .el-form{
+    .el-input__inner {  
+      text-align: left;  
+    }
+  }
+  .el-select{
+    width: 100%;
+  }
+}
+</style>
diff --git a/src/views/systemSetting/workshopManage/components/addWorkshop.vue b/src/views/systemSetting/workshopManage/components/addWorkshop.vue
index d6bea83..87497ec 100644
--- a/src/views/systemSetting/workshopManage/components/addWorkshop.vue
+++ b/src/views/systemSetting/workshopManage/components/addWorkshop.vue
@@ -1,62 +1,364 @@
 <template>
-  <div class="add_wordshop">
-    <el-dialog
-      title="鎻愮ず"
-      :visible.sync="editConfig.visible"
-      width="30%"
-      :before-close="handleClose">
-      <span>杩欐槸涓�娈典俊鎭�</span>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="editConfig.visible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="editConfig.visible = false">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
-  </div>
+  <el-dialog
+    :close-on-click-modal="false"
+    :visible.sync="editDialogVisible"
+    width="33rem"
+    class="add-event-dialog"
+    @close="shutdown"
+    append-to-body
+  >
+    <div slot="title" class="tac drawerHeader">娣诲姞杞﹂棿</div>
+    <div class="drawerContent">
+      <el-table
+        v-if="isTableShow"
+        :header-cell-style="{ background: '#f1f3f8', color: '#000009' }"
+        ref="multipleTable"
+        :data="BomTableData"
+        tooltip-effect="dark"
+        height="440"
+      >
+        <el-table-column prop="unit">
+          <template slot="header" slot-scope="scope">  
+            <span style="color: #f56c6c">*</span>
+            <span>{{ scope.row }}</span>
+            鍚嶇О
+          </template>
+          <template slot-scope="scope">
+            <el-input v-model="scope.row.name"></el-input>
+          </template>
+        </el-table-column>
+        <el-table-column prop="createdAt" label="璁句负榛樿">
+          <template slot-scope="scope">
+            <el-switch
+              @change="switchChange(scope, scope.row.isDefault)"
+              v-model="scope.row.isDefault"
+            ></el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="鎿嶄綔" width="100">
+          <template slot-scope="scope">
+            <i
+              class="el-icon-delete"
+              id="iconStyle"
+              @click="handleDelete(scope.row.id)"
+            ></i>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-button
+        @click="handleAdd()"
+        type="text"
+        class="margin_top_15px margin_left_20px"
+        >鏂板涓嬫媺妗�</el-button
+      >
+    </div>
+    <div slot="footer" class="dialog-footer tac">
+      <!-- <el-button
+        @click="handleAdd()"
+        style="margin-left: 16px; color: #fff; background-color: #ee790c"
+        >鏂板</el-button
+      > -->
+      <el-button @click="shutdown">鍙栨秷</el-button
+      ><el-button
+        type="primary"
+        @click="handleConfirmSave()"
+        style="margin-left: 16px; color: #fff; background-color: #2a78fb"
+        >纭畾</el-button
+      >
+    </div>
+  </el-dialog>
 </template>
 
 <script>
+// import { addMaterial, updateMaterial } from "@/api/ProductiveTask/inventory";
+// import { getCodeStandardList } from "@/api/basic/standard";
+// import { postSaveBomKindDict } from "@/api/ProductiveTask/productBom";
+
 export default {
+  name: "addWorkshop",
   props: {
-    editDiaConfig:{
+    title: {
+      type: String,
+    },
+    editRow: {
       type: Object,
       default: () => {
-        return {
-          visible: false,
-          infomitton: {
-
-          }
-        }
-      }
-    }
+        return {};
+      },
+    },
+    workList: {
+      type: Array,
+    },
   },
   data() {
     return {
-      editConfig:this.editDiaConfig
+      editDialogVisible: false,
+      isTableShow: true,
+      form: {},
+      BomTableData: [1],
+      work: 1,
+      flag: "add",
+      obj: { name: "", page: 0, pageSize: 0, type: "鐗╂枡缂栫爜" },
+      inputValue: [],
+      codenumer: 0, //姣忔杈撳叆鐨勭紪鐮�
+      codenumberList: [], //鏁存潯缂栫爜
+      sum: 0,
+      explain: "",
+      Tabs: "msg",
+      tableData: [
+        {
+          date: "PEBU",
+          name: "PE甯�",
+          number: "21",
+          unit: "鍚�",
+        },
+      ],
+      rules: {
+        id: [{ required: true, message: "璇疯緭鍏ョ墿鏂欑紪鐮�", trigger: "blur" }],
+        name: [{ required: true, message: "璇疯緭鍏ョ墿鏂欏悕绉�", trigger: "blur" }],
+        specs: [{ required: true, message: "璇疯緭鍏ョ墿鏂欒鏍�", trigger: "blur" }],
+        type: [{ required: true, message: "璇疯緭鍏ョ墿鏂欏瀷鍙�", trigger: "blur" }],
+        amount: [
+          {
+            required: true,
+            message: "璇疯緭鍏ユ暟閲�",
+            trigger: "blur",
+          },
+        ],
+        unit: [
+          {
+            required: true,
+            message: "璇疯緭鍏ュ崟浣�",
+            trigger: "blur",
+          },
+        ],
+        model: [
+          { required: true, message: "璇烽�夋嫨鐗╂枡绫诲瀷", trigger: "change" },
+        ],
+      },
     };
   },
-  computed: {
-
-  },
-  created() {
-
-  },
-  mounted() {
-
-  },
   watch: {
-
+    editDialogVisible(newVal) {
+      if (newVal) {
+        this.BomTableData = this.workList;
+      }
+    },
+    workList(newVal) {
+      console.log(newVal)
+      this.BomTableData = this.workList;
+    },
   },
+  mounted() {},
   methods: {
-    handleClose(done) {
-      done();
-    }
-  },
-  components: {
-
+    handleAdd() {
+      this.BomTableData.push({ name: "", isDefault: false });
+    },
+    handleDelete(id) {
+      this.BomTableData = this.BomTableData.filter((i) => {
+        return i.id != id;
+      });
+    },
+    // async getCodeStandardList() {
+    //   const res = await getCodeStandardList(this.obj);
+    //   this.codenumer = [];
+    //   this.sum = 0;
+    //   this.explain = "";
+    //   const { rules = [] } = res.data[0];
+    //   rules.forEach((item, index) => {
+    //     this.codenumer.push(item.length);
+    //     this.sum++;
+    //     // index - 1
+    //     //   ? (this.explain += item.name + "/")
+    //     //   : (this.explain += item.name);
+    //     this.explain += item.name + (index === rules.length - 1 ? "" : "/");
+    //   });
+    //   this.$forceUpdate();
+    // },
+    codeList(val) {
+      console.log(val, "codeList");
+      this.inputValue = val;
+      this.codenumberList = val.toString();
+      console.log(this.codenumberList.replace(/,/g, ""));
+    },
+    switchChange(scope, val) {
+      let arr = [];
+      for (let i in this.BomTableData) {
+        if (this.BomTableData[i].isDefault) {
+          arr.push(i);
+        }
+      }
+      if (arr.length > 1) {
+        this.$message({
+          message: "鍙兘璁句竴涓负榛樿",
+          type: "warning",
+        });
+        scope.row.isDefault = !val;
+      }
+    },
+    handleConfirmSave() {
+      let arr = [];
+      for (let i in this.BomTableData) {
+        if (this.BomTableData[i].isDefault) {
+          arr.push(i);
+        }
+      }
+      if (arr.length > 1) {
+        this.$message({
+          message: "鍙兘璁句竴涓负榛樿",
+          type: "warning",
+        });
+      } else {
+        this.$emit("handleConfirmSave", this.BomTableData);
+      }
+    },
+    // async validate() {
+    //   try {
+    //     if (this.flag == "add")
+    //       this.form.id = this.codenumberList.replace(/,/g, "");
+    //     this.form.explain = this.explain;
+    //     let fn = this.flag == "set" ? updateMaterial : addMaterial;
+    //     const res = await fn(this.form);
+    //     this.shutdown();
+    //     this.$sucessSet("sucessSet");
+    //     if (res.code == 200) {
+    //       this.$message({
+    //         message: this.flag == "set" ? "淇敼鎴愬姛锛�" : "娣诲姞鎴愬姛锛�",
+    //         type: "success",
+    //       });
+    //     }
+    //   } catch (err) {
+    //     console.log(err);
+    //     this.$message({
+    //       message: err.message.data.data,
+    //       type: "warning",
+    //     });
+    //   }
+    // },
+    shutdown() {
+      this.editDialogVisible = false;
+    },
   },
 };
 </script>
 
-<style scoped lang="scss">
+<style lang="scss" scoped>
+.drawer {
+  z-index: 99;
+  border: 2px solid #ccc;
+  border-radius: 20px;
+  background: #fff;
+  width: 25vw !important;
+  height: 600px;
+  #iconStyle {
+    font-size: 20px !important;
+  }
+  .drawerContent {
+    position: relative;
+    overflow-y: auto;
+    padding: 12px 10px 0 10px;
+    padding-top: 12px;
+    margin: auto;
+    width: 25vw;
+    overflow-x: hidden;
+    height: 480px;
+    scrollbar-width: none; /* firefox */
+    -ms-overflow-style: none; /* IE 10+ */
+    ::v-deep .el-tabs__nav-scroll {
+      padding-left: 25px;
+    }
+    .baseTitle {
+      margin: 50px 0 20px;
+      font-weight: bold;
+    }
+    .baseInfo {
+      display: flex;
+    }
+  }
+  .drawerContent::-webkit-scrollbar {
+    display: none; /* Chrome Safari */
+  }
+}
 
+.drawerFooter {
+  margin-top: 16px;
+  margin-right: 20px;
+  text-align: right;
+  .el-button {
+    width: 80px;
+    height: 38px;
+    border-color: rgba(0, 0, 0, 0.1);
+    font-family: PingFangSC-Medium, sans-serif;
+    color: #000;
+  }
+}
+::v-deep .el-form {
+  width: 389px;
+  .input-box .input-content input {
+    margin: 0;
+    margin-right: 3px;
+  }
+  .el-input__inner,
+  .el-textarea__inner {
+    line-height: 18px;
+    font-family: PingFangSC;
+  }
+}
+::v-deep .el-tabs__header {
+  border: none;
+  .el-tabs__nav {
+    border: none;
+  }
+}
+::v-deep .el-form-item__content {
+  width: 263px;
+  .input-box {
+    width: 263px;
+  }
+}
+::v-deep .el-form-item__label {
+  font-size: 13px !important;
+  color: #000;
+  font-family: PingFangSC;
+  text-align: center !important;
+  width: 60px;
+}
+::v-deep .input-box .input-content input {
+  width: 23px;
+  height: 26px;
+  border-color: rgba(0, 0, 0, 0.1);
+  font-family: PingFangSC;
+}
+::v-deep .el-icon-minus {
+  width: 13px !important;
+  height: 26px !important;
+  line-height: 38px !important;
+  color: #e5e5e5;
+  font-size: 13px;
+}
+::v-deep .el-input__inner {
+  font-size: 13px !important;
+  color: rgba(0, 0, 0, 0.9);
+}
+::v-deep .el-input__inner::placeholder {
+  color: rgba(0, 0, 0, 0.4);
+}
+::v-deep .el-form-item__error {
+  font-family: PingFangSC;
+}
+.self {
+  ::v-deep .el-input__inner {
+  }
+}
+::v-deep .el-select-dropdown {
+  position: absolute !important;
+  top: 36px !important;
+  left: 0px !important;
+}
+::v-deep .el-select-dropdown__wrap {
+  overflow: auto !important;
+}
+::v-deep .el-dialog__body{
+  padding-bottom:10px!important;
+}
 </style>
diff --git a/src/views/systemSetting/workshopManage/components/silkTableList.vue b/src/views/systemSetting/workshopManage/components/silkTableList.vue
index 8875782..144358d 100644
--- a/src/views/systemSetting/workshopManage/components/silkTableList.vue
+++ b/src/views/systemSetting/workshopManage/components/silkTableList.vue
@@ -50,6 +50,13 @@
                   </div>
                 </div>
                 <span v-else>{{ item.label }}</span>
+                <span v-if="item.iconRight">
+                  <i
+                    @click="settingClick(item)"
+                    :class="item.iconRight"
+                    style="font-size: 16px ;color:#5582F3; margin-left: 5px; cursor: pointer"
+                  ></i>
+                </span>
               </template>
               <!-- column鏍峰紡 -->
               <template slot-scope="scope">
@@ -73,17 +80,37 @@
                     ></el-input>
                   </el-form-item>
                   <el-form-item
-                    v-else-if="item.projectName"
+                    v-else-if="item.workshop"
                     label=" "
                     :prop="'tableData.' + scope.$index + '.' + item.prop"
                   >
                     <div class="custom-name">
                       <el-select v-model="scope.row[item.prop]" clearable size="mini" placeholder="璇烽�夋嫨">
                         <el-option
-                          v-for="(item, index) in projectOptions"
+                          v-for="(item, index) in workshopList"
                           :key="index"
-                          :label="item.value"
-                          :value="item.value"
+                          :label="item.name"
+                          :value="item.ID"
+                        >
+                        </el-option>
+                      </el-select>
+                      <div class="common-select-btn" @click="clearupClient(scope)">
+                        <i class="el-icon-remove" title="鍒犻櫎"></i>
+                      </div>
+                    </div>
+                  </el-form-item>
+                  <el-form-item
+                    v-else-if="item.carFlag"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                  >
+                    <div class="custom-name">
+                      <el-select v-model="scope.row[item.prop]" clearable size="mini" placeholder="璇烽�夋嫨">
+                        <el-option
+                          v-for="(item, index) in carFlagList"
+                          :key="index"
+                          :label="item.name"
+                          :value="item.id"
                         >
                         </el-option>
                       </el-select>
@@ -123,7 +150,6 @@
                       v-model="scope.row[item.prop]"
                       placeholder=""
                       :min="0"
-                      :precision="4"
                       :disabled="!isOperate"
                       :controls="false"
                       size="mini"
@@ -135,6 +161,25 @@
                       "
                     ></el-input-number>
                   </el-form-item>
+                  <el-form-item
+                    v-else-if="item.showInput"
+                    label=" "
+                    :prop="'tableData.' + scope.$index + '.' + item.prop"
+                    :rules="[{ required: item.isRequird ? true : false, message: '杈撳叆涓嶈兘涓虹┖' }]"
+                  >
+                    <el-input
+                      v-model="scope.row[item.prop]"
+                      placeholder=""
+                      size="mini"
+                      style="width: 100%; margin-right: 5px"
+                    ></el-input>
+                  </el-form-item>
+                  <!-- 璋冪敤鏂规硶鏄剧ず鏂囧瓧 -->
+                  <div v-else-if="item.isCallMethod">
+                    <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''">{{
+                      item.getCallMethod(scope.row[item.prop], scope.row)
+                    }}</span>
+                  </div>
                   <span v-else>
                     <template>
                       {{ scope.row[item.prop] }}
@@ -161,7 +206,14 @@
                       }
                     "
                   ></el-input-number>
+                
                 </el-form-item>
+                <!-- 璋冪敤鏂规硶鏄剧ず鏂囧瓧 -->
+                <div v-else-if="item.isCallMethod">
+                  <span :class="item.isClass ? item.getClassName(scope.row[item.prop], scope.row) : ''">{{
+                    item.getCallMethod(scope.row[item.prop], scope.row)
+                  }}</span>
+                </div>
                 <span v-else style="text-align: right">{{ scope.row[item.prop] }}</span>
               </template>
             </el-table-column>
@@ -177,14 +229,14 @@
           </el-table>
         </el-form>
       </div>
-      <div
+      <!-- <div
         v-if="detailEnter"
         class="add-column-box"
         @click="addColumnClick"
         :style="{ width: detailEnter ? '40px' : '0px' }"
       >
         <i class="el-icon-circle-plus"></i>
-      </div>
+      </div> -->
     </div>
     <div v-if="detailEnter" style="margin: 10px">
       <div class="add-btn-box" @click="addRowClick">
@@ -198,6 +250,7 @@
 
 <script>
 // import { getProductList } from "@/api/common/other"
+import {getDict } from "@/api/systemSetting/dataDictionary"
 export default {
   name: "CommmonFormTableView",
   components: {},
@@ -256,7 +309,18 @@
         { id: 3, value: "娓呮磥鍒�" },
         { id: 4, value: "娲佸噣鍒�" },
         { id: 5, value: "鏈�澶у亸宸�" }
-      ]
+      ],
+      workshopList:[],// 杞﹂棿鍒楄〃
+      carFlagList:[
+        {name:"宸﹀崐杞�",id:1},
+        {name:"鍙冲崐杞�",id:2},
+        {name:"鍏ㄨ溅缁撴潫",id:3},
+      ],//鍗婅溅鏍囧織
+      getDataParams:{
+        page: 1,
+        pageSize:10,
+        dictType:1,
+      },
     }
   },
   created() {
@@ -264,6 +328,7 @@
     //   this.getProductList()
     // }
     this.getTableInfo()
+    this.getWorkshopList()
   },
   watch: {
     silkTableList: {
@@ -275,6 +340,10 @@
   },
   computed: {},
   methods: {
+  // 鑷畾涔夎〃澶寸偣鍑讳簨浠�
+    settingClick(item) {
+      this.$emit("settingClick", item);
+    },
     getTableInfo() {
       this.tableList = this.silkTableList
       if (this.tableList.tableData.length === 1 && this.tableList.tableData[0].name === "") {
@@ -322,6 +391,16 @@
     clearupColumn(prop) {
       console.log(prop)
       this.$emit("clearupColumn", prop)
+    },
+    async getWorkshopList(){
+      await getDict({
+        dictType:this.getDataParams.dictType,
+        page:this.getDataParams.page,
+        pageSize:this.getDataParams.pageSize,
+      }).then((res)=>{
+        console.log(res,"res")
+        this.workshopList=res.data
+      })
     }
   },
   //瑙e喅琛ㄦ牸鎶栧姩闂
@@ -329,7 +408,7 @@
     this.$nextTick(() => {
       this.$refs["fromTable"].doLayout()
     })
-  }
+  },
 }
 </script>
 
diff --git a/src/views/systemSetting/workshopManage/index.vue b/src/views/systemSetting/workshopManage/index.vue
index e029789..2864e5a 100644
--- a/src/views/systemSetting/workshopManage/index.vue
+++ b/src/views/systemSetting/workshopManage/index.vue
@@ -4,150 +4,217 @@
       <CommonSearch :show-add="false" :amount-view="false" placeholder="璇疯緭鍏ュ叧閿瘝" @searchClick="onFilterSearch">
         <template slot="leftButton">
           <el-button size="small" type="primary" @click="addBtnClick" >鏂板</el-button>
-          <!-- <el-button size="small" type="primary" @click="delBtnClick" >鍒犻櫎</el-button> -->
-          <el-button size="small" type="primary" @click="saveBtnClick" >淇濆瓨</el-button>
-          |
-          <!-- <el-button size="small" type="primary" @click="addBtnClick" >淇敼</el-button> -->
           <el-button size="small" type="primary" @click="refreshClick">鍒锋柊</el-button>
           <el-button size="small" type="primary" @click="printClick">鎵撳嵃</el-button>
         </template>
       </CommonSearch>
     </div>
     <div class="body-card">
-      <!-- <div class="edit-save">
-        <div class="edit-save-icon" @click="editSaveClick">
-          <i :class="isEdit ? 'el-icon-unlock' : 'el-icon-lock'"></i>
-        </div>
-        <div class="edit-sace-label">{{ isEdit ? "閿佸畾淇濆瓨" : "鐣岄潰璁捐" }}</div>
-      </div> -->
       <div>
-        <SilkTableList
-          :detail-enter="isEdit"
-          :silk-table-list="silkTableList"
-          @inputContent="inputContent"
-          @addProjectClick="addBtnClick"
-          @clearupProject="clearupProject"
-          @deleteClick="clearupProject"
-          @addColumnClick="addColumnClick"
-          @clearupColumn="clearupColumn"
+        <TableCommonView
+          :table-list="tableList"
+          @selTableCol="selTableCol"
+          @handleShow="handleShow"
+          @tableRowClick="tableRowClick"
         >
-        </SilkTableList>
+          <template slot="tableButton">
+            <el-table-column label="鎿嶄綔" width="180">
+              <template slot-scope="scope">
+                <el-button @click.stop="handleClick(scope.row, '鏌ョ湅')" type="text" size="small">鏌ョ湅</el-button>
+                <el-button @click.stop="handleClick(scope.row, '淇敼')" type="text" size="small">淇敼</el-button>
+                <el-button @click.stop="handleClick(scope.row, '鍒犻櫎')" type="text" size="small">鍒犻櫎</el-button>
+                
+              </template>
+            </el-table-column>
+          </template>
+        </TableCommonView>
       </div>
     </div>
+    <AddWorkshop 
+      ref="bomTypeDialog"
+      @handleConfirmSave="handleConfirmSave"
+      :workList="workList"
+      title="娣诲姞鑺傜偣绫诲瀷"
+    />
+    <AddDataDictionaries 
+      :editDiaConfig="editConfig"
+    />
   </div>
 </template>
 
 <script>
-import SilkTableList from "@/views/systemSetting/workshopManage/components/silkTableList"
+import AddDataDictionaries from "@/views/systemSetting/workshopManage/components/addDialog.vue"
+import { getWorkshopManageList,deleteWorkshopManage } from "@/api/systemSetting/workshopManage"
+import TableCommonView from '@/components/makepager/TableCommonView.vue'
+import AddWorkshop from '@/views/systemSetting/workshopManage/components/addWorkshop.vue'
 export default {
   name: "workshopManage",
   props: {},
-  components: { SilkTableList },
+  components: { TableCommonView,AddWorkshop,AddDataDictionaries },
   mixins: [],
   computed: {},
   data() {
     return {
-      isEdit: false,
-      silkTableList: {},
-      tableData: [],
+      tableList: {},
+      showCol: ["杞﹂棿", "缁勫埆", "寮�濮嬭溅鍙�", "缁撴潫杞﹀彿", "鍗婅溅鏍囧織", "澶囨敞"],
       tableColumn: [
-        { label: "杞﹂棿", prop: "projectName", projectName: true },
-        { label: "缁勫埆", prop: "start", inputFloat: true },
-        { label: "寮�濮嬭溅鍙�", prop: "end", inputFloat: true },
-        { label: "缁撴潫杞﹀彿", prop: "price1", inputFloat: true },
-        { label: "鍗婅溅鏍囧織", prop: "projectName", projectName: true },
-        { label: "澶囨敞", prop: "price2", inputFloat: true },
+        // { label: "杞﹂棿", prop: "workshopNumber",iconRight:"el-icon-setting"},
+        { label: "杞﹂棿", prop: "workshopNumber",},
+        { label: "缁勫埆", prop: "groupNumber", },
+        { label: "寮�濮嬭溅鍙�", prop: "startCarNumber" },
+        { label: "缁撴潫杞﹀彿", prop: "endCarNumber" },
+        { label: "鍗婅溅鏍囧織", prop: "carFlag",isCallMethod: true, getCallMethod: this.getStatusCarFlag },
+        { label: "澶囨敞", prop: "notes", },
       ],
-      columnNum: 0,
-      dataObj: {
-        projectName: "",
-        start: 0,
-        end: 0,
-        price1: 0,
-        price2: 0,
-        price3: 0
-      }
+      // 绫诲瀷
+      workList: [],
+      getDataParams: {
+        page: 1,
+        pageSize: 10,
+        keyWord: '',
+      },
+      editConfig:{
+        visible:false,
+        infomitton:{
+          TabsIndex:0,
+          workshopId:null,
+        }
+      },
     }
   },
   created() {
-    this.setTableForm()
+    this.setTable()
+    this.getData()
   },
   methods: {
-    setTableForm() {
-      this.silkTableList = {
-        tableData: this.tableData,
-        isReturn: false,
-        tableColumn: this.tableColumn
+    setTable() {
+      console.log(this.tableColumn,"鐪嬬湅")
+      // top 鏄庣粏鍗曞垪琛�
+      this.tableList = {
+        selectIndex: true,
+        tableInfomation: [],
+        allcol: [],
+        showcol: this.showCol,
+        tableColumn: this.setColumnVisible(this.showCol, this.tableColumn)
       }
+      this.setTableList(this.tableList)
+    },
+    setColumnVisible(showCol, tableColumn) {
+      return tableColumn.map((ele) => {
+        return {
+          ...ele,
+          isShowColumn: showCol.includes(ele.label)
+        }
+      })
+    },
+    setTableList(tableList) {
+      tableList.allcol = tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
+      this.searchOptions = []
+      for (let i = 0; i < tableList.tableColumn.length; i++) {
+        const label = tableList.tableColumn[i].label
+        const value = tableList.tableColumn[i].prop
+        this.searchOptions.push({ value: value, label: label })
+      }
+    },
+    selTableCol(val) {
+      this.showcol = val
+      this.tableList.tableColumn = this.setColumnVisible(val, this.tableColumn)
+    },
+    // 琛ㄦ牸琛岀偣鍑�
+    tableRowClick(row){
+      console.log(row,"row")
     },
     // 鎼滅储
     onFilterSearch(searchText) {
-      console.log(searchText)
+      console.log(searchText,"鏄暐")
+      this.getDataParams.keyWord=searchText,
+      this.getData()
     },
     // 鏂板
     addBtnClick() {
-      if(this.isEdit){
-        this.$message.warning("璇峰厛淇濆瓨褰撳墠缂栬緫")
-      }else{
-        this.isEdit = true
-        // array.splice(index, 0, item)
-        this.tableData.splice(0,0,{
-          projectName: "",
-          start: 0,
-          end: 0,
-          price1: 0,
-          price2: 0,
-          price3: 0,
-          isAdd:true,
-        })
-      }
-      
-      
+      this.editConfig.infomitton=[]
+      this.editConfig.dialogTitle="鏂板"
+      this.editConfig.visible=true
     },
     // 淇濆瓨
     saveBtnClick(){
-      this.tableData.forEach((item)=>{
-        item.isAdd=false
-      })
-      this.isEdit = false
+
     },
     // 鍒锋柊
     refreshClick() {},
     // 鎵撳嵃
     printClick() {},
-    // 鍒楄〃杈撳叆鍥炶皟
-    inputContent(val, prop, row) {
-      console.log(val, prop, row,"鍒楄〃鎵撳嵃鍥炶皟")
-    },
     // 鍒犻櫎
-    clearupProject(data, index) {
-      console.log(data)
-      this.tableData.splice(index, 1)
+    delBtnClick(){},
+    // 缁勫埆
+    handleShow(item){
+      console.log(item,"item")
+      this.$refs.bomTypeDialog.editDialogVisible = true;
     },
-    // 淇濆瓨缂栬緫鎸夐挳鍒囨崲
-    editSaveClick() {
-      this.isEdit = !this.isEdit
+    handleGetBomKindDictList() {
+      // postGetBomKindDictList().then((res) => {
+      //   this.workList = res.data;
+      // });
     },
-    // 娣诲姞鍒�
-    addColumnClick() {
-      let propStr = "trends" + this.columnNum
-      this.tableColumn.splice(2, 0, { label: "", prop: propStr, inputFloat: true, addColumn: true })
-      this.$set(this.dataObj, propStr, 0)
-      console.log(this.tableColumn)
-      this.silkTableList.tableColumn = this.tableColumn
-      this.columnNum += 1
+    handleConfirmSave(data) {
+      console.log(data,"data")
+      // postSaveBomKindDict({ data: data }).then((res) => {
+      //   if (res.code == 200) {
+      //     this.$message({
+      //       message: "鎿嶄綔鎴愬姛锛�",
+      //       type: "success",
+      //     });
+      //     this.$refs.bomTypeDialog.editDialogVisible = false;
+      //     this.handleGetBomKindDictList();
+      //   }
+      // });
     },
-    // 鍒犻櫎鍒�
-    clearupColumn(prop) {
-      let currentIndex = 0
-      this.tableColumn.map((item, index) => {
-        if (item.prop == prop) {
-          currentIndex = index
-        }
+    // 杞﹂棿鍒楄〃
+    async getData() {
+      await getWorkshopManageList({
+        keyWord: this.getDataParams.keyWord,
+        page: this.getDataParams.page,
+        pageSize: this.getDataParams.pageSize,
+      }).then((res) => {
+        this.tableList.tableInfomation = res.data
       })
-      this.tableColumn.splice(currentIndex, 1)
-      this.silkTableList.tableColumn = this.tableColumn
-      this.$delete(this.dataObj, prop)
+    },
+    getStatusCarFlag(val) {
+      if (val) {
+        return val == 1 ? '宸﹀崐杞�' : val == 2 ? '鍙冲崐杞�' : val == 3 ? '鍏ㄨ溅缁撴潫' : '--'
+      } else {
+        return "--";
+      }
+    },
+    handleClick(row,type){
+      console.log(row,"row")
+      if(type==="鏌ョ湅"){
+        this.editConfig.infomitton=row
+        this.editConfig.infomitton.workshopId=row.ID
+        this.editConfig.dialogTitle=type
+        this.editConfig.visible=true
+      }else if(type==="淇敼"){
+        this.editConfig.infomitton=row
+        this.editConfig.infomitton.workshopId=row.ID
+        this.editConfig.dialogTitle=type
+        this.editConfig.visible=true
+      }else if(type==="鍒犻櫎"){
+        this.$confirm(`纭鍒犻櫎${row.name}鍚�?`, '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          deleteWorkshopManage({id:row.ID}).then((res)=>{
+            if(res&&res.code===200){
+              this.getData()
+              this.$message({
+                type: 'success',
+                message: '鍒犻櫎鎴愬姛!'
+              });
+            }
+          })
+        })
+      }
     }
   }
 }
@@ -190,3 +257,4 @@
   }
 }
 </style>
+
diff --git a/vue.config.js b/vue.config.js
index f0c0319..86a75c3 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -13,7 +13,7 @@
   productionSourceMap: false, // 濡傛灉浣犱笉闇�瑕佺敓浜х幆澧冪殑source map, 鍙互灏嗗叾璁剧疆涓篺alse 浠ュ姞閫熺敓浜х幆澧冩瀯寤�
   devServer: {
     proxy: {
-      "/api": {
+      "/api-jl": {
         // target: "http://192.168.20.118:8889", // http://192.168.20.119:8002 http://fai365.com:30150/
         // target: "http://192.168.20.120:8008", 
         // target: "http://192.168.20.120:8004",

--
Gitblit v1.8.0