From 15c2636bb7cd4ae729c1cfd4c11f1324a9cd04f1 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期五, 01 三月 2024 18:21:09 +0800
Subject: [PATCH] 生丝定级标准列表组件开发、router配置、menu修改

---
 src/assets/jialianlogo.png                                               |    0 
 src/views/systemSetting/silkStandardSetting/components/silkTableList.vue |  361 ++++++++++++++++++++++++++++++++++++
 src/views/productManage/productRegisterForm/index.vue                    |   97 +++++++++
 src/views/systemSetting/silkStandardSetting/index.vue                    |  130 ++++++++++++
 src/components/layout/components/appsidebar/index.vue                    |    2 
 src/router/index.js                                                      |    2 
 6 files changed, 579 insertions(+), 13 deletions(-)

diff --git a/src/assets/jialianlogo.png b/src/assets/jialianlogo.png
new file mode 100644
index 0000000..406b977
--- /dev/null
+++ b/src/assets/jialianlogo.png
Binary files differ
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index b4c489f..899306f 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -3,7 +3,7 @@
   <div class="app-sidebar">
     <div class="box">
       <div class="logo-view">
-        <el-image :src="require('@/assets/logo.png')"></el-image>
+        <el-image :src="require('@/assets/jialianlogo.png')"></el-image>
       </div>
       <el-menu
         router
diff --git a/src/router/index.js b/src/router/index.js
index 404ff9e..5972b9c 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -80,7 +80,7 @@
       insIndex: true
     },
     redirect: {
-      name: "supplier"
+      name: "silkStandardSetting"
     },
     children: routes
   },
diff --git a/src/views/productManage/productRegisterForm/index.vue b/src/views/productManage/productRegisterForm/index.vue
index db864a0..1770ad9 100644
--- a/src/views/productManage/productRegisterForm/index.vue
+++ b/src/views/productManage/productRegisterForm/index.vue
@@ -3,25 +3,107 @@
     <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="addBtnClick">鏂板</el-button>
         </template>
       </CommonSearch>
+    </div>
+    <div class="body-card">
+      <div class="list-view">
+        <TableCommonView ref="tableListRef" v-loading="loading" :table-list="tableList" @selTableCol="selTableCol">
+          <template slot="tableButton">
+            <el-table-column label="鎿嶄綔" width="180">
+              <template slot-scope="scope">
+                <el-button @click="viewClick(scope.row)" type="text" size="small">鏌ョ湅</el-button>
+                <el-button @click="editClick(scope.row)" type="text" size="small">缂栬緫</el-button>
+                <el-button @click="delClick(scope.row.id)" type="text" size="small">鍒犻櫎</el-button>
+              </template>
+            </el-table-column>
+          </template>
+        </TableCommonView>
+      </div>
+      <div class="btn-pager">
+        <PagerView class="page" :pager-options="pagerOptions" v-on="pagerEvents" />
+      </div>
     </div>
   </div>
 </template>
 
 <script>
+import pageMixin from "@/components/makepager/pager/mixin/pageMixin"
 export default {
   name: "productRegisterForm",
   props: {},
   components: {},
-  mixins: [],
+  mixins: [pageMixin],
   computed: {},
   data() {
-    return {}
+    return {
+      loading: false,
+      tableList: {},
+      tableColumn: [
+        { label: "缂栧彿", prop: "name", min: 100, default: true },
+        { label: "鐢熶骇鏃堕棿", prop: "member_name" },
+        { label: "杞︾粍", prop: "client_level" },
+        { label: "瑙勬牸", prop: "next_visit_time", min: 90 },
+        { label: "杞﹂棿", prop: "detail_address", min: 200 },
+        { label: "搴勫彛", prop: "client_status" },
+        { label: "鍥炴暟", prop: "contact_name", isContactClick: true },
+        { label: "杞︾粍鎬讳骇閲�", prop: "contact_phone" }
+      ],
+      showCol: ["缂栧彿", "鐢熶骇鏃堕棿", "杞︾粍", "瑙勬牸", "杞﹂棿", "搴勫彛", "鍥炴暟", "杞︾粍鎬讳骇閲�"]
+    }
   },
-  created() {},
-  methods: {}
+  created() {
+    this.setTable()
+  },
+  methods: {
+    setTable() {
+      this.tableList = {
+        selectIndex: true,
+        tableInfomation: [],
+        allcol: [],
+        showcol: this.showCol,
+        tableColumn: this.setColumnVisible(this.showCol)
+      }
+      this.tableList.allcol = this.tableList.tableColumn.filter((ele) => !ele.default).map((ele) => ele.label)
+      this.searchOptions = []
+      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
+        const label = this.tableList.tableColumn[i].label
+        const value = this.tableList.tableColumn[i].prop
+        this.searchOptions.push({ value: value, label: label })
+      }
+    },
+    setColumnVisible(showCol) {
+      return this.tableColumn.map((ele) => {
+        return {
+          ...ele,
+          isShowColumn: showCol.includes(ele.label)
+        }
+      })
+    },
+    selTableCol(val) {
+      this.showcol = val
+      this.tableList.tableColumn = this.setColumnVisible(val)
+    },
+    // 鎼滅储
+    onFilterSearch(searchText) {
+      console.log(searchText)
+    },
+    // 鏂板
+    addBtnClick() {},
+    // 鏌ョ湅
+    viewClick(row) {
+      console.log(row)
+    },
+    // 缂栬緫
+    editClick(row) {
+      console.log(row)
+    },
+    // 鍒犻櫎
+    delClick(row) {
+      console.log(row)
+    }
+  }
 }
 </script>
 
@@ -37,5 +119,10 @@
     border-radius: 12px;
     background-color: #fff;
   }
+  .body-card {
+    margin: 0 30px;
+    background-color: #fff;
+    padding: 10px 15px;
+  }
 }
 </style>
diff --git a/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue b/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue
new file mode 100644
index 0000000..24a107d
--- /dev/null
+++ b/src/views/systemSetting/silkStandardSetting/components/silkTableList.vue
@@ -0,0 +1,361 @@
+<template>
+  <div class="page-view">
+    <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>
+            <span>{{ 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 v-if="detailEnter" style="margin: 10px">
+      <div class="add-btn-box" @click="add">
+        <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
+      }
+    },
+    // 浜у搧鍚嶇О
+    // async getProductList() {
+    //   await getProductList({
+    //     productName: "",
+    //     productNumber: "",
+    //     page: 1,
+    //     pageSize: 100
+    //   }).then((res) => {
+    //     console.log(res, "浜у搧鍚嶇О")
+    //     if (res.code === 200) {
+    //       if (res.data.data && res.data.data.length > 0) {
+    //         this.productList = res.data.data
+    //       }
+    //     }
+    //   })
+    // },
+    // 澶氶��
+    handleSelectionChange(val) {
+      this.$emit("getSelectArray", val)
+    },
+
+    // 鏂板
+    add() {
+      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.tableList.tableData.splice(scope.$index, 1)
+      this.$forceUpdate()
+      this.$message.success("鍒犻櫎鎴愬姛锛�")
+      this.$emit("deleteClick", scope)
+    },
+    // 鏂板
+    selClientClick(scope, prop) {
+      console.log(scope, prop)
+      this.projectIndex = scope.$index
+      this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+      this.editSelCommonConfig.isSelectBox = true
+      this.editSelCommonConfig.editVisible = true
+    },
+    // 缂栬緫
+    handleEditClient(scope, prop) {
+      console.log(scope, prop)
+      this.projectIndex = scope.$index
+      this.editSelCommonConfig.title = "浜у搧鍚嶇О"
+      this.editSelCommonConfig.isSelectBox = false
+      this.editSelCommonConfig.editVisible = true
+    },
+    // 鍒犻櫎
+    clearupClient(scope) {
+      this.$emit("clearupProject", this.tableList.tableData, scope.$index)
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.page-view {
+  .el-form-item {
+    margin-bottom: 0;
+    .custom-name {
+      display: flex;
+      .common-select-btn {
+        margin-left: 5px;
+        font-size: 18px;
+        cursor: pointer;
+        color: #ff0000;
+      }
+    }
+  }
+  .add-btn-box {
+    font-size: 26px;
+    color: #5582f3;
+    margin-left: 50px;
+    cursor: pointer;
+  }
+}
+::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/silkStandardSetting/index.vue b/src/views/systemSetting/silkStandardSetting/index.vue
index 7584acc..43fb89c 100644
--- a/src/views/systemSetting/silkStandardSetting/index.vue
+++ b/src/views/systemSetting/silkStandardSetting/index.vue
@@ -1,21 +1,139 @@
 <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>
+          <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"
+        >
+        </SilkTableList>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
+import SilkTableList from "@/views/systemSetting/silkStandardSetting/components/silkTableList"
 export default {
   name: "silkStandardSetting",
   props: {},
-  components: {},
+  components: { SilkTableList },
   mixins: [],
   computed: {},
   data() {
-    return {}
+    return {
+      isEdit: false,
+      silkTableList: {},
+      tableData: []
+    }
   },
-  created() {},
-  methods: {}
+  created() {
+    this.setTableForm()
+  },
+  methods: {
+    setTableForm() {
+      this.silkTableList = {
+        tableData: this.tableData,
+        isReturn: false,
+        tableColumn: [
+          { label: "妫�鏌ラ」鐩悕绉�", prop: "projectName", projectName: true },
+          { label: "寮�濮嬬氦搴�", prop: "start", inputFloat: true },
+          { label: "缁撴潫绾ゅ害", prop: "end", inputFloat: true },
+          { label: "閲庣氦", prop: "price1", inputFloat: true },
+          { label: "澶ч噹", prop: "price2", inputFloat: true },
+          { label: "鐗归噹", prop: "price3", inputFloat: true }
+        ]
+      }
+    },
+    // 鎼滅储
+    onFilterSearch(searchText) {
+      console.log(searchText)
+    },
+    // 鏂板
+    addBtnClick() {
+      this.tableData.push({
+        projectName: "",
+        start: 0,
+        end: 0,
+        price1: 0,
+        price2: 0,
+        price3: 0
+      })
+    },
+    // 鍒锋柊
+    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
+    }
+  }
 }
 </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>

--
Gitblit v1.8.0