From 923c9beac02bf756d09c2e70b119e50b95af9f74 Mon Sep 17 00:00:00 2001 From: zhaoxiaoqiang <287285524@qq.com> Date: Wed, 01 Sep 2021 15:53:20 +0800 Subject: [PATCH] 9999 --- src/views/order/wxScore.vue | 369 ++++++++++++++-------------- src/views/mine/stores/stores-detail.vue | 371 +++++++++++++--------------- 2 files changed, 358 insertions(+), 382 deletions(-) diff --git a/src/views/mine/stores/stores-detail.vue b/src/views/mine/stores/stores-detail.vue index 26410f7..d786e69 100644 --- a/src/views/mine/stores/stores-detail.vue +++ b/src/views/mine/stores/stores-detail.vue @@ -1,202 +1,189 @@ <template> -<div class="stores-detail h-100-g"> + <div class="stores-detail h-100-g"> + <v-navbar title="门店详情" fixed rightText="保存" @right-click="Save"></v-navbar> - <v-navbar title="门店详情" fixed rightText='保存' @right-click="Save"></v-navbar> + <div class="cell-group"> + <v-cell v-model="form.storeName" :max="20" label="门店名称" :readonly="true" icon="iconyonghu" placeholder="门店名称"></v-cell> + <v-cell label="所在地区" icon="icondingwei" placeholder="所在地区" @click.native="isShowArea = true"> + <div slot="v-cell-right" class="flex-center-g"> + <div>{{ form.areaText }}</div> + <svg class="icon" aria-hidden="true" style="width:18px;height:18px;fill:#999;"> + <use xlink:href="#iconyou"></use> + </svg> + </div> + </v-cell> + <v-cell v-model="form.dtlAddr" :max="30" label="详细地址" icon="icontishi" placeholder="详细地址"></v-cell> + </div> - <div class="cell-group"> - <v-cell v-model="form.storeName" :max="20" label='门店名称' :readonly="true" icon='iconyonghu' placeholder='门店名称'></v-cell> - <v-cell label='所在地区' icon='icondingwei' placeholder='所在地区' @click.native="isShowArea = true;"> - <div slot="v-cell-right" class="flex-center-g"> - <div>{{form.areaText}}</div> - <svg class="icon" aria-hidden="true" style="width:18px;height:18px;fill:#999;"> - <use xlink:href="#iconyou"></use> - </svg> - </div> - </v-cell> - <v-cell v-model="form.dtlAddr" :max="30" label='详细地址' icon='icontishi' placeholder='详细地址'></v-cell> + <div class="cell-group"> + <v-cell v-model="form.priName" :max="6" label="负责人姓名" :readonly="true" placeholder="负责人姓名"></v-cell> + <v-cell v-model="form.priMblNo" :max="11" type="tel" label="负责人手机号" :readonly="true" placeholder="负责人手机号"></v-cell> + <v-cell v-model="form.priEmail" :max="50" label="联系邮箱" :readonly="true" placeholder="联系邮箱"></v-cell> + <v-cell v-model="form.priIdNo" :max="18" label="负责人身份证号" :readonly="true" placeholder="负责人身份证号"></v-cell> + <v-cell v-model="form.outChanNo" :max="18" label="渠道编码" :readonly="true" placeholder="渠道编码"></v-cell> + </div> + + <footer class="flex-center-g footer"> + <van-button class="btn left" @click="freeze">{{ menText }}</van-button> + <van-button class="btn right" @click="orderSearch()">订单查询</van-button> + </footer> + + <van-dialog class="setting-box-dialog" v-model="dialogShow" show-cancel-button :message="Msg" @confirm="onConfirm"> </van-dialog> + + <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false"> + <van-area ref="Area" :area-list="areaList" @cancel="closeAreaModal" @confirm="setAreaValue"></van-area> + </van-popup> </div> - - - <div class="cell-group"> - <v-cell v-model="form.priName" :max="6" label='负责人姓名' :readonly="true" placeholder='负责人姓名'></v-cell> - <v-cell v-model="form.priMblNo" :max="11" type="tel" label='负责人手机号' :readonly="true" placeholder='负责人手机号'></v-cell> - <v-cell v-model="form.priEmail" :max="50" label='联系邮箱' :readonly="true" placeholder='联系邮箱'></v-cell> - <v-cell v-model="form.priIdNo" :max="18" label='负责人身份证号' :readonly="true" placeholder='负责人身份证号'></v-cell> - <v-cell v-model="form.outChanNo" :max="18" label='渠道编码' :readonly="true" placeholder='渠道编码'></v-cell> - </div> - - - <footer class="flex-center-g footer"> - <van-button class="btn left" @click="freeze">{{ menText }}</van-button> - <van-button class="btn right" @click="$router.push('/order/wxScore')">订单查询</van-button> - </footer> - - - <van-dialog - class="setting-box-dialog" - v-model="dialogShow" - show-cancel-button - :message='Msg' - @confirm="onConfirm" - > - </van-dialog> - - - <van-popup v-model="isShowArea" position="bottom" :close-on-click-overlay="false"> - <van-area ref='Area' :area-list='areaList' @cancel="closeAreaModal" @confirm="setAreaValue"></van-area> - </van-popup> - -</div> </template> <script> - import { mapState } from 'vuex'; - export default { - name: "stores-detail", - data(){ - return { - isShowArea:false, - dialogShow:false, - menText:'', - Status:null, - Msg:'', - Btn:false, +import { mapState } from "vuex"; +export default { + name: "stores-detail", + data() { + return { + isShowArea: false, + dialogShow: false, + menText: "", + Status: null, + Msg: "", + Btn: false, - form:{ - areaText:'',//地区文字展示 - storeName:'', //门店名称 - dtlAddr:'', //详细地址 - priName:'', //负责人姓名 - priEmail:'', //联系邮箱 - priMblNo:'', //负责人手机 - priIdNo:'', //负责人身份证号 - provCode: '', - cityCode: '', - areaCode: '', - outChanNo:'', + form: { + areaText: "", //地区文字展示 + storeName: "", //门店名称 + dtlAddr: "", //详细地址 + priName: "", //负责人姓名 + priEmail: "", //联系邮箱 + priMblNo: "", //负责人手机 + priIdNo: "", //负责人身份证号 + provCode: "", + cityCode: "", + areaCode: "", + outChanNo: "", + }, + + rule: [{ key: "dtlAddr", message: "请输入详细地址", type: "isEmpty" }], + }; + }, + computed: { + ...mapState(["areaList"]), + }, + created() { + this.init(); + }, + methods: { + init() { + this.$api.storeDtl({ storeId: this.$route.query.storeId }).then((res) => { + let data = res.body, + addr = data.addr; + this.Status = data.freezeStatus; + data.freezeStatus ? (this.menText = "冻结门店") : (this.menText = "启用门店"); + this.form = { + areaText: addr.province.name + "-" + addr.city.name + "-" + addr.area.name, //地区文字展示 + storeName: data.storeName, //门店名称 + dtlAddr: addr.dtlAddr, //详细地址 + priName: data.priName, //负责人姓名 + priEmail: data.priEmail, //联系邮箱 + priMblNo: data.priMblNo, //负责人手机 + priIdNo: data.priIdNo, //负责人身份证号 + provCode: addr.province.code, + cityCode: addr.city.code, + areaCode: addr.area.code, + provName: addr.province.name, + cityName: addr.city.name, + areaName: addr.area.name, + outChanNo: data.outChanNo, + }; + }); + }, + + freeze() { + this.dialogShow = !this.dialogShow; + this.Msg = `请问是否确认${this.Status ? "冻结" : "启用"}该门店?`; + }, + + //冻结/启用 门店 + onConfirm() { + if (this.Btn2) { + return; + } + this.Btn2 = true; + this.$api + .channSwitchStatus({ + orgId: this.$route.query.storeId, + orgType: 4, + statusType: this.Status ? 0 : 1, + }) + .then((res) => { + this.Btn2 = false; + this.$notify_success(`${this.Status ? "冻结" : "启用"}门店成功`); + this.Status = this.Status ? 0 : 1; + this.menText = this.Status ? "冻结门店" : "启用门店"; + }); + }, + + // 保存门店 + Save() { + if (this.Btn) { + return; + } + this.Btn = true; + let list = { + addr: { + province: { + code: this.form.provCode, + name: this.form.provName, + }, + city: { + code: this.form.cityCode, + name: this.form.cityName, + }, + area: { + code: this.form.areaCode, + name: this.form.areaName, + }, + dtlAddr: this.form.dtlAddr, }, + storeId: this.$route.query.storeId, + }; - rule:[ - {key:"dtlAddr",message:"请输入详细地址",type:"isEmpty"}, - ] + if ( + this.$validator(list.addr, this.rule).check((item) => { + this.$notify(item.message); + }) + ) { + this.$api.storeEdit(list).then((res) => { + this.Btn = false; + this.$notify_success("保存成功!"); + }); } }, - computed:{ - ...mapState(['areaList']) + + //关闭地区弹窗 + closeAreaModal() { + this.isShowArea = false; + this.$refs.Area.reset(); }, - created(){ - this.init(); + + //保存 地区选择 + setAreaValue(arr) { + this.form.areaText = arr[0].name + "-" + arr[1].name + "-" + arr[2].name; + this.form.provCode = arr[0].code; + this.form.cityCode = arr[1].code; + this.form.areaCode = arr[2].code; + this.isShowArea = false; + this.$refs.Area.reset(); }, - methods:{ - init(){ - this.$api.storeDtl({storeId: this.$route.query.storeId}).then((res) => { - let data = res.body, - addr = data.addr; - this.Status = data.freezeStatus; - data.freezeStatus ? this.menText = '冻结门店':this.menText = '启用门店'; - this.form = { - areaText:addr.province.name + '-' + addr.city.name + '-' + addr.area.name, //地区文字展示 - storeName:data.storeName, //门店名称 - dtlAddr:addr.dtlAddr, //详细地址 - priName:data.priName, //负责人姓名 - priEmail:data.priEmail, //联系邮箱 - priMblNo:data.priMblNo, //负责人手机 - priIdNo:data.priIdNo, //负责人身份证号 - provCode: addr.province.code, - cityCode: addr.city.code, - areaCode: addr.area.code, - provName:addr.province.name, - cityName:addr.city.name, - areaName:addr.area.name, - outChanNo:data.outChanNo - } - }) - }, - - - freeze(){ - this.dialogShow = !this.dialogShow; - this.Msg = `请问是否确认${this.Status ? '冻结' : '启用'}该门店?`; - }, - - - //冻结/启用 门店 - onConfirm() { - if(this.Btn2){return} - this.Btn2 = true; - this.$api.channSwitchStatus({ - orgId: this.$route.query.storeId, - orgType: 4, - statusType: this.Status ? 0 : 1 - }) - .then((res) => { - this.Btn2 = false; - this.$notify_success(`${ this.Status ? '冻结' : '启用'}门店成功`) - this.Status = this.Status ? 0 : 1; - this.menText = this.Status ? '冻结门店' :'启用门店'; - }); - }, - - - // 保存门店 - Save(){ - if(this.Btn){return} - this.Btn = true; - let list = { - addr:{ - province:{ - code:this.form.provCode, - name:this.form.provName - }, - city:{ - code:this.form.cityCode, - name:this.form.cityName - }, - area:{ - code:this.form.areaCode, - name:this.form.areaName - }, - dtlAddr:this.form.dtlAddr - }, - storeId:this.$route.query.storeId - }; - - if(this.$validator(list.addr,this.rule).check(item=>{ - this.$notify(item.message); - })){ - this.$api.storeEdit(list).then((res) => { - this.Btn = false; - this.$notify_success('保存成功!'); - }); - } - }, - - - - //关闭地区弹窗 - closeAreaModal(){ - this.isShowArea = false; - this.$refs.Area.reset() - }, - - //保存 地区选择 - setAreaValue(arr){ - this.form.areaText = arr[0].name + '-' +arr[1].name +'-'+ arr[2].name; - this.form.provCode= arr[0].code; - this.form.cityCode= arr[1].code; - this.form.areaCode= arr[2].code; - this.isShowArea = false; - this.$refs.Area.reset() - }, - - - - } - } + orderSearch() { + this.$router.push({ path: "/order/wxScore", query: { storeId: this.$route.query.storeId } }); + }, + }, +}; </script> <style scoped lang="less"> -.stores-detail{ +.stores-detail { background-color: @c-bg-f5; padding-top: 44px; @@ -204,33 +191,25 @@ margin: 10px 8px 0; } - - - - - - .footer{ + .footer { margin-top: 60px; padding-bottom: 30px; - .btn{ + .btn { width: 170px; height: 44px; border: none; font-size: @font-16; - &.left{ + &.left { background-color: @c-bg-eee; color: @c-text-666; - border-radius:22px 0px 0px 22px; + border-radius: 22px 0px 0px 22px; } - &.right{ + &.right { background-color: @c-bg-default; color: @c-text-fff; - border-radius:0px 22px 22px 0px; + border-radius: 0px 22px 22px 0px; } } } - - - } </style> diff --git a/src/views/order/wxScore.vue b/src/views/order/wxScore.vue index 5cf781a..37fd618 100644 --- a/src/views/order/wxScore.vue +++ b/src/views/order/wxScore.vue @@ -6,202 +6,199 @@ * @Description: 花呗订单 --> <template> - <div class="order-lthyj"> - <v-navbar title="微信分订单列表" fixed > - <template v-slot:right > - <div class="flex-center-g" @click="isShowFilter = true;"> - <span>筛选</span> - <svg class="icon" aria-hidden="true" style="width:18px;height:18px;"> - <use xlink:href="#iconshaixuan"></use> - </svg> - </div> - </template> - </v-navbar> - <!-- 订单列表 --> - <div class="order-list"> - <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init" > - <v-wxScore-order-item :userName="item.userName || '无'" :time='+item.creTime' :list='item.list' :contName="item.contName" - :term="item.term" v-for="(item,k) in list" :key="k" @click="go(item.id)"> - </v-wxScore-order-item> - </van-list> + <div class="order-lthyj"> + <v-navbar title="微信分订单列表" fixed> + <template v-slot:right> + <div class="flex-center-g" @click="isShowFilter = true"> + <span>筛选</span> + <svg class="icon" aria-hidden="true" style="width:18px;height:18px;"> + <use xlink:href="#iconshaixuan"></use> + </svg> </div> - <v-button-circle icon='icondaochu' title='导出' @click="exportFile"></v-button-circle> - <v-filter v-model="isShowFilter" :hasTime="false" :hasMoney="false" :hasSearch="true" :hasWxScore="true" @search="(v)=>search(v,true)"></v-filter> - <van-popup v-model="exporShow"> - <div class="popup-content"> - <div class="icon-box flex-center-g" > - <div class="child flex-center-g" :style="{background:$store.state.backColor, opacity: 0.8}"> - <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()"> - <use xlink:href="#iconyoujian"></use> - </svg> - </div> - </div> - <p class="text"> - <span class="top">已将信息发送至邮箱,请注意查收</span> - <span v-text="userinfo.email || ''">1244667@163.com</span> - </p> - <van-button class="btn-submit" @click="exporShow=false;" :style="{color:$store.state.backColor}">确定</van-button> - </div> - </van-popup> + </template> + </v-navbar> + <!-- 订单列表 --> + <div class="order-list"> + <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="init"> + <v-wxScore-order-item :userName="item.userName || '无'" :time="+item.creTime" :list="item.list" :contName="item.contName" :term="item.term" v-for="(item, k) in list" :key="k" @click="go(item.id)"> </v-wxScore-order-item> + </van-list> </div> + <v-button-circle icon="icondaochu" title="导出" @click="exportFile"></v-button-circle> + <v-filter v-model="isShowFilter" :hasTime="false" :hasMoney="false" :hasSearch="true" :hasWxScore="true" @search="(v) => search(v, true)"></v-filter> + <van-popup v-model="exporShow"> + <div class="popup-content"> + <div class="icon-box flex-center-g"> + <div class="child flex-center-g" :style="{ background: $store.state.backColor, opacity: 0.8 }"> + <svg class="icon" aria-hidden="true" style="width:33px;height:27px;fill:#fff;" @click="$router.back()"> + <use xlink:href="#iconyoujian"></use> + </svg> + </div> + </div> + <p class="text"> + <span class="top">已将信息发送至邮箱,请注意查收</span> + <span v-text="userinfo.email || ''">1244667@163.com</span> + </p> + <van-button class="btn-submit" @click="exporShow = false" :style="{ color: $store.state.backColor }">确定</van-button> + </div> + </van-popup> + </div> </template> <script> - import { - mapState, - mapGetters - } from 'vuex'; - import { - getParams - } from '@/utils/index'; - export default { - data() { - return { - exporShow:false, - loading:false, - finished:false, - isShow: false, - isShowFilter:false, - list: [], - orderData: [], - belongArr: [], - periodsArr: [], - statusArr: [], - filter: {} - } +import { mapState, mapGetters } from "vuex"; +import { getParams } from "@/utils/index"; +export default { + data() { + return { + exporShow: false, + loading: false, + finished: false, + isShow: false, + isShowFilter: false, + list: [], + orderData: [], + belongArr: [], + periodsArr: [], + statusArr: [], + filter: {}, + }; + }, + created() { + console.log(this.$route.query); + }, + computed: { + ...mapState(["userinfo"]), + ...mapGetters(["orgType"]), + }, + methods: { + search(v, isClear) { + this.filter.id = ""; + this.finished = false; + this.init(v, isClear); + }, + go(orderId) { + this.$router.push({ + path: "/product/wxScore-detail", + query: { + orderId: orderId, }, - created(){ - console.log(this.$route.query) - }, - computed: { - ...mapState(['userinfo']), - ...mapGetters(['orgType']), - }, - methods: { - search(v,isClear){ - this.filter.id =""; - this.finished = false; - this.init(v,isClear) - }, - go(orderId) { - this.$router.push({ - path:'/product/wxScore-detail', - query:{ - orderId:orderId - } - }) - }, - //订单导出 - exportFile() { - if (!this.list.length) { - this.$notify('暂无数据导出') - return; - } - this.$api.wxScoreExport(this.filter).then((res) => { - this.exporShow = true; - }).catch((err) => { - - }); - }, - // 获取订单列表 - init(params = this.filter,isClear) { - this.loading = true; - params.merId = this.$route.query.id; - this.$api.wxScoreList(params).then(res => { - this.filter = {...params}; - if(isClear){ - this.list = []; - } - let list = res.body || [], - len = list.length; - if (len) { - this.filter.id = list[list.length - 1].id; - list.forEach(item => { - let color = 'success'; - this.list.push({ - ...item, - list: [{ - value: item.guaranteedAmt, - label: '担保金额', - }, - { - value: item.mblNo, - label: '用户手机号', - }, - { - value: item.status, - label: '订单状态', - }, - ] - }) - }) - } - if (len < 10) { - this.finished = true; - } - this.loading = false; - this.isShow = false; - }).catch((err) => { - this.finished = true; - this.loading = false; - }); - }, - }, - } + }); + }, + //订单导出 + exportFile() { + if (!this.list.length) { + this.$notify("暂无数据导出"); + return; + } + this.$api + .wxScoreExport(this.filter) + .then((res) => { + this.exporShow = true; + }) + .catch((err) => {}); + }, + // 获取订单列表 + init(params = this.filter, isClear) { + this.loading = true; + params.storeId = this.$route.query.id; + // params.storeId = this.$route.query.storeId ? this.$route.query.storeId : ""; + this.$api + .wxScoreList(params) + .then((res) => { + this.filter = { ...params }; + if (isClear) { + this.list = []; + } + let list = res.body || [], + len = list.length; + if (len) { + this.filter.id = list[list.length - 1].id; + list.forEach((item) => { + let color = "success"; + this.list.push({ + ...item, + list: [ + { + value: item.guaranteedAmt, + label: "担保金额", + }, + { + value: item.mblNo, + label: "用户手机号", + }, + { + value: item.status, + label: "订单状态", + }, + ], + }); + }); + } + if (len < 10) { + this.finished = true; + } + this.loading = false; + this.isShow = false; + }) + .catch((err) => { + this.finished = true; + this.loading = false; + }); + }, + }, +}; </script> <style lang="less" scoped> +.order-lthyj { + height: 100%; + background-color: @c-bg-f5; +} +.order-list { + margin-top: 60px; + padding: 0 8px 30px; + background-color: @c-bg-f5; + .info { + margin-bottom: 20px; + } +} +.popup-content { + height: 150px; + width: 280px; + border-radius: 3px; + .icon-box { + z-index: 99999; + height: 64px; + width: 64px; + position: absolute; + left: 50%; + background: rgba(66, 61, 93, 0.1); + border-radius: 50%; + transform: translate(-50%, -50%); - .order-lthyj { - height: 100%; - background-color: @c-bg-f5; + .child { + height: 55px; + width: 55px; + background: rgba(66, 61, 93, 0.8); + border-radius: 50%; } - .order-list { - margin-top: 60px; - padding: 0 8px 30px; - background-color: @c-bg-f5; - .info { - margin-bottom: 20px; - } + } + .text { + width: 210px; + text-align: center; + margin: 0 auto; + padding-top: 50px; + line-height: 18px; + .top { + color: @c-text-666; } - .popup-content{ - height: 150px; - width: 280px; - border-radius: 3px; - .icon-box{ - z-index: 99999; - height: 64px; - width: 64px; - position: absolute; - left: 50%; - background:rgba(66,61,93,0.1); - border-radius: 50%; - transform: translate(-50%,-50%); - - .child{ - height: 55px; - width: 55px; - background:rgba(66,61,93,0.8); - border-radius: 50%; - - } - } - .text{ - width: 210px; - text-align: center; - margin: 0 auto; - padding-top: 50px; - line-height: 18px; - .top{ - color: @c-text-666; - } - } - .btn-submit{ - .lh(44px); - position: absolute; - width: 100%; - bottom: 0; - color: @c-text-default; - } - } + } + .btn-submit { + .lh(44px); + position: absolute; + width: 100%; + bottom: 0; + color: @c-text-default; + } +} </style> -- Gitblit v1.8.0