lhl 2 years ago
parent
commit
dd7e580a90

+ 10 - 0
src/api/agent.js

@@ -104,3 +104,13 @@ export function agentSpreadApi (data) {
         data
     })
 }
+
+
+export function getKpi(params) {
+	//work/getPerformanceList 
+	return request({
+	    url: 'work/getPerformanceList',
+	    method: 'get',
+	    params
+	})
+}

+ 29 - 3
src/api/order.js

@@ -602,8 +602,8 @@ export function distributionOrder(id) {
 export function orderServiceRefundList(data) {
     return request({
         url: '/service/refund_lst ',
-        method: 'get',
-        params: data
+        method: 'post',
+        data
     })
 };
 
@@ -657,4 +657,30 @@ export function putOpenRefund(data) {
       method: 'post',
       data
   })
-};
+};
+
+
+export function getServeOrder(params) {
+	return request({
+	    url: `service/Subscribe/lst`,
+	    method: 'get',
+	    params
+	})
+}
+
+
+//服务项目退款审核
+export function serveRefund(data) {
+	return request({
+	    url: `service/refund_order_examine`,
+	    method: 'post',
+	    data
+	});
+}
+
+export function member_update(data) {
+	return request({
+	    url: `service/Subscribe/member_update`,
+	    method: 'post',
+	    data});
+}

+ 24 - 0
src/api/setting.js

@@ -1093,3 +1093,27 @@ export function scanUpload(data) {
     data,
   });
 }
+
+
+export function getLadderRewards(data) {
+	return request({
+	  url: `work/getLadderRewards`,
+	  method: 'get',
+	});
+}
+
+export function addJt(data) {
+	return request({
+	  url: `setting/group_data`,
+	  method: 'post',
+	  data
+	});
+}
+
+export function editJt(id,data) {
+	return request({
+	  url: `setting/group_data/${id}`,
+	  method: 'put',
+	  data
+	});
+}

BIN
src/assets/images/bluesgin.png


BIN
src/assets/images/logo-small.png


BIN
src/assets/images/logo.png


BIN
src/assets/images/pclogin.png


BIN
src/assets/images/sw.jpg


BIN
src/assets/images/wechat_demo.png


+ 5 - 0
src/components/goodsList/index.vue

@@ -199,6 +199,11 @@ export default {
           slot: "store_name",
           minWidth: 200,
         },
+		{
+		  title: "价格",
+		  key: "price",
+		  minWidth: 200,
+		},
 		{
 		  title: "商品类型",
 		  slot: "product_type",

+ 571 - 0
src/pages/agent/kpi/index.vue

@@ -0,0 +1,571 @@
+<template>
+	<!-- 订单-售后订单 -->
+	<div>
+		<Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
+			<div class="new_card_pd">
+				<!-- 筛选条件 -->
+				<Form ref="pagination" inline :model="pagination" :label-width="labelWidth"
+					:label-position="labelPosition" @submit.native.prevent>
+					
+					<FormItem label="选择员工:">
+						<Select v-model="pagination.member_id" class="input-add">
+							<Option v-for="(item, index) in ygList" :value="item.id" :key="index">{{ item.name }}
+							</Option>
+						</Select>
+					</FormItem>
+					<FormItem label="业绩类型:">
+						<Select v-model="pagination.type" class="input-add">
+							<Option v-for="(item, index) in num" :value="item.value" :key="index">{{ item.name }}
+							</Option>
+						</Select>
+						<Button type="primary" @click="orderSearch()">查询</Button>
+					</FormItem>
+					<!-- <FormItem label="订单搜索:" label-for="title">
+						<Input v-model="pagination.order_id" placeholder="请输入订单号" class="input-add mr14" />
+						
+					</FormItem> -->
+					<!-- <FormItem label="退款时间:">
+						<DatePicker :editable="false" @on-change="onchangeTime" :value="pagination.time" format="yyyy/MM/dd"
+							type="daterange" placement="bottom-start" placeholder="自定义时间" class="input-add"
+							:options="options"></DatePicker>
+					</FormItem> -->
+				</Form>
+			</div>
+		</Card>
+		<Card :bordered="false" dis-hover class="ivu-mt">
+			<!-- 售后订单表格 -->
+			<Table :columns="thead" :data="tbody" ref="table" :loading="loading" highlight-row no-userFrom-text="暂无数据"
+				no-filtered-userFrom-text="暂无筛选结果">
+				<template slot-scope="{ row }" slot="order_id">
+					<span v-text="row.order_id" style="display: block"></span>
+					<span v-show="row.is_del === 1 && row.delete_time == null" class="span-del">用户已删除</span>
+				</template>
+				<template slot-scope="{ row }" slot="nickname">
+					<div>用户名:{{ row.real_name }}</div>
+					<div>手机号:{{ row.user_phone }}</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="kf">
+					<span class="tabBox_pice">{{showName(row.work_member_id)}}</span>
+				</template>
+				<template slot-scope="{ row }" slot="info">
+					<div class="tabBox" v-for="(val, i) in row.info" :key="i">
+						<div class="tabBox_img" v-viewer>
+							<img v-lazy="val.slider_image" />
+						</div>
+						<span class="tabBox_tit">{{ val.store_name }}</span>
+						<span class="tabBox_pice">{{'¥' + val.pay_price}}</span>
+					</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="pay_price">
+					<span class="tabBox_pice">{{'¥' + showPrice(row.info)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="reservation_time">
+					<span class="tabBox_pice">{{showTime(row.reservation_time)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="store">
+					<span class="tabBox_pice">{{row.store.name}}</span>
+				</template>
+
+				<template slot-scope="{ row }" slot="type">
+					<span v-if="row.type == 1">销售业绩</span>
+					<span  v-if="row.type == 2">手工业绩</span>
+				</template>
+
+				<template slot-scope="{ row }" slot="statusName">
+					<Tooltip theme="dark" max-width="300" :delay="600">
+						<div v-html="row.refund_reason" class="pt5"></div>
+						<div slot="content">
+							<div class="pt5">退款原因:{{row.refund_explain}}</div>
+							<div v-if="row.refund_goods_explain" class="pt5">退货原因:{{row.refund_goods_explain}}</div>
+						</div>
+					</Tooltip>
+					<div class="pictrue-box" v-if="row.refund_img">
+						<div v-viewer v-for="(item, index) in row.refund_img || []" :key="index">
+							<img class="pictrue mr10" v-lazy="item" :src="item" />
+						</div>
+					</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="add_time">
+					<span class="tabBox_pice">{{showTime(row.add_time)}}</span>
+				</template>
+				<!-- <template slot-scope="{ row }" slot="statusGoodName">
+          <div v-html="row.refund_goods_explain" class="pt5"></div>
+          <div class="pictrue-box" v-if="row.refund_goods_img">
+            <div
+              v-viewer
+              v-for="(item, index) in row.refund_goods_img || []"
+              :key="index"
+            >
+              <img class="pictrue mr10" v-lazy="item" :src="item" />
+            </div>
+          </div>
+        </template> -->
+				<template slot-scope="{ row }" slot="action">
+					<a @click="changeMenu(row)" v-if="row.status == 0">修改服务员工</a>
+				</template>
+			</Table>
+			<div class="acea-row row-right page">
+				<Page :total="total" :current="pagination.page" show-elevator show-total @on-change="pageChange"
+					:page-size="pagination.limit" />
+			</div>
+		</Card>
+		<!-- 编辑 退款 退积分 不退款-->
+		<edit-from ref="edits" :FromData="FromData" @submitFail="submitFail"></edit-from>
+		<!-- 详情 -->
+		<details-from ref="detailss" :orderDatalist="orderDatalist" :orderId="orderId" :rowActive="rowActive"
+			:openErp="openErp"></details-from>
+		<!-- 备注 -->
+		<order-remark ref="remarks" remarkType="refund" :orderId="orderId" @submitFail="submitFail"></order-remark>
+		<!-- 记录 -->
+		<order-record ref="record"></order-record>
+		<Modal v-model="modals" scrollable title="选择员工" class="order_box" :closable="false">
+			<Form :label-width="80">
+				<FormItem label="员工:" prop="chooseId">
+					<Select v-model="chooseId" style="width: 250px">
+						<Option v-for="item in ygList" :key="item.id" :value="item.id">{{ item.name }}</Option>
+					</Select>
+				</FormItem>
+			</Form>
+			<div slot="footer">
+				<Button type="primary" @click="goCancal">提交</Button>
+				<Button @click="cancal">取消</Button>
+			</div>
+		</Modal>
+	</div>
+</template>
+
+<script>
+	import {
+		mapState
+	} from "vuex";
+	import {
+		orderRefundList,
+		orderList,
+		getOrdeDatas,
+		getDataInfo,
+		getRefundDataInfo,
+		getRefundFrom,
+		getRefundOrderFrom,
+		getnoRefund,
+		refundIntegral,
+		getDistribution,
+		writeUpdate,
+		getServeOrder,
+		member_update
+	} from "@/api/order";
+	import {
+		getYgList
+	} from "@/api/store"
+	import {
+		erpConfig
+	} from "@/api/erp";
+	import { getKpi } from "@/api/agent"
+	import editFrom from "@/components/from/from";
+	import timeOptions from "@/utils/timeOptions";
+	export default {
+		components: {
+			editFrom,
+		},
+		data() {
+			return {
+				modals: false,
+				order_id: '',
+				ygList: [],
+				chooseId: 0,
+				openErp: false,
+				thead: [
+					{
+						title: "id",
+						align: "id",
+						key: "id",
+						minWidth: 50,
+					},{
+						title: "员工",
+						align: "name",
+						key: "name",
+						minWidth: 150,
+					},
+					{
+						title: "员工手机",
+						key: "mobile",
+						minWidth: 130,
+					},
+					{
+						title: "业绩值变动",
+						key: "performance",
+						minWidth: 130,
+					},
+					
+					{
+						title: "业绩值分类",
+						slot: "type",
+						minWidth: 70,
+					},
+					{
+						title: "详情",
+						key: "content",
+						minWidth: 150,
+					},
+					{
+						title: "业绩值变动后",
+						key: "balance",
+						minWidth: 70,
+					},
+					{
+						title: "更新时间",
+						key: "create_time",
+						minWidth: 110,
+					},
+				],
+				tbody: [],
+				num: [{
+					name: '全部',
+					value: 0
+				},{
+						name: '销售业绩',
+						value: 1
+					},
+					{
+						name: '手工业绩',
+						value: 2
+					}, 
+				],
+				orderDatalist: null,
+				loading: false,
+				FromData: null,
+				total: 0,
+				orderId: 0,
+				animal: 1,
+				pagination: {
+					type: 0,
+					member_id: 0,
+					page: 1,
+					limit: 15,
+					order_id: "",
+					time: "",
+					status: 0
+				},
+				options: timeOptions,
+				timeVal: [],
+				modal: false,
+				qrcode: null,
+				name: "",
+				spin: false,
+				rowActive: {},
+			};
+		},
+		computed: {
+			...mapState("order", ["orderChartType"]),
+			// ...mapState("admin/layout", ["isMobile"]),
+			labelWidth() {
+				return this.isMobile ? undefined : 96;
+			},
+			labelPosition() {
+				return this.isMobile ? "top" : "right";
+			},
+		},
+		created() {
+			this.getYgList()
+			this.getErpConfig();
+			this.getOrderList();
+		},
+		methods: {
+			showName( id) {
+				let yg = this.ygList.find(item => {
+					return item.id == id
+				})
+				console.log(yg,'ygygygyg')
+				return yg? yg.name: ''
+			},
+			getYgList() {
+				getYgList({
+					page: 1,
+					limit: 1000
+				}).then(res => {
+					this.ygList = res.data.list
+				})
+			},
+			showTime(time) {
+				var date = new Date(time * 1000);
+				var year = date.getFullYear(); // 获取年份
+				var month = ("0" + (date.getMonth() + 1)).slice(-2); // 获取月份(注意月份从 0 开始,需要加 1)
+				var day = ("0" + date.getDate()).slice(-2); // 获取日期
+				var hours = ("0" + date.getHours()).slice(-2); // 获取小时
+				var minutes = ("0" + date.getMinutes()).slice(-2); // 获取分钟
+				var seconds = ("0" + date.getSeconds()).slice(-2); // 获取秒钟
+				var dateString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; // 自定义时间格式
+				return dateString
+			},
+			showPrice(list) {
+				let price = 0;
+				list.forEach(item => {
+					price += item.pay_price * 1
+				})
+				return price.toFixed(2)
+			},
+			//erp配置
+			getErpConfig() {
+				erpConfig().then(res => {
+					this.openErp = res.data.open_erp;
+				}).catch(err => {
+					this.$Message.error(err.msg);
+				})
+			},
+			onchangeCode(e) {
+				this.animal = e;
+				this.qrcodeShow();
+			},
+			// 具体日期搜索();
+			onchangeTime(e) {
+				console.log(e,'eeeeeee')
+				this.pagination.page = 1;
+				this.timeVal = e;
+				this.pagination.time = this.timeVal[0] ? this.timeVal.join("-") : "";
+			},
+			// 获取详情表单数据
+			getData(id, type) {
+				getRefundDataInfo(id)
+					.then(async (res) => {
+						if (!type) {
+							this.$refs.detailss.modals = true;
+						}
+						this.$refs.detailss.activeName = "detail";
+						this.orderDatalist = res.data;
+						// if (this.orderDatalist.orderInfo.refund_img) {
+						//   try {
+						//     this.orderDatalist.orderInfo.refund_img = JSON.parse(
+						//       this.orderDatalist.orderInfo.refund_img
+						//     );
+						//   } catch (e) {
+						//     this.orderDatalist.orderInfo.refund_img = [];
+						//   }
+						// }
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 操作
+			changeMenu(row, name) {
+				console.log('dddddddddddddddd')
+				this.modals = true
+				this.order_id = row.id
+			},
+			cancal() {
+				this.modals = false
+				this.remark = ''
+			},
+			getygList() {
+				getYgList().then(res => {
+					console.log(res)
+					this.ygList = res.data.list
+				})
+			},
+			//goCancal
+			goCancal() {
+				if (this.chooseId == '') {
+					return this.$Message.error('请选择员工')
+				}
+				this.modals = false
+				member_update({
+					id: this.order_id,
+					work_member_id: this.chooseId
+				}).then(res => {
+					this.$Message.success(res.msg)
+					this.getOrderList()
+				}).catch(err => {
+					this.$Message.error(err.msg)
+				})
+
+			},
+			// 获取退款表单数据
+			getRefundData(id, refund_type) {
+				if (refund_type == 2) {
+					this.delfromData = {
+						title: "是否立即退货",
+						url: `/refund/agree/${id}`,
+						method: "get",
+					};
+					this.$modalSure(this.delfromData)
+						.then((res) => {
+							this.$Message.success(res.msg);
+							this.getOrderList();
+							this.getData(this.orderId, 1);
+						})
+						.catch((res) => {
+							this.$Message.error(res.msg);
+						});
+				} else {
+					this.$modalForm(getRefundOrderFrom(id)).then(() => {
+						this.getOrderList();
+						this.getData(this.orderId, 1);
+						this.$emit("changeGetTabs");
+					});
+				}
+			},
+			// 获取退积分表单数据
+			getRefundIntegral(id) {
+				refundIntegral(id)
+					.then(async (res) => {
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 删除单条订单
+			delOrder(row, data) {
+				if (row.is_del === 1) {
+					this.$modalSure(data)
+						.then((res) => {
+							this.$Message.success(res.msg);
+							this.getOrderList();
+						})
+						.catch((res) => {
+							this.$Message.error(res.msg);
+						});
+				} else {
+					const title = "错误!";
+					const content =
+						"<p>您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!</p>";
+					this.$Modal.error({
+						title: title,
+						content: content,
+					});
+				}
+			},
+			// 修改成功
+			submitFail() {
+				this.getOrderList();
+				this.getData(this.orderId, 1);
+			},
+			// 订单选择状态
+			selectChange2(tab) {
+				this.pagination.page = 1;
+				this.pagination.refund_type = tab;
+				this.getOrderList(tab);
+			},
+			// 不退款表单数据
+			getNoRefundData(id) {
+				this.$modalForm(getnoRefund(id)).then(() => {
+					this.getOrderList();
+					this.getData(this.orderId);
+					this.$emit("changeGetTabs");
+				});
+			},
+			// 订单列表
+			getOrderList() {
+				this.loading = true;
+				getKpi(this.pagination)
+					.then((res) => {
+						this.loading = false;
+						const {
+							count,
+							list,
+							num
+						} = res.data;
+						this.total = count;
+						this.tbody = list;
+						// this.num = num;
+						list.forEach((item) => {
+							if (item.id == this.orderId) {
+								this.rowActive = item;
+							}
+						});
+					})
+					.catch((err) => {
+						this.loading = false;
+						this.$Message.error(err.msg);
+					});
+			},
+			// 分页
+			pageChange(index) {
+				this.pagination.page = index;
+				this.getOrderList();
+			},
+			nameSearch() {
+				this.pagination.page = 1;
+				this.getOrderList();
+			},
+			// 订单搜索
+			orderSearch() {
+				this.pagination.page = 1;
+				this.getOrderList();
+			},
+			// 配送信息表单数据
+			delivery(row) {
+				getDistribution(row.id)
+					.then(async (res) => {
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+		},
+	};
+</script>
+
+<style lang="stylus" scoped>
+	.span-del {
+		color: #ed4014;
+		display: block
+	}
+
+	.code {
+		position: relative;
+	}
+
+	.QRpic {
+		width: 180px;
+		height: 259px;
+
+		img {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.tabBox {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+
+		.tabBox_img {
+			width: 30px;
+			height: 30px;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.tabBox_tit {
+			width: 245px;
+			height: 30px;
+			line-height: 30px;
+			font-size: 12px !important;
+			margin: 0 2px 0 10px;
+			letter-spacing: 1px;
+			box-sizing: border-box;
+		}
+	}
+
+	.tabBox+.tabBox {
+		margin-top: 5px;
+	}
+
+	.pictrue-box {
+		display: flex;
+		align-item: center;
+	}
+
+	.pictrue {
+		width: 25px;
+		height: 25px;
+	}
+</style>

+ 46 - 6
src/pages/marketing/serve/bind.vue

@@ -22,14 +22,14 @@
 							<Button type="primary" v-if="!item.product_id">选择服务项目</Button>
 							<template v-else>
 								<div class="">
-									{{item.store_name}}
+									{{item.store_name}} ( 原价 {{ showPrice(item.product_id) }} 元)
 								</div>
 								<Button type="primary" >切换服务项目</Button>
 							</template>
-					       
 					    </div>
+						<div></div>
 					</FormItem>
-					<FormItem label="业绩值" required>
+					<!-- <FormItem label="业绩值" required>
 						<Input  v-model="item.performance_value" v-width="320"></Input>
 					</FormItem>
 					<FormItem label="手工费" required>
@@ -37,14 +37,20 @@
 					</FormItem>
 					<FormItem label="销售提成" required>
 						<Input  v-model="item.sales_commissions" v-width="320"></Input>
-					</FormItem>
+					</FormItem> -->
 					<FormItem label="次数" required>
 						<InputNumber  v-model="item.repertory" v-width="320"></InputNumber>
 					</FormItem>
 				</Form>
+				<!-- <div class="" v-if="item.repertory">
+					合计:业绩值:{{item.performance_value * item.repertory || 0 }} 手工费:{{item.craft_price *item.repertory || 0}} 销售提成:{{item.sales_commissions * item.repertory || 0}}
+				</div> -->
 			</div>
-			
+			<!-- <div class="heji">
+				总计:业绩值:{{ showAll('performance_value',formData)|| 0}} 手工费:{{showAll('craft_price',formData)|| 0}} 销售提成:{{showAll('sales_commissions',formData)|| 0}}
+			</div> -->
 		</Card>
+		
 		<!-- 选择商品-->
 		<Modal v-model="modals" title="商品列表" footerHide class="paymentFooter" scrollable width="900"
 		    @on-cancel="cancel">
@@ -75,7 +81,8 @@
 		serveProductDeleteApi
 	} from "@/api/marketing";
 	import {
-		brandList
+		brandList,
+		changeListApi
 	} from "@/api/product";
 	// import { formatDate } from '@/utils/validate';
 	import Setting from "@/setting";
@@ -122,12 +129,14 @@
 				currentTab: '1',
 				current: {},
 				service_card_id: '',
+				productList: [],
 			};
 		},
 		computed: {
 			...mapState("admin/layout", ["isMobile", "menuCollapse"]),
 		},
 		created() {
+			this.getProductList()
 			console.log(this.$route.query);
 			if (this.$route.query.id) {
 				this.service_card_id = this.$route.query.id
@@ -136,6 +145,34 @@
 			}
 		},
 		methods: {
+			showPrice(id) {
+				let item = this.productList.find(i=> {
+					return i.id == id
+				})
+				if(item) {
+					return item.price
+				}else {
+					return ''
+				}
+			},
+			getProductList() {
+				changeListApi({
+					service_project: 1,
+					page: 1,
+					limit:1000
+				}).then(res => {
+					this.productList = res.data.list
+				})
+			},
+			showAll(name,list) {
+				let num = 0;
+				list.forEach(item => {
+					if(item.repertory) {
+						num += item[name] * item.repertory * 1;
+					}
+				})
+				return num;
+			},
 			getCouponDetail() {
 				let that = this
 				serveReadApi(that.service_card_id).then(res => {
@@ -513,4 +550,7 @@
 	.bom {
 		margin-right: 20px
 	}
+	.heji {
+		padding: 10px
+	}
 </style>

+ 9 - 10
src/pages/marketing/serve/create.vue

@@ -26,20 +26,17 @@
 						</Button>
 				    </div>
 				</FormItem>
-				<!-- <FormItem label="服务卡名称" required>
-					<Input v-model="formData.card_name" v-width="320" placeholder="请输入服务卡名称"></Input>
-				</FormItem> -->
-				<!-- <FormItem label="售价" required>
-					<InputNumber :min="1" :max="100000000" v-model="formData.card_price" v-width="320"></InputNumber>
+				<FormItem label="服务卡折扣(%)" required>
+					<Input v-model="formData.discount" v-width="320" placeholder=""></Input>
 				</FormItem>
-				<FormItem label="库存" required>
+<!-- 				<FormItem label="库存" required>
 					<InputNumber :min="1" :max="100000000" v-model="formData.repertory" v-width="320"></InputNumber>
 					</InputNumber>
 				</FormItem> -->
 				<!-- explain -->
-				<FormItem label="备注">
+				<!-- <FormItem label="备注">
 					<Input v-model="formData.explain" v-width="320" placeholder=""></Input>
-				</FormItem>
+				</FormItem> -->
 			</Form>
 			<div style="width: 500px; display: flex;justify-content: center;">
 				<Button  type="primary" class="submission" @click="save" :disabled="disabled" v-if="!formData.id">立即创建</Button>
@@ -95,7 +92,8 @@
 					explain: '',
 					unit_name: '',
 					image: '',
-					images: ''
+					images: '',
+					discount: 0
 				},
 				isMinPrice: 0,
 				isCouponTime: 1,
@@ -219,7 +217,8 @@
 						image: row.image,
 						images: row.slider_image,
 						repertory: row.repertory,
-						is_show: 1
+						is_show: 1,
+						discount: row.discount
 					}
 				})
 			}

+ 5 - 5
src/pages/marketing/serve/index.vue

@@ -135,11 +135,11 @@
 						key: 'sales_volume',
 						minWidth: 100
 					},
-					// {
-					// 	title: '是否显示',
-					// 	slot: 'is_show',
-					// 	minWidth: 100
-					// },
+					{
+						title: '服务卡折扣(%)',
+						key: 'discount',
+						minWidth: 100
+					},
 					{
 						title: '备注',
 						key: 'explain',

+ 4 - 3
src/pages/marketing/serveItem/create.vue

@@ -29,7 +29,7 @@
 				<FormItem label="价格" v-if="formData.price">
 					<Input  v-model="formData.price" v-width="320" disabled ></Input>
 				</FormItem>
-				<FormItem label="库存" v-if="formData.repertory">
+				<!-- <FormItem label="库存" v-if="formData.repertory">
 					<Input  v-model="formData.repertory" v-width="320" disabled></Input>
 				</FormItem>
 				<FormItem label="业绩值" required>
@@ -41,8 +41,8 @@
 				<FormItem label="销售提成" required>
 					<Input  v-model="formData.sales_commissions" v-width="320"></Input>
 				</FormItem>
-				<!-- <FormItem label="备注">
-					<Input v-model="formData.explain" v-width="320" placeholder=""></Input>
+				<FormItem label="上级提成百分比">
+					<Input v-model="formData.superior_commission" v-width="320" placeholder=""></Input>
 				</FormItem> -->
 			</Form>
 			<div style="width: 500px; display: flex;justify-content: center;">
@@ -125,6 +125,7 @@
 				this.formData.performance_value = query.performance_value;
 				this.formData.craft_price = query.craft_price;
 				this.formData.sales_commissions = query.sales_commissions
+				this.formData.superior_commission = query.superior_commission
 			}
 		},
 		methods: {

+ 26 - 19
src/pages/marketing/serveItem/index.vue

@@ -48,6 +48,9 @@
 				<template slot-scope="{ row, index }" slot="is_show">
 					<span> {{row.is_show == 1 ?'显示': '隐藏'}}</span>
 				</template>
+				<template slot-scope="{ row, index }" slot="price">
+					<span> {{row.product.price }}</span>
+				</template>
 				<template slot-scope="{ row, index }" slot="add_time">
 					<span> {{row.add_time }}</span>
 				</template>
@@ -121,30 +124,35 @@
 						minWidth: 150
 					},
 					{
-						title: '业绩值',
-						key: 'performance_value',
+						title: '价格',
+						slot: 'price',
 						minWidth: 80
 					},
-					{
-						title: '手工费',
-						key: 'craft_price',
-						minWidth: 100
-					},
-					{
-						title: '销售提成',
-						key: 'sales_commissions',
-						minWidth: 100
-					},
+					// {
+					// 	title: '手工费',
+					// 	key: 'craft_price',
+					// 	minWidth: 100
+					// },
+					// {
+					// 	title: '销售提成',
+					// 	key: 'sales_commissions',
+					// 	minWidth: 100
+					// },
+					// {
+					// 	title: '上级提成百分比',
+					// 	key: 'superior_commission',
+					// 	minWidth: 100
+					// },
 					{
 						title: '库存',
 						key: 'repertory',
 						minWidth: 100
 					},
-					{
-						title: '添加时间',
-						slot: 'add_time',
-						minWidth: 100
-					},
+					// {
+					// 	title: '添加时间',
+					// 	slot: 'add_time',
+					// 	minWidth: 100
+					// },
 					{
 						title: '操作',
 						slot: 'action',
@@ -204,8 +212,7 @@
 			},
 			// 发布
 			couponSend(row) {
-				// this.$modalForm(serveEditApi(row.id)).then(() => this.getList());
-				this.$router.push({path: this.roterPre + "/marketing/serve_item/create?id=" + row.id + '&craft_price=' + row.craft_price + '&performance_value=' + row.performance_value + '&product_id=' + row.product_id + '&repertory=' + row.repertory + '&sales_commissions=' + row.sales_commissions + '&slider_image=' + row.slider_image + '&store_name=' + row.store_name});
+				this.$router.push({path: this.roterPre + "/marketing/serve_item/create?id=" + row.id + '&craft_price=' + row.craft_price + '&performance_value=' + row.performance_value + '&product_id=' + row.product_id + '&repertory=' + row.repertory + '&sales_commissions=' + row.sales_commissions + '&slider_image=' + row.slider_image + '&store_name=' + row.store_name + '&superior_commission=' + row.superior_commission});
 				console.log(row);
 			},
 			// 删除

+ 150 - 191
src/pages/order/reservation/index.vue

@@ -8,14 +8,14 @@
 					:label-position="labelPosition" @submit.native.prevent>
 					<FormItem label="订单状态:">
 						<Select v-model="pagination.refund_status" class="input-add">
-							<Option v-for="(item, index) in num" :value="index" :key="index">{{ item.name }}</Option>
+							<Option v-for="(item, index) in num" :value="item.value" :key="index">{{ item.name }}</Option>
 						</Select>
 					</FormItem>
-					<FormItem label="退款时间:">
+					<!-- <FormItem label="退款时间:">
 						<DatePicker :editable="false" @on-change="onchangeTime" :value="timeVal" format="yyyy/MM/dd"
 							type="daterange" placement="bottom-start" placeholder="自定义时间" class="input-add"
 							:options="options"></DatePicker>
-					</FormItem>
+					</FormItem> -->
 					<FormItem label="订单搜索:" label-for="title">
 						<Input v-model="pagination.order_id" placeholder="请输入订单号" class="input-add mr14" />
 						<Button type="primary" @click="orderSearch()">查询</Button>
@@ -39,69 +39,37 @@
 					<div>用户名:{{ row.nickname }}</div>
 					<div>用户ID:{{ row.uid }}</div>
 				</template>
-				<template slot-scope="{ row }" slot="refund_type">
-					<Tag color="blue" size="medium" v-if="row.refund_status == 0">未退款</Tag>
-					<Tag color="blue" size="medium" v-if="row.refund_status == -1">拒绝退款</Tag>
-					<Tag color="blue" size="medium" v-if="row.refund_status == 1">申请中</Tag>
-					<Tag color="blue" size="medium" v-if="row.refund_status == 2">一次审核通过</Tag>
-					<Tag color="red" size="medium" v-if="row.refund_status == 3">二次审核通过</Tag>
-					<Tag color="blue" size="medium" v-if="row.refund_status == 4">已退款</Tag>
-					<Tag color="blue" size="medium" v-if="row.refund_status == 5">部分退款</Tag>
-				</template>
-				<template slot-scope="{ row }" slot="info">
-					<Tooltip theme="dark" max-width="300" :delay="600">
-						<div class="tabBox" v-for="(val, i) in row._info" :key="i">
-							<div class="tabBox_img" v-viewer>
-								<img v-lazy="
-                  val.cart_info.productInfo.attrInfo
-                    ? val.cart_info.productInfo.attrInfo.image
-                    : val.cart_info.productInfo.image
-                " />
-							</div>
-							<span class="tabBox_tit line1">
-								<span class="font-color-red" v-if="val.cart_info.is_gift">赠品</span>
-								{{ val.cart_info.productInfo.store_name + " | "}}
-								{{val.cart_info.productInfo.attrInfo ? val.cart_info.productInfo.attrInfo.suk: ""}}
-							</span>
-						</div>
-						<div slot="content">
-							<div v-for="(val, i) in row._info" :key="i">
-								<p class="font-color-red" v-if="val.cart_info.is_gift">赠品</p>
-								<p>{{ val.cart_info.productInfo.store_name }}</p>
-								<p> {{val.cart_info.productInfo.attrInfo ? val.cart_info.productInfo.attrInfo.suk: ""}}
-								</p>
-								<p class="tabBox_pice">
-									{{ "¥" + val.cart_info.truePrice + " x " + val.cart_info.cart_num }}</p>
-							</div>
+				<template slot-scope="{ row, index }" slot="info">
+					<div class="tabBox" v-for="(val, i) in row.info" :key="i">
+						<div class="tabBox_img" v-viewer>
+							<img v-lazy="val.slider_image" />
 						</div>
-					</Tooltip>
+						<span class="tabBox_tit">{{ val.store_name }}</span>
+						<span class="tabBox_pice">{{'¥' + val.pay_price}}</span>
+					</div>
 				</template>
-				<template slot-scope="{ row }" slot="statusName">
-					<Tooltip theme="dark" max-width="300" :delay="600">
-						<div v-html="row.refund_reason" class="pt5"></div>
-						<div slot="content">
-							<div class="pt5">退款原因:{{row.refund_explain}}</div>
-							<div v-if="row.refund_goods_explain" class="pt5">退货原因:{{row.refund_goods_explain}}</div>
-						</div>
-					</Tooltip>
-					<div class="pictrue-box" v-if="row.refund_img">
-						<div v-viewer v-for="(item, index) in row.refund_img || []" :key="index">
-							<img class="pictrue mr10" v-lazy="item" :src="item" />
-						</div>
+				<template slot-scope="{ row, index }" slot="pay_price">
+					<span class="tabBox_pice">{{'¥' + showPrice(row.info)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="refund_status">
+					<div v-if="row.refund_status == 1">待审核</div>
+					<div v-else-if="row.refund_status == 2">第一次审核通过</div>
+					<div v-else-if="row.refund_status == 3">第二次审核通过</div>
+					<div v-else-if="row.refund_status == 4">已全部退款</div>
+					<div v-else-if="row.refund_status == 5">已部分退款</div>
+					<div v-else-if="row.refund_status == -1">
+						<div>拒绝退款</div>
+						<div>第一次审核意见:{{ row.first_remarks }}</div>
+						<div>第二次审核意见:{{ row.second_remarks }}</div>
 					</div>
 				</template>
-				<template slot-scope="{ row }" slot="action">
-					<a @click="changeMenu(row, '5')" :disabled="openErp" v-show="
-              [1, 2, 5].includes(row.refund_type) &&
-              (parseFloat(row.pay_price) > parseFloat(row.refunded_price) ||
-                row.pay_price == 0)
-            ">{{ row.refund_type == 2 ? "同意退货" : "立即退款" }}</a>
-					<Divider type="vertical" v-show="
-              [1, 2, 5].includes(row.refund_type) &&
-              (parseFloat(row.pay_price) > parseFloat(row.refunded_price) ||
-                row.pay_price == 0)
-            " />
-					<a @click="changeMenu(row, '2')">订单详情</a>
+				<template slot-scope="{ row, index }" slot="add_time">
+					<span class="tabBox_pice">{{showTime(row.add_time)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="action">
+					<a @click="changeMenu(row, 1)" v-show="[2].includes(row.refund_status)">通过</a>
+					<Divider type="vertical" v-show="[2].includes(row.refund_status)" />
+					<a @click="changeMenu(row, 0)" v-show="[2].includes(row.refund_status)">拒绝</a>
 				</template>
 			</Table>
 			<div class="acea-row row-right page">
@@ -118,6 +86,18 @@
 		<order-remark ref="remarks" remarkType="refund" :orderId="orderId" @submitFail="submitFail"></order-remark>
 		<!-- 记录 -->
 		<order-record ref="record"></order-record>
+		<Modal v-model="modals" scrollable title="拒绝原因" class="order_box" :closable="false">
+			<Form :label-width="80" @submit.native.prevent>
+				<FormItem label="原因:" prop="remark">
+					<Input v-model="remark" maxlength="200" show-word-limit type="textarea" placeholder="拒绝原因"
+						style="width: 100%" />
+				</FormItem>
+			</Form>
+			<div slot="footer">
+				<Button type="primary" @click="goCancal">提交</Button>
+				<Button @click="cancal">取消</Button>
+			</div>
+		</Modal>
 	</div>
 </template>
 
@@ -136,10 +116,8 @@
 		refundIntegral,
 		getDistribution,
 		writeUpdate,
+		serveRefund
 	} from "@/api/order";
-
-
-
 	import {
 		erpConfig
 	} from "@/api/erp";
@@ -157,6 +135,8 @@
 		},
 		data() {
 			return {
+				remark: '',
+				modals: false,
 				openErp: false,
 				thead: [{
 						title: "订单号",
@@ -176,33 +156,24 @@
 					},
 					{
 						title: "实际支付",
-						key: "pay_price",
+						slot: "pay_price",
 						minWidth: 70,
 					},
+					
 					{
-						title: "发起退款时间",
-						key: "add_time",
-						minWidth: 110,
+					  title: "退款原因",
+					  key: "refund_reason",
+					  minWidth: 100,
 					},
-					// {
-					//   title: "订单类型",
-					//   key: "type",
-					//   minWidth: 100,
-					// },
 					{
 						title: "退款状态",
-						slot: "refund_type",
-						minWidth: 100,
-					},
-					{
-						title: "退款信息",
-						slot: "statusName",
+						slot: "refund_status",
 						minWidth: 100,
 					},
 					{
-						title: "售后备注",
-						key: "remark",
-						minWidth: 80,
+						title: "下单时间",
+						slot: "add_time",
+						minWidth: 110,
 					},
 					{
 						title: "操作",
@@ -213,7 +184,18 @@
 					},
 				],
 				tbody: [],
-				num: [],
+				num: [{
+					name: '待审核',
+					value: 2
+				},
+				{
+					name: '已通过',
+					value: 3
+				},
+				{
+					name: '拒绝',
+					value: -1
+				}],
 				orderDatalist: null,
 				loading: false,
 				FromData: null,
@@ -225,7 +207,7 @@
 					limit: 15,
 					order_id: "",
 					time: "",
-					refund_status: 0,
+					refund_status: 2,
 				},
 				options: timeOptions,
 				timeVal: [],
@@ -234,6 +216,7 @@
 				name: "",
 				spin: false,
 				rowActive: {},
+				delfromData: {}
 			};
 		},
 		computed: {
@@ -251,6 +234,87 @@
 			this.getOrderList();
 		},
 		methods: {
+			cancal() {
+				this.modals = false
+				this.remark = ''
+			},
+			//goCancal
+			goCancal() {
+				if (this.remark == '') {
+					return this.$Message.error('请输入拒绝理由')
+				}
+				serveRefund({
+					id: this.delfromData.ids.id,
+					status: 0,
+					remarks: this.remark,
+					refund_status: this.delfromData.ids.refund_status
+				}).then(res => {
+					this.getOrderList()
+					this.$Message.success(res.msg)
+					this.remark = ''
+				}).catch((res) => {
+					this.$Message.error(res.msg)
+				})
+			
+				this.modals = false
+			},
+			changeMenu(row, name) {
+				let titile;
+				let that = this
+				if (name == 1) {
+					titile = '通过该退款审核?'
+					this.delfromData = {
+						title: titile,
+						url: `/service/refund_order_examine`,
+						method: 'post',
+						ids: {
+							id: row.id,
+							status: 1,
+							remakes: '通过',
+							refund_status: row.refund_status
+						}
+					}
+					this.$modalSure(this.delfromData)
+						.then((res) => {
+							this.$Message.success(res.msg)
+							this.getOrderList()
+						})
+						.catch((res) => {
+							this.$Message.error(res.msg)
+						})
+				} else {
+					this.delfromData = {
+						title: titile,
+						url: `/service/refund_order_examine`,
+						method: 'post',
+						ids: {
+							id: row.id,
+							status: 0,
+							refund_status: row.refund_status
+						}
+					}
+					this.modals = true
+				}
+			
+			},
+			showTime(time) {
+				var date = new Date(time * 1000);
+				var year = date.getFullYear(); // 获取年份
+				var month = ("0" + (date.getMonth() + 1)).slice(-2); // 获取月份(注意月份从 0 开始,需要加 1)
+				var day = ("0" + date.getDate()).slice(-2); // 获取日期
+				var hours = ("0" + date.getHours()).slice(-2); // 获取小时
+				var minutes = ("0" + date.getMinutes()).slice(-2); // 获取分钟
+				var seconds = ("0" + date.getSeconds()).slice(-2); // 获取秒钟
+				var dateString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; // 自定义时间格式
+				return dateString
+			},
+			showPrice(list) {
+				let price = 0;
+				list.forEach(item => {
+					price += item.pay_price * 1
+				})
+				return price
+			},
 			//erp配置
 			getErpConfig() {
 				erpConfig().then(res => {
@@ -292,111 +356,6 @@
 						this.$Message.error(res.msg);
 					});
 			},
-			// 操作
-			changeMenu(row, name) {
-				this.orderId = row.id;
-				switch (name) {
-					case "1":
-						this.delfromData = {
-							title: "修改立即支付",
-							url: `/order/pay_offline/${row.id}`,
-							method: "post",
-							ids: "",
-						};
-						this.$modalSure(this.delfromData)
-							.then((res) => {
-								this.$Message.success(res.msg);
-								this.getOrderList();
-							})
-							.catch((res) => {
-								this.$Message.error(res.msg);
-							});
-						// this.modalTitleSs = '修改立即支付';
-						break;
-					case "2":
-						this.rowActive = row;
-						this.getData(row.id);
-						break;
-					case "3":
-						this.$refs.record.modals = true;
-						this.$refs.record.getList(row.store_order_id);
-						break;
-					case "4":
-						this.$refs.remarks.modals = true;
-						this.$refs.remarks.formValidate.remark = row.remark;
-						break;
-					case "5":
-						this.getRefundData(row.id, row.refund_status);
-						break;
-					case "6":
-						this.getRefundIntegral(row.id);
-						break;
-					case "7":
-						this.getNoRefundData(row.id);
-						break;
-					case "8":
-						this.delfromData = {
-							title: "修改确认收货",
-							url: `/order/take/${row.id}`,
-							method: "put",
-							ids: "",
-						};
-						this.$modalSure(this.delfromData)
-							.then((res) => {
-								this.$Message.success(res.msg);
-								this.getOrderList();
-							})
-							.catch((res) => {
-								this.$Message.error(res.msg);
-							});
-						// this.modalTitleSs = '修改确认收货';
-						break;
-					case "10":
-						this.delfromData = {
-							title: "立即打印订单",
-							info: "您确认打印此订单吗?",
-							url: `/order/print/${row.id}`,
-							method: "get",
-							ids: "",
-						};
-						this.$modalSure(this.delfromData)
-							.then((res) => {
-								this.$Message.success(res.msg);
-								this.$emit("changeGetTabs");
-								this.getOrderList();
-							})
-							.catch((res) => {
-								this.$Message.error(res.msg);
-							});
-						break;
-					case "11":
-						this.delfromData = {
-							title: "立即打印电子面单",
-							info: "您确认打印此电子面单吗?",
-							url: `/order/order_dump/${row.id}`,
-							method: "get",
-							ids: "",
-						};
-						this.$modalSure(this.delfromData)
-							.then((res) => {
-								this.$Message.success(res.msg);
-								this.getOrderList();
-							})
-							.catch((res) => {
-								this.$Message.error(res.msg);
-							});
-						break;
-					default:
-						this.delfromData = {
-							title: "删除订单",
-							url: `/order/del/${row.id}`,
-							method: "DELETE",
-							ids: "",
-						};
-						// this.modalTitleSs = '删除订单';
-						this.delOrder(row, this.delfromData);
-				}
-			},
 			// 获取退款表单数据
 			getRefundData(id, refund_type) {
 				if (refund_type == 2) {
@@ -486,7 +445,7 @@
 						} = res.data;
 						this.total = count;
 						this.tbody = list;
-						this.num = num;
+						// this.num = num;
 						list.forEach((item) => {
 							if (item.id == this.orderId) {
 								this.rowActive = item;

+ 576 - 0
src/pages/order/serveList/index.vue

@@ -0,0 +1,576 @@
+<template>
+	<!-- 订单-售后订单 -->
+	<div>
+		<Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
+			<div class="new_card_pd">
+				<!-- 筛选条件 -->
+				<Form ref="pagination" inline :model="pagination" :label-width="labelWidth"
+					:label-position="labelPosition" @submit.native.prevent>
+					<FormItem label="订单状态:">
+						<Select v-model="pagination.status" class="input-add">
+							<Option v-for="(item, index) in num" :value="item.value" :key="index">{{ item.name }}
+							</Option>
+						</Select>
+					</FormItem>
+					<FormItem label="订单搜索:" label-for="title">
+						<Input v-model="pagination.order_id" placeholder="请输入订单号" class="input-add mr14" />
+						<Button type="primary" @click="orderSearch()">查询</Button>
+					</FormItem>
+				</Form>
+			</div>
+		</Card>
+		<Card :bordered="false" dis-hover class="ivu-mt">
+			<!-- 售后订单表格 -->
+			<Table :columns="thead" :data="tbody" ref="table" :loading="loading" highlight-row no-userFrom-text="暂无数据"
+				no-filtered-userFrom-text="暂无筛选结果">
+				<template slot-scope="{ row }" slot="order_id">
+					<span v-text="row.order_id" style="display: block"></span>
+					<span v-show="row.is_del === 1 && row.delete_time == null" class="span-del">用户已删除</span>
+				</template>
+				<template slot-scope="{ row }" slot="nickname">
+					<div>用户名:{{ row.real_name }}</div>
+					<div>手机号:{{ row.user_phone }}</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="kf">
+					<span class="tabBox_pice">{{showName(row.work_member_id)}}</span>
+				</template>
+				<template slot-scope="{ row }" slot="info">
+					<div class="tabBox" v-for="(val, i) in row.info" :key="i">
+						<div class="tabBox_img" v-viewer>
+							<img v-lazy="val.slider_image" />
+						</div>
+						<span class="tabBox_tit">{{ val.store_name }}</span>
+						<span class="tabBox_pice">{{'¥' + val.pay_price}}</span>
+					</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="pay_price">
+					<span class="tabBox_pice">{{'¥' + showPrice(row.info)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="reservation_time">
+					<span class="tabBox_pice">{{showTime(row.reservation_time)}}</span>
+				</template>
+				<template slot-scope="{ row, index }" slot="store">
+					<span class="tabBox_pice">{{row.store.name}}</span>
+				</template>
+
+				<template slot-scope="{ row }" slot="status">
+					<Tag color="blue" size="medium" v-if="row.status == -1">退款</Tag>
+					<Tag color="blue" size="medium" v-if="row.status == 0">待服务</Tag>
+					<Tag color="blue" size="medium" v-if="row.status == 2">已完成</Tag>
+				</template>
+
+				<template slot-scope="{ row }" slot="statusName">
+					<Tooltip theme="dark" max-width="300" :delay="600">
+						<div v-html="row.refund_reason" class="pt5"></div>
+						<div slot="content">
+							<div class="pt5">退款原因:{{row.refund_explain}}</div>
+							<div v-if="row.refund_goods_explain" class="pt5">退货原因:{{row.refund_goods_explain}}</div>
+						</div>
+					</Tooltip>
+					<div class="pictrue-box" v-if="row.refund_img">
+						<div v-viewer v-for="(item, index) in row.refund_img || []" :key="index">
+							<img class="pictrue mr10" v-lazy="item" :src="item" />
+						</div>
+					</div>
+				</template>
+				<template slot-scope="{ row, index }" slot="add_time">
+					<span class="tabBox_pice">{{showTime(row.add_time)}}</span>
+				</template>
+				<!-- <template slot-scope="{ row }" slot="statusGoodName">
+          <div v-html="row.refund_goods_explain" class="pt5"></div>
+          <div class="pictrue-box" v-if="row.refund_goods_img">
+            <div
+              v-viewer
+              v-for="(item, index) in row.refund_goods_img || []"
+              :key="index"
+            >
+              <img class="pictrue mr10" v-lazy="item" :src="item" />
+            </div>
+          </div>
+        </template> -->
+				<template slot-scope="{ row }" slot="action">
+					<a @click="changeMenu(row)" v-if="row.status == 0">修改服务员工</a>
+				</template>
+			</Table>
+			<div class="acea-row row-right page">
+				<Page :total="total" :current="pagination.page" show-elevator show-total @on-change="pageChange"
+					:page-size="pagination.limit" />
+			</div>
+		</Card>
+		<!-- 编辑 退款 退积分 不退款-->
+		<edit-from ref="edits" :FromData="FromData" @submitFail="submitFail"></edit-from>
+		<!-- 详情 -->
+		<details-from ref="detailss" :orderDatalist="orderDatalist" :orderId="orderId" :rowActive="rowActive"
+			:openErp="openErp"></details-from>
+		<!-- 备注 -->
+		<order-remark ref="remarks" remarkType="refund" :orderId="orderId" @submitFail="submitFail"></order-remark>
+		<!-- 记录 -->
+		<order-record ref="record"></order-record>
+		<Modal v-model="modals" scrollable title="选择员工" class="order_box" :closable="false">
+			<Form :label-width="80">
+				<FormItem label="员工:" prop="chooseId">
+					<Select v-model="chooseId" style="width: 250px">
+						<Option v-for="item in ygList" :key="item.id" :value="item.id">{{ item.name }}</Option>
+					</Select>
+				</FormItem>
+			</Form>
+			<div slot="footer">
+				<Button type="primary" @click="goCancal">提交</Button>
+				<Button @click="cancal">取消</Button>
+			</div>
+		</Modal>
+	</div>
+</template>
+
+<script>
+	import {
+		mapState
+	} from "vuex";
+	import {
+		orderRefundList,
+		orderList,
+		getOrdeDatas,
+		getDataInfo,
+		getRefundDataInfo,
+		getRefundFrom,
+		getRefundOrderFrom,
+		getnoRefund,
+		refundIntegral,
+		getDistribution,
+		writeUpdate,
+		getServeOrder,
+		member_update
+	} from "@/api/order";
+	import {
+		getYgList
+	} from "@/api/store"
+	import {
+		erpConfig
+	} from "@/api/erp";
+	import editFrom from "@/components/from/from";
+	import detailsFrom from "../orderList/handle/orderDetails";
+	import orderRemark from "../orderList/handle/orderRemark";
+	import orderRecord from "../orderList/handle/orderRecord";
+	import timeOptions from "@/utils/timeOptions";
+	export default {
+		components: {
+			editFrom,
+			detailsFrom,
+			orderRemark,
+			orderRecord
+		},
+		data() {
+			return {
+				modals: false,
+				order_id: '',
+				ygList: [],
+				chooseId: 0,
+				openErp: false,
+				thead: [{
+						title: "订单号",
+						align: "center",
+						slot: "order_id",
+						minWidth: 150,
+					},
+					{
+						title: "用户信息",
+						slot: "nickname",
+						minWidth: 130,
+					},
+					{
+						title: "预约员工",
+						slot: "kf",
+						minWidth: 130,
+					},
+					{
+						title: "商品信息",
+						slot: "info",
+						minWidth: 300,
+					},
+					{
+						title: "实际支付",
+						slot: "pay_price",
+						minWidth: 70,
+					},
+					{
+						title: "预约时间",
+						slot: "reservation_time",
+						minWidth: 110,
+					},
+					{
+						title: "订单状态",
+						slot: "status",
+						minWidth: 110,
+					},
+					{
+						title: "退款状态",
+						slot: "refund_status",
+						minWidth: 110,
+					},
+					{
+						title: "预约门店",
+						slot: "store",
+						minWidth: 110,
+					},
+					{
+						title: "下单时间",
+						slot: "add_time",
+						minWidth: 110,
+					},
+					{
+						title: "操作",
+						slot: "action",
+						fixed: "right",
+						minWidth: 150,
+						align: "center",
+					},
+				],
+				tbody: [],
+				num: [{
+						name: '待服务',
+						value: 0
+					},
+					{
+						name: '已完成',
+						value: 2
+					}, {
+						name: '退款',
+						value: -1
+					},
+				],
+				orderDatalist: null,
+				loading: false,
+				FromData: null,
+				total: 0,
+				orderId: 0,
+				animal: 1,
+				pagination: {
+					page: 1,
+					limit: 15,
+					order_id: "",
+					time: "",
+					status: 0
+				},
+				options: timeOptions,
+				timeVal: [],
+				modal: false,
+				qrcode: null,
+				name: "",
+				spin: false,
+				rowActive: {},
+			};
+		},
+		computed: {
+			...mapState("order", ["orderChartType"]),
+			// ...mapState("admin/layout", ["isMobile"]),
+			labelWidth() {
+				return this.isMobile ? undefined : 96;
+			},
+			labelPosition() {
+				return this.isMobile ? "top" : "right";
+			},
+		},
+		created() {
+			this.getYgList()
+			this.getErpConfig();
+			this.getOrderList();
+		},
+		methods: {
+			showName( id) {
+				let yg = this.ygList.find(item => {
+					return item.id == id
+				})
+				console.log(yg,'ygygygyg')
+				return yg? yg.name: ''
+			},
+			getYgList() {
+				getYgList({
+					page: 1,
+					limit: 1000
+				}).then(res => {
+					this.ygList = res.data.list
+				})
+			},
+			showTime(time) {
+				var date = new Date(time * 1000);
+				var year = date.getFullYear(); // 获取年份
+				var month = ("0" + (date.getMonth() + 1)).slice(-2); // 获取月份(注意月份从 0 开始,需要加 1)
+				var day = ("0" + date.getDate()).slice(-2); // 获取日期
+				var hours = ("0" + date.getHours()).slice(-2); // 获取小时
+				var minutes = ("0" + date.getMinutes()).slice(-2); // 获取分钟
+				var seconds = ("0" + date.getSeconds()).slice(-2); // 获取秒钟
+				var dateString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds; // 自定义时间格式
+				return dateString
+			},
+			showPrice(list) {
+				let price = 0;
+				list.forEach(item => {
+					price += item.pay_price * 1
+				})
+				return price.toFixed(2)
+			},
+			//erp配置
+			getErpConfig() {
+				erpConfig().then(res => {
+					this.openErp = res.data.open_erp;
+				}).catch(err => {
+					this.$Message.error(err.msg);
+				})
+			},
+			onchangeCode(e) {
+				this.animal = e;
+				this.qrcodeShow();
+			},
+			// 具体日期搜索();
+			onchangeTime(e) {
+				this.pagination.page = 1;
+				this.timeVal = e;
+				this.pagination.time = this.timeVal[0] ? this.timeVal.join("-") : "";
+			},
+			// 获取详情表单数据
+			getData(id, type) {
+				getRefundDataInfo(id)
+					.then(async (res) => {
+						if (!type) {
+							this.$refs.detailss.modals = true;
+						}
+						this.$refs.detailss.activeName = "detail";
+						this.orderDatalist = res.data;
+						// if (this.orderDatalist.orderInfo.refund_img) {
+						//   try {
+						//     this.orderDatalist.orderInfo.refund_img = JSON.parse(
+						//       this.orderDatalist.orderInfo.refund_img
+						//     );
+						//   } catch (e) {
+						//     this.orderDatalist.orderInfo.refund_img = [];
+						//   }
+						// }
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 操作
+			changeMenu(row, name) {
+				console.log('dddddddddddddddd')
+				this.modals = true
+				this.order_id = row.id
+			},
+			cancal() {
+				this.modals = false
+				this.remark = ''
+			},
+			getygList() {
+				getYgList().then(res => {
+					console.log(res)
+					this.ygList = res.data.list
+				})
+			},
+			//goCancal
+			goCancal() {
+				if (this.chooseId == '') {
+					return this.$Message.error('请选择员工')
+				}
+				this.modals = false
+				member_update({
+					id: this.order_id,
+					work_member_id: this.chooseId
+				}).then(res => {
+					this.$Message.success(res.msg)
+					this.getOrderList()
+				}).catch(err => {
+					this.$Message.error(err.msg)
+				})
+
+			},
+			// 获取退款表单数据
+			getRefundData(id, refund_type) {
+				if (refund_type == 2) {
+					this.delfromData = {
+						title: "是否立即退货",
+						url: `/refund/agree/${id}`,
+						method: "get",
+					};
+					this.$modalSure(this.delfromData)
+						.then((res) => {
+							this.$Message.success(res.msg);
+							this.getOrderList();
+							this.getData(this.orderId, 1);
+						})
+						.catch((res) => {
+							this.$Message.error(res.msg);
+						});
+				} else {
+					this.$modalForm(getRefundOrderFrom(id)).then(() => {
+						this.getOrderList();
+						this.getData(this.orderId, 1);
+						this.$emit("changeGetTabs");
+					});
+				}
+			},
+			// 获取退积分表单数据
+			getRefundIntegral(id) {
+				refundIntegral(id)
+					.then(async (res) => {
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+			// 删除单条订单
+			delOrder(row, data) {
+				if (row.is_del === 1) {
+					this.$modalSure(data)
+						.then((res) => {
+							this.$Message.success(res.msg);
+							this.getOrderList();
+						})
+						.catch((res) => {
+							this.$Message.error(res.msg);
+						});
+				} else {
+					const title = "错误!";
+					const content =
+						"<p>您选择的的订单存在用户未删除的订单,无法删除用户未删除的订单!</p>";
+					this.$Modal.error({
+						title: title,
+						content: content,
+					});
+				}
+			},
+			// 修改成功
+			submitFail() {
+				this.getOrderList();
+				this.getData(this.orderId, 1);
+			},
+			// 订单选择状态
+			selectChange2(tab) {
+				this.pagination.page = 1;
+				this.pagination.refund_type = tab;
+				this.getOrderList(tab);
+			},
+			// 不退款表单数据
+			getNoRefundData(id) {
+				this.$modalForm(getnoRefund(id)).then(() => {
+					this.getOrderList();
+					this.getData(this.orderId);
+					this.$emit("changeGetTabs");
+				});
+			},
+			// 订单列表
+			getOrderList() {
+				this.loading = true;
+				getServeOrder(this.pagination)
+					.then((res) => {
+						this.loading = false;
+						const {
+							count,
+							list,
+							num
+						} = res.data;
+						this.total = count;
+						this.tbody = list;
+						// this.num = num;
+						list.forEach((item) => {
+							if (item.id == this.orderId) {
+								this.rowActive = item;
+							}
+						});
+					})
+					.catch((err) => {
+						this.loading = false;
+						this.$Message.error(err.msg);
+					});
+			},
+			// 分页
+			pageChange(index) {
+				this.pagination.page = index;
+				this.getOrderList();
+			},
+			nameSearch() {
+				this.pagination.page = 1;
+				this.getOrderList();
+			},
+			// 订单搜索
+			orderSearch() {
+				this.pagination.page = 1;
+				this.getOrderList();
+			},
+			// 配送信息表单数据
+			delivery(row) {
+				getDistribution(row.id)
+					.then(async (res) => {
+						this.FromData = res.data;
+						this.$refs.edits.modals = true;
+					})
+					.catch((res) => {
+						this.$Message.error(res.msg);
+					});
+			},
+		},
+	};
+</script>
+
+<style lang="stylus" scoped>
+	.span-del {
+		color: #ed4014;
+		display: block
+	}
+
+	.code {
+		position: relative;
+	}
+
+	.QRpic {
+		width: 180px;
+		height: 259px;
+
+		img {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.tabBox {
+		width: 100%;
+		height: 100%;
+		display: flex;
+		align-items: center;
+
+		.tabBox_img {
+			width: 30px;
+			height: 30px;
+
+			img {
+				width: 100%;
+				height: 100%;
+			}
+		}
+
+		.tabBox_tit {
+			width: 245px;
+			height: 30px;
+			line-height: 30px;
+			font-size: 12px !important;
+			margin: 0 2px 0 10px;
+			letter-spacing: 1px;
+			box-sizing: border-box;
+		}
+	}
+
+	.tabBox+.tabBox {
+		margin-top: 5px;
+	}
+
+	.pictrue-box {
+		display: flex;
+		align-item: center;
+	}
+
+	.pictrue {
+		width: 25px;
+		height: 25px;
+	}
+</style>

+ 391 - 0
src/pages/setting/step/index.vue

@@ -0,0 +1,391 @@
+<template>
+    <div>
+        <Card :bordered="false" dis-hover class="ivu-mt">
+            <Menu :theme="theme3" :active-name="sortName" width="auto" >
+                <MenuGroup>
+                    <MenuItem :name="item.id" class="menu-item" v-for="(item,index) in groupAll" :key="index" @click.native="bindMenuItem(item,index)">
+                        {{item.name}}
+                    </MenuItem>
+                </MenuGroup>
+            </Menu>
+        <Card :bordered="false" dis-hover :padding="0">
+            <Form ref="formValidate" :model="formValidate"  :label-width="labelWidth" :label-position="labelPosition" @submit.native.prevent>
+                <Button type="primary" @click="groupAdd(1)" class="mr20">添加数据</Button>
+            </Form>
+            <Table :columns="columns1" :data="tabList" ref="table" class="ivu-mt"
+                    :loading="loading" highlight-row
+                    no-userFrom-text="暂无数据"
+                    no-filtered-userFrom-text="暂无筛选结果">
+                <template slot-scope="{ row, index }" slot="action">
+                    <a @click="groupAdd(2,row)">编辑</a>
+                    <Divider type="vertical"/>
+                    <a @click="del(row,'删除这条信息',index)">删除</a>
+                </template>
+            </Table>
+            <div class="acea-row row-right page">
+                <Page :total="total" :current="formValidate.page" show-elevator show-total @on-change="pageChange"
+                        :page-size="formValidate.limit"/>
+            </div>
+        </Card>
+    </Card>
+      <Modal v-model="modals" scrollable :title="tit" class="order_box" :closable="false">
+      	<Form :label-width="80" @submit.native.prevent>
+      		<FormItem label="等级:" prop="level">
+      			<Input v-model="updata.level"  type="text"
+      				style="width: 100%" />
+      		</FormItem>
+			<FormItem label="业绩:" prop="step">
+				<Input v-model="updata.step"  type="text"  
+					style="width: 100%" />
+			</FormItem>
+			<FormItem label="排序:" prop="sort">
+				<Input v-model="updata.sort"  type="text"  
+					style="width: 100%" />
+			</FormItem>
+			<FormItem label="提成比例:" prop="ratio">
+				<Input v-model="updata.ratio"  type="text"  
+					style="width: 100%" />
+			</FormItem>
+			<FormItem label="股权:" prop="shareholding">
+				<Input v-model="updata.shareholding"  type="text"  
+					style="width: 100%" />
+			</FormItem>
+      	</Form>
+      	<div slot="footer">
+      		<Button type="primary" @click="goCancal">提交</Button>
+      		<Button @click="modals = false">取消</Button>
+      	</div>
+      </Modal> 
+    </div>
+</template>
+
+<script>
+    import { mapState } from 'vuex'
+    import editFrom from '@/components/from/from'
+    import { groupDataListApi, groupDataAddApi, groupDataEditApi, groupDataHeaderApi, groupDataSetApi, groupAllApi } from '@/api/system'
+    import Setting from "@/setting";
+	import { addJt,editJt} from '@/api/setting'
+import { Edit } from 'vxe-table';
+    export default {
+        name: 'list',
+        components: { editFrom },
+        data () {
+            return {
+				chooseRow: {},
+				editId: 0,
+				type: 1,
+				tit: '添加',
+				modals: false,
+				updata: {
+					gid: 51,
+					level: '',
+					ratio: '',
+					shareholding: '',
+					sort: 1,
+					status: 1,
+					step: ''
+				},
+				id: 51,
+              roterPre: Setting.roterPre,
+                grid: {
+                    xl: 7,
+                    lg: 7,
+                    md: 12,
+                    sm: 24,
+                    xs: 24
+                },
+                formValidate: {
+                    status: '',
+                    page: 1,
+                    limit: 20,
+                    gid: 51
+                },
+                total: 0,
+                tabList: [],
+                columns1: [],
+                FromData: null,
+                loading: false,
+                titleType: 'group',
+                groupAll: [],
+                theme3: 'light',
+                labelSort: [],
+                sortName: null,
+                current: 0
+            }
+        },
+        computed: {
+            ...mapState('admin/layout', [
+                'isMobile'
+            ]),
+            labelWidth () {
+                return this.isMobile ? undefined : 96;
+            },
+            labelPosition () {
+                return this.isMobile ? 'top' : 'right';
+            }
+        },
+        watch: {
+            $route (to, from) {
+                if (this.id) {
+                    this.getList();
+                    this.getListHeader()
+                } else {
+                    this.getGroupAll();
+                }
+                // this.getListHeader();
+                // this.getList();
+            }
+        },
+        mounted () {
+            if (this.id) {
+                this.getList();
+                this.getListHeader()
+            } else {
+                this.getGroupAll();
+            }
+            // this.getListHeader();
+            // this.getList();
+        },
+        methods: {
+			goCancal() {
+				if(!this.updata.level) {
+					return this.$Message.error('请输入等级')
+				}
+				if(!this.updata.ratio) {
+					return this.$Message.error('请输入等级比例')
+				}
+				if(!this.updata.step) {
+					return this.$Message.error('请输入业绩')
+				}
+				if(!this.updata.shareholding) {
+					return this.$Message.error('请输入股权')
+				}
+				if(!this.updata.sort) {
+					return this.$Message.error('请输入排序')
+				}
+				let index = this.tabList.find(item => {
+					return item.level == this.updata.level
+				})
+				
+				if(this.type == 1) {
+					if(index) {
+						return this.$Message.error('该等级已使用')
+					}
+					addJt(this.updata).then(res => {
+						this.$Message.success(res.msg)
+						this.getList()
+						this.cancal()
+					}).catch(err => {
+						this.$Message.error(err.msg)
+					})
+				}else {
+					if(index && index.level != this.chooseRow.level) {
+						console.log(index,'index')
+						return this.$Message.error('该等级已使用')
+					}
+					editJt(this.editId, this.updata).then(res => {
+						this.getList()
+						this.cancal()
+							this.$Message.success(res.msg)
+					}).catch(err => {
+						this.$Message.error(err.msg)
+					})
+				}
+			},
+			cancal() {
+				this.updata = {
+					gid: 51,
+					level: '',
+					ratio: '',
+					shareholding: '',
+					sort: 1,
+					status: 1,
+					step: ''
+				}
+				this.modals = false
+			},
+            bindMenuItem (name, index) {
+                this.current = index;
+                this.formValidate.gid = name.id
+                this.getListHeader();
+                this.getList();
+            },
+            getGroupAll () {
+                groupAllApi().then(async res => {
+                    this.groupAll = res.data;
+                    this.sortName = res.data[0].id
+                    this.formValidate.gid = res.data[0].id
+                    this.getListHeader()
+                    this.getList()
+                }).catch(res => {
+                    this.$Message.error(res.msg)
+                })
+            },
+            // 返回
+            back () {
+                this.$router.push({ path: this.roterPre + '/system/config/system_group/index' });
+            },
+            getUrl (type) {
+                let url = 'setting/group_data' + type;
+                if (this.id) {
+                    let arr = {
+                        'setting_groupDataSign': 'setting/sign_data' + type,
+                        'setting_groupDataOrder': 'setting/order_data' + type,
+                        'setting_groupDataUser': 'setting/usermenu_data' + type,
+                        'setting_groupDataPoster': 'setting/poster_data' + type,
+                        'marketing_storeSeckillData': 'setting/seckill_data' + type
+                    };
+                    if (arr[this.$route.name] === undefined) return url
+                    return arr[this.$route.name]
+                } else {
+                    return url
+                }
+            },
+            // 列表
+            getList () {
+                this.loading = true
+                this.formValidate.gid = this.id ? this.id : this.formValidate.gid
+                this.formValidate.status = this.formValidate.status || ''
+                groupDataListApi(this.formValidate, this.getUrl('')).then(async res => {
+                    let data = res.data
+                    this.tabList = data.list
+                    this.total = data.count
+                    this.loading = false
+                }).catch(res => {
+                    this.loading = false
+                    this.$Message.error(res.msg)
+                })
+            },
+            // 表格头部
+            getListHeader () {
+                this.loading = true
+                let data = {
+                    gid: this.id ? this.id : this.formValidate.gid
+                }
+                groupDataHeaderApi(data, this.getUrl('/header')).then(async res => {
+                    let data = res.data
+                    let header = data.header
+                    let index = []
+                    header.forEach(function (item, i) {
+                        if (item.type === 'img') {
+                            index.push(i)
+                        }
+                    })
+                    index.forEach(function (item) {
+                        header[item].render = (h, params) => {
+                            let arr = params.row[header[item].key]
+                            let newArr = []
+                            if (arr !== undefined && arr.length) {
+                                arr.forEach(function (e, i) {
+                                    newArr.push(h('div', {
+                                        style: {
+                                            width: '36px',
+                                            height: '36px',
+                                            'border-radius': '4px',
+                                            cursor: 'pointer',
+                                            display: 'inline-block'
+                                        }
+                                    }, [
+                                        h('img', {
+                                            attrs: {
+                                                src: params.row[header[item].key][i]
+                                            },
+                                            style: {
+                                                width: '100%',
+                                                height: '100%'
+                                            }
+                                        })
+                                    ]))
+                                })
+                            }
+                            return h('viewer', newArr)
+                        }
+                    })
+					header.forEach((item,index) => {
+						if(item.title == '是否可用') {
+							header.splice(index,1)
+						}
+					})
+                    this.columns1 = header
+					console.log(header,'滴答滴答滴答滴答滴答滴答')
+                    this.loading = false
+                }).catch(res => {
+                    this.loading = false
+                    this.$Message.error(res.msg)
+                })
+            },
+            pageChange (index) {
+                this.formValidate.page = index
+                this.getList()
+            },
+            // 表格搜索
+            userSearchs () {
+                this.formValidate.page = 1
+                this.getList()
+            },
+            // 添加表单
+            groupAdd (index,item) {
+				this.type = index
+				if(index == 1) {
+					
+				}else {
+					this.chooseRow = item
+					this.editId = item.id
+					this.updata.level = item.level                  
+					this.updata.ratio = item.ratio                   
+					this.updata.shareholding = item.shareholding                   
+					this.updata.sort = item.sort                   
+					this.updata.step = item.step               
+				}
+				this.modals = true
+            },
+           
+        }
+    }
+</script>
+
+<style scoped lang="stylus">
+/deep/ .ivu-menu-vertical .ivu-menu-item-group-title{
+        display: none;
+    }
+    /deep/ .ivu-menu-vertical.ivu-menu-light:after{
+        display none
+    }
+
+    .left-wrapper
+        height 904px
+        background #fff
+        border-right 1px solid #dcdee2
+    .menu-item
+        // z-index 50
+        position: relative;
+        display flex
+        justify-content space-between
+        word-break break-all
+        .icon-box
+            z-index 3
+            position absolute
+            right 20px
+            top 50%
+            transform translateY(-50%)
+            display none
+        &:hover .icon-box
+            display block
+        .right-menu
+            z-index 10
+            position absolute
+            right: -106px;
+            top: -11px;
+            width auto
+            min-width: 121px;
+    .tabBox_img
+        width 36px
+        height 36px
+        border-radius:4px
+        cursor pointer
+        img
+            width 100%
+            height 100%
+    .ivu-menu
+        z-index auto
+</style>

+ 4 - 4
src/pages/store/components/addStaff.vue

@@ -194,7 +194,7 @@
 					alias: '',
 					address: '',
 					main_department: '',
-					direct_leader: 'ZhouFengYu',
+					direct_leader: 'ChenBin',
 					position: ''
 				},
 				spinShow: false,
@@ -271,7 +271,7 @@
 					alias: '',
 					address: '',
 					main_department: '',
-					direct_leader: 'ZhouFengYu',
+					direct_leader: 'ChenBin',
 					position: ''
 				}
 			}
@@ -370,7 +370,7 @@
 					alias: '',
 					address: '',
 					main_department: '',
-					direct_leader: 'ZhouFengYu'
+					direct_leader: 'ChenBin'
 				}
 				this.add = 0;
 				this.isApi = 0;
@@ -467,7 +467,7 @@
 								department: this.formItem.department,
 								uid: this.formItem.uid,
 								userid: this.formItem.userid,
-								direct_leader: 'ZhouFengYu',
+								direct_leader: 'ChenBin',
 								position: this.formItem.position
 							}).then(async res => {
 								this.$Message.success(res.msg);

+ 10 - 1
src/router/modules/agent.js

@@ -41,6 +41,15 @@ export default {
                 title: '分销说明'
             },
             component: () => import('@/pages/agent/agreement')
-        }
+        },
+		{
+		    path: 'kpi/index',
+		    name: `${pre}kpi`,
+		    meta: {
+		        auth: ['admin-agent-kpi-index'],
+		        title: '分销说明'
+		    },
+		    component: () => import('@/pages/agent/kpi/index')
+		}
     ]
 };

+ 9 - 0
src/router/modules/order.js

@@ -30,6 +30,15 @@ export default {
             },
             component: () => import('@/pages/order/orderList/index')
         },
+		{
+		    path: 'serveList',
+		    name: `${pre}serveList`,
+		    meta: {
+		        auth: ['admin-order-serveList-index'],
+		        title: '预约订单'
+		    },
+		    component: () => import('@/pages/order/serveList/index')
+		},
         {
             path: 'split_list',
             name: `${pre}split_list`,

+ 9 - 0
src/router/modules/setting.js

@@ -51,6 +51,15 @@ export default {
             },
             component: () => import('@/pages/setting/shop/trade')
         },
+		{
+		    path: 'step',
+		    name: `${pre}step`,
+		    meta: {
+		        auth: ['setting-step'],
+		        title: '阶梯奖励'
+		    },
+		    component: () => import('@/pages/setting/step/index')
+		},
         {
             path: 'shop/pay',
             name: `${pre}shop_pay`,