shish 5 лет назад
Родитель
Сommit
b640b1df21

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/css/chunk-33cf6842.4cc80db2.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/css/chunk-b369cdd0.2e75b169.css


+ 1 - 1
hd/dist/shop/index.html

@@ -43,4 +43,4 @@
 			.once .sub-title {
 				color: #ababab;
 				font-size: 12px;
-			}</style><link href="/css/app.6f07e55a.css" rel="preload" as="style"><link href="/css/chunk-libs.2e1e87b5.css" rel="preload" as="style"><link href="/js/app.57ba6bdd.js" rel="preload" as="script"><link href="/js/chunk-libs.1c1e0cb4.js" rel="preload" as="script"><link href="/css/chunk-libs.2e1e87b5.css" rel="stylesheet"><link href="/css/app.6f07e55a.css" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="once"><div class="container"><div class="title">正在加载资源</div><div class="sub-title">初次加载资源可能需要较多时间 请耐心等待</div></div><div class="footer"><a href="https://www.baidu.com/" target="_blank">花卉宝</a></div></div></div><script src="/cdn/vue/2.6.10/vue.min.js"></script><script src="/cdn/vue-router/3.1.3/vue-router.min.js"></script><script src="/cdn/vuex/3.1.1/vuex.min.js"></script><script src="/cdn/clipboard.js/2.0.4/clipboard.min.js"></script><script src="/cdn/axios/0.19.0-beta.1/axios.min.js"></script><script src="/cdn/nprogress/0.2.0/nprogress.min.js"></script><script src="/cdn/Mock.js/1.0.1-beta3/mock-min.js"></script><script src="/cdn/quill/2.0.0-dev.3/quill.min.js"></script><script src="/cdn/element-ui/2.13.0/index.js"></script><script src="/cdn/viewerjs/1.3.7/viewer.min.js"></script><script src="/cdn/echarts/4.4.0-rc.1/echarts.min.js"></script><script src="/cdn/npm/vue-echarts@4.0.2.js"></script><script src="/js/chunk-libs.1c1e0cb4.js"></script><script src="/js/app.57ba6bdd.js"></script></body></html>
+			}</style><link href="/css/app.6f07e55a.css" rel="preload" as="style"><link href="/css/chunk-libs.2e1e87b5.css" rel="preload" as="style"><link href="/js/app.c12b754d.js" rel="preload" as="script"><link href="/js/chunk-libs.1c1e0cb4.js" rel="preload" as="script"><link href="/css/chunk-libs.2e1e87b5.css" rel="stylesheet"><link href="/css/app.6f07e55a.css" rel="stylesheet"></head><body><noscript></noscript><div id="app"><div class="once"><div class="container"><div class="title">正在加载资源</div><div class="sub-title">初次加载资源可能需要较多时间 请耐心等待</div></div><div class="footer"><a href="https://www.baidu.com/" target="_blank">花卉宝</a></div></div></div><script src="/cdn/vue/2.6.10/vue.min.js"></script><script src="/cdn/vue-router/3.1.3/vue-router.min.js"></script><script src="/cdn/vuex/3.1.1/vuex.min.js"></script><script src="/cdn/clipboard.js/2.0.4/clipboard.min.js"></script><script src="/cdn/axios/0.19.0-beta.1/axios.min.js"></script><script src="/cdn/nprogress/0.2.0/nprogress.min.js"></script><script src="/cdn/Mock.js/1.0.1-beta3/mock-min.js"></script><script src="/cdn/quill/2.0.0-dev.3/quill.min.js"></script><script src="/cdn/element-ui/2.13.0/index.js"></script><script src="/cdn/viewerjs/1.3.7/viewer.min.js"></script><script src="/cdn/echarts/4.4.0-rc.1/echarts.min.js"></script><script src="/cdn/npm/vue-echarts@4.0.2.js"></script><script src="/js/chunk-libs.1c1e0cb4.js"></script><script src="/js/app.c12b754d.js"></script></body></html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/js/app.57ba6bdd.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/js/app.c12b754d.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/js/chunk-33cf6842.76eb5bcc.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/js/chunk-b0f75c0e.02b89374.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
hd/dist/shop/js/chunk-b369cdd0.db800a75.js


+ 291 - 50
hd/src/views/staff/list.vue

@@ -1,67 +1,157 @@
 <template>
 	<div class="app-list-content">
 		<x-crud class="liu-crud-wrap" @load="onLoad">
-			<template #table-column-addTime="{scope}">
-				<div>{{ scope.row.addTime | formatTime }}</div>
+			<template #table-column-userId="{scope}">
+				<i class="el-icon-success" v-if="scope.row.userId != 0" style="color:#67C23A;font-size:19px;"></i>
+				<i class="el-icon-success" v-else style="color:#C0C4CC;font-size:19px;"></i>
+			</template>
+			<template #table-column-avatar="{scope}">
+				<cl-avatar shape="circle" :size="24" :src="scope.row.avatarUrl" :style="{ margin: 'auto' }"></cl-avatar>
+			</template>
+
+			<template #table-column-incomeNotice="{scope}">
+				<el-switch
+					v-model="scope.row.remind"
+					active-value="1"
+					inactive-value="0"
+					@change="
+						v => {
+							changeNotice(scope.row.id, v);
+						}
+					"
+				></el-switch>
+			</template>
+
+			<template #table-column-status="{scope}">
+				<el-switch
+					v-model="scope.row.status"
+					active-value="1"
+					inactive-value="0"
+					@change="
+						v => {
+							changeStatus(scope.row.id, v);
+						}
+					"
+				></el-switch>
 			</template>
 
 			<!-- 权限设置 -->
-			<template #slot-auth="{scope}">
+			<!-- <template #slot-auth="{scope}">
 				<el-button type="text" @click="authBtnFn(scope.row)">权限设置</el-button>
-			</template>
+			</template>-->
 			<!-- 编辑 -->
+			<!--
 			<template #slot-modify="{scope}">
 				<el-button type="text" @click="modifyBtnFn(scope.row)">编辑</el-button>
 			</template>
+			-->
+
 			<!-- 删除 -->
+			<!--
 			<template #slot-del="{scope}">
 				<el-button type="text" @click="delBtnFn(scope.row)">删除</el-button>
 			</template>
+			-->
 
 			<!-- 添加 -->
 			<template #slot-add-ad-btn="{scope}">
 				<el-button type="primary" size="mini" @click="addBtnFn">添加</el-button>
 			</template>
 		</x-crud>
+
+		<el-dialog title="请员工扫下方图片完成绑定" :visible.sync="showMiniCode" width="600px">
+			<div style="text-align:center;">
+				<img :src="miniCodeSrc" style="margin:0 auto;width:280px;" />
+			</div>
+			<span slot="footer" class="dialog-footer">
+				<el-button @click="showMiniCode = false">取 消</el-button>
+				<el-button type="primary" @click="showMiniCode = false">确 定</el-button>
+			</span>
+		</el-dialog>
+
 		<!-- 新增弹窗 -->
 		<el-dialog
-			:title="`${addOrModify == 1 ? '添加' : '修改'}角色`"
+			:title="`${addOrModify == 1 ? '添加' : '修改'}员工`"
 			:visible.sync="addDialog"
 			:close-on-click-modal="false"
 			width="600px"
 		>
 			<div class="ad-modal-content">
-				<el-form
-					:model="form"
-					:rules="ruleForm"
-					ref="form"
-					label-width="100px"
-					class="demo-form"
-				>
-					<el-form-item label="角色名称" prop="roleName">
-						<el-input
-							v-model="form.roleName"
-							placeholder="请输入名称"
-							size="small"
-						></el-input>
+				<el-form :model="adForm" :rules="ruleForm" ref="adForm" label-width="100px" class="demo-form">
+					<el-form-item label="姓名" prop="adminName">
+						<el-input v-model="adForm.adminName" placeholder="请输入姓名" size="small"></el-input>
+					</el-form-item>
+					<el-form-item label="角色" prop="roleId">
+						<el-select v-model="adForm.roleName" size="small" placeholder="请选择角色" @change="selRoleFn">
+							<el-option
+								v-for="(item, index) in roleList"
+								:key="index"
+								:value="item.roleName"
+							>{{ item.roleName }}</el-option>
+						</el-select>
+					</el-form-item>
+					<!--
+					<el-form-item label="绑定小程序" prop="userId">
+						<div>
+							<div class="member-wrap flex-center" v-if="!$util.isEmpty(memberData)">
+								<div class="member-img">
+									<cl-avatar
+										shape="circle"
+										:size="40"
+										:src="memberData.avatarUrl | default_avatar"
+									></cl-avatar>
+								</div>
+								<div class="member-det">
+									<div class="app-size-28">{{ memberData.userName }}</div>
+									<div>{{ memberData.mobile }}</div>
+								</div>
+							</div>
+							<div>
+								<el-button type="primary" size="small" @click="selGoods"
+									>请选择</el-button
+								>
+							</div>
+						</div>
+					</el-form-item>
+					-->
+					<el-form-item label="登陆密码" prop="password">
+						<el-input v-model="adForm.password" placeholder="请输入登录密码" type="password" size="small"></el-input>
+					</el-form-item>
+					<el-form-item label="备注">
+						<el-input v-model="adForm.remark" type="textarea" size="small"></el-input>
+					</el-form-item>
+					<el-form-item label="收款通知" prop="remind">
+						<el-switch v-model="adForm.remind" active-value="1" inactive-value="0"></el-switch>
+					</el-form-item>
+					<el-form-item label="启用状态" prop="status">
+						<el-switch v-model="adForm.status" active-value="1" inactive-value="0"></el-switch>
 					</el-form-item>
 				</el-form>
 			</div>
 			<div slot="footer" class="dialog-footer">
 				<el-button size="small" @click="resetForm">取 消</el-button>
-				<el-button type="primary" size="small" @click="submitForm('form')">确认</el-button>
+				<el-button type="primary" size="small" @click="submitForm('adForm')">确认</el-button>
 			</div>
 		</el-dialog>
+		<!-- 选择商品 -->
+		<sel-member
+			:show.sync="selMemberModal"
+			@confirm="selMemberConfirmFn"
+			@cancel="selMemberModal = false"
+		></sel-member>
 		<!-- 权限设置 -->
 		<role-set :show.sync="roleShow" :info="modifyData" />
 	</div>
 </template>
 
 <script>
+import selMember from '@/components/module/sel-member';
 import roleSet from '@/components/role-set';
+
 export default {
 	name: 'list-ad',
 	components: {
+		selMember,
 		roleSet
 	},
 	data() {
@@ -72,30 +162,49 @@ export default {
 			// 新增或者修改弹窗
 			addOrModify: 1,
 			addDialog: false,
-			form: {
-				roleName: ''
+			showMiniCode: false,
+			miniCodeSrc: '',
+			adForm: {
+				adminName: '',
+				roleId: '',
+				roleName: '',
+				remind: '1',
+				password: '',
+				userId: '',
+				remark: '',
+				status: '1'
 			},
 			ruleForm: {
-				roleName: [{ required: true, message: '请输入名称', trigger: 'blur' }]
+				adminName: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+				roleName: [{ required: true, message: '请选择角色', trigger: 'change' }],
+				//userId: [{ required: true, message: '请选择会员', trigger: 'blur' }],
+				password: { required: true, message: '请输入密码', trigger: 'blur' }
 			},
+			// 角色列表
+			roleList: [],
+			// 商品列表
+			selMemberModal: false,
+			memberData: {},
 			// 权限设置
 			roleShow: false
 		};
 	},
 	methods: {
 		// api
+		getRole() {
+			if (!this.$util.isEmpty(this.roleList)) return this.roleList;
+			this.$service.role.list().then(res => {
+				this.roleList = res.list;
+			});
+		},
 		delBtnFn(item) {
-
-			this.$message.success('即将开通...')
-			return false
-
-			this.$confirm('是否删除该角色?', '提示', {
+			this.$confirm('是否删除该员工?', '提示', {
 				confirmButtonText: '确定',
 				cancelButtonText: '取消',
 				type: 'warning'
 			})
 				.then(() => {
-					this.$service.role.delete({ id: item.id }).then(res => {
+					this.$service.staff.delete({ id: item.id }).then(res => {
 						this.$message.success('删除成功!');
 						this.app.refresh({ type: this.tabIndex });
 					});
@@ -104,48 +213,122 @@ export default {
 		},
 		// operate
 		authBtnFn(item) {
-			this.$message.success('即将开通...')
-			return false
 			this.modifyData = item;
 			this.roleShow = true;
 		},
 		modifyBtnFn(item) {
-			this.addOrModify = 2;
-			this.modifyData = item;
-			this.addDialog = true;
-			let data = JSON.parse(JSON.stringify(item));
-			data.addTime = this.$util.$formatDate(data.addTime);
-			this.form.roleName = item.roleName;
+			this.$service.staff
+				.info({
+					id: item.id
+				})
+				.then(async staffInfo => {
+					let memberInfo = {};
+
+					if (staffInfo.userId && staffInfo.userId != '0') {
+						memberInfo = await this.$service.member.info({ userId: staffInfo.userId });
+					}
+
+					this.getRole();
+
+					this.memberData = memberInfo;
+
+					this.addOrModify = 2;
+					this.modifyData = staffInfo;
+					this.addDialog = true;
+					let data = JSON.parse(JSON.stringify(staffInfo));
+					data.startTime = this.$util.$formatDate(data.startTime);
+					data.endTime = this.$util.$formatDate(data.endTime);
+					if (this.$util.isEmpty(data)) return;
+					Object.keys(this.adForm).forEach(i => {
+						// if (i == 'password') return false;
+						this.adForm[i] = data[i];
+					});
+
+					this.ruleForm.password.required = false;
+				});
 		},
 		addBtnFn() {
+			this.getRole();
 			this.addOrModify = 1;
 			this.addDialog = true;
+			this.memberData = {};
+
+			this.adForm = {
+				adminName: '',
+				roleId: '',
+				roleName: '',
+				remind: '1',
+				password: '',
+				userId: '',
+				remark: '',
+				status: '1'
+			};
+
+			this.ruleForm.password.required = true;
+		},
+		// 切换收款通知
+		changeNotice(id, val) {
+			this.$service.common.updateRemind({ id, remind: val }).then(res => {
+				this.$message.success('操作成功!');
+				this.app.refresh();
+			});
+		},
+		// 启用状态
+		changeStatus(id, val) {
+			this.$service.common.updateStatus({ id, status: val }).then(res => {
+				this.$message.success('操作成功!');
+				this.app.refresh();
+			});
+		},
+		// dialog
+		selRoleFn(val) {
+			let index = this.roleList.findIndex(e => e.roleName == val);
+			this.adForm.roleId = this.roleList[index].id;
+			console.log('this.adForm.roleId', this.adForm.roleId);
 		},
 		resetForm() {
-			this.$refs['form'].resetFields();
+			this.$refs['adForm'].resetFields();
+			this.memberData = {};
 			this.addDialog = false;
 		},
 
 		addFn() {
+			let adForm = JSON.parse(JSON.stringify(this.adForm));
 			let host = null;
+			delete adForm.roleName;
 			if (this.addOrModify == 1) {
 				host = () => {
-					return this.$service.role.add(this.form);
+					return this.$service.shopAdmin.prepareBind(this.adForm);
 				};
 			} else {
 				host = () => {
-					return this.$service.role.update({
+					return this.$service.shopAdmin.update({
 						id: this.modifyData.id,
-						...this.form
+						...adForm
 					});
 				};
 			}
-			host(this.form).then(res => {
-				this.$message.success('操作成功!');
+			host(adForm).then(res => {
+				this.miniCodeSrc = res.miniCode;
+				this.showMiniCode = true;
+
+				//this.$message.success('操作成功!');
 				this.resetForm();
 				this.app.refresh({ type: this.tabIndex });
 			});
 		},
+		// 选择会员
+		selGoods() {
+			this.selMemberModal = true;
+			setTimeout(() => {
+				console.log(this.memberData);
+			}, 6000);
+		},
+		selMemberConfirmFn(item) {
+			this.memberData = item;
+			this.adForm.userId = item.id;
+			this.selMemberModal = false;
+		},
 		submitForm(formName) {
 			this.$refs[formName].validate(valid => {
 				if (valid) {
@@ -159,23 +342,76 @@ export default {
 		// x-crud 组件ad
 		onLoad({ ctx, app }) {
 			this.app = app;
-			ctx.service(this.$service.role)
+			ctx.service(this.$service.shopAdmin)
 				.set('table', {
 					columns: [
+						{
+							prop: 'id',
+							label: 'id',
+							align: 'center',
+							width: 60
+						},
+						{
+							prop: 'avatar',
+							label: '头像',
+							align: 'center',
+							width: 90,
+							formatter: row => {
+								return row.adminBaseInfo.avatarUrl;
+							}
+						},
+						{
+							prop: 'adminName',
+							label: '姓名',
+							align: 'center',
+							formatter: row => {
+								return row.adminBaseInfo.adminName;
+							}
+						},
+						{
+							prop: 'mobile',
+							label: '手机号',
+							align: 'center',
+							formatter: row => {
+								return row.adminBaseInfo.mobile;
+							}
+						},
 						{
 							prop: 'roleName',
-							label: '角色名称',
+							label: '角色',
 							align: 'center'
 						},
 						{
-							prop: 'num',
-							label: '成员数量',
+							prop: 'userId',
+							label: '绑定小程序',
+							align: 'center',
+							'min-width': 80
+						},
+						{
+							prop: 'incomeNotice',
+							label: '收款通知',
 							align: 'center'
 						},
 						{
-							prop: 'addTime',
+							prop: 'addDate',
 							label: '添加时间',
 							align: 'center'
+						},
+						{
+							prop: 'lastLoginTime',
+							label: '最后登录',
+							align: 'center',
+							formatter: row => {
+								if (row.loginTime == '0') {
+									return '-';
+								}
+								return row.lastLoginTime;
+							}
+						},
+						{
+							prop: 'status',
+							label: '启用状态',
+							align: 'center'
 						}
 					],
 					// 操作列
@@ -183,7 +419,7 @@ export default {
 						visible: true, // 是否显示
 						// 同 element-ui Table-column Attributes
 						props: {
-							width: 160,
+							width: 120,
 							align: 'center',
 							fixed: 'right',
 							label: '操作'
@@ -210,7 +446,12 @@ export default {
 				// })
 				.done();
 			app.refresh({ type: this.tabIndex });
-		}
+		},
+		resetForm(formName) {
+			let formNamed = formName || 'form';
+			this.$refs[formNamed].resetFields();
+			this.addDialog = false;
+		},
 	}
 };
 </script>
@@ -227,4 +468,4 @@ export default {
 		}
 	}
 }
-</style>
+</style>

Некоторые файлы не были показаны из-за большого количества измененных файлов