From 245912b3b595400ecdd5965ce5e466d190f06ae4 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期三, 12 七月 2023 19:08:41 +0800
Subject: [PATCH] 新增后台配置模块

---
 src/views/sales/generatePlan/AddGeneratePlanDialog.vue           |   25 -
 vue.config.js                                                    |    8 
 src/views/service/serviceFollowup/AddServiceFollowupDialog.vue   |   20 -
 src/components/makepager/SearchCommonView.vue                    |    2 
 src/views/sales/salesDetails/AddSalesDetailsDialog.vue           |   25 -
 src/components/makepager/TableCommonView.vue                     |   22 
 src/views/other/commonDialog/HighViewScopeDialog.vue             |  162 ++++++++
 src/views/other/error/404.vue                                    |    0 
 src/views/backgroundConfig/memberManage/index.vue                |  197 ++++++++++
 src/views/service/orderManage/AddOrderManageDialog.vue           |   20 -
 src/views/backgroundConfig/index.vue                             |   21 +
 src/views/backgroundConfig/rolePermssion/index.vue               |  120 ++++++
 src/views/custom/followupRecords/AddFollowupRecordsDialog.vue    |   20 -
 src/components/layout/components/appsidebar/index.vue            |   10 
 src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue |   22 -
 src/views/service/serviceContract/AddServiceContractDialog.vue   |   25 -
 src/components/makepager/PublicFunctionBtnView.vue               |   53 ++
 src/views/other/login/index.vue                                  |    0 
 src/views/other/commonDialog/QueryClassSettingDialog.vue         |   20 -
 src/views/sales/masterOrder/AddMasterOrderDialog.vue             |   25 -
 src/views/sales/salesReturn/AddSalesReturnDialog.vue             |   25 -
 src/views/custom/contacts/AddContactsDialog.vue                  |   20 -
 src/views/sales/refundForm/AddRefundFormDialog.vue               |   25 -
 src/router/backgroundConfig/index.js                             |   27 +
 src/router/index.js                                              |   14 
 src/views/custom/customManage/AddCustomManageDialog.vue          |   20 -
 src/assets/style/reset-element.scss                              |   24 +
 src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue   |   20 -
 src/assets/style/index.scss                                      |    2 
 src/views/custom/salesLead/AddSalesLeadDialog.vue                |   22 -
 src/assets/style/variable.scss                                   |   23 +
 src/views/sales/quotation/AddQuotationDialog.vue                 |   25 -
 src/views/sales/subOrder/AddSubOrderDialog.vue                   |   25 -
 src/views/sales/contractManage/AddContractManageDialog.vue       |   25 -
 34 files changed, 673 insertions(+), 421 deletions(-)

diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss
index 7ca885b..555ade6 100644
--- a/src/assets/style/index.scss
+++ b/src/assets/style/index.scss
@@ -1 +1,3 @@
 @import "element-ui/lib/theme-chalk/index.css";
+@import "./variable.scss";
+@import "./reset-element.scss";
diff --git a/src/assets/style/reset-element.scss b/src/assets/style/reset-element.scss
new file mode 100644
index 0000000..fc66289
--- /dev/null
+++ b/src/assets/style/reset-element.scss
@@ -0,0 +1,24 @@
+// element 鏍峰紡琛ヤ竵
+.el-dialog__header {
+  padding: 12.5px 10px;
+  border-bottom: 1px solid #e5e5e5;
+  .el-dialog__title {
+    font-size: 15px;
+    color: #323232;
+    font-weight: bold;
+  }
+}
+.el-dialog__body {
+  padding: 0px;
+}
+.el-dialog__footer {
+  padding: 0px;
+  text-align: center;
+  box-sizing: border-box;
+  border-top: 1px solid #dadee5;
+}
+.product-view {
+  .el-form-item__label {
+    padding: 0;
+  }
+}
diff --git a/src/assets/style/variable.scss b/src/assets/style/variable.scss
new file mode 100644
index 0000000..3f1ad83
--- /dev/null
+++ b/src/assets/style/variable.scss
@@ -0,0 +1,23 @@
+// 涓昏壊
+$color-primary: #2a78fb;
+
+// 杈呭姪鑹�
+$color-info: #909399;
+$color-success: #67c23a;
+$color-warning: #e6a23c;
+$color-danger: #f56c6c;
+
+// 鏂囧瓧
+$color-text-main: #303133;
+$color-text-normal: #606266;
+$color-text-sub: #909399;
+$color-text-placehoder: #c0c4cc;
+
+// 杈规
+$color-border-1: #dcdfe6;
+$color-border-2: #e4e7ed;
+$color-border-3: #ebeef5;
+$color-border-4: #f2f6fc;
+
+// 鑳屾櫙
+$color-bg: #f8f8f9;
diff --git a/src/components/layout/components/appsidebar/index.vue b/src/components/layout/components/appsidebar/index.vue
index d2d5ea1..74fa2a2 100644
--- a/src/components/layout/components/appsidebar/index.vue
+++ b/src/components/layout/components/appsidebar/index.vue
@@ -48,6 +48,14 @@
           <el-menu-item index="/service/serviceFollowup">鏈嶅姟鍥炶鍗�</el-menu-item>
           <el-menu-item index="/service/serviceFeeManage">鏈嶅姟鏀惰垂绠$悊</el-menu-item>
         </el-submenu>
+        <el-submenu index="4">
+          <template slot="title">
+            <i class="el-icon-location"></i>
+            <span>鍚庡彴閰嶇疆</span>
+          </template>
+          <el-menu-item index="/backgroundConfig/memberManage">鎴愬憳绠$悊</el-menu-item>
+          <el-menu-item index="/backgroundConfig/rolePermssion">瑙掕壊鏉冮檺</el-menu-item>
+        </el-submenu>
       </el-menu>
     </div>
   </div>
@@ -75,7 +83,7 @@
       // console.log(this.$route.name)
     },
     handleOpen(index) {
-      console.log("aaa", index)
+      console.log(index)
     },
     handleClose() {}
   }
diff --git a/src/components/makepager/PublicFunctionBtnView.vue b/src/components/makepager/PublicFunctionBtnView.vue
index 5531e6e..b4a9f0b 100644
--- a/src/components/makepager/PublicFunctionBtnView.vue
+++ b/src/components/makepager/PublicFunctionBtnView.vue
@@ -3,8 +3,8 @@
     <div class="btn-list">
       <el-button size="small" type="text" class="blue" @click="addBtnClick">鏂板缓</el-button>
       <el-button v-if="receive" size="small" type="text" class="gray" @click="receiveBtnClick">棰嗗彇</el-button>
-      <el-button size="small" type="text" class="gray" @click="allocationBtnClick">鍒嗛厤</el-button>
-      <el-button size="small" type="text" class="gray" @click="deleteBtnClick">鍒犻櫎</el-button>
+      <el-button v-if="allocation" size="small" type="text" class="gray" @click="allocationBtnClick">鍒嗛厤</el-button>
+      <el-button v-if="deleteButton" size="small" type="text" class="gray" @click="deleteBtnClick">鍒犻櫎</el-button>
       <el-button v-if="submitApproval" size="small" type="text" class="gray width64" @click="submitApprovalBtnClick"
         >鎻愪氦瀹℃壒</el-button
       >
@@ -12,6 +12,13 @@
         >鏌ラ噸</el-button
       >
       <el-button v-if="importButton" size="small" type="text" class="gray" @click="importBtnClick">瀵煎叆</el-button>
+      <el-button v-if="departmentSet" size="small" type="text" class="gray" @click="departmentSetClick"
+        >閮ㄩ棬璁剧疆</el-button
+      >
+      <el-button v-if="dataRange" size="small" type="text" class="gray" @click="dataRangeClick">鏁版嵁鑼冨洿</el-button>
+      <el-button v-if="loginControl" size="small" type="text" class="gray" @click="loginControlClick"
+        >鐧诲綍鎺у埗</el-button
+      >
 
       <el-dropdown trigger="click">
         <div class="gray btn-icon" @click="operateBtnClick">
@@ -32,7 +39,7 @@
           <el-option v-for="item in viewScopeOptions" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
-        <div class="view-scope-btn">
+        <div class="view-scope-btn" @click="viewScopeClick">
           <i class="el-icon-user"></i>
         </div>
       </div>
@@ -53,16 +60,28 @@
         <i class="el-icon-postcard"></i>
       </div>
     </div>
+    <!-- 楂樼骇鏌ョ湅鑼冨洿 -->
+    <HighViewScopeDialog v-if="highViewScopeConfig.visible" :editCommonConfig="highViewScopeConfig" />
   </div>
 </template>
 
 <script>
+import HighViewScopeDialog from "@/views/other/commonDialog/HighViewScopeDialog"
 export default {
   name: "PublicFunctionBtnView",
+  components: { HighViewScopeDialog },
   props: {
     receive: {
       type: Boolean,
       default: false
+    },
+    allocation: {
+      type: Boolean,
+      default: true
+    },
+    deleteButton: {
+      type: Boolean,
+      default: true
     },
     duplicateCheck: {
       type: Boolean,
@@ -79,6 +98,18 @@
     importButton: {
       type: Boolean,
       default: true
+    },
+    departmentSet: {
+      type: Boolean,
+      default: false
+    },
+    dataRange: {
+      type: Boolean,
+      default: false
+    },
+    loginControl: {
+      type: Boolean,
+      default: false
     },
     mapButton: {
       type: Boolean,
@@ -107,7 +138,11 @@
         { value: "5", label: "鍏变韩缁欐垜鐨�" },
         { value: "6", label: "鎴戝叡浜粰浠栦汉鐨�" }
       ],
-      viewScopeValue: "鍏ㄩ儴"
+      viewScopeValue: "鍏ㄩ儴",
+      highViewScopeConfig: {
+        visible: false,
+        infomation: {}
+      }
     }
   },
   methods: {
@@ -127,6 +162,16 @@
     duplicateCheckBtnClick() {},
     // 瀵煎叆
     importBtnClick() {},
+    // 閮ㄩ棬璁剧疆
+    departmentSetClick() {},
+    // 鏁版嵁鑼冨洿
+    dataRangeClick() {},
+    // 鐧诲綍鎺у埗
+    loginControlClick() {},
+    // 楂樼骇鏌ョ湅鑼冨洿
+    viewScopeClick() {
+      this.highViewScopeConfig.visible = true
+    },
     // 鎿嶄綔
     operateBtnClick() {},
     // 鍒楄〃
diff --git a/src/components/makepager/SearchCommonView.vue b/src/components/makepager/SearchCommonView.vue
index 6eddf4f..c53477c 100644
--- a/src/components/makepager/SearchCommonView.vue
+++ b/src/components/makepager/SearchCommonView.vue
@@ -89,7 +89,7 @@
 </template>
 
 <script>
-import QueryClassSettingDialog from "@/views/other/QueryClassSettingDialog.vue"
+import QueryClassSettingDialog from "@/views/other/commonDialog/QueryClassSettingDialog"
 
 export default {
   name: "SearchCommonView",
diff --git a/src/components/makepager/TableCommonView.vue b/src/components/makepager/TableCommonView.vue
index c799a17..5583db0 100644
--- a/src/components/makepager/TableCommonView.vue
+++ b/src/components/makepager/TableCommonView.vue
@@ -13,7 +13,8 @@
       @selection-change="handleSelectionChange"
       :header-cell-style="{ background: '#ECF4FF', color: '#666' }"
     >
-      <el-table-column type="selection" width="40"> </el-table-column>
+      <el-table-column v-if="selectBox" type="selection" width="40"> </el-table-column>
+
       <el-table-column
         v-for="(item, i) in tableList.tableColumn"
         :key="i"
@@ -26,7 +27,7 @@
       >
         <template slot-scope="scope">
           <span v-if="item.price">{{ "锟�" + number_format(scope.row[item.prop], 2, ".", ",") }}</span>
-          <span v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</span>
+          <div v-else-if="item.status" :class="scope.row.status">{{ scope.row[item.prop] }}</div>
           <span v-else>{{ scope.row[item.prop] }}</span>
         </template>
       </el-table-column>
@@ -42,10 +43,16 @@
 export default {
   name: "TableCommonView",
   props: {
+    selectBox: {
+      type: Boolean,
+      default: true
+    },
+
     tableList: {
       type: Object,
       default: () => {
         return {
+          selectBox: true,
           tableInfomation: [], // 鎺ュ彛杩斿洖鏁版嵁
           tableColumn: [
             // table琛ㄥ崟
@@ -104,19 +111,19 @@
             sums[index] = "鏈〉鎬昏"
           }
           const values = data.map((item) => Number(item[column.property]))
-          // if (column.property === this.showSummary.sumProp) {
           if (this.showSummary.sumProp.includes(column.property)) {
             sums[index + 1] = values.reduce((prev, curr) => {
               const value = Number(curr)
               if (!isNaN(value)) {
-                return this.number_format(prev + curr, 2, ".", ",")
+                return prev + curr
               } else {
-                return this.number_format(prev, 2, ".", ",")
+                return prev
               }
             }, 0)
             sums[index + 1]
           }
         })
+        console.log(sums)
         return sums
       }
     },
@@ -159,9 +166,10 @@
   margin-right: 10px;
   margin-bottom: 40px;
   .blue {
-    padding: 10px;
+    width: 70px;
+    text-align: center;
     color: #fff;
-    background-color: blue;
+    background-color: $color-primary;
     border-radius: 4px;
   }
 }
diff --git a/src/router/backgroundConfig/index.js b/src/router/backgroundConfig/index.js
new file mode 100644
index 0000000..f25b109
--- /dev/null
+++ b/src/router/backgroundConfig/index.js
@@ -0,0 +1,27 @@
+// const type from '@/router/deployCode'
+
+const memberManage = (resolve) => require(["@/views/backgroundConfig/memberManage/index"], resolve) // 鎴愬憳绠$悊
+const rolePermssion = (resolve) => require(["@/views/backgroundConfig/rolePermssion/index"], resolve) // 瑙掕壊鏉冮檺
+
+const appconfig = [
+  {
+    path: "/backgroundConfig/memberManage",
+    name: "memberManage",
+    component: memberManage,
+    meta: {
+      title: "鎴愬憳绠$悊",
+      requireAuth: true
+    }
+  },
+  {
+    path: "/backgroundConfig/rolePermssion",
+    name: "rolePermssion",
+    component: rolePermssion,
+    meta: {
+      title: "瑙掕壊鏉冮檺",
+      requireAuth: true
+    }
+  }
+]
+
+export default appconfig
diff --git a/src/router/index.js b/src/router/index.js
index bf575a7..4b2d5df 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -5,12 +5,14 @@
 import customRouter from "./custom/index.js"
 import salesRouter from "./sales/index.js"
 import serviceRouter from "./service/index.js"
+import backgroundConfigRouter from "./backgroundConfig/index.js"
 
 Vue.use(Router)
 const login = (resolve) => require(["@/views/login/index"], resolve)
 const custom = (resolve) => require(["@/views/custom/index"], resolve)
 const sales = (resolve) => require(["@/views/sales/index"], resolve)
 const service = (resolve) => require(["@/views/service/index"], resolve)
+const background = (resolve) => require(["@/views/backgroundConfig/index"], resolve)
 
 export const routes = [
   {
@@ -42,6 +44,16 @@
       title: "鏈嶅姟绠$悊",
       isAllways: true
     }
+  },
+  {
+    path: "background", // 鍚庡彴璁剧疆
+    name: "background",
+    component: background,
+    children: backgroundConfigRouter,
+    meta: {
+      title: "鍚庡彴璁剧疆",
+      isAllways: true
+    }
   }
 ]
 export const constantRoutes = [
@@ -69,7 +81,7 @@
   },
   {
     path: "*",
-    component: () => import("@/views/error/404"),
+    component: () => import("@/views/other/error/404"),
     meta: {
       title: "404"
     }
diff --git a/src/views/backgroundConfig/index.vue b/src/views/backgroundConfig/index.vue
new file mode 100644
index 0000000..b2e8385
--- /dev/null
+++ b/src/views/backgroundConfig/index.vue
@@ -0,0 +1,21 @@
+<template>
+  <div class="content">
+    <router-view />
+  </div>
+</template>
+
+<script>
+export default {
+  name: "BackgroundConfig",
+  props: {}
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.content {
+  width: 100%;
+  background-color: #fff;
+  height: calc(100vh - 60px);
+}
+</style>
diff --git a/src/views/backgroundConfig/memberManage/index.vue b/src/views/backgroundConfig/memberManage/index.vue
new file mode 100644
index 0000000..676c6cf
--- /dev/null
+++ b/src/views/backgroundConfig/memberManage/index.vue
@@ -0,0 +1,197 @@
+<template>
+  <div class="memeber-manage">
+    <div class="left"></div>
+    <div class="right">
+      <SearchCommonView
+        ref="searchCommonView"
+        :query-class-options="queryClassOptions"
+        :search-options="searchOptions"
+      />
+      <div class="btn-pager">
+        <PublicFunctionBtnView
+          :allocation="false"
+          :receive="false"
+          :delete-button="false"
+          :import-button="false"
+          :department-set="true"
+          :data-range="true"
+          :login-control="true"
+          :operates-list="operatesList"
+        />
+        <PagerView class="page" />
+      </div>
+      <TableCommonView ref="tableListRef" :table-list="tableList">
+        <template slot="tableButton">
+          <el-table-column label="鎿嶄綔" width="160">
+            <template slot-scope="scope">
+              <el-button @click="editClick(scope.row)" type="text" size="small">缂栬緫</el-button>
+              <el-button v-if="!scope.row.enableStatus" @click="enableClick(scope.row)" type="text" size="small"
+                >鍚敤</el-button
+              >
+              <el-button v-else @click="stopClick(scope.row)" type="text" size="small">鍋滅敤</el-button>
+              <el-button @click="copyClick(scope.row)" type="text" size="small">澶嶅埗</el-button>
+              <el-button @click="deleteClick(scope.row)" type="text" size="small">鍒犻櫎</el-button>
+            </template>
+          </el-table-column>
+        </template>
+      </TableCommonView>
+    </div>
+
+    <!-- 鏂板缓/缂栬緫 -->
+    <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
+  </div>
+</template>
+
+<script>
+import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
+
+export default {
+  name: "MemberManage",
+  props: {},
+  components: {
+    AddContractManageDialog
+  },
+  computed: {
+    searchCommonHeight() {
+      return this.$refs.searchCommonView.offsetHeight
+    }
+  },
+  data() {
+    return {
+      tableList: {},
+      queryClassOptions: [
+        { value: "1", label: "鍏ㄩ儴" },
+        { value: "2", label: "宸叉壒鍑�" },
+        { value: "3", label: "瀹℃壒涓�" },
+        { value: "4", label: "鏈彁浜�" },
+        { value: "5", label: "宸查┏鍥�" },
+        { value: "6", label: "宸叉嫆缁�" }
+      ],
+      searchOptions: [],
+      operatesList: [
+        { id: "1", name: "鍏变韩" },
+        { id: "2", name: "鎵归噺缂栬緫" },
+        { id: "3", name: "瀵煎嚭" },
+        { id: "4", name: "涓嬭浇鍏ㄩ儴闄勪欢" },
+        { id: "5", name: "鏇存敼鍒涘缓浜�" },
+        { id: "6", name: "鏍戠粨鏋勮缃�" },
+        { id: "7", name: "瀹℃壒璁剧疆" },
+        { id: "8", name: "鎭㈠棰勮鍒楀" }
+      ],
+      editConfig: {
+        visible: false,
+        title: "鏂板缓",
+        infomation: {}
+      }
+    }
+  },
+  created() {
+    this.setTable()
+  },
+  methods: {
+    setTable() {
+      this.tableList = {
+        tableInfomation: [
+          {
+            name: "灏忓垬",
+            account: "xiaoliu",
+            department: "甯傚満閮�",
+            creator: "绯荤粺绠$悊鍛�",
+            rolePermssion: "涓荤",
+            phone: "18511112222",
+            email: "xiaoliu@aaa.ccom",
+            isAdmin: "鏄�",
+            state: "鍦ㄨ亴",
+            enableStatus: true
+          }
+        ],
+        tableColumn: [
+          { label: "濮撳悕", prop: "name", min: 120 },
+          { label: "璐﹀彿", prop: "account", min: 90 },
+          { label: "閮ㄩ棬", prop: "department" },
+          { label: "瑙掕壊鏉冮檺", prop: "rolePermssion", min: 100 },
+          { label: "鎵嬫満", prop: "phone" },
+          { label: "Email", prop: "email" },
+          { label: "鏄惁绠$悊鍛�", prop: "isAdmin", min: 100 },
+          { label: "鐘舵��", prop: "state" }
+        ]
+      }
+      this.searchOptions = []
+      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
+        const label = this.tableList.tableColumn[i].label
+        this.searchOptions.push({ value: (i + 1).toString(), label: label })
+      }
+    },
+    // 鏂板缓
+    addBtnClick() {
+      this.editConfig.visible = true
+      this.editConfig.title = "鏂板缓"
+      this.editConfig.infomation = {
+        customName: "",
+        documentNumber: "ZDYBD01-3",
+        owner: "",
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
+      }
+    },
+    // 缂栬緫
+    editClick(row) {
+      console.log(row)
+      this.editConfig.visible = true
+      this.editConfig.title = "缂栬緫"
+      this.editConfig.infomation = {
+        customName: "",
+        documentNumber: "TKD20230521-12",
+        owner: "",
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
+      }
+    },
+    // 鍚敤
+    enableClick(row) {
+      console.log(row)
+    },
+    // 鍋滅敤
+    stopClick(row) {
+      console.log(row)
+    },
+    // 澶嶅埗
+    copyClick(row) {
+      console.log(row)
+    },
+    // 鍒犻櫎
+    deleteClick(row) {
+      console.log(row)
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.memeber-manage {
+  display: flex;
+  .left {
+    width: 260px;
+    height: 100vh;
+    border-right: 1px solid #ebeef5;
+  }
+  .right {
+    flex: 1;
+    .btn-pager {
+      display: flex;
+      .page {
+        margin-left: auto;
+      }
+    }
+  }
+}
+</style>
diff --git a/src/views/backgroundConfig/rolePermssion/index.vue b/src/views/backgroundConfig/rolePermssion/index.vue
new file mode 100644
index 0000000..7be9125
--- /dev/null
+++ b/src/views/backgroundConfig/rolePermssion/index.vue
@@ -0,0 +1,120 @@
+<template>
+  <div class="role-peimission">
+    <div class="btn-pager">
+      <el-button @click="addpermssionClick" type="primary" size="small">鏂板鏉冮檺</el-button>
+    </div>
+    <TableCommonView ref="tableListRef" :select-box="false" :table-list="tableList">
+      <template slot="tableButton">
+        <el-table-column label="鎿嶄綔" width="320">
+          <template slot-scope="scope">
+            <el-button @click="handleClick(scope.row)" type="text" size="small">缂栬緫</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">澶嶅埗</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">璁剧疆鎴愬憳</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">瀛楁鏉冮檺</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">鍒犻櫎</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">涓婄Щ</el-button>
+            <el-button @click="handleClick(scope.row)" type="text" size="small">涓嬬Щ</el-button>
+          </template>
+        </el-table-column>
+      </template>
+    </TableCommonView>
+    <!-- 鏂板缓/缂栬緫 -->
+    <AddContractManageDialog v-if="editConfig.visible" :edit-common-config="editConfig" />
+  </div>
+</template>
+
+<script>
+import AddContractManageDialog from "@/views/sales/contractManage/AddContractManageDialog"
+
+export default {
+  name: "RoleOeimission",
+  props: {},
+  components: {
+    AddContractManageDialog
+  },
+  computed: {
+    searchCommonHeight() {
+      return this.$refs.searchCommonView.offsetHeight
+    }
+  },
+  data() {
+    return {
+      tableList: {},
+      editConfig: {
+        visible: false,
+        title: "鏂板缓",
+        infomation: {}
+      }
+    }
+  },
+  created() {
+    this.setTable()
+  },
+  methods: {
+    setTable() {
+      this.tableList = {
+        tableInfomation: [
+          {
+            number: "1",
+            owner: "鎬荤粡鐞�",
+            notes: ""
+          }
+        ],
+        tableColumn: [
+          { label: "#", prop: "number", width: 80 },
+          { label: "鏉冮檺鍚嶇О", prop: "owner", width: 160 },
+          { label: "澶囨敞", prop: "notes" }
+        ]
+      }
+      this.searchOptions = []
+      for (let i = 0; i < this.tableList.tableColumn.length; i++) {
+        const label = this.tableList.tableColumn[i].label
+        this.searchOptions.push({ value: (i + 1).toString(), label: label })
+      }
+    },
+    // 鏂板缓
+    addBtnClick() {
+      this.editConfig.visible = true
+      this.editConfig.title = "鏂板缓"
+      this.editConfig.infomation = {
+        customName: "",
+        documentNumber: "ZDYBD01-3",
+        owner: "",
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
+      }
+    },
+    // 缂栬緫
+    handleClick(row) {
+      console.log(row)
+      this.editConfig.visible = true
+      this.editConfig.title = "缂栬緫"
+      this.editConfig.infomation = {
+        customName: "",
+        documentNumber: "TKD20230521-12",
+        owner: "",
+        contractStatus: "",
+        salesQuotation: "",
+        approvalWorkflow: "",
+        approvalSteps: "",
+        approvalPerson: "",
+        approvalOpinion: ""
+      }
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.role-peimission {
+  .btn-pager {
+    margin: 0px 20px 20px;
+    float: right;
+  }
+}
+</style>
diff --git a/src/views/custom/contacts/AddContactsDialog.vue b/src/views/custom/contacts/AddContactsDialog.vue
index 3c83421..3e081e0 100644
--- a/src/views/custom/contacts/AddContactsDialog.vue
+++ b/src/views/custom/contacts/AddContactsDialog.vue
@@ -345,24 +345,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/custom/customManage/AddCustomManageDialog.vue b/src/views/custom/customManage/AddCustomManageDialog.vue
index 1617898..964d923 100644
--- a/src/views/custom/customManage/AddCustomManageDialog.vue
+++ b/src/views/custom/customManage/AddCustomManageDialog.vue
@@ -518,24 +518,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue b/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
index dc48051..3e1c441 100644
--- a/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
+++ b/src/views/custom/followupRecords/AddFollowupRecordsDialog.vue
@@ -330,24 +330,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/custom/salesLead/AddSalesLeadDialog.vue b/src/views/custom/salesLead/AddSalesLeadDialog.vue
index d9dab70..06d40fe 100644
--- a/src/views/custom/salesLead/AddSalesLeadDialog.vue
+++ b/src/views/custom/salesLead/AddSalesLeadDialog.vue
@@ -177,7 +177,7 @@
             contactName: "",
             contactDuties: "",
             phoneNumber: "",
-            businessStatus: "鏂板缓",
+            businessStatus: "",
             businessSource: "1",
             owner: "",
             position: "",
@@ -302,26 +302,6 @@
     background-color: #f5f5f5;
     height: 55px;
     line-height: 55px;
-  }
-}
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
   }
 }
 </style>
diff --git a/src/views/other/commonDialog/HighViewScopeDialog.vue b/src/views/other/commonDialog/HighViewScopeDialog.vue
new file mode 100644
index 0000000..525c815
--- /dev/null
+++ b/src/views/other/commonDialog/HighViewScopeDialog.vue
@@ -0,0 +1,162 @@
+<template>
+  <div class="high-view-scope">
+    <el-dialog
+      title="鏌ヨ鑼冨洿-楂樼骇"
+      :visible.sync="editConfig.visible"
+      :width="dialogWidth"
+      :before-close="handleClose"
+    >
+      <div class="view-sel-bg">
+        <div class="title">鏌ヨ閫夋嫨</div>
+        <el-input v-model="searchInput" size="mini" placeholder="璇疯緭鍏ヨ鏌ユ壘鐨勬垚鍛�"></el-input>
+        <el-checkbox v-model="resignMember">鏄剧ず绂昏亴鎴愬憳</el-checkbox>
+        <el-checkbox v-model="defaultCollapse">瀛愰儴闂ㄩ粯璁ゆ敹璧�</el-checkbox>
+      </div>
+      <div class="view-tree">
+        <el-tree
+          :data="data"
+          show-checkbox
+          default-expand-all
+          node-key="id"
+          ref="tree"
+          highlight-current
+          :props="defaultProps"
+        >
+        </el-tree>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="small" @click="editConfig.visible = false">纭</el-button>
+        <el-button size="small" @click="editConfig.visible = false">鍙栨秷</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "HighViewScopeDialog",
+  props: {
+    editCommonConfig: {
+      type: Object,
+      default: () => {
+        return {
+          visible: false,
+          infomation: {}
+        }
+      }
+    }
+  },
+  components: {},
+  computed: {},
+  data() {
+    return {
+      dialogWidth: "35%",
+      editConfig: this.editCommonConfig,
+      data: [
+        {
+          id: 1,
+          label: "涓婃捣鐏靛綋淇℃伅绉戞妧鏈夐檺鍏徃",
+          children: [
+            {
+              id: 1 - 1,
+              label: "閿�鍞儴",
+              children: [
+                {
+                  id: 1 - 1 - 1,
+                  label: "Mia"
+                },
+                {
+                  id: 1 - 1 - 2,
+                  label: "绯荤粺绠$悊鍛�"
+                },
+                {
+                  id: 1 - 1 - 3,
+                  label: "閿�鍞�"
+                },
+                {
+                  id: 1 - 1 - 4,
+                  label: "閿�鍞�荤洃"
+                },
+                {
+                  id: 1 - 1 - 5,
+                  label: "閿�鍞竴閮�",
+                  children: []
+                },
+                {
+                  id: 1 - 1 - 6,
+                  label: "閿�鍞簩閮�",
+                  children: []
+                }
+              ]
+            },
+            {
+              id: 2 - 1,
+              label: "绠$悊灞�",
+              children: [
+                {
+                  id: 2 - 1 - 1,
+                  label: "BOSS"
+                },
+                {
+                  id: 2 - 1 - 2,
+                  label: "绯荤粺绠$悊鍛�"
+                }
+              ]
+            },
+            {
+              id: 3 - 1,
+              label: "璐㈠姟閮�",
+              children: []
+            },
+            {
+              id: 4 - 1,
+              label: "甯傚満閮�",
+              children: []
+            }
+          ]
+        }
+      ],
+      defaultProps: {
+        children: "children",
+        label: "label"
+      },
+      searchInput: "",
+      resignMember: false,
+      defaultCollapse: false
+    }
+  },
+  created() {},
+  methods: {
+    handleClose() {
+      this.editConfig.visible = false
+    }
+  }
+}
+</script>
+
+<!-- Add "scoped" attribute to limit CSS to this component only -->
+<style lang="scss" scoped>
+.high-view-scope {
+  .view-sel-bg {
+    display: flex;
+    align-items: center;
+    margin: 20px 20px 0;
+    .el-input {
+      width: 240px;
+      margin-left: 5px;
+    }
+    .el-checkbox {
+      margin-left: 5px;
+      margin-right: 0;
+    }
+  }
+  .view-tree {
+    margin: 10px 20px 20px;
+  }
+  .dialog-footer {
+    background-color: #f5f5f5;
+    height: 55px;
+    line-height: 55px;
+  }
+}
+</style>
diff --git a/src/views/other/QueryClassSettingDialog.vue b/src/views/other/commonDialog/QueryClassSettingDialog.vue
similarity index 90%
rename from src/views/other/QueryClassSettingDialog.vue
rename to src/views/other/commonDialog/QueryClassSettingDialog.vue
index b1818c7..a582726 100644
--- a/src/views/other/QueryClassSettingDialog.vue
+++ b/src/views/other/commonDialog/QueryClassSettingDialog.vue
@@ -125,24 +125,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/error/404.vue b/src/views/other/error/404.vue
similarity index 100%
rename from src/views/error/404.vue
rename to src/views/other/error/404.vue
diff --git a/src/views/login/index.vue b/src/views/other/login/index.vue
similarity index 100%
rename from src/views/login/index.vue
rename to src/views/other/login/index.vue
diff --git a/src/views/sales/contractManage/AddContractManageDialog.vue b/src/views/sales/contractManage/AddContractManageDialog.vue
index 57a719b..0e6bdb0 100644
--- a/src/views/sales/contractManage/AddContractManageDialog.vue
+++ b/src/views/sales/contractManage/AddContractManageDialog.vue
@@ -273,29 +273,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/generatePlan/AddGeneratePlanDialog.vue b/src/views/sales/generatePlan/AddGeneratePlanDialog.vue
index 573207a..384ba59 100644
--- a/src/views/sales/generatePlan/AddGeneratePlanDialog.vue
+++ b/src/views/sales/generatePlan/AddGeneratePlanDialog.vue
@@ -251,29 +251,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/masterOrder/AddMasterOrderDialog.vue b/src/views/sales/masterOrder/AddMasterOrderDialog.vue
index 307d059..b9a6702 100644
--- a/src/views/sales/masterOrder/AddMasterOrderDialog.vue
+++ b/src/views/sales/masterOrder/AddMasterOrderDialog.vue
@@ -222,29 +222,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/quotation/AddQuotationDialog.vue b/src/views/sales/quotation/AddQuotationDialog.vue
index 37c0246..156e70b 100644
--- a/src/views/sales/quotation/AddQuotationDialog.vue
+++ b/src/views/sales/quotation/AddQuotationDialog.vue
@@ -362,29 +362,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/refundForm/AddRefundFormDialog.vue b/src/views/sales/refundForm/AddRefundFormDialog.vue
index 7b4587d..adfcbc7 100644
--- a/src/views/sales/refundForm/AddRefundFormDialog.vue
+++ b/src/views/sales/refundForm/AddRefundFormDialog.vue
@@ -380,29 +380,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
index 90bc152..906bc9e 100644
--- a/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
+++ b/src/views/sales/salesDetails/AddSalesDetailsDialog.vue
@@ -411,29 +411,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
index cf9379e..ed9d181 100644
--- a/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
+++ b/src/views/sales/salesOpportunity/AddSalesOpportunityDialog.vue
@@ -548,24 +548,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/sales/salesReturn/AddSalesReturnDialog.vue b/src/views/sales/salesReturn/AddSalesReturnDialog.vue
index 3e1bc1c..d362302 100644
--- a/src/views/sales/salesReturn/AddSalesReturnDialog.vue
+++ b/src/views/sales/salesReturn/AddSalesReturnDialog.vue
@@ -329,29 +329,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/sales/subOrder/AddSubOrderDialog.vue b/src/views/sales/subOrder/AddSubOrderDialog.vue
index 4e198db..0000851 100644
--- a/src/views/sales/subOrder/AddSubOrderDialog.vue
+++ b/src/views/sales/subOrder/AddSubOrderDialog.vue
@@ -304,29 +304,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/service/orderManage/AddOrderManageDialog.vue b/src/views/service/orderManage/AddOrderManageDialog.vue
index 39565a9..7e89add 100644
--- a/src/views/service/orderManage/AddOrderManageDialog.vue
+++ b/src/views/service/orderManage/AddOrderManageDialog.vue
@@ -280,24 +280,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/src/views/service/serviceContract/AddServiceContractDialog.vue b/src/views/service/serviceContract/AddServiceContractDialog.vue
index d79b75d..237dfd5 100644
--- a/src/views/service/serviceContract/AddServiceContractDialog.vue
+++ b/src/views/service/serviceContract/AddServiceContractDialog.vue
@@ -426,29 +426,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-  .product-view {
-    .el-form-item__label {
-      padding: 0;
-    }
-  }
-}
 </style>
diff --git a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
index 750aef2..d69ad2a 100644
--- a/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
+++ b/src/views/service/serviceFeeManage/AddServiceFeeManageDialog.vue
@@ -39,7 +39,7 @@
                     style="width: 63%"
                   >
                     <el-option
-                      v-for="item in serviceCharger"
+                      v-for="item in serviceChargerOptions"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value"
@@ -449,26 +449,6 @@
     background-color: #f5f5f5;
     height: 55px;
     line-height: 55px;
-  }
-}
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
   }
 }
 </style>
diff --git a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
index 55dfdfa..ba384cf 100644
--- a/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
+++ b/src/views/service/serviceFollowup/AddServiceFollowupDialog.vue
@@ -277,24 +277,4 @@
     line-height: 55px;
   }
 }
-::v-deep {
-  .el-dialog__header {
-    padding: 12.5px 10px;
-    border-bottom: 1px solid #e5e5e5;
-    .el-dialog__title {
-      font-size: 15px;
-      color: #323232;
-      font-weight: bold;
-    }
-  }
-  .el-dialog__body {
-    padding: 0px;
-  }
-  .el-dialog__footer {
-    padding: 0px;
-    text-align: center;
-    box-sizing: border-box;
-    border-top: 1px solid #dadee5;
-  }
-}
 </style>
diff --git a/vue.config.js b/vue.config.js
index f67b0ac..dbac5b2 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -50,5 +50,13 @@
         symbolId: "icon-[name]"
       })
       .end()
+  },
+  css: {
+    loaderOptions: {
+      // 璁剧疆 scss 鍏敤鍙橀噺鏂囦欢
+      sass: {
+        additionalData: `@import "@/assets/style/variable.scss";`
+      }
+    }
   }
 }

--
Gitblit v1.8.0