| | |
| | | <template> |
| | | <TableLayout> |
| | | <template v-slot:table-wrap> |
| | | <div class="params-container"> |
| | | <div class="section"> |
| | | <h3 class="section-title">司机规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">司机每日可取消订单次数为</span> |
| | | <el-input-number v-model="form.driverDailyCancelLimit" :min="0" controls-position="right"></el-input-number> |
| | | <span class="desc">次,超过次数后,今日不可抢单</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">司机最大同时进行中订单数量为</span> |
| | | <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number> |
| | | <span class="desc">个,超过该数量不允许抢单<span class="red">(即订单状态=待取件/配送中)</span></span> |
| | | </div> |
| | | <div class="params-container" :style="' height: '+contentHeight+'px;'"> |
| | | <div class="section"> |
| | | <h3 class="section-title">司机规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">司机每日可取消订单次数为</span> |
| | | <el-input-number v-model="form.driverDailyCancelLimit" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">次,超过次数后,今日不可抢单</span> |
| | | </div> |
| | | |
| | | <div class="section"> |
| | | <h3 class="section-title">订单规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">超时</span> |
| | | <el-input-number v-model="form.autoCancelTime" :min="0" controls-position="right"></el-input-number> |
| | | <span class="desc">分钟未支付,订单自动取消</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">急速达订单计价系数</span> |
| | | <el-input-number v-model="form.urgentCoefficient" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">物品保费比例</span> |
| | | <el-input-number v-model="form.insuranceRate" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | <span class="desc">%</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">异地寄送模式下,若物品已送达,而客户当天未取件,则后续系统按</span> |
| | | <el-input-number v-model="form.unpickedDiscount" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | <span class="desc">折扣系数计算</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">订单送达后默认</span> |
| | | <el-input-number v-model="form.autoConfirmReceipt" :min="0" controls-position="right"></el-input-number> |
| | | <span class="desc">天后自动确认收货<span class="red">(仅限收件地址不是服务点的情况)</span></span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">订单完成后</span> |
| | | <el-input-number v-model="form.settlementDate" :min="0" controls-position="right"></el-input-number> |
| | | <span class="desc">天后系统结算订单,并给与参与角色按比例分成</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">司机最大同时进行中订单数量为</span> |
| | | <el-input-number v-model="form.orderAcceptLimit" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">个,超过该数量不允许抢单<span class="red">(即订单状态=待取件/配送中)</span></span> |
| | | </div> |
| | | |
| | | <div class="footer"> |
| | | <el-button type="primary" @click="handleSave" :loading="isWorking.save">保存</el-button> |
| | | <div class="form-item"> |
| | | <span class="label">客户下单后每隔</span> |
| | | <el-input-number v-model="form.noGrabNotifyTime" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">分钟未有司机抢单,系统推送平台管理员</span> |
| | | <el-select v-model="userIds" multiple clearable placeholder="请选择"> |
| | | <el-option |
| | | v-for="item in userList" |
| | | :key="item.id" |
| | | :label="item.realname" |
| | | :value="item.id+''" /> |
| | | </el-select> |
| | | <span class="label">提醒加急派单处理。</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">门店默认配送范围</span> |
| | | <el-input-number v-model="form.defaultDeliveryRange" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">(公里)</span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | </TableLayout> |
| | | |
| | | <div class="section"> |
| | | <h3 class="section-title">订单规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">超时</span> |
| | | <el-input-number v-model="form.autoCancelTime" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">分钟未支付,订单自动取消</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">急速达订单计价系数</span> |
| | | <el-input-number v-model="form.urgentCoefficient" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">物品保费比例</span> |
| | | <el-input-number v-model="form.insuranceRate" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | <span class="desc">%</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">同城寄送模式下,若物品已送达,而客户当天未取件,则后续系统按</span> |
| | | <el-input-number v-model="form.unpickedDiscount" :min="0" :precision="2" controls-position="right"></el-input-number> |
| | | <span class="desc">折扣系数计算</span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">订单送达后默认</span> |
| | | <el-input-number v-model="form.autoConfirmReceipt" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">天后自动确认收货<span class="red">(仅限收件地址不是服务点的情况)</span></span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">订单完成后</span> |
| | | <el-input-number v-model="form.settlementDate" :min="0" controls-position="right"></el-input-number> |
| | | <span class="label">天后系统结算订单,并给与参与角色按比例分成</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="section"> |
| | | <h3 class="section-title">优惠券发放规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">下单数量每满</span> |
| | | <el-input-number v-model="form.orderCouponOrderCount" :min="1" controls-position="right"></el-input-number> |
| | | <span class="label">单,至多</span> |
| | | <el-input-number v-model="form.orderCouponGiftCount" :min="1" controls-position="right"></el-input-number> |
| | | <span class="label">次,平台赠送优惠券 </span> |
| | | <el-select v-model="form.orderCouponId" style="width: 130px;" placeholder="优惠券"> |
| | | <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | <span class="label"><span class="red">(以行李已寄存门店为准,即便退单亦不收回,默认每次发放1张)</span></span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">会员注册每满</span> |
| | | <el-input-number v-model="form.registerCouponYears" :min="1" controls-position="right"></el-input-number> |
| | | <span class="label">年,至多</span> |
| | | <el-input-number v-model="form.registerCouponGiftCount" :min="1" controls-position="right"></el-input-number> |
| | | <span class="label">次,平台赠送优惠券 </span> |
| | | <el-select v-model="form.registerCouponId" style="width: 130px;" placeholder="优惠券"> |
| | | <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | <span class="label"><span class="red">(按注册时间,无论会员是否下单;默认每次发放1张)</span></span> |
| | | </div> |
| | | <div class="form-item"> |
| | | <span class="label">新注册会员送平台赠送优惠券</span> |
| | | <el-select v-model="form.registerGiftCouponId" style="width: 130px;" placeholder="优惠券"> |
| | | <el-option v-for="item in couponList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="section"> |
| | | <h3 class="section-title">开票规则</h3> |
| | | <div class="form-item"> |
| | | <span class="label">超时</span> |
| | | <el-input-number v-model="form.invoiceMonthLimit" :min="1" controls-position="right"></el-input-number> |
| | | <span class="label">个月的订单不允许开发票</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="section"> |
| | | <h3 class="section-title">司机奖励规则</h3> |
| | | <div class="table-container"> |
| | | <el-table :data="driverRewardList" border style="width: 100%"> |
| | | <el-table-column prop="registerRewardAmount" label="注册奖励(元/单)"> |
| | | <template slot-scope="scope"> |
| | | <el-input-number v-model="scope.row.registerRewardAmount" :min="1" controls-position="right"></el-input-number> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="registerRewardOrderCount" label="注册奖励单数"> |
| | | <template slot-scope="scope"> |
| | | <el-input-number v-model="scope.row.registerRewardOrderCount" :min="1" controls-position="right"></el-input-number> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="platformRewardAmount" label="平台奖励(元/单)"> |
| | | <template slot-scope="scope"> |
| | | <el-input-number v-model="scope.row.platformRewardAmount" :min="1" controls-position="right"></el-input-number> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="platformRewardOrderCount" label="平台奖励单数"> |
| | | <template slot-scope="scope"> |
| | | <el-input-number v-model="scope.row.platformRewardOrderCount" :min="1" controls-position="right"></el-input-number> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="footer"> |
| | | <el-button type="primary" @click="handleSave" :loading="isWorking.save">保存</el-button> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableLayout from '@/layouts/TableLayout' |
| | | import { getParams, saveParams } from '@/api/business/sysParams' |
| | | import { allList } from '@/api/system/user' |
| | | import { validList } from '@/api/business/coupon' |
| | | |
| | | export default { |
| | | name: 'SysParams', |
| | | components: { TableLayout }, |
| | | data () { |
| | | return { |
| | | contentHeight: 600, |
| | | driverRewardList: [], |
| | | form: { |
| | | autoCancelTime: '', |
| | | autoConfirmReceipt: '', |
| | | driverDailyCancelLimit: '', |
| | | autoCancelTime: '', |
| | | autoConfirmReceipt: '', |
| | | registerRewardAmount: 0, |
| | | registerRewardOrderCount: 0, |
| | | platformRewardAmount: 0, |
| | | platformRewardOrderCount: 0, |
| | | driverDailyCancelLimit: '', |
| | | insuranceRate: '', |
| | | orderAcceptLimit: '', |
| | | noGrabNotifyUsers: '', |
| | | noGrabNotifyTime: '', |
| | | defaultDeliveryRange: '', |
| | | settlementDate: '', |
| | | unpickedDiscount: '', |
| | | urgentCoefficient: '' |
| | | urgentCoefficient: '', |
| | | orderCouponOrderCount: '', |
| | | orderCouponGiftCount: '', |
| | | registerCouponYears: '', |
| | | registerCouponGiftCount: '', |
| | | orderCouponId: null, |
| | | registerCouponId: null, |
| | | registerGiftCouponIds: null, |
| | | invoiceMonthLimit: '' |
| | | }, |
| | | couponList: [], |
| | | userIds: [], |
| | | userList: [], |
| | | isWorking: { |
| | | save: false |
| | | } |
| | |
| | | }, |
| | | created () { |
| | | this.loadData() |
| | | this.loadUserlist() |
| | | this.loadCouponList() |
| | | this.contentHeight = window.innerHeight -110; |
| | | }, |
| | | methods: { |
| | | loadCouponList() { |
| | | validList().then(res => { |
| | | console.log(res) |
| | | this.couponList = res || [] |
| | | }).catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | }, |
| | | loadUserlist () { |
| | | allList().then(res => { |
| | | this.userList = res || [] |
| | | }).catch(e => { |
| | | this.$tip.apiFailed(e) |
| | | }) |
| | | }, |
| | | loadData () { |
| | | getParams().then(res => { |
| | | this.form = { |
| | |
| | | autoConfirmReceipt: res.autoConfirmReceipt || '', |
| | | driverDailyCancelLimit: res.driverDailyCancelLimit || '', |
| | | insuranceRate: res.insuranceRate || '', |
| | | defaultDeliveryRange: res.defaultDeliveryRange || '', |
| | | noGrabNotifyTime: res.noGrabNotifyTime || '', |
| | | orderAcceptLimit: res.orderAcceptLimit || '', |
| | | noGrabNotifyUsers: res.noGrabNotifyUsers || '', |
| | | settlementDate: res.settlementDate || '', |
| | | unpickedDiscount: res.unpickedDiscount || '', |
| | | urgentCoefficient: res.urgentCoefficient || '' |
| | | urgentCoefficient: res.urgentCoefficient || '', |
| | | orderCouponOrderCount: res.orderCouponOrderCount || '', |
| | | orderCouponGiftCount: res.orderCouponGiftCount || '', |
| | | registerCouponYears: res.registerCouponYears || '', |
| | | registerCouponGiftCount: res.registerCouponGiftCount || '', |
| | | orderCouponId: res.orderCouponId ? Number(res.orderCouponId) : null, |
| | | registerCouponId: res.registerCouponId ? Number(res.registerCouponId) : null, |
| | | registerGiftCouponIds: res.registerGiftCouponIds ? Number(res.registerGiftCouponIds) : '', |
| | | registerRewardAmount: (res.registerRewardAmount || 0) / 100, |
| | | registerRewardOrderCount: res.registerRewardOrderCount || 0, |
| | | platformRewardAmount: (res.platformRewardAmount || 0) / 100, |
| | | platformRewardOrderCount: res.platformRewardOrderCount || 0, |
| | | invoiceMonthLimit: res.invoiceMonthLimit || '' |
| | | } |
| | | // 初始化司机奖励规则表格数据 |
| | | this.driverRewardList = [{ |
| | | registerRewardAmount: this.form.registerRewardAmount || 0, |
| | | registerRewardOrderCount: this.form.registerRewardOrderCount || 0, |
| | | platformRewardAmount: this.form.platformRewardAmount || 0, |
| | | platformRewardOrderCount: this.form.platformRewardOrderCount || 0 |
| | | }] |
| | | if (this.form.noGrabNotifyUsers) { |
| | | this.userIds = this.form.noGrabNotifyUsers.split(',') |
| | | } |
| | | }).catch(e => { |
| | | this.$tip.apiFailed(e) |
| | |
| | | }, |
| | | handleSave () { |
| | | this.isWorking.save = true |
| | | saveParams(this.form).then(res => { |
| | | // 深拷贝表单数据 |
| | | const submitForm = JSON.parse(JSON.stringify(this.form)) |
| | | submitForm.noGrabNotifyUsers = '' |
| | | if (this.userIds) { |
| | | submitForm.noGrabNotifyUsers = this.userIds.join(',') |
| | | } |
| | | // 同步司机奖励表格数据到表单 |
| | | if (this.driverRewardList.length > 0) { |
| | | const rewardData = this.driverRewardList[0] |
| | | submitForm.registerRewardAmount = rewardData.registerRewardAmount |
| | | submitForm.registerRewardOrderCount = rewardData.registerRewardOrderCount |
| | | submitForm.platformRewardAmount = rewardData.platformRewardAmount |
| | | submitForm.platformRewardOrderCount = rewardData.platformRewardOrderCount |
| | | } |
| | | if (submitForm.orderCouponId) { |
| | | submitForm.orderCouponId = String(submitForm.orderCouponId) |
| | | } |
| | | if (submitForm.registerCouponId) { |
| | | submitForm.registerCouponId = String(submitForm.registerCouponId) |
| | | } |
| | | // if (submitForm.registerGiftCouponIds) { |
| | | // submitForm.registerGiftCouponIds = submitForm.registerGiftCouponIds |
| | | // } |
| | | saveParams(submitForm).then(res => { |
| | | this.$tip.apiSuccess(res || '保存成功') |
| | | }).catch(e => { |
| | | this.$tip.apiFailed(e) |
| | |
| | | <style scoped> |
| | | .params-container { |
| | | padding: 20px; |
| | | overflow: auto; |
| | | display: block; |
| | | background-color: #fff; |
| | | } |
| | | .section { |
| | | margin-bottom: 40px; |