소스 검색

商品管理设置表格配置问题

AlanWong 2 년 전
부모
커밋
bcf133ef1c
3개의 변경된 파일232개의 추가작업 그리고 186개의 파일을 삭제
  1. 136 135
      src/store/modules/user.ts
  2. 1 1
      src/views/audit/order/index.vue
  3. 95 50
      src/views/audit/productManagement/index.vue

+ 136 - 135
src/store/modules/user.ts

@@ -1,149 +1,150 @@
-import {getInfo, login, logout, refreshToken, ssoLogin, ssoLogout} from '@/api/login'
+import { getInfo, login, logout, refreshToken, ssoLogin, ssoLogout } from '@/api/login'
 import request from '@/benyun/utils/request'
-import {getToken, removeToken, setExpiresIn, setToken} from '@/benyun/utils/auth'
+import { getToken, removeToken, setExpiresIn, setToken } from '@/benyun/utils/auth'
 
 const user = {
-  state: {
-    token: getToken(),
-    name: '',
-    userInfo:{},
-    avatar: '',
-    roles: [],
-    permissions: []
-  },
+	state: {
+		token: getToken(),
+		name: '',
+		userInfo: {},
+		avatar: '',
+		roles: [],
+		permissions: []
+	},
 
-  mutations: {
-    SET_TOKEN: (state:any, token:string) => {
-      state.token = token
-    },
-    SET_EXPIRES_IN: (state:any, time:any) => {
-      state.expires_in = time
-    },
-    SET_NAME: (state:any, name:string) => {
-      state.name = name
-    },
-    SET_AVATAR: (state:any, avatar:any) => {
-      state.avatar = avatar
-    },
-    SET_ROLES: (state:any, roles:any) => {
-      state.roles = roles
-    },
-    SET_PERMISSIONS: (state:any, permissions:any) => {
-      state.permissions = permissions
-    },
-    SET_USERINFO:(state:any,userInfo:any) => {
-      state.userInfo = userInfo;
-    }
-  },
+	mutations: {
+		SET_TOKEN: (state : any, token : string) => {
+			state.token = token
+		},
+		SET_EXPIRES_IN: (state : any, time : any) => {
+			state.expires_in = time
+		},
+		SET_NAME: (state : any, name : string) => {
+			state.name = name
+		},
+		SET_AVATAR: (state : any, avatar : any) => {
+			state.avatar = avatar
+		},
+		SET_ROLES: (state : any, roles : any) => {
+			state.roles = roles
+		},
+		SET_PERMISSIONS: (state : any, permissions : any) => {
+			state.permissions = permissions
+		},
+		SET_USERINFO: (state : any, userInfo : any) => {
+			state.userInfo = userInfo;
+		}
+	},
 
-  actions: {
-    // 登录
-    Login({ commit }:any, userInfo:any) {
-      const username = userInfo.username.trim()
-      const password = userInfo.password
-      const code = userInfo.code
-      const uuid = userInfo.uuid
-      return new Promise((resolve:any, reject:any) => {
+	actions: {
+		// 登录
+		Login({ commit } : any, userInfo : any) {
+			const username = userInfo.username.trim()
+			const password = userInfo.password
+			const code = userInfo.code
+			const uuid = userInfo.uuid
+			const tenantId = "000000"
+			return new Promise((resolve : any, reject : any) => {
 
-        login(username, password, code, uuid).then((res:any) => {
-          let data = res.data
-          setToken(data.access_token)
-          commit('SET_TOKEN', data.access_token)
-          setExpiresIn(data.expires_in)
-          commit('SET_EXPIRES_IN', data.expires_in)
-          resolve()
-        }).catch((error:any) => {
-          reject(error)
-        })
-      })
-    },
+				login(username, password, code, uuid, tenantId).then((res : any) => {
+					let data = res.data
+					setToken(data.access_token)
+					commit('SET_TOKEN', data.access_token)
+					setExpiresIn(data.expires_in)
+					commit('SET_EXPIRES_IN', data.expires_in)
+					resolve()
+				}).catch((error : any) => {
+					reject(error)
+				})
+			})
+		},
 
-    // 获取用户信息
-    GetInfo({ commit, state }:any) {
-      return new Promise((resolve, reject) => {
-        getInfo().then((res:any) => {
-          const user = res.user
-          const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : user.avatar;
-          if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
-            commit('SET_ROLES', res.roles)
-            commit('SET_PERMISSIONS', res.permissions)
-          } else {
-            commit('SET_ROLES', ['ROLE_DEFAULT'])
-          }
-          commit('SET_NAME', user.userName)
-          commit('SET_AVATAR', avatar)
-          commit('SET_USERINFO',user);
-          resolve(res)
-        }).catch((error:any) => {
-          reject(error)
-        })
-      })
-    },
+		// 获取用户信息
+		GetInfo({ commit, state } : any) {
+			return new Promise((resolve, reject) => {
+				getInfo().then((res : any) => {
+					const user = res.user
+					const avatar = (user.avatar == "" || user.avatar == null) ? require("@/assets/images/profile.jpg") : user.avatar;
+					if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+						commit('SET_ROLES', res.roles)
+						commit('SET_PERMISSIONS', res.permissions)
+					} else {
+						commit('SET_ROLES', ['ROLE_DEFAULT'])
+					}
+					commit('SET_NAME', user.userName)
+					commit('SET_AVATAR', avatar)
+					commit('SET_USERINFO', user);
+					resolve(res)
+				}).catch((error : any) => {
+					reject(error)
+				})
+			})
+		},
 
-    // 刷新token
-    RefreshToken({commit, state}:any) {
-      return new Promise((resolve:any, reject:any) => {
-        refreshToken().then((res:any) => {
-          setExpiresIn(res.data)
-          commit('SET_EXPIRES_IN', res.data)
-          resolve()
-        }).catch((error:any) => {
-          reject(error)
-        })
-      })
-    },
+		// 刷新token
+		RefreshToken({ commit, state } : any) {
+			return new Promise((resolve : any, reject : any) => {
+				refreshToken().then((res : any) => {
+					setExpiresIn(res.data)
+					commit('SET_EXPIRES_IN', res.data)
+					resolve()
+				}).catch((error : any) => {
+					reject(error)
+				})
+			})
+		},
 
-    // 退出系统
-    LogOut({ commit, state }:any) {
-      return new Promise((resolve:Function, reject:Function) => {
-        logout().then(() => {
-          commit('SET_TOKEN', '')
-          commit('SET_ROLES', [])
-          commit('SET_PERMISSIONS', [])
-          removeToken()
-          resolve()
-        }).catch((error:any) => {
-          reject(error)
-        })
-      })
-    },
+		// 退出系统
+		LogOut({ commit, state } : any) {
+			return new Promise((resolve : Function, reject : Function) => {
+				logout().then(() => {
+					commit('SET_TOKEN', '')
+					commit('SET_ROLES', [])
+					commit('SET_PERMISSIONS', [])
+					removeToken()
+					resolve()
+				}).catch((error : any) => {
+					reject(error)
+				})
+			})
+		},
 
-    // 前端 登出
-    FedLogOut({ commit }:any) {
-      return new Promise((resolve:Function) => {
-        commit('SET_TOKEN', '')
-        removeToken()
-        resolve()
-      })
-    },
+		// 前端 登出
+		FedLogOut({ commit } : any) {
+			return new Promise((resolve : Function) => {
+				commit('SET_TOKEN', '')
+				removeToken()
+				resolve()
+			})
+		},
 
-    // 统一系统登录
-    ssoLogin({commit}:any, userInfo:any) {
-      const username = userInfo.username.trim()
-      const password = userInfo.password
-      const code = userInfo.code
-      const uuid = userInfo.uuid
-      const redirectUri = userInfo.redirectUri
-      const appId = userInfo.appId
-      return new Promise((resolve:Function, reject:Function) => {
-        ssoLogin(username, password, code, uuid, redirectUri, appId).then((res:any) => {
-          (window as any).location.href = res
-          resolve()
-        }).catch((error:any) => {
-          reject(error)
-        })
-      })
-    },
+		// 统一系统登录
+		ssoLogin({ commit } : any, userInfo : any) {
+			const username = userInfo.username.trim()
+			const password = userInfo.password
+			const code = userInfo.code
+			const uuid = userInfo.uuid
+			const redirectUri = userInfo.redirectUri
+			const appId = userInfo.appId
+			return new Promise((resolve : Function, reject : Function) => {
+				ssoLogin(username, password, code, uuid, redirectUri, appId).then((res : any) => {
+					(window as any).location.href = res
+					resolve()
+				}).catch((error : any) => {
+					reject(error)
+				})
+			})
+		},
 
-    // 退出统一系统
-    ssoLogOut({commit, state}:any) {
-      return new Promise((resolve:Function, reject:Function) => {
-        ssoLogout().then(() => {
-          resolve()
-        })
-      })
-    },
-  }
+		// 退出统一系统
+		ssoLogOut({ commit, state } : any) {
+			return new Promise((resolve : Function, reject : Function) => {
+				ssoLogout().then(() => {
+					resolve()
+				})
+			})
+		},
+	}
 }
 
-export default user
+export default user

+ 1 - 1
src/views/audit/order/index.vue

@@ -431,7 +431,7 @@
 					if (res.code === 200) {
 						this.getDataList();
 						this.$message.success('接单成功!');
-						this.$alert('是否跳转销售订单', '提示', {
+						this.$confirm('是否跳转销售订单', '提示', {
 							confirmButtonText: '确定',
 							cancelButtonText: '取消',
 						}).then(() => {

+ 95 - 50
src/views/audit/productManagement/index.vue

@@ -4,8 +4,6 @@
 			<div class="bill-left" v-show="isShow==='home'" key="item">
 				<div class="bill-tab">
 					<div class="bill-title">导航</div>
-					<!-- 					<el-tree :data="data" node-key="id" :default-expanded-keys="expandedKeys" :props="props"
-						@node-click="handleNodeClick"></el-tree> -->
 					<side-tree :propConfig="treeConfig" @onChange="onChangeTree" />
 				</div>
 			</div>
@@ -49,7 +47,7 @@
 						</template>
 						<template v-slot:attributeName>
 							<div v-if="isSingle" key="item4">
-								<by-table :propConfig="singleTable" @onChangeRow="getSingleValue" ref="singeTable"></by-table>
+								<by-table :propConfig="singleTable" @onChangeRow="getInputValue" ref="singeTable"></by-table>
 							</div>
 							<div v-if="!isSingle" key="item5">
 								<el-select :value="selectValue" clearable placeholder="请选择" style="width: 19.5%;"
@@ -241,7 +239,7 @@
 						attr: {
 							size: 'mini',
 							placeholder: ' ',
-							type: "number",
+							type: "integer",
 						},
 					}
 				},
@@ -254,7 +252,7 @@
 						attr: {
 							size: 'mini',
 							placeholder: ' ',
-							type: "number",
+							type: "integer",
 						},
 					}
 				},
@@ -489,20 +487,14 @@
 			attr: {
 				size: 'small',
 				rules: {
-					name: [{
-						required: true, message: '请输入名称', trigger: 'blur'
-					}],
-					basePrice: [{
-						required: true, message: '请输入基本售价', trigger: 'blur'
-					}],
-					categoryName: [{
-						required: true, message: '请输入物料分类', trigger: 'change'
-					}],
-					// vmCategoryName: [{
-					// 	required: true, message: '请输入虚拟分类', trigger: 'change'
+					// name: [{
+					// 	required: true, message: '请输入名称', trigger: 'blur'
+					// }],
+					// basePrice: [{
+					// 	required: true, message: '请输入基本售价', trigger: 'blur'
 					// }],
-					// organizationCategoryName: [{
-					// 	required: true, message: '请输入机构商品分类', trigger: 'change'
+					// categoryName: [{
+					// 	required: true, message: '请输入物料分类', trigger: 'change'
 					// }],
 				}
 			},
@@ -907,12 +899,30 @@
 				let data : any = {}
 				// 多规格
 				if (query.materialSpec === 1) {
-					if (this.tableList.length <= 0 || this.attributeList.length <= 0) return (this as any).$message({ type: 'warning', message: '多规格商品,物料属性不能为空!' });
+					if (this.tableList.length <= 0 || this.attributeList.length <= 0) return (this as any).$message.warning('多规格商品,物料属性不能为空!');
+
+					console.log('多规格表格数据 ==> ', this.tableList);
+					for (let v of this.tableList) {
+						if (!v.price) return this.$message.warning('物料价格必填');
+						if (parseInt(v.price) <= 0) return this.$message.warning('物料价格不能小于1');
+						if (!v.unit) return this.$message.warning('物料单位必填');
+						if (!v.stock) return this.$message.warning('物料库存必填');
+						if (parseInt(v.stock) <= 0) return this.$message.warning('物料库存必须为自然数');
+						if (!v.shelfLife) return this.$message.warning('物料保质期必填');
+						if (parseInt(v.shelfLife) <= 0) return this.$message.warning('物料保质期必须为自然数');
+						if (!v.weight) return this.$message.warning('物料重量必填');
+						if (parseInt(v.weight) <= 0) return this.$message.warning('物料重量不能小于1');
+						if (!v.length) return this.$message.warning('物料长必填');
+						if (parseInt(v.length) <= 0) return this.$message.warning('物料长不能小于1');
+						if (!v.width) return this.$message.warning('物料宽必填');
+						if (parseInt(v.width) <= 0) return this.$message.warning('物料宽不能小于1');
+						if (!v.height) return this.$message.warning('物料高必填');
+						if (parseInt(v.height) <= 0) return this.$message.warning('物料高不能小于1');
+					};
 					data = { maindataMaterial: query, maindataMaterialSkus: this.tableList }
 					let newArray : any = []
 					let materialSpecData : any = []
 					let attributeLength = this.attributeList.length
-					console.log('表格数据 ==> ', this.tableList);
 					this.tableList.map((v : any) => {
 						for (let kyes in v) {
 							if (kyes.indexOf('_field_name') != -1) {
@@ -931,30 +941,47 @@
 					})
 				} else { // 单规格
 					data = { maindataMaterial: query, maindataMaterialSkus: (this.$refs.singeTable as any).getValue() }
+					console.log('单规格表格数据 ==> ', data.maindataMaterialSkus);
+					for (let v of data.maindataMaterialSkus) {
+						if (!v.price) return this.$message.warning('物料价格必填');
+						if (parseInt(v.price) <= 0) return this.$message.warning('物料价格不能小于1');
+						if (!v.unit) return this.$message.warning('物料单位必填');
+						if (!v.stock) return this.$message.warning('物料库存必填');
+						if (parseInt(v.stock) <= 0) return this.$message.warning('物料库存必须为自然数');
+						if (!v.shelfLife) return this.$message.warning('物料保质期必填');
+						if (parseInt(v.shelfLife) <= 0) return this.$message.warning('物料保质期必须为自然数');
+						if (!v.weight) return this.$message.warning('物料重量必填');
+						if (parseInt(v.weight) <= 0) return this.$message.warning('物料重量不能小于1');
+						if (!v.length) return this.$message.warning('物料长必填');
+						if (parseInt(v.length) <= 0) return this.$message.warning('物料长不能小于1');
+						if (!v.width) return this.$message.warning('物料宽必填');
+						if (parseInt(v.width) <= 0) return this.$message.warning('物料宽不能小于1');
+						if (!v.height) return this.$message.warning('物料高必填');
+						if (parseInt(v.height) <= 0) return this.$message.warning('物料高不能小于1');
+					};
 					data.maindataMaterialSkus[0].isDeleted = 0;
-					// data.maindataMaterialSkus[0].skuTitle = query.name;
-					// data.maindataMaterialSkus[0].skuSubtitle = query.shortName;
 					data.maindataMaterial.attributeList = ""
 				}
-				console.log('data ==> ', data);
-				if (this.isEdit) { // 编辑
-					other.updateSpuAndSku(data, 'maindataMaterial').then((res : any) => {
-						if (res.code === 200) {
-							this.isShow = 'home';
-							this.getDataList();
-							this.$message({ type: 'success', message: res.msg })
-						}
-					})
-					// 新增
-				} else {
-					other.saveSpuAndSku(data, 'maindataMaterial').then((res : any) => {
-						if (res.code === 200) {
-							this.isShow = 'home';
-							this.getDataList();
-							this.$message({ type: 'success', message: res.msg })
-						}
-					})
-				}
+				// console.log('data ==> ', data);
+				// if (this.isEdit) { // 编辑
+				// 	other.updateSpuAndSku(data, 'maindataMaterial').then((res : any) => {
+				// 		if (res.code === 200) {
+				// 			this.isShow = 'home';
+				// 			this.getDataList();
+				// 			this.$message({ type: 'success', message: res.msg })
+				// 		}
+				// 	})
+				// 	// 新增
+				// } else {
+				// 	other.saveSpuAndSku(data, 'maindataMaterial').then((res : any) => {
+				// 		if (res.code === 200) {
+				// 			this.isShow = 'home';
+				// 			this.getDataList();
+				// 			this.$message({ type: 'success', message: res.msg })
+				// 		}
+				// 	})
+				// }
+
 			});
 		}
 		// 新增
@@ -965,6 +992,7 @@
 			this.textarea = '' // 描述
 			this.tagsData = [] // 标签
 			this.attributeList = [] // 属性规格
+			this.tableList = [] // 表格数据
 			this.materialSpec = 0; // 单规格
 			this.isSingle = true; // 显示单表格
 			this.isEdit = false; // 是否编辑
@@ -1015,7 +1043,18 @@
 							this.selectValue = '' // 物料属性名称
 							this.towTable = '' // 表格数据
 							this.attributeList = []; // 属性规格
-							(this as any).$refs.singeTable.setValue(res.data);
+							let singleTable = (this as any).$lodash.cloneDeep(this.singleTable);
+							singleTable.columns[5] = {
+								width: "80px",
+								field: "stock",
+								title: "库存"
+							};
+
+							console.log(singleTable.columns);
+							setTimeout(() => {
+								(this as any).$refs.singeTable.setConfig(singleTable); // 设置表格配置
+								(this as any).$refs.singeTable.setValue(res.data);
+							}, 0)
 						} else {
 							this.forFun(this.attributeList[0], 0) // 生成sku
 							let tableConfig = (this as any).$lodash.cloneDeep(this.tableConfig);
@@ -1024,7 +1063,7 @@
 							res.data.map((v : any, i : any) => {
 								v = Object.assign(v, skuRuleList[i])
 								v.dataIndex = i
-							})
+							});
 							newColumns.map((v : any) => {
 								tableConfig.columns.unshift({
 									width: '80px',
@@ -1032,8 +1071,17 @@
 									field: v.field,
 								})
 							});
+							tableConfig.columns.map((v : any, i : any) => {
+								if (v.title == '库存') {
+									tableConfig.columns[i] = {
+										width: "80px",
+										field: "stock",
+										title: "库存"
+									}
+								}
+							});
 							this.tableList = (this as any).$lodash.cloneDeep(res.data);
-							// console.log('表格配置 ==> ', tableConfig);
+							console.log('表格配置 ==> ', tableConfig);
 							console.log('skuRuleList ==> ', skuRuleList);
 							console.log('表格数据 ==> ', this.tableList);
 							this.setTableConfig = tableConfig;
@@ -1252,15 +1300,12 @@
 				});
 			});
 		}
-		// 监听单表格数据
-		getSingleValue(e : any) {
-			// console.log('监听单表格 ==> ', e);
-			e.volume = (e.length * e.width * e.height).toFixed(2);
-		}
 		// 监听表格数据
 		getInputValue(e : any) {
 			// console.log('监听表格 ==> ', e);
-			e.volume = (e.length * e.width * e.height).toFixed(2);
+			if (e.length && e.width && e.height) {
+				e.volume = (e.length * e.width * e.height).toFixed(2);
+			}
 		}
 		// 排序生成
 		forFun(data : any, i : number, v ?: any) {