From 8327c022fc0dbd6f094a7bb5f67437ab7ec85d57 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 21 九月 2023 14:05:51 +0800
Subject: [PATCH] 属性对比

---
 platform/src/views/system/user.vue                          |    5 
 h5/main.js                                                  |    5 
 platform/src/views/business/company.vue                     |   18 +
 company_admin/src/api/system/menu.js                        |    2 
 platform/package.json                                       |    2 
 h5/package-lock.json                                        |   26 ++
 h5/pages/index/index.vue                                    |   47 ++-
 platform/src/utils/request.js                               |    4 
 platform/src/components/business/OperaCompanyUserWindow.vue |   10 
 platform/src/components/business/OperaGoodsWindow.vue       |    8 
 platform/.env.production                                    |   11 
 h5/static/default_nodata@2x.png                             |    0 
 h5/components/bigImg1.vue                                   |  140 ++++++++++++
 h5/components/noData.vue                                    |   27 ++
 platform/.env.development                                   |    6 
 platform/src/components/common/GlobalAlertWindow.vue        |    1 
 platform/src/views/business/category.vue                    |    9 
 platform/src/api/business/fileRecord.js                     |    8 
 platform/src/views/business/fileRecord.vue                  |  119 ++++++++++
 platform/src/components/business/OperaCompanyWindow.vue     |   46 +++
 h5/components/bigImg.vue                                    |    4 
 platform/src/assets/logo.png                                |    0 
 h5/pages/login/login.vue                                    |    1 
 platform/src/components/system/user/OperaUserWindow.vue     |    6 
 platform/public/favicon.ico                                 |    0 
 platform/public/template/goods_import_modle.xlsx            |    0 
 platform/src/utils/form.js                                  |   83 +++++++
 company_admin/.env.development                              |    6 
 platform/src/views/business/goods.vue                       |   43 ++-
 29 files changed, 551 insertions(+), 86 deletions(-)

diff --git a/company_admin/.env.development b/company_admin/.env.development
index f27a4ff..02e8212 100644
--- a/company_admin/.env.development
+++ b/company_admin/.env.development
@@ -3,8 +3,12 @@
 
 # VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
 
+<<<<<<< HEAD
 VUE_APP_API = 'http://192.168.0.35:10022/'
+=======
+# VUE_APP_API = 'http://192.168.0.15:10024/'
+>>>>>>> 3fbfdefe98e5d35e32d74138ce73a1b4e2fe5465
 
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_web_interface/'
+VUE_APP_API = 'https://dmtest.ahapp.net/preselect_web_interface/'
 
 # VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
\ No newline at end of file
diff --git a/company_admin/src/api/system/menu.js b/company_admin/src/api/system/menu.js
index 19f25a0..0d3d593 100644
--- a/company_admin/src/api/system/menu.js
+++ b/company_admin/src/api/system/menu.js
@@ -36,7 +36,7 @@
 
 // 鏌ヨ鑿滃崟鏍�
 export function fetchMenuTree () {
-  return request.get('/system/menu/treeNodes')
+  return request.get('/system/menu/treeNodes?type=1')
 }
 
 // 鎺掑簭
diff --git a/h5/components/bigImg.vue b/h5/components/bigImg.vue
index ead3946..2cf1eef 100644
--- a/h5/components/bigImg.vue
+++ b/h5/components/bigImg.vue
@@ -6,8 +6,8 @@
 				<view class="img_content_tu_nr">
 					<swiper style="width: 100%; height: 100%;" @change="handlechange" :current="mycurrent" :indicator-dots="false"  :circular="true" :interval="1000" :duration="1000">
 						<swiper-item v-for="(item,index) in imgList" :key="index">
-							<view :class="['swiper-item',index==mycurrent ? 'active' : '']">
-								<image :src="item" style="width: 100%;height: 100%;" mode="aspectFit" />
+							<view :class="['swiper-item',index == mycurrent ? 'active' : '']">
+								<image :src="item" style="width: 150%;height: 150%;" mode="aspectFit" />
 							</view>
 						</swiper-item>
 					</swiper>
diff --git a/h5/components/bigImg1.vue b/h5/components/bigImg1.vue
new file mode 100644
index 0000000..404f165
--- /dev/null
+++ b/h5/components/bigImg1.vue
@@ -0,0 +1,140 @@
+<template>
+	<view class="img" :style="{ opacity: opacity, zIndex: zindex }">
+		<view class="img_content">
+			<view class="img_content_tu">
+				<image class="left" src="@/static/ic_left@2x.png" mode="widthFix" @click="jian"></image>
+				<view class="img_content_tu_nr">
+					<swiper style="width: 100%; height: 100%;" @change="handlechange" :current="mycurrent" :indicator-dots="false"  :circular="true" :interval="1000" :duration="1000">
+						<swiper-item v-for="(item,index) in imgList" :key="index">
+							<view :class="['swiper-item',index == mycurrent ? 'active' : '']">
+								<image :src="item" style="width: 100%;height: 100%;" mode="aspectFit" />
+							</view>
+						</swiper-item>
+					</swiper>
+				</view>
+				<image class="right" src="@/static/ic_right@2x.png" mode="widthFix" @click="add"></image>
+			</view>
+			<view class="img_content_close">
+				<image src="@/static/ic_close@2x.png" mode="widthFix" @click="close"></image>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				opacity: 0,
+				zindex: '-1',
+				mycurrent: 0
+			}
+		},
+		props: {
+			imgList: {
+				type: Array,
+				default: () => []
+			}
+		},
+		methods: {
+			add() {
+				if (this.imgList.length - 1 === this.mycurrent) return
+				this.mycurrent++
+			},
+			jian() {
+				if (this.mycurrent === 0) return
+				this.mycurrent--
+			},
+			handlechange(e){
+				this.mycurrent=e.detail.current
+			},
+			open(i) {
+				this.mycurrent = i
+				this.zindex = 3
+				this.opacity = 1
+			},
+			close() {
+				this.zindex = '-1'
+				this.opacity = 0
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.img {
+		width: 100vw;
+		height: 100vh;
+		background: rgba(0,0,0,0.4);
+		position: fixed;
+		transition: .2s;
+		top: 0;
+		left: 0;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		
+		.img_content {
+			display: flex;
+			flex-direction: column;
+			.img_content_tu {
+				display: flex;
+				align-items: center;
+				.img_content_tu_nr {
+					width: 600px;
+					height: 600px;
+					padding: 30px;
+					box-sizing: border-box;
+					border-radius: 8px;
+					margin: 0 32px;
+					display: flex;
+					align-items: center;
+					flex-wrap: nowrap;
+					.swiper-item{
+						width: 100%;
+						border-radius: 30rpx;
+						overflow: hidden;
+						// 鍍忚繖绉嶅寮犺疆鎾浘鍚屾椂鍑虹幇鍦ㄤ竴灞忕殑鎯呭喌涓嬪氨涓嶈鎸囧畾width浜嗭紝涓嶇劧浣犱細鍙戠幇previous-margin鍜� next-margin浼氬嚭鐜版兂涓嶅埌鐨勬晥鏋�
+						// 濡傛灉鎯宠璁剧疆瀹芥瘡涓�寮犺疆鎾浘鐨勫搴︼紝鍙渶瑕佽缃畃revious-margin鍜宯ext-margin灏卞彲浠ヤ簡锛屾兂瑕佽缃珮搴︾洿鎺ユ敼涓嬮潰鐨刪eight灏卞彲浠ヤ簡
+						// width: 450rpx;
+						height: 100%;
+						// transform: scale(1);
+						// transition: all 0.5s ease;
+						text-align: center;
+						// transition: all 0.5s ease-in-out;
+					}
+					.img_content_tu_nr_item {
+						width: 100%;
+						height: 600px;
+						image {
+							width: 100%;
+							height: 100%;
+						}
+					}
+				}
+				.left {
+					width: 80px;
+					height: 80px;
+					cursor: pointer;
+				}
+				.right {
+					width: 80px;
+					height: 80px;
+					cursor: pointer;
+				}
+			}
+			.img_content_close {
+				width: 100%;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				margin-top: 40px;
+				image {
+					width: 60px;
+					height: 60px;
+					cursor: pointer;
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/h5/components/noData.vue b/h5/components/noData.vue
new file mode 100644
index 0000000..35c85b8
--- /dev/null
+++ b/h5/components/noData.vue
@@ -0,0 +1,27 @@
+<template>
+	<view class="no">
+		<image src="@/static/default_nodata@2x.png" mode="widthFix"></image>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"noData"
+	}
+</script>
+
+<style lang="scss" scoped>
+	.no {
+		width: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		// margin-top: 36px;
+		padding: 36px 0;
+		box-sizing: border-box;
+		image {
+			width: 268px;
+			height: 268px;
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/h5/main.js b/h5/main.js
index 7bead7b..e9c6651 100644
--- a/h5/main.js
+++ b/h5/main.js
@@ -7,6 +7,11 @@
 
 import store from './store/index.js'
 
+import 'viewerjs/dist/viewer.css'
+import Viewer from 'v-viewer'
+
+Vue.use(Viewer)
+
 Vue.prototype.$store = store;
 
 try {
diff --git a/h5/package-lock.json b/h5/package-lock.json
index 58b4e49..839857b 100644
--- a/h5/package-lock.json
+++ b/h5/package-lock.json
@@ -1,6 +1,32 @@
 {
+<<<<<<< HEAD
+  "requires": true,
+  "lockfileVersion": 1,
+  "dependencies": {
+    "throttle-debounce": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+      "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
+    },
+    "v-viewer": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/v-viewer/-/v-viewer-1.6.4.tgz",
+      "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+      "requires": {
+        "throttle-debounce": "^2.0.1",
+        "viewerjs": "^1.5.0"
+      }
+    },
+    "viewerjs": {
+      "version": "1.11.6",
+      "resolved": "https://registry.npmjs.org/viewerjs/-/viewerjs-1.11.6.tgz",
+      "integrity": "sha512-TlhdSp2oEOLFXvEp4psKaeTjR5zBjTRcM/sHUN8PkV1UWuY8HKC8n7GaVdW5Xqnwdr/F1OmzLik1QwDjI4w/nw=="
+    }
+  }
+=======
   "name": "h5",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {}
+>>>>>>> 1ee5043af9ee5e53acb52a70fd93c4656e8bbb44
 }
diff --git a/h5/pages/index/index.vue b/h5/pages/index/index.vue
index 19f0bfb..2336445 100644
--- a/h5/pages/index/index.vue
+++ b/h5/pages/index/index.vue
@@ -198,16 +198,19 @@
 						</view>
 					</view>
 					<view class="productPage_shop" v-if="status === 1 && !pkcontent">
-						<view class="productPage_shop_item" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)">
-							<view class="productPage_shop_item_img">
-								<image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image>
+						<noData v-if="shopPageData.length === 0 && shopPageDataSou.length === 0" />
+						<template v-else>
+							<view class="productPage_shop_item" v-for="(item, index) in isSOU ? shopPageDataSou : shopPageData" :key="index" @click="clickshoppageItem(item)">
+								<view class="productPage_shop_item_img">
+									<image :src="item.imgurl ? item.prefixUrl + item.imgurl : ''" mode="widthFix"></image>
+								</view>
+								<!-- stringOperations(item.name, 6) -->
+								<text>{{item.name}}</text>
 							</view>
-							<!-- stringOperations(item.name, 6) -->
-							<text>{{item.name}}</text>
-						</view>
-						<view class="productPage_shop_zw"></view>
-						<view class="productPage_shop_zw"></view>
-						<view class="productPage_shop_zw"></view>
+							<view class="productPage_shop_zw"></view>
+							<view class="productPage_shop_zw"></view>
+							<view class="productPage_shop_zw"></view>
+						</template>
 					</view>
 					 <!-- v-if="status === 2" -->
 					<view class="productPage_parameter" v-if="isPK && pkcontent">
@@ -247,6 +250,10 @@
 			<bigImg
 				ref="bigImg"
 				:imgList="imgList"/>
+			<!-- 鏌ョ湅澶у浘 -->
+			<bigImg1
+				ref="bigImg1"
+				:imgList="imgList"/>
 			<!-- 鎼滅储 -->
 			
 			<!-- 鎼滅储缁勪欢 -->
@@ -264,7 +271,9 @@
 
 <script>
 	import bigImg from '@/components/bigImg.vue'
+	import bigImg1 from '@/components/bigImg1.vue'
 	import search from '@/components/search.vue'
+	import noData from '@/components/noData.vue'
 	import { mapState } from 'vuex'
 	import { categoryList, goodsList, brandList, h5Image, goodsPage, listForH5 } from '@/apis/index.js'
 	export default {
@@ -343,7 +352,7 @@
 				page: 1
 			}
 		},
-		components: { bigImg, search },
+		components: { bigImg, search, noData, bigImg1 },
 		onLoad() {
 			var that = this
 			// 鐩戝惉閿洏缁勫悎閿�
@@ -699,7 +708,12 @@
 						})
 					}
 				})
-				this.$refs.bigImg.open(0)
+				// console.log(this.imgList)
+				this.$viewerApi({
+				  images: this.imgList,
+				})
+				// this.$refs.bigImg.open(0)
+				// this.$refs.bigImg1.open(0)
 			},
 			empty() {
 				this.shopList = []
@@ -1185,7 +1199,7 @@
 				margin-top: 16px;
 				.commodityFrom_head {
 					width: 100%;
-					height: 60px;
+					height: 45px;
 					padding: 10px 8px;
 					box-sizing: border-box;
 					background: rgba(0,224,255,0.24) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
@@ -1232,7 +1246,7 @@
 						flex-direction: column;
 						.commodityFrom_body_content_item {
 							width: 100%;
-							height: 56px;
+							height: 45px;
 							display: flex;
 							align-items: center;
 							margin-bottom: 6px;
@@ -1253,7 +1267,7 @@
 								opacity: 0;
 								transform: translate(0%, 0%);
 								z-index: -1;
-								height: 56px;
+								height: 45px;
 								display: flex;
 								align-items: center;
 								background: rgba(0,224,255,0.3);
@@ -1402,7 +1416,7 @@
 					}
 					.commodityFrom_body_total {
 						width: 100%;
-						height: 56px;
+						height: 45px;
 						display: flex;
 						align-items: center;
 						.commodityFrom_body_total_item {
@@ -1494,7 +1508,6 @@
 					}
 				}
 			}
-			
 			.productPage {
 				width: 100%;
 				padding: 0 22px;
@@ -1502,7 +1515,7 @@
 				margin-top: 16px;
 				.productPage_head {
 					width: 100%;
-					height: 60px;
+					height: 45px;
 					display: flex;
 					align-items: center;
 					background: rgba(0,224,255,0.34) linear-gradient(180deg, rgba(255,255,255,0.35) 0%, rgba(0,0,0,0.21) 100%);
diff --git a/h5/pages/login/login.vue b/h5/pages/login/login.vue
index 56f87b6..ac180e9 100644
--- a/h5/pages/login/login.vue
+++ b/h5/pages/login/login.vue
@@ -45,7 +45,6 @@
 					password: this.from.password,
 					username: this.from.account
 				}).then(async(res) => {
-					alert(10)
 					this.$store.commit('setToken', res.data)
 					let user = await getUserInfo()
 					this.$store.commit('setUser', user.data)
diff --git a/h5/static/default_nodata@2x.png b/h5/static/default_nodata@2x.png
new file mode 100644
index 0000000..0ef2f94
--- /dev/null
+++ b/h5/static/default_nodata@2x.png
Binary files differ
diff --git a/platform/.env.development b/platform/.env.development
index 360f8b7..c53b589 100644
--- a/platform/.env.development
+++ b/platform/.env.development
@@ -7,9 +7,9 @@
 # 浠诲悍
 # VUE_APP_API = 'http://192.168.0.15:10017/'
 # 鐒︽澗
-VUE_APP_API = 'http://192.168.0.36:10011'
+VUE_APP_API = 'http://192.168.0.36:10023'
 # 姹熻悕
-VUE_APP_API = 'http://192.168.0.35:10011'
+# VUE_APP_API = 'http://192.168.0.35:10023'
 
-#娴嬭瘯鏈嶅姟鍣�
+# #娴嬭瘯鏈嶅姟鍣�
 # VUE_APP_API = 'https://dmtest.ahapp.net/preselect_admin_interface'
diff --git a/platform/.env.production b/platform/.env.production
index eb6b15b..5c2b951 100644
--- a/platform/.env.production
+++ b/platform/.env.production
@@ -1,12 +1,11 @@
 # 鐢熶骇鐜閰嶇疆
 NODE_ENV = 'production'
 
-# VUE_APP_API = 'https://dmtest.ahapp.net/preselect_interface/'
 
-VUE_APP_API = 'http://127.0.0.1/'
+VUE_APP_CONTEXT_PATH = '/admin'
+VUE_APP_API_PREFIX = '/admin_interface'
 
-# VUE_APP_API = 'https://dm.ahapp.net/preselect_interface/'
 
-# VUE_APP_API = 'http://yx.doumee.com/preselect_interface/'
-
-# VUE_APP_API = 'http://mjyx.doumee.com/preselect_interface/'
\ No newline at end of file
+# http://yx.ahapp.net/admin_interface/doc.html
+# VUE_APP_API = 'https://yx.ahapp.net/admin_interface'
+VUE_APP_API = 'http://127.0.0.1:10023/
\ No newline at end of file
diff --git a/platform/package.json b/platform/package.json
index bc7b751..14effa1 100644
--- a/platform/package.json
+++ b/platform/package.json
@@ -4,7 +4,7 @@
   "private": true,
   "scripts": {
     "serve": "vue-cli-service serve",
-    "build": "vue-cli-service build",
+    "build:pro": "vue-cli-service build",
     "build:dev": "vue-cli-service build --mode staging",
     "lint": "vue-cli-service lint",
     "fix": "eslint --ext .js,.vue src --fix"
diff --git a/platform/public/favicon.ico b/platform/public/favicon.ico
index c6ff5db..64ccd74 100644
--- a/platform/public/favicon.ico
+++ b/platform/public/favicon.ico
Binary files differ
diff --git a/platform/public/template/goods_import_modle.xlsx b/platform/public/template/goods_import_modle.xlsx
index 84a9c9a..87678a5 100644
--- a/platform/public/template/goods_import_modle.xlsx
+++ b/platform/public/template/goods_import_modle.xlsx
Binary files differ
diff --git a/platform/src/api/business/fileRecord.js b/platform/src/api/business/fileRecord.js
new file mode 100644
index 0000000..5e34b26
--- /dev/null
+++ b/platform/src/api/business/fileRecord.js
@@ -0,0 +1,8 @@
+import request from '../../utils/request'
+
+// 鏌ヨ
+export function fetchList (data) {
+  return request.post('/business/fileRecord/page', data, {
+    trim: true
+  })
+}
diff --git a/platform/src/assets/logo.png b/platform/src/assets/logo.png
index 3c0b233..5d8fd16 100644
--- a/platform/src/assets/logo.png
+++ b/platform/src/assets/logo.png
Binary files differ
diff --git a/platform/src/components/business/OperaCompanyUserWindow.vue b/platform/src/components/business/OperaCompanyUserWindow.vue
index 6613a25..45942e7 100644
--- a/platform/src/components/business/OperaCompanyUserWindow.vue
+++ b/platform/src/components/business/OperaCompanyUserWindow.vue
@@ -11,11 +11,11 @@
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
         浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
       </el-form-item>
-      <el-form-item label="浼佷笟绠�绉�" prop="shortName">
+      <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
         <el-input v-model="form.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" v-trim/>
       </el-form-item>
-      <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="creditCode">
-        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" v-trim/>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
         缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
       </el-form-item>
       <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
@@ -26,6 +26,7 @@
       </el-form-item>
       <el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
         <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+        
       </el-form-item>
       <el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
         <!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
@@ -71,7 +72,7 @@
         linkname: '',
         linkephone: '',
         creditCode: '',
-        userNum: '',
+        userNum: 5,
         oepnValidDate: '',
         salesmanId: ''
       },
@@ -106,6 +107,7 @@
 <style lang="scss" scoped>
 .more {
   margin-top: 40px;
+  margin-bottom: 10px;
   .more-title {
     font-weight: 600;
     font-size: 18px;
diff --git a/platform/src/components/business/OperaCompanyWindow.vue b/platform/src/components/business/OperaCompanyWindow.vue
index 4c91ee7..0739250 100644
--- a/platform/src/components/business/OperaCompanyWindow.vue
+++ b/platform/src/components/business/OperaCompanyWindow.vue
@@ -11,11 +11,11 @@
         <el-input v-model="form.name" placeholder="璇疯緭鍏ュ鎴蜂紒涓氬叏绉帮紝涓嶈秴杩�30瀛�" v-trim/>
         浼佷笟鍚嶇О闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
       </el-form-item>
-      <el-form-item label="浼佷笟绠�绉�" prop="shortName">
-        <el-input v-model="form.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" v-trim/>
+      <el-form-item label="瀹㈡埛绠�绉�" prop="shortName">
+        <el-input v-model="form.shortName" placeholder="璇疯緭鍏ュ鎴风畝绉�" v-trim/>
       </el-form-item>
-      <el-form-item label="缁熶竴绀句細淇$敤浠g爜" prop="creditCode">
-        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�绀句細淇$敤浠g爜" v-trim/>
+      <el-form-item label="缁熶竴淇$敤浠g爜" prop="creditCode">
+        <el-input v-model="form.creditCode" placeholder="璇疯緭鍏ョ粺涓�淇$敤浠g爜" v-trim/>
         缁熶竴淇$敤浠g爜闇�涓庡伐鍟嗛儴闂ㄧ櫥璁颁俊鎭竴鑷�
       </el-form-item>
       <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
@@ -26,6 +26,7 @@
       </el-form-item>
       <el-form-item label="涓绘挱鏁伴噺闄愬埗" prop="userNum">
         <el-input v-model="form.userNum" :disabled="!!this.form.id" placeholder="璇疯緭鍏ヤ富鎾暟閲忛檺鍒�" v-trim/>
+        杈撳叆0琛ㄧず涓嶉檺鍒�
       </el-form-item>
       <el-form-item label="閿�鍞汉鍛�" prop="salesmanId">
         <!-- <el-input v-model="form.salesmanId" placeholder="璇疯緭鍏ラ攢鍞汉鍛樼紪鐮�" v-trim/> -->
@@ -54,6 +55,7 @@
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalAlertWindow from '@/components/common/GlobalAlertWindow'
 import { findAllList } from '@/api/system/user'
+import { loginNameRule, creditCode } from '@/utils/form'
 export default {
   name: 'OperaCompanyWindow',
   extends: BaseOpera,
@@ -71,7 +73,7 @@
         linkname: '',
         linkephone: '',
         creditCode: '',
-        userNum: '',
+        userNum: '5',
         oepnValidDate: '',
         salesmanId: ''
       },
@@ -82,7 +84,10 @@
           { required: true, message: '璇疯緭鍏ュ鎴蜂紒涓氬叏绉�', tigger: 'blur'}
         ],
         managerUserName: [
-          { required: true, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+          { required: true, validator: loginNameRule, message: '璇疯緭鍏ョ櫥褰曡处鍙�', tigger: 'blur'}
+        ],
+        creditCode: [
+          { validator: creditCode, trigger: 'blur' }
         ],
         openUserNum: [
           { pattern: /^[0-9]+$/, message: '鍙彲浠ヨ緭鍏ユ暟瀛�', trigger: 'change' }
@@ -99,16 +104,43 @@
       .then(res => {
         this.sales = res
       })
-  }
+  },
+  methods: {
+    open(title, target) {
+      this.title = title
+      this.visible = true
+      // 鏂板缓
+      if (target == null) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          let data = new Date(new Date().getTime() + 31536000000)
+          this.form.oepnValidDate = `${data.getFullYear()}-${data.getMonth() +1}-${data.getDate()}`
+          this.form[this.configData['field.id']] = null
+        })
+        return
+      }
+      // 缂栬緫
+      this.$nextTick(() => {
+        for (const key in this.form) {
+          this.form[key] = target[key]
+        }
+        this.form.multifileList.forEach(item => {
+          item.url = item.filefullurl
+        })
+      })
+    },
+  },
 }
 </script>
 
 <style lang="scss" scoped>
 .more {
   margin-top: 40px;
+  
   .more-title {
     font-weight: 600;
     font-size: 18px;
+    margin-bottom: 10px;
   }
 }
 ::v-deep .el-input {
diff --git a/platform/src/components/business/OperaGoodsWindow.vue b/platform/src/components/business/OperaGoodsWindow.vue
index 4bbcc37..b4d0072 100644
--- a/platform/src/components/business/OperaGoodsWindow.vue
+++ b/platform/src/components/business/OperaGoodsWindow.vue
@@ -2,18 +2,18 @@
   <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm" width="800px"
     v-loading="isUploading">
     <el-form :model="form" ref="form" label-width="120px" :rules="rules">
-      <div style="font-size: 18px;font-weight: bold;">鍩烘湰淇℃伅</div>
+      <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍩烘湰淇℃伅</div>
       <el-form-item label="鍟嗗搧鍚嶇О" prop="name">
         <el-input v-model="form.name" maxlength="50" placeholder="璇疯緭鍏ュ晢鍝佸悕绉帮紝涓嶈秴杩�50涓瓧" v-trim />
       </el-form-item>
       <el-form-item label="鍟嗗搧鍝佺墝" prop="brandId">
-        <el-select v-model="form.brandId" placeholder="璇烽�夋嫨锛屽崟閫�">
+        <el-select v-model="form.brandId" filterable placeholder="璇烽�夋嫨锛屽崟閫�">
           <el-option v-for="item in brandList()" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="鍟嗗搧绫诲埆" prop="categoryId">
-        <el-select v-model="form.categoryId" placeholder="璇烽�夋嫨锛屽崟閫�" @change="categorySelect">
+        <el-select v-model="form.categoryId" filterable placeholder="璇烽�夋嫨锛屽崟閫�" @change="categorySelect">
           <el-option v-for="item in categoryList()" :key="item.id" :label="item.name" :value="item.id">
           </el-option>
         </el-select>
@@ -37,7 +37,7 @@
         鍙兘涓婁紶鍥剧墖鏍煎紡锛宲ng鏍煎紡锛屽缓璁昂瀵�600*600px
       </el-form-item>
       <template v-if="form.baseGoodsParamList && form.baseGoodsParamList.length > 0">
-        <div style="font-size: 18px;font-weight: bold;">鍙傛暟灞炴�у�奸厤缃� <span
+        <div style="font-size: 18px;font-weight: bold; margin-bottom: 10px;">鍙傛暟灞炴�у�奸厤缃� <span
             style="font-size: 13px; font-weight: 500;">鎸夐渶閰嶇疆褰撳墠鍟嗗搧鐨勪骇鍝佸弬鏁板�硷紝鍗曚釜鍙傛暟鍊间笉瓒呰繃30涓瓧</span></div>
         <el-form-item :label="item.name" v-for="(item, index) in form.baseGoodsParamList" :key="index">
           <el-input v-model="item.val" maxlength="30" type="text" placeholder="璇疯緭鍏�" v-trim />
diff --git a/platform/src/components/common/GlobalAlertWindow.vue b/platform/src/components/common/GlobalAlertWindow.vue
index f1d4255..74d06aa 100644
--- a/platform/src/components/common/GlobalAlertWindow.vue
+++ b/platform/src/components/common/GlobalAlertWindow.vue
@@ -1,6 +1,7 @@
 
 <template>
   <el-dialog
+    top="10vh"
     class="global-window"
     title="title"
     :visible="visible"
diff --git a/platform/src/components/system/user/OperaUserWindow.vue b/platform/src/components/system/user/OperaUserWindow.vue
index 240a739..c3ac6e7 100644
--- a/platform/src/components/system/user/OperaUserWindow.vue
+++ b/platform/src/components/system/user/OperaUserWindow.vue
@@ -19,12 +19,12 @@
           <el-radio label="0">濂�</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-form-item label="澶村儚" prop="avatar" required>
+      <!-- <el-form-item label="澶村儚" prop="avatar" required>
         <el-radio-group v-model="form.avatar" class="form-item-avatar">
           <el-radio label="https://dmtest.ahapp.net/preselectfile/man.png" border><img src="https://dmtest.ahapp.net/preselectfile/man.png" alt=""></el-radio>
           <el-radio label="https://dmtest.ahapp.net/preselectfile/woman.png" border><img src="https://dmtest.ahapp.net/preselectfile/woman.png" alt=""></el-radio>
         </el-radio-group>
-      </el-form-item>
+      </el-form-item> -->
       <el-form-item v-if="form.id == null" label="鍒濆瀵嗙爜" prop="password" required>
         <el-input v-model="form.password" type="password" placeholder="璇疯緭鍏ュ垵濮嬪瘑鐮�" maxlength="30" show-password/>
       </el-form-item>
@@ -71,7 +71,7 @@
         empNo: '', // 宸ュ彿
         departmentId: null, //  鎵�灞為儴闂↖D
         positionIds: [], //  鎵�灞炲矖浣岻D闆�
-        avatar: '/avatar/man.png', // 澶村儚
+        // avatar: '/avatar/man.png', // 澶村儚
         password: '', // 瀵嗙爜
         mobile: '', // 鎵嬫満鍙风爜
         email: '', // 閭
diff --git a/platform/src/utils/form.js b/platform/src/utils/form.js
index cf60c6f..e625827 100644
--- a/platform/src/utils/form.js
+++ b/platform/src/utils/form.js
@@ -1,15 +1,88 @@
-// 楠岃瘉鎵嬫満鍙风爜
-export function checkMobile (rule, value, callback) {
+
+export function checkMobile(rule, value, callback) {
   if (value == null || value.trim() === '') {
-    callback(new Error('鎵嬫満鍙风爜涓嶈兘涓虹┖'))
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ユ墜鏈哄彿'))
+    } else {
+      callback()
+    }
     return
   }
-  if (!/^1\d{10}$/.test(value)) {
-    callback(new Error('鎵嬫満鍙风爜鏍煎紡涓嶆纭�'))
+  let re = /^[0-9]{11}$/;
+  var result = re.test(value); 
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'))
+  } else {
+    callback()
+  }
+}
+
+export function checkPhone(rule, value, callback) {
+  //鎵嬫満鍙凤細13锛�14锛�15锛�17锛�18锛�19鍙锋
+  const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/
+  //鍥鸿瘽锛氬尯鍙�(3-4浣�)-鍙风爜(7-9浣�)
+  const mobReg =  /(^[0-9]{3,4}-[0-9]{7,9}$)/
+  //婢抽棬鐢佃瘽鍙风爜: 28寮�澶达紝鍚庨潰璺�6浣嶆暟瀛楋紝鍖哄彿涓�853
+  const macaoMobReg = /^(853)?28\d{6}$/
+  //婢抽棬鎵嬫満鍙风爜锛�6寮�澶达紝鍚庨潰璺�7浣嶆暟瀛楋紝鍖哄彿涓�853
+  const macaoPhoneReg = /^(853)?6\d{7}$/
+  //鍚屾椂鏀寔鎵嬫満鍙风爜鍜岀數璇濆彿鐮�
+  const macaoReg = /^(853)?(?:28\d{6}|6\d{7})$/  
+  if (!value) {
+      callback(new Error('鐢佃瘽鍙风爜涓嶈兘涓虹┖'))
+  } else if (phoneReg.test(value)||mobReg.test(value)||macaoReg.test(value)) {
+      callback()
+  } else {
+      callback(new Error('璇疯緭鍏ユ纭數璇濆彿鐮�'))
+  }
+}
+
+export function loginNameRule (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ヨ处鍙�'))
+    } else {
+      callback()
+    }
+    return
+  }
+  let re =/^[\u4e00-\u9fa5a-zA-Z0-9]+$/
+  var result = re.test(value)
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑璐﹀彿'))
+  } else {
+    callback()
+  }
+}
+
+export function nameRule (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ュ悕瀛�'))
+    } else {
+      callback()
+    }
     return
   }
   callback()
 }
+export function creditCode (rule, value, callback) {
+  if (value == null || value.trim() === '') {
+    if (rule.required) {
+      callback(new Error('璇疯緭鍏ョぞ浼氫俊鐢ㄤ唬鐮�'))
+    } else {
+      callback()
+    }
+    return
+  }
+  let re = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/
+  var result = re.test(value)
+  if(!result) {
+    callback(new Error('璇疯緭鍏ユ纭殑绀句細淇$敤浠g爜'))
+  } else {
+    callback()
+  }
+}
 
 // 楠岃瘉閭
 export function checkEmail (rule, value, callback) {
diff --git a/platform/src/utils/request.js b/platform/src/utils/request.js
index bb715e1..703ba15 100644
--- a/platform/src/utils/request.js
+++ b/platform/src/utils/request.js
@@ -29,9 +29,9 @@
   // 璁剧疆鎿嶄綔骞冲彴
   config.headers['eva-platform'] = `pc-${pkg.version}`
   // 璁剧疆璁よ瘉澶�
-  const authToken = Cookies.get('eva-auth-token')
+  const authToken = Cookies.get('doumee-auth-token')
   if (authToken != null) {
-    config.headers['eva-auth-token'] = authToken
+    config.headers['doumee-auth-token'] = authToken
   }
   return config
 }, function (error) {
diff --git a/platform/src/views/business/category.vue b/platform/src/views/business/category.vue
index 659971b..f937c4c 100644
--- a/platform/src/views/business/category.vue
+++ b/platform/src/views/business/category.vue
@@ -29,7 +29,7 @@
         <el-table-column prop="priceRate" label="鍔犱环绯绘暟" min-width="100px"></el-table-column>
         <el-table-column prop="sortnum" label="鎺掑簭鐮�(鍗囧簭)" min-width="100px"></el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+        <el-table-column v-if="containPermissions(['business:category:update'])" prop="status" label="鐘舵��" min-width="100px">
           <template slot-scope="{row}">
             <el-switch v-model="row.status" @change="changeStatus(row)" :active-value="0" :inactive-value="1">
             </el-switch>
@@ -88,8 +88,11 @@
         status: item.status
       }).then(res => {
         this.$tip.apiSuccess('鏇存柊鎴愬姛')
-      }).finally(() => {
-        // this.search()
+      }).catch (err => {
+          this.$message.error(err)
+        })
+        .finally(() => {
+        this.handlePageChange()
       })
     },
     edit(id) {
diff --git a/platform/src/views/business/company.vue b/platform/src/views/business/company.vue
index 8ae8e33..ce296b3 100644
--- a/platform/src/views/business/company.vue
+++ b/platform/src/views/business/company.vue
@@ -2,14 +2,14 @@
   <TableLayout :permissions="['business:company:query']">
     <!-- 鎼滅储琛ㄥ崟 -->
     <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-      <el-form-item label="鍚嶇О" prop="name">
-        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+      <el-form-item label="浼佷笟鍚嶇О" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ヤ紒涓氬悕绉�" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <!-- <el-form-item label="浼佷笟绠�绉�" prop="shortName">
         <el-input v-model="searchForm.shortName" placeholder="璇疯緭鍏ヤ紒涓氱畝绉�" @keypress.enter.native="search"></el-input>
       </el-form-item> -->
-      <el-form-item label="绠$悊鍛樿处鍙�" prop="managerUserName">
-        <el-input v-model="searchForm.managerUserName" placeholder="璇疯緭鍏ョ鐞嗗憳璐﹀彿" @keypress.enter.native="search"></el-input>
+      <el-form-item label="鐧诲綍璐﹀彿" prop="managerUserName">
+        <el-input v-model="searchForm.managerUserName" placeholder="璇疯緭鍏ョ櫥褰曡处鍙�" @keypress.enter.native="search"></el-input>
       </el-form-item>
       <el-form-item label="鏈夋晥鏈�" prop="oepnValidDate">
         <el-date-picker type="daterange" v-model="oepnValidDate" value-format="yyyy-MM-dd" start-placeholder="寮�濮嬫棩鏈�"
@@ -37,11 +37,15 @@
         <!-- <el-table-column type="selection" width="55" align="center"></el-table-column> -->
         <el-table-column prop="id" label="浼佷笟缂栧彿" min-width="80px" align="center"></el-table-column>
         <el-table-column prop="name" label="浼佷笟鍚嶇О" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="managerUserName" label="绠$悊鍛樿处鍙�" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="managerUserName" label="鐧诲綍璐﹀彿" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="linkname" label="鑱旂郴浜�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="linkephone" label="鑱旂郴浜虹數璇�" min-width="100px" align="center"></el-table-column>
-        <el-table-column prop="oepnValidDate" label="鐢ㄦ湁鏁堟湡" min-width="140px" align="center"></el-table-column>
-        <el-table-column prop="userNum" label="涓绘挱鏁伴噺闄愬埗" min-width="100px" align="center"></el-table-column>
+        <el-table-column prop="oepnValidDate" label="鏈夋晥鏈�" min-width="140px" align="center"></el-table-column>
+        <el-table-column prop="userNum" label="涓绘挱璐﹀彿闄愬埗" min-width="100px" align="center">
+          <template slot-scope="{row}">
+            {{ row.userNum || '涓嶉檺' }}
+          </template>
+        </el-table-column>
         <el-table-column prop="empUserNum" label="鍛樺伐鏁�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="salesmanRealName" label="閿�鍞汉鍛�" min-width="100px" align="center"></el-table-column>
         <el-table-column prop="status" label="鐘舵��" min-width="100px" align="center">
diff --git a/platform/src/views/business/fileRecord.vue b/platform/src/views/business/fileRecord.vue
new file mode 100644
index 0000000..f2160c6
--- /dev/null
+++ b/platform/src/views/business/fileRecord.vue
@@ -0,0 +1,119 @@
+<template>
+  <TableLayout :permissions="['business:filerecord:query']">
+    <!-- 鎼滅储琛ㄥ崟 -->
+    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+      
+      <!-- <el-form-item label="鏂囦欢鍚�" prop="name">
+        <el-input v-model="searchForm.name" placeholder="璇疯緭鍏ユ枃浠跺悕" @keypress.enter.native="search"></el-input>
+      </el-form-item> -->
+      
+      <el-form-item label="鏂囦欢澶瑰悕绉�" prop="folder">
+        <el-input v-model="searchForm.folder" placeholder="璇疯緭鍏ユ枃浠跺す鍚嶇О" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+     
+      <el-form-item label="OSS鏂囦欢key" prop="keyval">
+        <el-input v-model="searchForm.keyval" placeholder="璇疯緭鍏SS鏂囦欢key" @keypress.enter.native="search"></el-input>
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="status">
+        <el-select v-model="searchForm.status" clearable placeholder="璇烽�夋嫨鐘舵��">
+          <el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id">
+          </el-option>
+        </el-select>
+      </el-form-item> 
+      <section>
+        <el-button type="primary" @click="search">鎼滅储</el-button>
+        <el-button @click="reset">閲嶇疆</el-button>
+      </section>
+    </el-form>
+    <!-- 琛ㄦ牸鍜屽垎椤� -->
+    <template v-slot:table-wrap>
+      <el-table
+        v-loading="isWorking.search"
+        :data="tableData.list"
+        border
+        stripe
+      >
+       <el-table-column type="index" :index="newIndex" label="搴忓彿" width="80px" align="center"></el-table-column>
+       <el-table-column prop="name" label="鏂囦欢" width="100px" align="center">
+        <template slot-scope="{row}">
+          <el-image v-if="row.url" style="width: 70px; height: 70px" :src="row.url"
+                  :preview-src-list="[row.url]" fit="cover"></el-image>
+        </template>
+       </el-table-column>
+        <el-table-column prop="folder" label="鏂囦欢澶瑰悕绉�" width="140px" align="center"></el-table-column>
+        <el-table-column prop="keyval" label="OSS鏂囦欢key" min-width="120px" align="center"></el-table-column>
+        <el-table-column prop="status" label="鐘舵��" width="100px" align="center">
+          <template slot-scope="{row}">
+            <!--  0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触 -->
+            {{ row.status == 0 ? '鏈笂浼�' : row.status == 1 ? '宸蹭笂浼�' : '涓婁紶澶辫触' }}
+          </template>
+        </el-table-column>
+        <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" width="150px" align="center"></el-table-column>
+        <el-table-column prop="editDate" label="鏇存柊鏃堕棿" width="150px" align="center"></el-table-column>
+<!--      
+        <el-table-column prop="editor" label="鏇存柊浜虹紪鐮�" min-width="100px"></el-table-column>
+        <el-table-column prop="isdeleted" label="鏄惁鍒犻櫎0鍚� 1鏄�" min-width="100px"></el-table-column>
+        <el-table-column prop="info" label="澶囨敞" min-width="100px"></el-table-column>
+        <el-table-column prop="objId" label="鍏宠仈瀵硅薄缂栫爜" min-width="100px"></el-table-column>
+        <el-table-column prop="type" label="绫诲瀷0鍥剧墖 1瑙嗛 2鍏朵粬" min-width="100px"></el-table-column> -->
+      </el-table>
+      <pagination
+        @size-change="handleSizeChange"
+        @current-change="handlePageChange"
+        :pagination="tableData.pagination"
+      >
+      </pagination>
+    </template>
+  </TableLayout>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+export default {
+  name: 'FileRecord',
+  extends: BaseTable,
+  components: { TableLayout, Pagination },
+  data () {
+    return {
+      // 鎼滅储
+      searchForm: {
+        id: '',
+        creator: '',
+        createDate: '',
+        editor: '',
+        editDate: '',
+        isdeleted: '',
+        name: '',
+        info: '',
+        objId: '',
+        type: '',
+        folder: '',
+        status: '',
+        keyval: ''
+      },
+      statusList: [
+        // 0鏈笂浼� 1宸蹭笂浼� 2涓婁紶澶辫触
+        { name: '鏈笂浼�', id: 0 },
+        { name: '宸蹭笂浼�', id: 1 },
+        { name: '涓婁紶澶辫触', id: 2 }
+      ]
+    }
+  },
+  created () {
+    this.config({
+      module: '闄勪欢涓婁紶杩涘害琛�',
+      api: '/business/fileRecord',
+      'field.id': 'id',
+      'field.main': 'id'
+    })
+    this.search()
+  },
+  methods: {
+    newIndex(index) {
+      return (this.tableData.pagination.pageIndex - 1) * 10 + index + 1
+    }
+  },
+}
+</script>
diff --git a/platform/src/views/business/goods.vue b/platform/src/views/business/goods.vue
index b7f8046..98ebff2 100644
--- a/platform/src/views/business/goods.vue
+++ b/platform/src/views/business/goods.vue
@@ -43,14 +43,18 @@
         </li>
         <!-- <el-button type="primary" :loading="isWorking.export"
           @click="$refs.selectProduct.open('閫夋嫨骞冲彴鍟嗗搧')">閫夋嫨骞冲彴鍟嗗搧</el-button> -->
-        <li v-permissions="['business:basegoods:exportExcel']">
+        <li v-permissions="['business:basegoods:exportExcel', 'business:goods:delete']">
           <ImportButton text="瀵煎叆" template-name="goods_import_modle.xlsx"
             template-path="/template/goods_import_modle.xlsx" action="/business/baseGoods/importExcel"
             @success="search" />
         </li>
-        <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
-        <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
-        <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:goods:delete']">鍒犻櫎</el-button></li> -->
+        <li>
+          <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(0)">鎵归噺涓婃灦</el-button>
+        </li>
+        <li>
+          <el-button type="primary" :loading="isWorking.export" @click="bulkOperation(1)">鎵归噺涓嬫灦</el-button>
+        </li>
+        <li v-permissions="['business:goods:delete']"><el-button @click="deleteByIdInBatch" style="color: red;">鎵归噺鍒犻櫎</el-button></li>
       </ul>
       <el-table v-loading="isWorking.search" :data="tableData.list" stripe border :header-cell-style="rowStyle"
         :cell-style="rowStyle" @selection-change="handleSelectionChange">
@@ -72,7 +76,7 @@
         <el-table-column prop="zdPrice" label="鎸囧浠凤紙鍏冿級" min-width="100px"></el-table-column>
         <el-table-column prop="price" label="閲囪喘浠�(鍏�)" min-width="100px"></el-table-column>
         <el-table-column prop="createDate" label="鍒涘缓鏃堕棿" min-width="100px"></el-table-column>
-        <el-table-column prop="status" label="鐘舵��" min-width="100px">
+        <el-table-column prop="status" v-if="containPermissions(['business:basegoods:update'])" label="鐘舵��" min-width="100px">
           <template slot-scope="{row}">
             <el-switch v-model="row.status" @change="changeStatus(row)" active-color="#13ce66" inactive-color="#ff4949"
               :active-value="0" :inactive-value="1">
@@ -106,7 +110,7 @@
 import OperaGoodsWindow from '@/components/business/OperaGoodsWindow'
 import selectProduct from '@/components/business/selectProduct'
 import ImportButton from '@/components/common/ImportButton'
-import { brand, baseCategory, importExcel } from '@/api/system/common.js'
+import { brand, baseCategory } from '@/api/system/common.js'
 import { updateStatus, queryById, exportDoc } from '@/api/business/goods.js'
 export default {
   name: 'Goods',
@@ -150,24 +154,25 @@
     this.getcategory()
   },
   methods: {
-    handleSelectionChange(e) {
-      let arr = e.map(item => item.id)
-      this.ids = arr.join(',')
-      this.idList = arr;
-    },
+    // handleSelectionChange(e) {
+    //   let arr = e.map(item => item.id)
+    //   this.ids = arr.join(',')
+    //   this.idList = arr;
+    // },
     // 鎵归噺涓婁笅鏋�
     bulkOperation(type) {
-      if (!this.ids) {
-        this.$message.warning({ message: '鑷冲皯閫夋嫨涓�椤瑰唴瀹�' })
+      if (this.tableData.selectedRows.length === 0) {
+        this.$tip.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�')
         return
       }
+      let idList = this.tableData.selectedRows.map(item => item.id)
       updateStatus({
-        idList: this.idList,
+        idList,
         status: type
       }).then(res => {
         this.$tip.apiSuccess('鎿嶄綔鎴愬姛');
         // this.$message.success({ message:res.message })
-        this.search()
+        this.handlePageChange()
       })
     },
     downloadFile() {
@@ -194,8 +199,12 @@
         status: item.status
       }).then(res => {
         this.$tip.apiSuccess('鏇存柊鎴愬姛')
-      }).finally(() => {
-        // this.search()
+      })
+        .catch (err => {
+          this.$message.error(err)
+        } )
+      .finally(() => {
+        this.handlePageChange()
       })
     },
     getbrand() {
diff --git a/platform/src/views/system/user.vue b/platform/src/views/system/user.vue
index 7a2711d..532e469 100644
--- a/platform/src/views/system/user.vue
+++ b/platform/src/views/system/user.vue
@@ -33,15 +33,16 @@
         :data="tableData.list"
         :default-sort = "{prop: 'createTime', order: 'descending'}"
         stripe
+        border
         @selection-change="handleSelectionChange"
         @sort-change="handleSortChange"
       >
         <el-table-column type="selection" width="55"></el-table-column>
-        <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
+        <!-- <el-table-column prop="avatar" label="澶村儚" width="80px" class-name="table-column-avatar" fixed="left">
           <template slot-scope="{row}">
             <img :src="row.avatar == null ? '/static/avatar/man.png' : row.avatar">
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column prop="realname" label="濮撳悕" min-width="100px" fixed="left"></el-table-column>
         <el-table-column prop="username" label="鐢ㄦ埛鍚�" min-width="120px"></el-table-column>
         <el-table-column prop="empNo" label="宸ュ彿" sortable="custom" sort-by="EMP_NO" min-width="80px"></el-table-column>

--
Gitblit v1.9.3