Ver Fonte

列表页优化

shish há 5 anos atrás
pai
commit
d74bf0a536

+ 1 - 1
ghs/README.md

@@ -1,2 +1,2 @@
 说明文档
-https://admin.cool-js.com/front/crud/form.html#op-%E6%93%8D%E4%BD%9C%E6%A0%8F%E9%85%8D%E7%BD%AE
+ http://docs-comm.cool-admin.com

+ 3 - 1
ghs/src/cool/request/index.js

@@ -29,6 +29,7 @@ import chat from '@/service/chat/index';
 import itemClass from '@/service/item-class/index';
 import item from '@/service/item/index';
 import ptItem from '@/service/pt-item/index';
+import custom from '@/service/custom/index';
 
 export function SET_SERVICE({ store }) {
 	// const files = require.context('@/service/', true, /\.js$/);
@@ -63,7 +64,8 @@ export function SET_SERVICE({ store }) {
 		chat,
 		itemClass,
 		item,
-		ptItem
+		ptItem,
+		custom
 	};
 
 	Vue.prototype.$service = modules;

+ 7 - 0
ghs/src/service/custom/index.js

@@ -0,0 +1,7 @@
+import { BaseService, Service } from '@/cool';
+
+@Service('custom')
+export class CustomService extends BaseService {
+
+}
+export default new CustomService();

+ 2 - 2
ghs/src/views/item-class/list.vue

@@ -36,14 +36,14 @@
 
 			<template #table-column-inTurn="{scope}">
 				<span v-if="!sort.status">{{ scope.row.inTurn }}</span>
-				<el-input-number
+				<el-input
 					ref="sort-input"
 					focus
 					size="mini"
 					v-else
 					v-model="scope.row.inTurn"
 					@blur="changeSort(scope.row)"
-				></el-input-number>
+				></el-input>
 			</template>
 
 			<!-- 排序 -->

+ 2 - 2
ghs/src/views/item/list.vue

@@ -34,14 +34,14 @@
 			<template #table-column-inTurn="{scope}">
 				<span v-if="!sort.status">{{ scope.row.inTurn }}</span>
 
-				<el-input-number
+				<el-input
 					ref="sort-input"
 					focus
 					size="mini"
 					v-else
 					v-model="scope.row.inTurn"
 					@blur="changeSort(scope.row)"
-				></el-input-number>
+				></el-input>
 			</template>
 
 			<!-- 排序 -->

+ 24 - 365
ghs/src/views/member/list.vue

@@ -1,7 +1,7 @@
 <template>
 	<div class="app-list-content">
 		<x-crud class="liu-crud-wrap" @load="onLoad">
-			<template #slot-tabs="{ scope }">
+			<template #slot-tabs>
 				<el-tabs class="liu-tabs" type="border-card" v-model="tabIndex" @tab-click="handleClick">
 					<el-tab-pane
 						v-for="(item, index) in tabsData"
@@ -29,20 +29,20 @@
 				<span v-else>-</span>
 			</template>
 
-			<template #table-column-userName="{scope}">
+			<template #table-column-name="{scope}">
 				<el-link
 					:underline="true"
 					@click="detailShowFn(scope.row)"
 					style="font-size:12px;"
-				>{{ scope.row.userName }}</el-link>
+				>{{ scope.row.name }}</el-link>
 			</template>
 
 			<template #table-column-balance="{scope}">
-				<span>{{ scope.row.userAsset.balance }}</span>
+				<span>{{ scope.row.balance }}</span>
 			</template>
 
 			<template #table-column-growth="{scope}">
-				<span>{{ scope.row.userAsset.growth }}</span>
+				<span>{{ scope.row.growth }}</span>
 			</template>
 
 			<template #table-column-subscribe="{scope}">
@@ -71,22 +71,6 @@
 				<span v-else></span>
 			</template>
 
-			<template #table-column-memberLevel="{scope}">
-				<template v-if="scope.row.userAsset.member == 0">
-					<template v-if="scope.row.mobile == ''">
-						<el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="info">普</el-tag>
-					</template>
-					<template v-else>
-						<el-tag size="mini" v-if="scope.row.userAsset.member == 0" type="success">会员</el-tag>
-					</template>
-				</template>
-				<el-tag size="small" v-else>{{ scope.row.userAsset.member }}</el-tag>
-			</template>
-
-			<template #table-column-discount="{scope}">
-				<template v-if="scope.row.userAsset.discount < 1">{{scope.row.userAsset.discount}}</template>
-				<template v-else>-</template>
-			</template>
 
 			<!-- 充值 -->
 			<template #slot-recharge="{scope}">
@@ -97,84 +81,7 @@
 				<el-button type="text" size="mini" @click="upgradeShowFn(scope.row)">升级</el-button>
 			</template>
 		</x-crud>
-		<!-- 充值 -->
-		<el-dialog title="充值" :visible.sync="rechargeDialog" :close-on-click-modal="false" width="600px">
-			<div class="recharge-modal-content">
-				<div class="card-name">
-					<cardName :data="modalData" />
-				</div>
-				<div>
-					<el-form
-						:model="rechargeForm"
-						:rules="rechargeRules"
-						ref="rechargeForm"
-						label-width="80px"
-						class="demo-form"
-					>
-						<el-form-item label="充值金额">
-							<el-input-number
-								v-model="rechargeForm.rechargeAmount"
-								placeholder="充值金额"
-								size="small"
-								:min="0"
-							></el-input-number>
-						</el-form-item>
-						<el-form-item label="确认密码">
-							<el-input
-								v-model="rechargeForm.confirmPassword"
-								type="password"
-								placeholder="确认密码"
-								size="small"
-							></el-input>
-						</el-form-item>
-					</el-form>
-				</div>
-			</div>
-			<div slot="footer" class="dialog-footer">
-				<el-button size="small" @click="resetForm">取 消</el-button>
-				<el-button type="primary" size="small" @click="rechargeAmount">充值</el-button>
-			</div>
-		</el-dialog>
-		<!-- 升级 -->
-		<el-dialog title="升级" :visible.sync="upgradeDialog" :close-on-click-modal="false" width="600px">
-			<div class="recharge-modal-content">
-				<div class="card-name">
-					<cardName :data="modalData" />
-				</div>
-				<div>
-					<el-form
-						:model="upgradeForm"
-						:rules="upgradeRules"
-						ref="upgradeForm"
-						label-width="100px"
-						class="demo-form"
-					>
-						<el-form-item label="请选择等级">
-							<el-select v-model="upgradeForm.member" size="small" placeholder="请选择">
-								<el-option
-									v-for="(item, index) in levelData.list"
-									:key="index"
-									:label="`${item.level}`"
-									:value="item.level"
-								></el-option>
-							</el-select>
-						</el-form-item>
-						<el-form-item label="确认密码">
-							<el-input
-								v-model="upgradeForm.confirmPassword"
-								placeholder="确认密码"
-								type="password"
-								size="small"
-							></el-input>
-						</el-form-item>
-					</el-form>
-				</div>
-			</div>
-			<div slot="footer" class="dialog-footer">
-				<el-button size="small" @click="resetForm">取 消</el-button>
-				<el-button type="primary" size="small" @click="upgradeAmount">充值</el-button>
-			</div>
-		</el-dialog>
+
 		<!-- 详情 -->
 		<detail-draw :show.sync="drapShow" :info="modalData" />
 	</div>
@@ -193,41 +100,16 @@ export default {
 		return {
 			// x-crud
 			app: null,
-			tabIndex: '-1',
+			tabIndex: '0',
 			tabsData: [
 				{
 					text: '全部',
-					key: '-1',
-					val: 0
-				},
-				{
-					text: '粉丝',
-					key: '1',
-					val: 0
-				},
-				{
-					text: '会员',
-					key: '2',
+					key: '0',
 					val: 0
 				}
 			],
 			// modal
 			modalData: {},
-			// recharge
-			rechargeDialog: false,
-			rechargeForm: {
-				rechargeAmount: '',
-				confirmPassword: ''
-			},
-			rechargeRules: {},
-			// upgrade
-			upgradeDialog: false,
-			upgradeForm: {
-				member: '',
-				confirmPassword: ''
-			},
-			upgradeRules: {},
-			// draw
 			drapShow: false
 		};
 	},
@@ -244,58 +126,12 @@ export default {
 			console.log(tab, e);
 			this.app.refresh({ type: this.tabIndex });
 		},
-		// 充值
-		rechargeAmount() {
-			this.$service.member
-				.recharge({
-					userId: this.modalData.id,
-					...this.rechargeForm
-				})
-				.then(res => {
-					console.log(res);
-					this.$message.success('充值成功!');
-					this.resetForm();
-				});
-		},
-		// 升级
-		upgradeAmount() {
-			this.$service.member
-				.upgrade({
-					userId: this.modalData.id,
-					...this.upgradeForm
-				})
-				.then(res => {
-					this.$message.success('升级成功!');
-					console.log(res);
-					this.resetForm();
-				});
-		},
-		// modal
 		// 详情
 		detailShowFn(item) {
 			this.modalData = item;
 			this.drapShow = true;
 		},
-		rechargeShowFn(item) {
-			this.modalData = item;
-			this.rechargeDialog = true;
-		},
-		upgradeShowFn(item) {
-			this.modalData = item;
-			this.upgradeDialog = true;
-		},
-		resetForm() {
-			try {
-				this.$refs['rechargeForm'].resetFields();
-			} catch (e) {}
-			try {
-				this.$refs['upgradeForm'].resetFields();
-			} catch (e) {}
 
-			this.rechargeDialog = false;
-			this.upgradeDialog = false;
-		},
-		// crud
 		onLoad({ ctx, app }) {
 			this.app = app;
 
@@ -304,256 +140,79 @@ export default {
 				this.tabIndex = this.$route.query.type;
 			}
 
-			ctx.service(this.$service.member)
+			ctx.service(this.$service.custom)
 				.set('table', {
 					columns: [
 						{
 							prop: 'id',
 							label: 'ID',
 							align: 'center',
-							width: 100
+							width: 120
 						},
 						{
 							prop: 'avatarUrl',
 							label: '头像',
 							align: 'center',
-							width: 80
+							width: 120
 						},
 						{
-							prop: 'userName',
+							prop: 'name',
 							label: '昵称',
-							align: 'center'
+							align: 'center',
+							width: 280
 						},
 						{
 							prop: 'mobile',
 							label: '手机号',
 							align: 'center',
-							width: 120
-						},
-						{
-							prop: 'memberLevel',
-							label: '会员级别',
-							align: 'center',
-							emptyText: '无'
+							width: 180
 						},
 						{
 							prop: 'growth',
 							label: '成长值',
-							align: 'center'
-						},
-						{
-							prop: 'discount',
-							label: '折扣',
-							align: 'center'
-						},
-						{
-							prop: 'balance',
-							label: '余额',
-							align: 'center'
-						},
-						{
-							prop: 'subscribe',
-							label: '粉丝',
 							align: 'center',
-							sortable: false,
-							width: 150
+							width: 200
 						},
 						{
 							prop: 'store',
 							label: '已到店',
 							align: 'center',
-							width: 100
+							width: 120
 						},
 						{
 							prop: 'sourceType',
 							label: '来源',
 							align: 'center',
-							width: 100
+							width: 120
 						},
 						{
-							prop: 'visitTimeFormat',
+							prop: 'visitTime',
 							label: '最近访问',
 							align: 'center',
-							width: 140
+							width: 240
 						}
 					],
 					// 操作列
 					op: {
 						visible: true, // 是否显示
-						// 同 element-ui Table-column Attributes
 						props: {
 							width: 180,
 							align: 'center',
 							fixed: 'right',
 							label: '操作'
 						},
-						// 布局,请移步 `layout`
-						layout: ['slot-detail', 'slot-recharge', 'slot-upgrade', 'slot-ship']
+						layout: []
 					}
 				})
-				.set('upsert', {
-					props: {
-						width: '400px',
-						'label-width': '100px'
-					},
-
-					items: [
-						{
-							prop: 'mobile',
-							label: '手机号',
-							span: 24,
-							component: {
-								name: 'el-input',
-								attrs: {
-									placeholder: '请填写手机号'
-								}
-							},
-							rules: [
-								{
-									required: true,
-									message: '请填写手机号'
-								},
-								{
-									validator: (rule, value, callback) => {
-										if (!/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value)) {
-											return callback(new Error('手机号码不正确'));
-										}
-
-										callback();
-									}
-								}
-							]
-						},
-						{
-							prop: 'confirmMobile',
-							label: '确认手机号',
-							span: 24,
-							component: {
-								name: 'el-input',
-								attrs: {
-									placeholder: '请填写'
-								}
-							},
-							rules: [
-								{
-									required: true,
-									message: '请填写'
-								},
-								{
-									validator: (rule, value, callback) => {
-										if (app.getForm('mobile') != value) {
-											return callback(new Error('两次输入手机号不一致'));
-										}
-
-										callback();
-									}
-								}
-							]
-						},
-						{
-							prop: 'balance',
-							label: '余额',
-							span: 24,
-							component: {
-								name: 'el-input-number',
-								props: {
-									min: 0,
-									max: 10000000
-								},
-								attrs: {
-									placeholder: '请填写余额'
-								}
-							},
-							rules: {
-								required: true,
-								message: '请填写余额'
-							}
-						},
-						{
-							prop: 'memberLevel',
-							label: '客户等级',
-							span: 24,
-							component: {
-								name: 'el-select',
-								attrs: {
-									placeholder: '请选择'
-								},
-								options: this.$util.isEmpty(this.levelData)
-									? []
-									: this.levelData.list.map(e => {
-											e.label = e.level;
-											e.value = e.level;
-											return e;
-									  })
-							},
-							rules: {
-								required: true,
-								message: '等级不能为空'
-							}
-						},
-						{
-							prop: 'realName',
-							label: '姓名',
-							span: 24,
-							component: {
-								name: 'el-input',
-								attrs: {
-									placeholder: '选填'
-								}
-							}
-						},
-						{
-							prop: 'confirmPassword',
-							label: '确认密码',
-							span: 24,
-							component: {
-								name: 'el-input',
-								attrs: {
-									placeholder: '请填写您的确认密码'
-								},
-								props: {
-									placeholder: '请填写您的确认密码',
-									type: 'password'
-								}
-							},
-							rules: [
-								{
-									required: true,
-									message: '密码不能为空'
-								},
-								{
-									min: 6,
-									max: 16,
-									message: '密码长度在6到16个字符'
-								}
-							]
-						},
-						{
-							prop: 'tips',
-							component: (
-								<div>
-									<i class="el-icon-warning"></i>
-									<span style="margin-left: 6px">
-										注册会员时会根据手机号识别客户,等级和余额自动同步到帐户里。
-									</span>
-								</div>
-							)
-						}
-					]
-				})
 				.set('layout', [
 					['slot-tabs'],
-					['search-key', 'flex1', 'add-btn', 'refresh-btn'],
+					//['search-key', 'flex1', 'add-btn', 'refresh-btn'],
 					['data-table'],
 					['flex1', 'pagination']
 				])
 				.on('refresh', async (params, { next }) => {
-					// 继续执行刷新
-					let { asset } = await next(params);
-					if (this.$util.isEmpty(asset)) return false;
-					this.tabsData[0].val = asset.totalUser;
-					this.tabsData[1].val = asset.totalFans;
-					this.tabsData[2].val = asset.totalMember;
+					let result = await next(params);
+					this.tabsData[0].val = result.allNum
 				})
 				.done();
 			app.refresh({ type: this.tabIndex });

+ 6 - 6
ghs/src/views/order/list.vue

@@ -336,12 +336,12 @@ export default {
 				])
 				.on('refresh', async (params, { next }) => {
 					// 继续执行刷新
-					let { asset } = await next(params);
-					this.tabsData[0].val = asset.totalOrder;
-					this.tabsData[1].val = asset.unPayOrder;
-					this.tabsData[2].val = asset.unSendOrder;
-					this.tabsData[3].val = asset.sendingOrder;
-					this.tabsData[4].val = asset.finishOrder;
+					let  asset  = await next(params);
+					this.tabsData[0].val = asset.allNum;
+					this.tabsData[1].val = asset.unPayNum;
+					this.tabsData[2].val = asset.unSendNum;
+					this.tabsData[3].val = asset.sendingNum;
+					this.tabsData[4].val = asset.finishNum;
 				})
 				.done();
 			app.refresh({ status: this.tabIndex });

+ 1 - 1
hd/README.md

@@ -1,2 +1,2 @@
 说明文档
-https://admin.cool-js.com/front/crud/form.html#op-%E6%93%8D%E4%BD%9C%E6%A0%8F%E9%85%8D%E7%BD%AE
+ http://docs-comm.cool-admin.com

+ 1 - 1
pt/README.md

@@ -1,2 +1,2 @@
 说明文档
-https://admin.cool-js.com/front/crud/form.html#op-%E6%93%8D%E4%BD%9C%E6%A0%8F%E9%85%8D%E7%BD%AE
+ http://docs-comm.cool-admin.com