From b07d5f16634fc4a695fa8e6f6b18c33806f2b05a Mon Sep 17 00:00:00 2001 From: xuxy <1059738716@qq.com> Date: 星期五, 28 六月 2024 16:28:32 +0800 Subject: [PATCH] update 合伙人的功能 --- pages/home/home.vue | 2 static/images/supplier/flower/flower-mange-icon-flower-in.png | 0 sub_pages/supplier/order-settlement/order-settlement.vue | 2 sub_pages/partner/order-manage/order-manage.vue | 55 - sub_pages/supplier/flower-manage/flower-manage.vue | 18 components/footer/main.scss | 30 pages/login/supplier-login.vue | 105 + static/imgs/home/home-icon-notice.png | 0 main.js | 4 static/images/supplier/user/user-icon-kkjl.png | 0 components/card-list-item/card-list-item.vue | 2 static/images/supplier/flower/flower-mange-icon-flower-delete.png | 0 static/images/partner/user/user-icon-ddgl.png | 0 sub_pages/supplier/supplier-info/supplier-info.vue | 51 pages.json | 44 sub_pages/supplier/order-sale/order-sale.vue | 2 static/imgs/footer/footer-home-1.png | 0 sub_pages/supplier/order-records/order-records.vue | 0 static/images/supplier/user/user-icon-zdjs.png | 0 sub_pages/supplier/supplier-reg/supplier-reg.vue | 84 + sub_pages/partner/markup-config/markup-config.vue | 22 static/imgs/footer/footer-home-0.png | 0 sub_pages/supplier/protocol.vue | 22 package-lock.json | 2 pages/home/supplier-home.vue | 295 +++++++ mixin/mixin.js | 2 App.vue | 4 store/index.js | 103 ++ pages/user/user.scss | 10 sub_pages/supplier/flower-manage/flower-add.vue | 108 ++ pages/user/supplier-user.vue | 35 static/imgs/footer/footer-self-0.png | 0 static/images/supplier/user/user-icon-spgl.png | 0 common/self.scss | 21 static/images/supplier/flower/flower-mange-icon-flower-unpass.png | 0 pages/home/home.scss | 89 + static/images/supplier/user/user-icon-shlp.png | 0 /dev/null | 232 ----- static/imgs/footer/footer-self-1.png | 0 uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue | 1041 +++++++++++++------------ components/footer/supplier-footer.vue | 18 manifest.json | 2 package.json | 2 static/images/supplier/flower/flower-mange-icon-add-flower.png | 0 static/images/supplier/flower/flower-mange-icon-flower-inpass.png | 0 pages/login/login.scss | 2 static/images/partner/user/user-icon-jjpz.png | 0 pages/notice/list.vue | 2 static/common/icon-setting.png | 0 49 files changed, 1,468 insertions(+), 943 deletions(-) diff --git a/App.vue b/App.vue index bd62744..9ad1faf 100644 --- a/App.vue +++ b/App.vue @@ -41,7 +41,7 @@ // console.log('init info',res,this.currentInfo) if (this.currentInfo && this.currentInfo.id && !this.currentInfo.openId) { uni.reLaunch({ - url: '/pages/home/farmer-home' + url: '/pages/home/supplier-home' }) } }, 200); @@ -56,7 +56,7 @@ // console.log('init info',res,this.currentInfo) if (this.currentInfo && this.currentInfo.id && !this.currentInfo.openId) { // uni.reLaunch({ - // url: '/pages/home/farmer-home' + // url: '/pages/home/supplier-home' // }) } }, 200); diff --git a/common/self.scss b/common/self.scss index 587608d..0b28d8e 100644 --- a/common/self.scss +++ b/common/self.scss @@ -672,10 +672,11 @@ .uni-noticebar{ border-radius: 10rpx; - height: 68rpx; + height: 82rpx; .self-uni-notice-bar-icon-left{ - width: 58rpx; - height: 52rpx; + width: 38rpx; + height: 38rpx; + margin-right: 16rpx; } .self-uni-notice-bar-icon{ width: 16rpx; @@ -886,6 +887,9 @@ line-height: 96rpx; } } +.text-left{ + text-align: left; +} .img100{ background-size: 100% 100%; } @@ -958,4 +962,15 @@ } uni-image>img{ opacity: 1 !important; +} +.component-radio{ + width: 26rpx; + height: 26rpx; + min-width: 26rpx; + min-height: 26rpx; + border-radius: 50%; + border: 2rpx solid #20613D; + &.cur{ + background-color:#20613D; + } } \ No newline at end of file diff --git a/components/card-list-item/card-list-item.vue b/components/card-list-item/card-list-item.vue index 817d74e..c04cf91 100644 --- a/components/card-list-item/card-list-item.vue +++ b/components/card-list-item/card-list-item.vue @@ -72,7 +72,7 @@ <view class="title">{{dto.title}}</view> <view class="flex location"> <!-- <uni-icons type="checkbox"></uni-icons> --> - <image class="icon-clock m-r-6 m-t-2" src="../../static/common/icon-clock.png"></image> + <!-- <image class="icon-clock m-r-6 m-t-2" src="../../static/common/icon-clock.png"></image> --> <view> {{dto.startTimeStr&&(dto.startTimeStr.substring(5,10)+'到')}}{{dto.endTimeStr&&dto.endTimeStr.substring(5,10) || ''}} </view> diff --git a/components/footer/main.scss b/components/footer/main.scss index cfb2b85..86527b8 100644 --- a/components/footer/main.scss +++ b/components/footer/main.scss @@ -21,6 +21,7 @@ flex: 1; border-radius: 50rpx; padding: 8rpx; + .item { font-family: PingFangSC-Regular, PingFang SC; @@ -69,10 +70,10 @@ // top: -10px; // } .footer-icon{ - width: 28rpx; - height: 29rpx; + width: 36rpx; + height: 36rpx; } -.footer.farmer-footer{ +.footer.supplier-footer{ left: 50%; transform: translateX(-50%); background-image: unset; @@ -93,18 +94,19 @@ padding-top: 12rpx; line-height: 50rpx; .footer-icon{ - margin-top: 12rpx; + margin-top: 8rpx; } } - &.cur { - // font-weight: 600; - // font-size: 28rpx; - // color: #000000; - // text-align: left; - // font-style: normal; - background: #E1F0E7; - border-radius: 50rpx; - color: var(--topicolor); - } + + } + .footer-item.cur { + // font-weight: 600; + // font-size: 28rpx; + // color: #000000; + // text-align: left; + // font-style: normal; + background: #E1F0E7; + border-radius: 50rpx; + color: var(--topicolor); } } \ No newline at end of file diff --git a/components/footer/farmer-footer.vue b/components/footer/supplier-footer.vue similarity index 77% rename from components/footer/farmer-footer.vue rename to components/footer/supplier-footer.vue index 090556b..ebae554 100644 --- a/components/footer/farmer-footer.vue +++ b/components/footer/supplier-footer.vue @@ -1,18 +1,18 @@ <template> - <view class="footer flex farmer-footer"> + <view class="footer flex supplier-footer"> <view v-for="(item,index) in tabBar" :key="index" class="footer-item" :class="[flg==index?'cur':'']"> <view class="item flex" @click="go(index,item)"> - <view v-if="index==0"> - <image src="../../static/imgs/footer/footer-home-1.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)" + <view v-if="index==0" class=" m-l-a m-r-6"> + <image src="../../static/imgs/footer/footer-home-1.png" class="footer-icon" :class="(''+index)" v-if="flg==0"></image> - <image src="../../static/imgs/footer/footer-home-0.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)" + <image src="../../static/imgs/footer/footer-home-0.png" class="footer-icon " :class="(''+index)" v-if="flg!=0"></image> </view> - <view v-if="index==1"> - <image src="../../static/imgs/footer/footer-self-1.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)" + <view v-if="index==1" class="m-l-a m-r-2"> + <image src="../../static/imgs/footer/footer-self-1.png" class="footer-icon" :class="(''+index)" v-if="flg==1"></image> - <image src="../../static/imgs/footer/footer-self-0.png" class="footer-icon m-t-4 m-l-a m-r-0" :class="(''+index)" + <image src="../../static/imgs/footer/footer-self-0.png" class="footer-icon" :class="(''+index)" v-if="flg!=1"></image> </view> <view class="m-l-0 m-r-a"> @@ -33,13 +33,13 @@ tabBar: [ { - "pagePath": "/pages/home/farmer-home", + "pagePath": "/pages/home/supplier-home", "iconPath": "/static/tabbar/home.png", "selectedIconPath": "/static/tabbar/home_s.png", "text": "工作台" }, { - "pagePath": "/pages/user/farmer-user", + "pagePath": "/pages/user/supplier-user", "iconPath": "/static/tabbar/my.png", "selectedIconPath": "/static/tabbar/my_s.png", "text": "我的" diff --git a/main.js b/main.js index faf878b..216615a 100644 --- a/main.js +++ b/main.js @@ -48,8 +48,8 @@ -import farmerfooter from '@/components/footer/farmer-footer' -Vue.component('farmer-footer', farmerfooter) +import supplierfooter from '@/components/footer/supplier-footer' +Vue.component('supplier-footer', supplierfooter) import nodata from '@/components/no-data' Vue.component('no-data', nodata) // import bfooter from '@/components/footer/bussincess-footer' diff --git a/manifest.json b/manifest.json index 529c0ee..fef255e 100644 --- a/manifest.json +++ b/manifest.json @@ -1,5 +1,5 @@ { - "name" : "hmy_farmer", + "name" : "hmy_supplier", "appid" : "__UNI__EF9B7A3", "description" : "", "versionName" : "1.0.0", diff --git a/mixin/mixin.js b/mixin/mixin.js index e3db599..5551356 100644 --- a/mixin/mixin.js +++ b/mixin/mixin.js @@ -13,7 +13,7 @@ return state.hasLogin || false }, selftype: state => { - return state.type || '' + return (state.currentInfo || {}).type || '' }, currentInfo: state => { return state.currentInfo || {} diff --git a/package-lock.json b/package-lock.json index 40c09c0..e103be4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "hmy_farmer", + "name": "hmy_supplier", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/package.json b/package.json index 9529ec7..e8508cc 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "BROWSER": "Chrome", "env": { "UNI_PLATFORM": "MP", - "SERVER_COMMON": "FARMER" + "SERVER_COMMON": "supplier" }, "define": { "H5-SERVERLOCAL": true diff --git a/pages.json b/pages.json index 37630ff..583ec8c 100644 --- a/pages.json +++ b/pages.json @@ -4,25 +4,25 @@ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" }, "pages": [{ - "path": "pages/login/farmer-login", + "path": "pages/login/supplier-login", "style": { "navigationBarTitleText": "登录", "enablePullDownRefresh": false, "navigationStyle": "custom" } }, { - "path": "pages/home/farmer-home", + "path": "pages/home/supplier-home", "style": { "navigationBarTitleText": "首页", - "enablePullDownRefresh": false, + "enablePullDownRefresh": true, "navigationStyle": "custom" } }, { - "path": "pages/user/farmer-user", + "path": "pages/user/supplier-user", "style": { "navigationBarTitleText": "我的", - "enablePullDownRefresh": false, + "enablePullDownRefresh": true, "navigationStyle": "custom" } }, @@ -58,9 +58,9 @@ ], "subPackages": [{ - "root": "sub_pages/farmer", + "root": "sub_pages/supplier", "pages": [{ - "path": "farmer-info/farmer-info", + "path": "supplier-info/supplier-info", "style": { "navigationBarTitleText": "信息维护", "enablePullDownRefresh": false @@ -103,15 +103,43 @@ } }, { - "path": "farmer-reg/farmer-reg", + "path": "supplier-reg/supplier-reg", "style": { "navigationBarTitleText": "申请入住", "navigationStyle": "custom" + } + }, + { + "path" : "protocol", + "style" : + { + "navigationBarTitleText" : "协议", + "enablePullDownRefresh" : false } } ] + },{ + "root": "sub_pages/partner", + "pages": [{ + "path" : "order-manage/order-manage", + "style" : + { + "navigationBarTitleText" : "订单管理", + "enablePullDownRefresh" : false + } + }, + { + "path" : "markup-config/markup-config", + "style" : + { + "navigationBarTitleText" : "加价配置", + "enablePullDownRefresh" : false + } + } + + ] }], "globalStyle": { "navigationBarTextStyle": "black", diff --git a/pages/home/farmer-home.vue b/pages/home/farmer-home.vue deleted file mode 100644 index dde7daf..0000000 --- a/pages/home/farmer-home.vue +++ /dev/null @@ -1,232 +0,0 @@ -<template> - <view class="main-container home farmer"> - <!-- <view> - 我的 - </view> --> - <!-- 背景图 --> - <view class="top-bg" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }"> - <view class="title" style="position: relative;"> - 首页 - - </view> - <view class="flex user-info" v-if="currentInfo&&(currentInfo.id)"> - <!-- 头像 --> - <image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png" - mode="aspectFit"></image> - <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> - - <view class="name" > - <view class="t1" >{{currentInfo.nickName || '-'}}</view> - <view class="t2">{{currentInfo.tel || '暂无电话'}}</view> - </view> - </view> - - - </view> - <view class="item-container"> - <view class="title">我的收益</view> - <view class="line"></view> - <view class="flex tj-container"> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 上月成交 - </view> - </view> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 今日成交 - </view> - </view> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 近30天成交 - </view> - </view> - </view> - <view class="flex tj-container"> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 今日订单数 - </view> - </view> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 昨日订单数 - </view> - </view> - <view class="tj-each"> - <view class="num"> - 0扎 - </view> - <view class="name"> - 本月订单数 - </view> - </view> - </view> - </view> - <view class="item-container flex m-t-20" style="padding: 34rpx 44rpx;"> - <view class="rate-view flex1" style="max-width: 140rpx;"> - <view class="title">售后率</view> - <view class="title" style="color: red;">0.02%</view> - </view> - <view class="tj-panel green flex1"> - <view class="name">今日待配送</view> - <view class="title">12扎</view> - </view> - <view class="tj-panel pink flex1"> - <view class="name pink">今日配送汇总</view> - <view class="title">12扎</view> - </view> - </view> - <view class="m-t-12" @click="getNoticeMore" > - <uni-notice-bar class="notice-bar" color="#333" background-color="#fff" show-get-more - show-icon :scrollable="scrollable" :text="currentNotice.title" :key="currentNotice.id" /> - <span v-if="!currentNotice||!currentNotice.id"> </span> - </view> - <view class="item-container"> - <view class="title">常用功能</view> - <view class="flex order-icons m-t-12"> - <view class="nav row margin-tb" @click="goto('/sub_pages/farmer/order-settlement/order-settlement',true)"> - <view class="img-c"> - <image class="icon margin-bottom order-icon zdjs" - src="/static/images/farmer/user/user-icon-kkjl.png" mode="scaleToFill" /> - </view> - <view class="order-desc tg">账单结算</view> - </view> - <view class="nav row margin-tb" @click="goto('/sub_pages/farmer/flower-manage/flower-manage',true)"> - <view class="img-c"> - <image class="icon margin-bottom order-icon spgl" - src="/static/images/farmer/user/user-icon-spgl.png" mode="scaleToFill" /> - </view> - <view class="order-desc cqw">商品管理</view> - </view> - <view class="nav row margin-tb" @click="goto('/sub_pages/farmer/order-sale/order-sale',true)"> - <view class="img-c"> - <image class="icon margin-bottom order-icon shlp" - src="/static/images/farmer/user/user-icon-shlp.png" mode="scaleToFill" /> - </view> - <view class="order-desc syst">售后理赔</view> - </view> - <view class="nav row margin-tb" @click="goto('/sub_pages/farmer/order-records/order-records',true)"> - <view class="img-c"> - <image class="icon margin-bottom order-icon kkjl" - src="/static/images/farmer/user/user-icon-kkjl.png" mode="scaleToFill" /> - </view> - <view class="order-desc wbsp">扣款记录</view> - </view> - </view> - </view> - - <view style="padding-bottom:200rpx"> - </view> - <farmer-footer flg="0"></farmer-footer> - - - </view> -</template> - -<script> - export default { - data() { - return { - CustomBar: uni.getStorageSync('CustomBar'), - StatusBar: uni.getStorageSync('StatusBar'), - tcode: '', - inviterName: '', - // StatusBar:0, - - //公告的 - noticeList: [], - currentNoticeIndex: 0, - currentNotice: { - - }, - scrollable: false, - - }; - }, - - onLoad(options) { - const url = options.q ? decodeURIComponent(options.q) : ''; - const urlcode = options.url && decodeURIComponent(options.url) || '' - }, - created() { - //公告 - this.$http.request('get', '/api/announcement/page', { - params: { - size: 5, - status: 'A' - } - }).then(res => { - if (res.code == 0) { - this.noticeList = (res.data && res.data.records || []) - console.log('this.noticeList', this.noticeList) - if (this.noticeList.length > 0) { - this.currentNotice = this.noticeList[0] - if (this.currentNotice.title && this.currentNotice.title.length >= 30) { - this.scrollable = true - } else { - this.scrollable = false - } - let that = this - if (this.noticeList.length >= 1) { - setInterval(() => { - console.log('interval,1') - that.currentNoticeIndex += 1 - that.currentNoticeIndex %= that.noticeList.length - that.currentNotice = that.noticeList[that.currentNoticeIndex] - that.scrollable = false - that.$nextTick(() => { - if (that.currentNotice.title && that.currentNotice.title - .length >= 30) { - that.scrollable = true - } else { - that.scrollable = false - } - }) - - }, 8000) - } - - } - } - }) - - }, - methods: { - getNoticeMore() { - uni.navigateTo({ - url: '/pages/notice/list?id=' + this.currentNotice.id - }) - }, - - - - - } - } -</script> - -<style lang="scss" scoped> - @import "../user/user.scss"; - - @import "./home.scss"; -</style> - -<style lang="scss" scoped> -</style> \ No newline at end of file diff --git a/pages/home/home.scss b/pages/home/home.scss index 3c0ab36..08d79de 100644 --- a/pages/home/home.scss +++ b/pages/home/home.scss @@ -1,7 +1,7 @@ .main-container{ - // background-image: url('../../static/images/farmer/home/bg.png'); - background: #E1F0E7; + // background-image: url('../../static/images/supplier/home/bg.png'); + background-color: #E1F0E7; // https://hmy-flower.oss-cn-shanghai.aliyuncs.com/2a/2aa62e6bd1f74456b005d3f57daa54adbg.png .top-bg{ @@ -86,13 +86,14 @@ -.main-container.farmer.home{ - // background-image: url('../../static/images/farmer/home/bg.png'); +.main-container.home{ + background-image: url('https://hmy-flower.oss-cn-shanghai.aliyuncs.com/2a/2aa62e6bd1f74456b005d3f57daa54adbg.png'); min-height: 99vh; padding: 30rpx; .item-container{ padding: 22rpx 28rpx; background-color: #fff; + border-radius: 8rpx; .title{ font-weight: 600; font-size: 32rpx; @@ -175,16 +176,59 @@ } .title{ margin-top: 12rpx; - + font-weight: 400; } } .tj-panel.pink{ background: #E7F6EB; + margin-left: auto; + + .title{ + color: #936E32; + } } .tj-panel.green{ background: #FDF4E5; - margin-left: auto; + + .title{ + color: #20613D; + } + + } + } + + .item-container.partner{ + padding-bottom: 0rpx; + .tj-container{ + .tj-each{ + // width: fit-content; + flex: 1; + .num.total{ + text-align: left; + } + .num.status{ + font-size: 24rpx; + text-align: right; + // margin-left: auto; + // margin-right: 0rpx; + // display: inline-block; + } + } + .tj-each:first-child{ + margin-left: 0rpx; + margin-right: auto; + flex: unset; + } + .tj-each:last-child{ + margin-left: 0rpx; + margin-right: auto; + flex: unset; + } + } + .line{ + margin-top: 0rpx; + margin-bottom: 0rpx; } } .order-icon{ @@ -203,11 +247,18 @@ // margin-top: 24rpx; } .order-desc{ - font-size: 28rpx; + font-size: 24rpx; color: #000000; text-align: center; margin-top: 12rpx; } + .order-desc.syst{ + margin-top: 0rpx; + } + .order-desc.wbsp{ + margin-top: 0rpx; + } + .img-c{ // min-height: 68rpx; // width: fit-content; @@ -219,10 +270,20 @@ // margin-left: auto; // margin-right: auto; } + .order-icon.ddgl{ + margin-top: 8rpx; + width: 42rpx; + height: 52rpx; + } + .order-icon.jjpz{ + margin-top: 8rpx; + width: 42rpx; + height: 52rpx; + } .order-icon.zdjs{ - // margin-top: -8rpx; - width: 54rpx; - height: 58rpx; + margin-top: 8rpx; + width: 42rpx; + height: 52rpx; } .order-icon.spgl{ margin-top: 6rpx; @@ -231,18 +292,20 @@ } .order-icon.shlp{ // margin-top: 16rpx; - margin-top: -1rpx; + margin-top: 10rpx; width: 54rpx; height: 58rpx; + } .order-icon.kkjl{ // margin-top: 12rpx; // margin-top: 0rpx; - margin-top: -3rpx; + // margin-top: -3rpx; + margin-top: 10rpx; width: 58rpx; height: 58rpx; } } -} \ No newline at end of file +} diff --git a/pages/home/home.vue b/pages/home/home.vue index 4273971..575ad37 100644 --- a/pages/home/home.vue +++ b/pages/home/home.vue @@ -110,7 +110,7 @@ </view> <view style="padding-bottom:200rpx"> </view> - <farmer-footer flg="0"></farmer-footer> + <supplier-footer flg="0"></supplier-footer> </view> </template> diff --git a/pages/home/supplier-home.vue b/pages/home/supplier-home.vue new file mode 100644 index 0000000..cf0ae89 --- /dev/null +++ b/pages/home/supplier-home.vue @@ -0,0 +1,295 @@ +<template> + <view class="main-container home relative"> + <!-- <image class="component-bg" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/21/21c95c14e9504be69edff7785e3b44a9bg.png" mode="scaleToFill" /> + --> + <!-- <view> + 我的 + </view> --> + <!-- 背景图 --> + <view class="top-bg" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }"> + <view class="title" style="position: relative;"> + 首页 + + </view> + <view class="flex user-info" v-if="currentInfo&&(currentInfo.id)"> + <!-- 头像 --> + <image class="user-icon" v-if="!currentInfo.picture" src="../../static/imgs/home/home-shop-top-icon.png" + mode="aspectFit"></image> + <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> + + <view class="name"> + <view class="t1">{{currentInfo.nickName || currentInfo.loginName || '-'}}<span + v-if="currentInfo.supplierDTO&¤tInfo.supplierDTO.status!=='P'"> + ({{currentInfo.supplierDTO?currentInfo.supplierDTO.statusStr:''}})</span> + </view> + <view class="t2">{{currentInfo.tel || '暂无电话'}}</view> + </view> + </view> + + + </view> + <view class="item-container" :class="[selftype?selftype:'']"> + <view class="title">我的收益</view> + <view class="flex tj-container" v-if="selftype==='partner'">. + <view class="tj-each"> + <view class="num total"> + ¥999.80 + </view> + </view> + <view class="tj-each" style="flex: 1;"> + <view class="num status"> + 待结算 + </view> + </view> + </view> + <view class="line"></view> + + <view class="flex tj-container" v-if="selftype==='supplier'"> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 上月成交 + </view> + </view> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 今日成交 + </view> + </view> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 近30天成交 + </view> + </view> + </view> + <view class="flex tj-container"> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 今日订单数 + </view> + </view> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 昨日订单数 + </view> + </view> + <view class="tj-each"> + <view class="num"> + 0扎 + </view> + <view class="name"> + 本月订单数 + </view> + </view> + </view> + </view> + <view class="item-container flex m-t-12" style="padding: 34rpx 44rpx;"> + <view class="rate-view flex1" style="max-width: 140rpx;"> + <view class="title">售后率</view> + <view class="title" style="color: red;">0.02%</view> + </view> + <view class="tj-panel pink flex1"> + <view class="name">今日待配送</view> + <view class="title">12扎</view> + </view> + <view class="tj-panel green flex1"> + <view class="name green">今日配送汇总</view> + <view class="title">12扎</view> + </view> + </view> + <view class="m-t-12" @click="getNoticeMore"> + <uni-notice-bar class="notice-bar" color="#333" background-color="#fff" show-get-more show-icon + :scrollable="scrollable" :text="currentNotice.title" :key="currentNotice.id" /> + <span v-if="!currentNotice||!currentNotice.id"> </span> + </view> + <view class="item-container"> + <view class="title">常用功能</view> + <view class="flex order-icons m-t-12"> + <view class="nav row margin-tb" v-if="selftype==='partner'" + @click="goto('/sub_pages/partner/order-manage/order-manage',true)"> + <view class="img-c"> + <image class="icon margin-bottom order-icon ddgl" + src="/static/images/partner/user/user-icon-ddgl.png" mode="scaleToFill" /> + </view> + <view class="order-desc tg">订单管理</view> + </view> + + <view class="nav row margin-tb" + @click="goto('/sub_pages/supplier/order-settlement/order-settlement',true)"> + <view class="img-c"> + <image class="icon margin-bottom order-icon zdjs" + src="/static/images/supplier/user/user-icon-zdjs.png" mode="scaleToFill" /> + </view> + <view class="order-desc tg">账单结算</view> + </view> + <view class="nav row margin-tb" @click="toFlowManage" v-if="selftype==='supplier'"> + <view class="img-c"> + <image class="icon margin-bottom order-icon spgl" + src="/static/images/supplier/user/user-icon-spgl.png" mode="scaleToFill" /> + </view> + <view class="order-desc cqw">商品管理</view> + </view> + <view class="nav row margin-tb" v-if="selftype==='partner'" + @click="goto('/sub_pages/partner/markup-config/markup-config',true)"> + <view class="img-c"> + <image class="icon margin-bottom order-icon jjpz" + src="/static/images/partner/user/user-icon-jjpz.png" mode="scaleToFill" /> + </view> + <view class="order-desc tg">加价配置</view> + </view> + <view class="nav row margin-tb" @click="goto('/sub_pages/supplier/order-sale/order-sale',true)"> + <view class="img-c"> + <image class="icon margin-bottom order-icon shlp" + src="/static/images/supplier/user/user-icon-shlp.png" mode="scaleToFill" /> + </view> + <view class="order-desc syst">售后理赔</view> + </view> + <view class="nav row margin-tb" @click="goto('/sub_pages/supplier/order-records/order-records',true)"> + <view class="img-c"> + <image class="icon margin-bottom order-icon kkjl" + src="/static/images/supplier/user/user-icon-kkjl.png" mode="scaleToFill" /> + </view> + <view class="order-desc wbsp">扣款记录</view> + </view> + </view> + </view> + + <view style="padding-bottom:200rpx"> + </view> + <supplier-footer flg="0"></supplier-footer> + + + </view> +</template> + +<script> + export default { + data() { + return { + CustomBar: uni.getStorageSync('CustomBar'), + StatusBar: uni.getStorageSync('StatusBar'), + tcode: '', + inviterName: '', + // StatusBar:0, + + //公告的 + noticeList: [], + currentNoticeIndex: 0, + currentNotice: { + + }, + scrollable: false, + + }; + }, + async onPullDownRefresh() { + await this.$store.dispatch('getCurrentInfo') + uni.stopPullDownRefresh() + }, + onLoad(options) { + const url = options.q ? decodeURIComponent(options.q) : ''; + const urlcode = options.url && decodeURIComponent(options.url) || '' + }, + created() { + //公告 + this.$http.request('get', '/api/announcement/page', { + params: { + size: 5, + status: 'A' + } + }).then(res => { + if (res.code == 0) { + this.noticeList = (res.data && res.data.records || []) + console.log('this.noticeList', this.noticeList) + if (this.noticeList.length > 0) { + this.currentNotice = this.noticeList[0] + if (this.currentNotice.title && this.currentNotice.title.length >= 30) { + this.scrollable = true + } else { + this.scrollable = false + } + let that = this + if (this.noticeList.length >= 1) { + setInterval(() => { + console.log('interval,1') + that.currentNoticeIndex += 1 + that.currentNoticeIndex %= that.noticeList.length + that.currentNotice = that.noticeList[that.currentNoticeIndex] + that.scrollable = false + that.$nextTick(() => { + if (that.currentNotice.title && that.currentNotice.title + .length >= 30) { + that.scrollable = true + } else { + that.scrollable = false + } + }) + + }, 8000) + } + + } + } + }) + + }, + methods: { + async toFlowManage() { + if (!this.currentInfo.supplierDTO) { + await this.$message.confirm('尚未入住店铺信息,是否前往入住?') + this.goto('/sub_pages/supplier/supplier-info/supplier-info', true) + return + } + if (this.currentInfo.supplierDTO) { + if (this.currentInfo.supplierDTO.status == 'P') { + + } else { + if (this.currentInfo.supplierDTO.status == 'R') { + await this.$message.confirm('店铺信息审核不通过,是否前往修改信息?') + this.goto('/sub_pages/supplier/supplier-info/supplier-info', true) + return + } else { + this.$message.showToast('审核中请耐心等待') + return + } + + } + } + this.goto('/sub_pages/supplier/flower-manage/flower-manage', true) + }, + getNoticeMore() { + uni.navigateTo({ + url: '/pages/notice/list?id=' + this.currentNotice.id + }) + }, + + + + + } + } +</script> + +<style lang="scss" scoped> + @import "../user/user.scss"; + + @import "./home.scss"; +</style> + +<style lang="scss" scoped> +</style> \ No newline at end of file diff --git a/pages/login/login.scss b/pages/login/login.scss index 472fe3e..b673239 100644 --- a/pages/login/login.scss +++ b/pages/login/login.scss @@ -1,6 +1,6 @@ .login-container{ min-height: 99vh; - // background-image: url('@/static/images/farmer/login/bg.png'); + // background-image: url('@/static/images/supplier/login/bg.png'); .nav-title{ font-weight: 400; diff --git a/pages/login/farmer-login.vue b/pages/login/supplier-login.vue similarity index 79% rename from pages/login/farmer-login.vue rename to pages/login/supplier-login.vue index 240cf10..1de3831 100644 --- a/pages/login/farmer-login.vue +++ b/pages/login/supplier-login.vue @@ -1,8 +1,10 @@ <template> <view class="main-container login-container img100 relative" style="margin-top: 0rpx;"> - <!-- background-image:url('@/static/images/farmer/login/bg.png') --> + <!-- background-image:url('@/static/images/supplier/login/bg.png') --> - <image class="component-bg" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" mode="scaleToFill" /> + <image class="component-bg" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" + mode="scaleToFill" /> <view class="t-login top-bg"> <view class="nav-title">登录</view> <view class="login"> @@ -18,12 +20,12 @@ <input type="text" :password="true" name="password" placeholder="请输入密码" v-model="password" /> </view> <view class="t-a input" v-if="loginType=='code'"> + + + <input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" /> <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()"> {{getCodeText}} </view> - - <input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" /> - </view> @@ -49,6 +51,17 @@ // import gzmzApi from '@/api/gzmzApi.js' // import myCache from '@/utils/myCache.js' export default { + props: { + // apitype: 'loginSupplier', + apitype: { + type:String, + default(){ + return 'loginSupplier' + + // return 'loginPartner' + } + }, + }, data() { return { openId: '-1', @@ -70,32 +83,44 @@ }; }, methods: { - getCode() { + async getCode() { uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 if (this.getCodeisWaiting) { return; } if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(this.phoneNumber))) { //校验手机号码是否有误 - uni.showToast({ - title: '请填写正确手机号码', - icon: "none" - }); + this.$message.showToast('请填写正确手机号码') return false; } this.getCodeText = "发送中..." //发送验证码 this.getCodeisWaiting = true; - this.getCodeBtnColor = "rgba(255,255,255,0.5)" //追加样式,修改颜色 + this.getCodeBtnColor = "#000" //追加样式,修改颜色 //示例用定时器模拟请求效果 //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式 - setTimeout(() => { + const { + code + } = await this.$http.request('post', '/api/sms/send/code', { + data: { + tel: this.phoneNumber, + userType: 'supplier' + } + }) + if (code == 0) { uni.showToast({ title: '验证码已发送', icon: "none" - }); //弹出提示框 - //示例默认1234,生产中请删除这一句。 - // this.code = '1234'; //发送验证码,进行填入 + }); this.setTimer(); //调用定时器方法 - }, 1000) + } + // setTimeout(() => { + // uni.showToast({ + // title: '验证码已发送', + // icon: "none" + // }); //弹出提示框 + // //示例默认1234,生产中请删除这一句。 + // // this.code = '1234'; //发送验证码,进行填入 + // this.setTimer(); //调用定时器方法 + // }, 1000) }, //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数 setTimer() { @@ -120,7 +145,7 @@ // url: '/pages/index/index' // }) uni.redirectTo({ - url: '/sub_pages/farmer/farmer-reg/farmer-reg' + url: '/sub_pages/supplier/supplier-reg/supplier-reg' }) }, @@ -132,19 +157,37 @@ title: '登陆中' }); var that = this; - if (!that.userName) { - uni.showToast({ - title: '请输入用户名', - icon: 'none' - }); - return; + if (this.loginType == 'pwd') { + if (!that.userName) { + uni.showToast({ + title: '请输入用户名', + icon: 'none' + }); + return; + } + if (!that.password) { + uni.showToast({ + title: '请输入密码', + icon: 'none' + }); + return; + } } - if (!that.password) { - uni.showToast({ - title: '请输入密码', - icon: 'none' - }); - return; + if (this.loginType == 'code') { + if (!that.tel) { + uni.showToast({ + title: '请输入手机号', + icon: 'none' + }); + return; + } + if (!that.smsCode) { + uni.showToast({ + title: '请输入手机验证码', + icon: 'none' + }); + return; + } } // if (this.pcfvalue == undefined) { // util.showMyToast('必须勾选《用户服务协议》及《隐私政策》'); @@ -153,12 +196,14 @@ let post = { username: this.userName, password: this.password, + tel: this.phoneNumber, + smsCode: this.smsCode // openId: '123456789' } // const { // code // } = await this.$http.request('get', '/api/login/admin') - const resp = await this.$store.dispatch('loginSupplier', post); + const resp = await this.$store.dispatch(this.apitype, post); // uni.hideLoading() if (resp.code == 0) { diff --git a/pages/notice/list.vue b/pages/notice/list.vue index 5b48e4a..2a12221 100644 --- a/pages/notice/list.vue +++ b/pages/notice/list.vue @@ -6,7 +6,7 @@ <view v-for="(item,index) in list" :key="index" class="m-b-24"> <view @click.stop="toDetail(item)" class="notice-item"> <view>{{item.title}}</view> - <view class="time">{{item.updatedDate}}</view> + <view class="time">{{item.publishDate}}</view> </view> </view> </view> diff --git a/pages/user/farmer-user.vue b/pages/user/supplier-user.vue similarity index 65% rename from pages/user/farmer-user.vue rename to pages/user/supplier-user.vue index e11343e..41ea330 100644 --- a/pages/user/farmer-user.vue +++ b/pages/user/supplier-user.vue @@ -5,7 +5,9 @@ </view> --> <!-- 背景图 --> <view class="top-bg img100 relative" :style="{'padding-top':(StatusBar)+'px','line-height':CustomBar+'rpx' }"> - <image class="component-bg" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/21/21c95c14e9504be69edff7785e3b44a9bg.png" mode="scaleToFill" /> + <image class="component-bg" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/21/21c95c14e9504be69edff7785e3b44a9bg.png" + mode="scaleToFill" /> <view class="title" style="position: relative;"> 我的 @@ -18,20 +20,25 @@ <image class="user-icon" v-if="currentInfo.picture" :src="currentInfo.picture" mode="aspectFit"></image> <view class="name"> - <view class="t1">{{currentInfo.nickName || '-'}}</view> + <view class="t1">{{currentInfo.nickName || currentInfo.loginName || '-'}}<span + v-if="currentInfo.supplierDTO&¤tInfo.supplierDTO.status!=='P'"> + ({{currentInfo.supplierDTO?currentInfo.supplierDTO.statusStr:''}})</span> + </view> <view class="t2">{{currentInfo.tel || '暂无电话'}}</view> </view> + <image class="icon-setting" src="../../static/common/icon-setting.png" mode="aspectFit"></image> </view> </view> <view class="user-utils m-20"> - <view class="user-util m-b-5 flex" @click="goto('/pages/user/user-info/user-info',true)"> + <view class="user-util m-t-12 flex" @click="goto('/pages/user/user-info/user-info',true)"> <view class="title">个人信息</view> <view class="right-icon"> <uni-icons type="right"></uni-icons> </view> </view> - <view class="user-util m-t-12 flex" @click="goto('/sub_pages/farmer/farmer-info/farmer-info',true)"> + <view class="user-util m-t-12 flex" v-if="selftype==='supplier'" + @click="goto('/sub_pages/supplier/supplier-info/supplier-info',true)"> <view class="title">店铺信息</view> <view class="right-icon"> <uni-icons type="right"></uni-icons> @@ -43,15 +50,23 @@ <uni-icons type="right"></uni-icons> </view> </view> - <view class="user-util m-t-12 " @click="callTel"> + <view class="user-util m-t-12 " @click="callTel" v-if="selftype==='supplier'"> <view class="title">我的客服</view> <view class="flex"> <image class="icon-clock m-r-6 m-t-2" src="../../static/common/icon-call.png"></image> <view class="name"> - 客服电话: <span class="topic-gray">{{tel}}</span> + 客服电话 : <span class="topic-gray">{{tel}}</span> </view> </view> </view> +<!-- <view class="user-util m-t-12 " @click="callTel" v-if="selftype==='partner'"> + <view class="name"> + 账号: <span class="topic-gray">{{tel}}</span> + </view> + <view class="name"> + 密码: <span class="topic-gray">{{tel}}</span> + </view> + </view> --> </view> @@ -61,7 +76,7 @@ <view style="padding-bottom:200rpx"> </view> - <farmer-footer flg="1"></farmer-footer> + <supplier-footer flg="1"></supplier-footer> </view> @@ -87,6 +102,10 @@ created() { }, + async onPullDownRefresh() { + await this.$store.dispatch('getCurrentInfo') + uni.stopPullDownRefresh() + }, methods: { async clearlogout() { @@ -94,7 +113,7 @@ this.$store.commit('updateLogin', false) uni.reLaunch({ - url: '/pages/login/farmer-login' + url: '/pages/login/supplier-login' }) }, async callTel() { diff --git a/pages/user/user.scss b/pages/user/user.scss index 09c27ce..691eefc 100644 --- a/pages/user/user.scss +++ b/pages/user/user.scss @@ -7,7 +7,7 @@ .top-bg{ padding: 32rpx; - // background-image: url('../../static/images/farmer/user/bg.png'); + // background-image: url('../../static/images/supplier/user/bg.png'); height: 438rpx; max-height: 438rpx; @@ -60,6 +60,7 @@ // background: #FFFFFF; border-radius: 16rpx; // line-height: 116rpx; + position: relative; .name{ font-weight: 600; font-size: 32rpx; @@ -74,6 +75,13 @@ margin-right: 30rpx; border-radius: 50%; } + .icon-setting{ + position: absolute; + right: 0rpx; + top: -30rpx; + height: 54rpx; + width: 54rpx; + } } .order-info{ diff --git a/static/common/icon-setting.png b/static/common/icon-setting.png new file mode 100644 index 0000000..5b380cb --- /dev/null +++ b/static/common/icon-setting.png Binary files differ diff --git a/static/images/partner/user/user-icon-ddgl.png b/static/images/partner/user/user-icon-ddgl.png new file mode 100644 index 0000000..d63ed5e --- /dev/null +++ b/static/images/partner/user/user-icon-ddgl.png Binary files differ diff --git a/static/images/partner/user/user-icon-jjpz.png b/static/images/partner/user/user-icon-jjpz.png new file mode 100644 index 0000000..b8e5594 --- /dev/null +++ b/static/images/partner/user/user-icon-jjpz.png Binary files differ diff --git a/static/images/farmer/flower/flower-mange-icon-add-flower.png b/static/images/supplier/flower/flower-mange-icon-add-flower.png similarity index 100% rename from static/images/farmer/flower/flower-mange-icon-add-flower.png rename to static/images/supplier/flower/flower-mange-icon-add-flower.png Binary files differ diff --git a/static/images/farmer/flower/flower-mange-icon-flower-delete.png b/static/images/supplier/flower/flower-mange-icon-flower-delete.png similarity index 100% rename from static/images/farmer/flower/flower-mange-icon-flower-delete.png rename to static/images/supplier/flower/flower-mange-icon-flower-delete.png Binary files differ diff --git a/static/images/farmer/flower/flower-mange-icon-flower-in.png b/static/images/supplier/flower/flower-mange-icon-flower-in.png similarity index 100% rename from static/images/farmer/flower/flower-mange-icon-flower-in.png rename to static/images/supplier/flower/flower-mange-icon-flower-in.png Binary files differ diff --git a/static/images/farmer/flower/flower-mange-icon-flower-inpass.png b/static/images/supplier/flower/flower-mange-icon-flower-inpass.png similarity index 100% rename from static/images/farmer/flower/flower-mange-icon-flower-inpass.png rename to static/images/supplier/flower/flower-mange-icon-flower-inpass.png Binary files differ diff --git a/static/images/farmer/flower/flower-mange-icon-flower-unpass.png b/static/images/supplier/flower/flower-mange-icon-flower-unpass.png similarity index 100% rename from static/images/farmer/flower/flower-mange-icon-flower-unpass.png rename to static/images/supplier/flower/flower-mange-icon-flower-unpass.png Binary files differ diff --git a/static/images/farmer/user/user-icon-kkjl.png b/static/images/supplier/user/user-icon-kkjl.png similarity index 100% rename from static/images/farmer/user/user-icon-kkjl.png rename to static/images/supplier/user/user-icon-kkjl.png Binary files differ diff --git a/static/images/farmer/user/user-icon-shlp.png b/static/images/supplier/user/user-icon-shlp.png similarity index 100% rename from static/images/farmer/user/user-icon-shlp.png rename to static/images/supplier/user/user-icon-shlp.png Binary files differ diff --git a/static/images/farmer/user/user-icon-spgl.png b/static/images/supplier/user/user-icon-spgl.png similarity index 100% rename from static/images/farmer/user/user-icon-spgl.png rename to static/images/supplier/user/user-icon-spgl.png Binary files differ diff --git a/static/images/farmer/user/user-icon-jszx.png b/static/images/supplier/user/user-icon-zdjs.png similarity index 100% rename from static/images/farmer/user/user-icon-jszx.png rename to static/images/supplier/user/user-icon-zdjs.png Binary files differ diff --git a/static/imgs/footer/footer-home-0.png b/static/imgs/footer/footer-home-0.png index f02309a..421aa64 100644 --- a/static/imgs/footer/footer-home-0.png +++ b/static/imgs/footer/footer-home-0.png Binary files differ diff --git a/static/imgs/footer/footer-home-1.png b/static/imgs/footer/footer-home-1.png index 50d536e..31fa490 100644 --- a/static/imgs/footer/footer-home-1.png +++ b/static/imgs/footer/footer-home-1.png Binary files differ diff --git a/static/imgs/footer/footer-self-0.png b/static/imgs/footer/footer-self-0.png index 31d7076..0676e21 100644 --- a/static/imgs/footer/footer-self-0.png +++ b/static/imgs/footer/footer-self-0.png Binary files differ diff --git a/static/imgs/footer/footer-self-1.png b/static/imgs/footer/footer-self-1.png index f1708a1..c1e14e1 100644 --- a/static/imgs/footer/footer-self-1.png +++ b/static/imgs/footer/footer-self-1.png Binary files differ diff --git a/static/imgs/home/home-icon-notice.png b/static/imgs/home/home-icon-notice.png index 3c57165..fcd906a 100644 --- a/static/imgs/home/home-icon-notice.png +++ b/static/imgs/home/home-icon-notice.png Binary files differ diff --git a/store/index.js b/store/index.js index acd54c7..e2d564a 100644 --- a/store/index.js +++ b/store/index.js @@ -231,7 +231,7 @@ state.isBind = true storage.setItem("token", resp.data.access_token || "") state.hasLogin = true - if(inviter){ + if (inviter) { storage.removeItem('inviter'); storage.removeItem('inviterTime'); storage.removeItem('inviterName'); @@ -245,18 +245,47 @@ } return resp }, - loginSupplier: async function({ + regSupplier: async function({ commit, dispatch, state }, data) { { - const resp = await http.request('post', '/api/login/supplier'+(data.phoneNumber?'/phone':''), { + const resp = await http.request('post', '/api/register/supplier', { data: { username: data.username, password: data.password, - tel:data.phoneNumber, - smsCode:data.smsCode || '' + tel: data.phoneNumber || data.tel, + smsCode: data.smsCode || '' + }, + params: { + clientType: data.clientType || 'app' + } + }) + console.log('resp', resp) + if (resp && resp.code == 0) { + + + } else { + + } + return resp + } + + }, + loginPartner: async function({ + commit, + dispatch, + state + }, data) { + { + const resp = await http.request('post', '/api/login/partner' + (data + .phoneNumber ? '/phone' : ''), { + data: { + username: data.username, + password: data.password, + tel: data.phoneNumber || data.tel, + smsCode: data.smsCode || '' }, params: { clientType: data.clientType || 'app' @@ -270,7 +299,7 @@ storage.setItem('token', resp.data.access_token) commit("updateLogin", true) await dispatch('getCurrentInfo') - + console.log('login,reLaunch') // #ifdef APP var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件 @@ -294,7 +323,67 @@ // url: '/views/app/app-home/app-home' // }) uni.reLaunch({ - url: '/pages/home/farmer-home' + url: '/pages/home/supplier-home' + }) + } else { + // this.$message.showToast('登录失败') + + } + return resp + } + + }, + loginSupplier: async function({ + commit, + dispatch, + state + }, data) { + { + const resp = await http.request('post', '/api/login/supplier' + (data + .phoneNumber ? '/phone' : ''), { + data: { + username: data.username, + password: data.password, + tel: data.phoneNumber || data.tel, + smsCode: data.smsCode || '' + }, + params: { + clientType: data.clientType || 'app' + } + }) + console.log('resp', resp) + if (resp && resp.code == 0) { + // await getCurrentInfo() + // // this.$message.showToast('登录成功') + // console.log(resp) + storage.setItem('token', resp.data.access_token) + commit("updateLogin", true) + await dispatch('getCurrentInfo') + + console.log('login,reLaunch') + // #ifdef APP + var KeepAliveModule = uni.requireNativePlugin("yh-nl") //保活组件 + + KeepAliveModule && KeepAliveModule.startLocation({ + intervalTime: 5000, //定位间隔时间 + gaodeApiKey: "0eef1axxxxxx7964", //高德地图Key,已停用,引入插件配置 + locationMode: 1, //定位模式 + purpose: 0, //定位场景 + ifUpload: true, //是否上报服务器 + uploadUrl: "http://bio51-api.fixbug.fun/api/current/employee/location", //上报接口 + params: "{'lat':'1','lng':'3'}", //其他参数 + headers: "{'authorization1':'Bearer xOHeJhg'}", + }, function(res) { + console.log("启用结果:", res); + let ret = KeepAliveModule.getCurrentLocation(); + console.log("启用结果2:", ret); + }); + // #endif + // uni.redirectTo({ + // url: '/views/app/app-home/app-home' + // }) + uni.reLaunch({ + url: '/pages/home/supplier-home' }) } else { // this.$message.showToast('登录失败') diff --git a/sub_pages/partner/markup-config/markup-config.vue b/sub_pages/partner/markup-config/markup-config.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/sub_pages/partner/markup-config/markup-config.vue @@ -0,0 +1,22 @@ +<template> + <view> + + </view> +</template> + +<script> + export default { + data() { + return { + + } + }, + methods: { + + } + } +</script> + +<style> + +</style> diff --git a/sub_pages/farmer/order-settlement/order-settlement.vue b/sub_pages/partner/order-manage/order-manage.vue similarity index 63% copy from sub_pages/farmer/order-settlement/order-settlement.vue copy to sub_pages/partner/order-manage/order-manage.vue index 3d1be6d..6209cc1 100644 --- a/sub_pages/farmer/order-settlement/order-settlement.vue +++ b/sub_pages/partner/order-manage/order-manage.vue @@ -1,8 +1,8 @@ <template> - <view class="list-container order-settlement farmer"> + <view class="list-container order-settlement supplier"> <view class="component-tab-container m-t-12"> - <view class="tab-item" :class="[tabIndex==0?'cur':'']" @click="changeIndex(0)">本月</view> - <view class="tab-item" :class="[tabIndex==1?'cur':'']" @click="changeIndex(1)">全部</view> + <view class="tab-item" :class="[tabIndex==0?'cur':'']" @click="changeIndex(0)">带配送</view> + <view class="tab-item" :class="[tabIndex==1?'cur':'']" @click="changeIndex(1)">已配送</view> </view> <view class="p15" style="min-height: calc(100vh - 160rpx);"> @@ -10,53 +10,12 @@ <view v-for="(item,index) in list" :key="index" class="m-b-24 order-settlement-list list-container"> <view class="order-settlement-item list-item"> <view class="title flex"> - <image class="icon-date m-r-6 m-t-2" src="@/static/common/icon-date.png"></image> - <view>{{item.title}}</view> + <view> + 订单:27799880327543 + </view> <view class="status m-l-a m-r-0">已结算</view> </view> - <view class="line"></view> - <view class="form"> - <view class="form-item"> - <view class="label">均价</view> - <view class="value">¥32.00</view> - </view> - <view class="form-item"> - <view class="label">买家</view> - <view class="value">1位</view> - </view> - <view class="form-item"> - <view class="label">数量</view> - <view class="value red">1扎</view> - </view> - <view class="form-item"> - <view class="label">商家赔付</view> - <view class="value red">1</view> - </view> - <view class="form-item"> - <view class="label">服务费</view> - <view class="value">¥32.00</view> - </view> - <view class="form-item"> - <view class="label">理赔</view> - <view class="value">¥32.00</view> - </view> - <view class="form-item"> - <view class="label">运费</view> - <view class="value">¥32.00</view> - </view> - </view> - - <view class="line"></view> - <view class="flex"> - <view class="flex1 tj"> - <view class="label">交易合计:</view> - <view class="value">¥32.00</view> - </view> - <view class="flex1 tj text-right"> - <view class="label">结算金额:</view> - <view class="value">¥32.00</view> - </view> - </view> + <view class="button-green-1">确认配送完成</view> </view> </view> </view> diff --git a/sub_pages/farmer/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue similarity index 81% rename from sub_pages/farmer/flower-manage/flower-add.vue rename to sub_pages/supplier/flower-manage/flower-add.vue index c520b9e..2bbf009 100644 --- a/sub_pages/farmer/flower-manage/flower-add.vue +++ b/sub_pages/supplier/flower-manage/flower-add.vue @@ -3,29 +3,38 @@ <view> <view class="form-item"> <view class="label required">商品分类</view> - <view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{ + <!-- <view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{ // show_select_category=true $refs.picker_category.showPicker() }"> <view>{{dto.categoryStr||dto.category || '请选择'}}</view> <u-icon class="m-l-a" name="arrow-right"></u-icon> + </view> --> + <view class="m-l-a m-r-0 flex " :class="[!dto['category']?'desc-gray':'']"> + <uni-data-picker @change="(e)=>{PickCategory(dto,e)}" placeholder="" @search="updateSearch" + :localdata="columns_categorys_picker"> + {{dto.categoryStr||dto.category || '请选择'}} + </uni-data-picker> + <u-icon class="m-l-a" name="arrow-right"></u-icon> </view> - </view> <view class="form-item before-line"> <view class="label required">商品名称</view> <view class="m-l-a m-r-0 flex"> - <input v-model="dto.name" placeholder="请输入商品名称" style="margin-top: 16px;text-align: right;"></input> + <input v-model="dto.name" placeholder="请选择分类" disabled + style="margin-top: 16px;text-align: right;"></input> </view> </view> <view class="form-item before-line"> <view class="label required">商品单位</view> <view class="m-l-a m-r-0 flex"> - <input v-model="dto.unit" placeholder="请输入商品单位" style="margin-top: 16px;text-align: right;"></input> + <input v-model="dto.unit" placeholder="请选择分类" disabled + style="margin-top: 16px;text-align: right;"></input> </view> </view> + <view class="form-item before-line"> <view class="label required">商品颜色</view> <!-- <view class="m-l-a m-r-0 flex " :class="[!dto.color?'desc-gray':'']" @click="()=>{ @@ -35,7 +44,7 @@ <u-icon class="m-l-a" name="arrow-right"></u-icon> </view> --> <view class="m-l-a m-r-0 flex"> - <input v-model="dto.color" placeholder="请输入商品颜色" + <input v-model="dto.color" placeholder="请选择分类" disabled style="margin-top: 16px;text-align: right;"></input> </view> </view> @@ -202,8 +211,8 @@ id: '', dto: { id: '', - name: '', category: '', + name: '', unit: '', color: '', cover: '', @@ -217,6 +226,9 @@ show_select_category: false, show_select_level: false, columns_categorys: [], + columns_categorys_picker: [], + columns_categorys_dict: {}, + columns_categorys_search: '', columns_levels: [], // columns_params: [], //弹窗选择具体的值 // cancel: { @@ -232,13 +244,16 @@ // ] } }, + async onLoad(options) { //tree this.$http.request('get', '/api/flower/category/tree', {}).then(res => { var data = res.data this.columns_categorys = data || [] - console.log('columns_categorys', this.columns_categorys) - + // console.log('columns_categorys', this.columns_categorys) + //递归mao + this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) + // console.log('columns_categorys_picker', this.columns_categorys_picker) // this.columns_categorys = [data || []] // this.columns_categorys[0].unshift({ // label: '全部', @@ -288,6 +303,79 @@ }, methods: { + async updateSearch(search) { + this.columns_categorys_search = search || '' + this.columns_categorys_picker = [] + this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) + console.log('change updateSearch', search, this.columns_categorys_picker) + }, + async PickCategory(item, e) { + console.log('PickCategory', item, e) + if (e.detail.value) { + if (this.dto.category) { + await this.$message.confirm('修改分类将清空商品参数,确定修改吗') + } { + var currentnode = this.columns_categorys_dict['@' + e.detail.value[e.detail.value.length - 1] + .value] + // console.log('currentnode',currentnode,this.columns_categorys_dict,'@'+e.detail.value[e.detail.value.length - 1].value) + this.dto.categoryStr = currentnode.name + this.dto.category = currentnode.id + this.dto.name = currentnode.name + this.dto.unit = currentnode.unit + this.dto.color = currentnode.color + //递归获取category的其他数据,用来做map? + this.$message.showLoading() + await this.refresh_category() + this.$message.hideLoading() + } + } + }, + mapCategoryTree(node, arr) { + var has = true + if (arr) { + var hasTrue = false + if(!this.columns_categorys_search){ + hasTrue = true + } + for (var item of arr) { + has = true + if (this.columns_categorys_search) { + has = false + } + var tmp = { + ...item, + name: item.name, + text: item.name, + label: item.name, + value: item.id, + children: undefined + } + if (item.name == this.columns_categorys_search) { + has = true + } + this.columns_categorys_dict['@' + item.id] = item + if (item.children && item.children.length > 0) { + tmp.children = [] + var childrenhas = this.mapCategoryTree(tmp.children, item.children) + if (childrenhas) { + has = true + hasTrue = true + } + } else { + tmp.children = undefined + } + if (hasTrue || has) { + console.log('has ',tmp) + node.push(tmp) + + } else { + console.log('not has ',tmp) + } + + } + } + return hasTrue + }, async confirmPickerCategory(picker) { console.log('confirmPickerCategory', picker) var id = picker.value @@ -298,6 +386,10 @@ } this.dto.categoryStr = name this.dto.category = id + // name: '', + // unit: '', + // color: '', + //递归获取category的其他数据,用来做map? this.$message.showLoading() await this.refresh_category() this.$message.hideLoading() diff --git a/sub_pages/farmer/flower-manage/flower-manage.vue b/sub_pages/supplier/flower-manage/flower-manage.vue similarity index 92% rename from sub_pages/farmer/flower-manage/flower-manage.vue rename to sub_pages/supplier/flower-manage/flower-manage.vue index 7187f3c..bd03816 100644 --- a/sub_pages/farmer/flower-manage/flower-manage.vue +++ b/sub_pages/supplier/flower-manage/flower-manage.vue @@ -255,23 +255,23 @@ }, toDetail(item) { uni.navigateTo({ - url: '/sub_pages/farmer/flower-manage/flower-add?id=' + item.id + url: '/sub_pages/supplier/flower-manage/flower-add?id=' + item.id }) }, toDetailAdd(item) { uni.navigateTo({ - url: '/sub_pages/farmer/flower-manage/flower-add?copyId=' + item.id + url: '/sub_pages/supplier/flower-manage/flower-add?copyId=' + item.id }) }, clickButton(type) { if (type == 'add') { //添加页面 uni.navigateTo({ - url: '/sub_pages/farmer/flower-manage/flower-add' + url: '/sub_pages/supplier/flower-manage/flower-add' }) } else { uni.navigateTo({ - url: '/sub_pages/farmer/flower-manage/flower-manage?type=' + type + url: '/sub_pages/supplier/flower-manage/flower-manage?type=' + type }) } }, @@ -393,27 +393,27 @@ } .button-add { - background-image: url('@/static/images/farmer/flower/flower-mange-icon-add-flower.png'); + background-image: url('@/static/images/supplier/flower/flower-mange-icon-add-flower.png'); } .button-search-in { - background-image: url('@/static/images/farmer/flower/flower-mange-icon-flower-in.png'); + background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-in.png'); } .button-search-unpass { - background-image: url('@/static/images/farmer/flower/flower-mange-icon-flower-unpass.png'); + background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-unpass.png'); } .button-search-inpass { - background-image: url('@/static/images/farmer/flower/flower-mange-icon-flower-inpass.png'); + background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-inpass.png'); } .button-search-delete { - background-image: url('@/static/images/farmer/flower/flower-mange-icon-flower-delete.png'); + background-image: url('@/static/images/supplier/flower/flower-mange-icon-flower-delete.png'); } } diff --git a/sub_pages/farmer/order-records/order-records.vue b/sub_pages/supplier/order-records/order-records.vue similarity index 100% rename from sub_pages/farmer/order-records/order-records.vue rename to sub_pages/supplier/order-records/order-records.vue diff --git a/sub_pages/farmer/order-sale/order-sale.vue b/sub_pages/supplier/order-sale/order-sale.vue similarity index 98% rename from sub_pages/farmer/order-sale/order-sale.vue rename to sub_pages/supplier/order-sale/order-sale.vue index 8b14112..61e523e 100644 --- a/sub_pages/farmer/order-sale/order-sale.vue +++ b/sub_pages/supplier/order-sale/order-sale.vue @@ -1,5 +1,5 @@ <template> - <view class="list-container order-sale farmer"> + <view class="list-container order-sale supplier"> <view class="component-tab-container m-t-12"> <view class="tab-item" :class="[tabIndex==0?'cur':'']" @click="changeIndex(0)">本月</view> <view class="tab-item" :class="[tabIndex==1?'cur':'']" @click="changeIndex(1)">全部</view> diff --git a/sub_pages/farmer/order-settlement/order-settlement.vue b/sub_pages/supplier/order-settlement/order-settlement.vue similarity index 98% rename from sub_pages/farmer/order-settlement/order-settlement.vue rename to sub_pages/supplier/order-settlement/order-settlement.vue index 3d1be6d..ffcf07f 100644 --- a/sub_pages/farmer/order-settlement/order-settlement.vue +++ b/sub_pages/supplier/order-settlement/order-settlement.vue @@ -1,5 +1,5 @@ <template> - <view class="list-container order-settlement farmer"> + <view class="list-container order-settlement supplier"> <view class="component-tab-container m-t-12"> <view class="tab-item" :class="[tabIndex==0?'cur':'']" @click="changeIndex(0)">本月</view> <view class="tab-item" :class="[tabIndex==1?'cur':'']" @click="changeIndex(1)">全部</view> diff --git a/sub_pages/supplier/protocol.vue b/sub_pages/supplier/protocol.vue new file mode 100644 index 0000000..fcc96ac --- /dev/null +++ b/sub_pages/supplier/protocol.vue @@ -0,0 +1,22 @@ +<template> + <view> + 入住协议todo + </view> +</template> + +<script> + export default { + data() { + return { + + } + }, + methods: { + + } + } +</script> + +<style> + +</style> diff --git a/sub_pages/farmer/farmer-info/farmer-info.vue b/sub_pages/supplier/supplier-info/supplier-info.vue similarity index 91% rename from sub_pages/farmer/farmer-info/farmer-info.vue rename to sub_pages/supplier/supplier-info/supplier-info.vue index 335673c..72cb1c1 100644 --- a/sub_pages/farmer/farmer-info/farmer-info.vue +++ b/sub_pages/supplier/supplier-info/supplier-info.vue @@ -283,14 +283,29 @@ methods: { PickArea(item, e) { - // console.log('PickArea', item, e) + console.log('PickArea', item, e) if (e.detail.value) { - if (!!e.detail.value[0]) - this.dto.province = e.detail.value[0].value - if (!!e.detail.value[1]) - this.dto.city = e.detail.value[1].value - if (!!e.detail.value[2]) - this.dto.region = e.detail.value[2].value + this.dto.province = '' + this.dto.city = '' + this.dto.region = '' + if(e.detail.value.length<=3){ + if (!!e.detail.value[0]) + this.dto.province = e.detail.value[0].value + if (!!e.detail.value[1]) + this.dto.city = e.detail.value[1].value + if (!!e.detail.value[2]) + this.dto.region = e.detail.value[2].value + }else{ + //说明有重复的 + var plusnum = e.detail.value.length - 3 + if (!!e.detail.value[plusnum+0]) + this.dto.province = e.detail.value[plusnum+0].value + if (!!e.detail.value[plusnum+1]) + this.dto.city = e.detail.value[plusnum+1].value + if (!!e.detail.value[plusnum+2]) + this.dto.region = e.detail.value[plusnum+2].value + } + this.$forceUpdate() } @@ -312,6 +327,8 @@ // console.log('area', JSON.parse(res.data)) this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll('name', 'text')) || [] + + console.log('area', this.regionDataPlus) }, @@ -339,20 +356,20 @@ } if (!this.dto.pictures) { this.dto.pictures = [] - }else if(typeof this.dto.pictures == 'string'){ + } else if (typeof this.dto.pictures == 'string') { this.dto.pictures = JSON.parse(this.dto.pictures) } if (!this.dto.idCards) { this.dto.idCards = [] - }else if(typeof this.dto.idCards == 'string'){ + } else if (typeof this.dto.idCards == 'string') { this.dto.idCards = JSON.parse(this.dto.idCards) } - // if (this.dto.idCards.length > 0) { - // this.dto.idcardType = '身份证' - // } + if (this.dto.idcardType == '1') { + this.dto.idcardType = '身份证' + } this.dto.userId = this.currentInfo.id - + } this.$message.hideLoading() @@ -370,15 +387,15 @@ } if (!this.dto.pictures) { this.dto.pictures = [] - }else if(typeof this.dto.pictures == 'string'){ + } else if (typeof this.dto.pictures == 'string') { this.dto.pictures = JSON.parse(this.dto.pictures) } if (!this.dto.idCards) { this.dto.idCards = [] - }else if(typeof this.dto.idCards == 'string'){ + } else if (typeof this.dto.idCards == 'string') { this.dto.idCards = JSON.parse(this.dto.idCards) } - if (this.dto.idCards.length > 0) { + if (this.dto.idcardType == '1') { this.dto.idcardType = '身份证' } } @@ -393,6 +410,7 @@ var dto = { ...this.dto, + idcardType: this.dto.idcardType === '身份证' ? "1" : '2' } this.$message.showLoading() const re = await this.$http.request('post', '/api/supplier/addOrUpdate', { @@ -403,6 +421,7 @@ this.$message.showToast('操作成功') //需要标记加一下 this.$store.dispatch('sign_add', 'application'); + this.$store.dispatch('getCurrentInfo') this.backpage() } diff --git a/sub_pages/farmer/farmer-reg/farmer-reg.vue b/sub_pages/supplier/supplier-reg/supplier-reg.vue similarity index 78% rename from sub_pages/farmer/farmer-reg/farmer-reg.vue rename to sub_pages/supplier/supplier-reg/supplier-reg.vue index 35b531c..d6fb84e 100644 --- a/sub_pages/farmer/farmer-reg/farmer-reg.vue +++ b/sub_pages/supplier/supplier-reg/supplier-reg.vue @@ -1,7 +1,9 @@ <template> <view class="main-container login-container img100 relative" style="margin-top: 0rpx;"> - <image class="component-bg" src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" mode="scaleToFill" /> - + <image class="component-bg" + src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/a5/a54508de179a4942918ecb2c5a4aa9f5bg.png" + mode="scaleToFill" /> + <view class="t-login top-bg"> <view class="nav-title">注册</view> @@ -9,17 +11,17 @@ <form class="cl"> <view class="t-a titles-top"> <view class="title-1">HELLO</view> - <view class="title-2">欢迎注册<span class="title-3">花满芜</span></view> + <view class="title-2">欢迎入住<span class="title-3">花满芜</span></view> </view> <view class="t-a input" v-if="loginType=='code'"> + + + <input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" /> <view class="get-code" :style="{'color':getCodeBtnColor}" @click.stop="getCode()"> {{getCodeText}} </view> - - <input type="text" name="userName" placeholder="请输入手机号" v-model="phoneNumber" /> - </view> @@ -33,6 +35,14 @@ <view class="flex"> <view class="topic-font m-l-a m-r-0" @click="toLogin">前往登录</view> + </view> + <view class="flex flex-wrap-normal" style="position: fixed;bottom: 40rpx;left: 40rpx;right: 40rpx;"> + <view :style="{'margin-top': '8rpx','margin-right': '12rpx','font-size':'24rpx'}" + @click="protocal=!protocal" + class="component-radio" :class="[protocal?'cur':'']"> + + </view> + <view class="topic-gray" @click="toProtocol">请仔细阅读《花满芜合伙人供应商入口小程序隐私保护指引》如您同意该指引,请勾选开始使用本小程序</view> </view> </form> </view> @@ -60,11 +70,17 @@ getCodeText: '获取验证码', getCodeBtnColor: "#20613D", getCodeisWaiting: false, - Timer: undefined + Timer: undefined, + protocal:false }; }, methods: { - getCode() { + toProtocol(){ + uni.navigateTo({ + url:'/sub_pages/supplier/protocol' + }) + }, + async getCode() { uni.hideKeyboard() //隐藏已经显示的软键盘,如果软键盘没有显示则不做任何操作。 if (this.getCodeisWaiting) { return; @@ -78,18 +94,30 @@ } this.getCodeText = "发送中..." //发送验证码 this.getCodeisWaiting = true; - this.getCodeBtnColor = "rgba(255,255,255,0.5)" //追加样式,修改颜色 + this.getCodeBtnColor = "#000" //追加样式,修改颜色 //示例用定时器模拟请求效果 //setTimeout(()用于在指定的毫秒数后调用函数或计算表达式 - setTimeout(() => { + const { + code + } = await this.$http.request('post', '/api/sms/send/code', { + data: { + tel: this.phoneNumber, + userType: 'supplier' + } + }) + if (code == 0) { uni.showToast({ title: '验证码已发送', icon: "none" - }); //弹出提示框 - //示例默认1234,生产中请删除这一句。 - // this.code = '1234'; //发送验证码,进行填入 + }); this.setTimer(); //调用定时器方法 - }, 1000) + } + // setTimeout(() => { + // //弹出提示框 + // //示例默认1234,生产中请删除这一句。 + // // this.code = '1234'; //发送验证码,进行填入 + + // }, 1000) }, //setTimer: 需要每隔一段时间执行一件事的的时候就需要使用SetTimer函数 setTimer() { @@ -111,7 +139,7 @@ }, toLogin() { uni.redirectTo({ - url: '/pages/login/farmer-login' + url: '/pages/login/supplier-login' }) }, @@ -123,9 +151,16 @@ title: '登陆中' }); var that = this; - if (!that.userName) { + if (!that.phoneNumber) { uni.showToast({ - title: '请输入用户名', + title: '请输入手机号', + icon: 'none' + }); + return; + } + if (!that.smsCode) { + uni.showToast({ + title: '请输入手机验证码', icon: 'none' }); return; @@ -142,14 +177,15 @@ // return; // } let post = { - username: this.userName, + tel: this.phoneNumber, + smsCode: this.smsCode, password: this.password, // openId: '123456789' } // const { // code // } = await this.$http.request('get', '/api/login/admin') - const resp = await this.$store.dispatch('loginSupplier', post); + const resp = await this.$store.dispatch('regSupplier', post); // uni.hideLoading() if (resp.code == 0) { @@ -159,9 +195,13 @@ // if (userRes.status) { // myCache.cache("userInfo", JSON.stringify(userRes.data)) // } - // setTimeout(() => { - // uni.navigateBack(); - // }, 1000); + uni.showToast({ + title: '注册成功!', + icon: 'none' + }); + setTimeout(() => { + this.toLogin() + }, 1000); } else { uni.showToast({ diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue index 179a4e0..f448352 100644 --- a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue +++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue @@ -1,551 +1,590 @@ <template> - <view class="uni-data-tree"> - <view class="uni-data-tree-input" @click="handleInput"> - <slot :options="options" :data="inputSelected" :error="errorMessage"> - <view class="input-value" :class="{'input-value-border': border}"> - <text v-if="errorMessage" class="selected-area error-text">{{errorMessage}}</text> - <view v-else-if="loading && !isOpened" class="selected-area"> - <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more> - </view> - <scroll-view v-else-if="inputSelected.length" class="selected-area" scroll-x="true"> - <view class="selected-list"> - <view class="selected-item" v-for="(item,index) in inputSelected" :key="index"> - <text class="text-color">{{item.text}}</text><text v-if="index<inputSelected.length-1" - class="input-split-line">{{split}}</text> - </view> - </view> - </scroll-view> - <text v-else class="selected-area placeholder">{{placeholder}}</text> - <view v-if="clearIcon && !readonly && inputSelected.length" class="icon-clear" @click.stop="clear"> - <uni-icons type="clear" color="#c0c4cc" size="24"></uni-icons> - </view> - <view class="arrow-area" v-if="(!clearIcon || !inputSelected.length) && !readonly "> - <view class="input-arrow"></view> - </view> - </view> - </slot> - </view> - <view class="uni-data-tree-cover" v-if="isOpened" @click="handleClose"></view> - <view class="uni-data-tree-dialog" v-if="isOpened"> - <view class="uni-popper__arrow"></view> - <view class="dialog-caption"> - <view class="title-area"> - <text class="dialog-title">{{popupTitle}}</text> - </view> - <view class="dialog-close" @click="handleClose"> - <view class="dialog-close-plus" data-id="close"></view> - <view class="dialog-close-plus dialog-close-rotate" data-id="close"></view> - </view> - </view> - <data-picker-view class="picker-view" ref="pickerView" v-model="dataValue" :localdata="localdata" - :preload="preload" :collection="collection" :field="field" :orderby="orderby" :where="where" - :step-searh="stepSearh" :self-field="selfField" :parent-field="parentField" :managed-mode="true" :map="map" - :ellipsis="ellipsis" @change="onchange" @datachange="ondatachange" @nodeclick="onnodeclick"> - </data-picker-view> - </view> - </view> + <view class="uni-data-tree"> + <view class="uni-data-tree-input" @click="handleInput"> + <slot :options="options" :data="inputSelected" :error="errorMessage"> + <view class="input-value" :class="{'input-value-border': border}"> + <text v-if="errorMessage" class="selected-area error-text">{{errorMessage}}</text> + <view v-else-if="loading && !isOpened" class="selected-area"> + <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more> + </view> + <scroll-view v-else-if="inputSelected.length" class="selected-area" scroll-x="true"> + <view class="selected-list"> + <view class="selected-item" v-for="(item,index) in inputSelected" :key="index"> + <text class="text-color">{{item.text}}</text><text v-if="index<inputSelected.length-1" + class="input-split-line">{{split}}</text> + </view> + </view> + </scroll-view> + <text v-else class="selected-area placeholder">{{placeholder}}</text> + <view v-if="clearIcon && !readonly && inputSelected.length" class="icon-clear" @click.stop="clear"> + <uni-icons type="clear" color="#c0c4cc" size="24"></uni-icons> + </view> + <view class="arrow-area" v-if="(!clearIcon || !inputSelected.length) && !readonly "> + <view class="input-arrow"></view> + </view> + </view> + </slot> + </view> + <view class="uni-data-tree-cover" v-if="isOpened" @click="handleClose"></view> + <view class="uni-data-tree-dialog" v-if="isOpened"> + <view class="uni-popper__arrow"></view> + <view class="dialog-caption"> + <view class="title-area"> + <text class="dialog-title">{{popupTitle}}</text> + </view> + <view class="dialog-close" @click="handleClose"> + <view class="dialog-close-plus" data-id="close"></view> + <view class="dialog-close-plus dialog-close-rotate" data-id="close"></view> + </view> + </view> + <view v-if="false" + style="margin-left:40rpx;margin-right:40rpx;; border-bottom:1px solid #eee;padding-bottom:20rpx;display:flex"> + <input v-model="search" style="height:60rpx;line-height:60rpx;color:#000" placeholder="请输入搜索内容"></input> + <button @click="()=>{search='';updateSearch()}" + style="height:60rpx;line-height:60rpx;margin-left:auto;margin-right:0rpx">清空</button> + <button @click="updateSearch" + style="height:60rpx;line-height:60rpx;margin-left:auto;margin-right:0rpx">搜索</button> + </view> + <data-picker-view class="picker-view" ref="pickerView" v-model="dataValue" :localdata="localdata" + :preload="preload" :collection="collection" :field="field" :orderby="orderby" :where="where" + :key="showpicker" + :step-searh="stepSearh" :self-field="selfField" :parent-field="parentField" :managed-mode="true" + :map="map" :ellipsis="ellipsis" @change="onchange" @datachange="ondatachange" @nodeclick="onnodeclick"> + </data-picker-view> + </view> + </view> </template> <script> - import dataPicker from "../uni-data-pickerview/uni-data-picker.js" - import DataPickerView from "../uni-data-pickerview/uni-data-pickerview.vue" + import dataPicker from "../uni-data-pickerview/uni-data-picker.js" + import DataPickerView from "../uni-data-pickerview/uni-data-pickerview.vue" - /** - * DataPicker 级联选择 - * @description 支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 - * @tutorial https://ext.dcloud.net.cn/plugin?id=3796 - * @property {String} popup-title 弹出窗口标题 - * @property {Array} localdata 本地数据,参考 - * @property {Boolean} border = [true|false] 是否有边框 - * @property {Boolean} readonly = [true|false] 是否仅读 - * @property {Boolean} preload = [true|false] 是否预加载数据 - * @value true 开启预加载数据,点击弹出窗口后显示已加载数据 - * @value false 关闭预加载数据,点击弹出窗口后开始加载数据 - * @property {Boolean} step-searh = [true|false] 是否分布查询 - * @value true 启用分布查询,仅查询当前选中节点 - * @value false 关闭分布查询,一次查询出所有数据 - * @property {String|DBFieldString} self-field 分布查询当前字段名称 - * @property {String|DBFieldString} parent-field 分布查询父字段名称 - * @property {String|DBCollectionString} collection 表名 - * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割 - * @property {String} orderby 排序字段及正序倒叙设置 - * @property {String|JQLString} where 查询条件 - * @event {Function} popupshow 弹出的选择窗口打开时触发此事件 - * @event {Function} popuphide 弹出的选择窗口关闭时触发此事件 - */ - export default { - name: 'UniDataPicker', - emits: ['popupopened', 'popupclosed', 'nodeclick', 'input', 'change', 'update:modelValue','inputclick'], - mixins: [dataPicker], - components: { - DataPickerView - }, - props: { - options: { - type: [Object, Array], - default () { - return {} - } - }, - popupTitle: { - type: String, - default: '请选择' - }, - placeholder: { - type: String, - default: '请选择' - }, - heightMobile: { - type: String, - default: '' - }, - readonly: { - type: Boolean, - default: false - }, - clearIcon: { - type: Boolean, - default: true - }, - border: { - type: Boolean, - default: true - }, - split: { - type: String, - default: '/' - }, - ellipsis: { - type: Boolean, - default: true - } - }, - data() { - return { - isOpened: false, - inputSelected: [] - } - }, - created() { - this.$nextTick(() => { - this.load(); - }) - }, - watch: { + /** + * DataPicker 级联选择 + * @description 支持单列、和多列级联选择。列数没有限制,如果屏幕显示不全,顶部tab区域会左右滚动。 + * @tutorial https://ext.dcloud.net.cn/plugin?id=3796 + * @property {String} popup-title 弹出窗口标题 + * @property {Array} localdata 本地数据,参考 + * @property {Boolean} border = [true|false] 是否有边框 + * @property {Boolean} readonly = [true|false] 是否仅读 + * @property {Boolean} preload = [true|false] 是否预加载数据 + * @value true 开启预加载数据,点击弹出窗口后显示已加载数据 + * @value false 关闭预加载数据,点击弹出窗口后开始加载数据 + * @property {Boolean} step-searh = [true|false] 是否分布查询 + * @value true 启用分布查询,仅查询当前选中节点 + * @value false 关闭分布查询,一次查询出所有数据 + * @property {String|DBFieldString} self-field 分布查询当前字段名称 + * @property {String|DBFieldString} parent-field 分布查询父字段名称 + * @property {String|DBCollectionString} collection 表名 + * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割 + * @property {String} orderby 排序字段及正序倒叙设置 + * @property {String|JQLString} where 查询条件 + * @event {Function} popupshow 弹出的选择窗口打开时触发此事件 + * @event {Function} popuphide 弹出的选择窗口关闭时触发此事件 + */ + export default { + name: 'UniDataPicker', + emits: ['popupopened', 'popupclosed', 'nodeclick', 'input', 'change', 'update:modelValue', 'inputclick'], + mixins: [dataPicker], + components: { + DataPickerView + }, + props: { + options: { + type: [Object, Array], + default () { + return {} + } + }, + popupTitle: { + type: String, + default: '请选择' + }, + placeholder: { + type: String, + default: '请选择' + }, + heightMobile: { + type: String, + default: '' + }, + readonly: { + type: Boolean, + default: false + }, + clearIcon: { + type: Boolean, + default: true + }, + border: { + type: Boolean, + default: true + }, + split: { + type: String, + default: '/' + }, + ellipsis: { + type: Boolean, + default: true + } + }, + data() { + return { + isOpened: false, + inputSelected: [], + search: '', + showpicker:(new Date().getTime()), + } + }, + created() { + this.$nextTick(() => { + this.load(); + }) + }, + watch: { localdata: { handler() { + console.log('localdata update') this.load() }, - deep: true + deep: true }, - }, - methods: { - clear() { - this._dispatchEvent([]); - }, - onPropsChange() { - this._treeData = []; - this.selectedIndex = 0; + // search() { + // handler() {}, + // } + }, + methods: { + async updateSearch() { + //todo 递归搜索下面的数据,,并标记为可展示的 + console.log('updateSearch',this.localdata) + await this.$emit('search',this.search) + // console.log('updateSearch',this.localdata) + setTimeout(() => { + console.log('updateSearch2',this.localdata) + this.showpicker = new Date().getTime() + // this.load() + this.$refs.pickerView.updateData({ + treeData: this.localdata, + selected: [], + selectedIndex: this.selectedIndex + }) + }, 200) + // this.$nextTick(()=>{ + // // this.showpicker = true + // this.showpicker = new Date().getTime() + // this._treeData = []; + // this.selectedIndex = 0; + + // this.load(); + // }) + }, + clear() { + this._dispatchEvent([]); + }, + onPropsChange() { + this._treeData = []; + this.selectedIndex = 0; - this.load(); - }, - load() { - if (this.readonly) { - this._processReadonly(this.localdata, this.dataValue); - return; - } + this.load(); + }, + load() { + if (this.readonly) { + this._processReadonly(this.localdata, this.dataValue); + return; + } - // 回显本地数据 - if (this.isLocalData) { - this.loadData(); - this.inputSelected = this.selected.slice(0); - } else if (this.isCloudDataList || this.isCloudDataTree) { // 回显 Cloud 数据 - this.loading = true; - this.getCloudDataValue().then((res) => { - this.loading = false; - this.inputSelected = res; - }).catch((err) => { - this.loading = false; - this.errorMessage = err; - }) - } - }, - show() { - this.isOpened = true - setTimeout(() => { - this.$refs.pickerView.updateData({ - treeData: this._treeData, - selected: this.selected, - selectedIndex: this.selectedIndex - }) - }, 200) - this.$emit('popupopened') - }, - hide() { - this.isOpened = false - this.$emit('popupclosed') - }, - handleInput() { - if (this.readonly) { + // 回显本地数据 + if (this.isLocalData) { + this.loadData(); + this.inputSelected = this.selected.slice(0); + } else if (this.isCloudDataList || this.isCloudDataTree) { // 回显 Cloud 数据 + this.loading = true; + this.getCloudDataValue().then((res) => { + this.loading = false; + this.inputSelected = res; + }).catch((err) => { + this.loading = false; + this.errorMessage = err; + }) + } + }, + show() { + this.isOpened = true + setTimeout(() => { + this.$refs.pickerView.updateData({ + treeData: this._treeData, + selected: this.selected, + selectedIndex: this.selectedIndex + }) + }, 200) + this.$emit('popupopened') + }, + hide() { + this.isOpened = false + this.$emit('popupclosed') + }, + handleInput() { + if (this.readonly) { this.$emit('inputclick') - return - } - this.show() - }, - handleClose(e) { - this.hide() - }, - onnodeclick(e) { - this.$emit('nodeclick', e) - }, - ondatachange(e) { - this._treeData = this.$refs.pickerView._treeData - }, - onchange(e) { - this.hide() - this.$nextTick(() => { - this.inputSelected = e; - }) - this._dispatchEvent(e) - }, - _processReadonly(dataList, value) { - var isTree = dataList.findIndex((item) => { - return item.children - }) - if (isTree > -1) { - let inputValue - if (Array.isArray(value)) { - inputValue = value[value.length - 1] - if (typeof inputValue === 'object' && inputValue.value) { - inputValue = inputValue.value - } - } else { - inputValue = value - } - this.inputSelected = this._findNodePath(inputValue, this.localdata) - return - } + return + } + this.show() + }, + handleClose(e) { + this.hide() + }, + onnodeclick(e) { + this.$emit('nodeclick', e) + }, + ondatachange(e) { + this._treeData = this.$refs.pickerView._treeData + }, + onchange(e) { + this.hide() + this.$nextTick(() => { + this.inputSelected = e; + }) + this._dispatchEvent(e) + }, + _processReadonly(dataList, value) { + var isTree = dataList.findIndex((item) => { + return item.children + }) + if (isTree > -1) { + let inputValue + if (Array.isArray(value)) { + inputValue = value[value.length - 1] + if (typeof inputValue === 'object' && inputValue.value) { + inputValue = inputValue.value + } + } else { + inputValue = value + } + this.inputSelected = this._findNodePath(inputValue, this.localdata) + return + } - if (!this.hasValue) { - this.inputSelected = [] - return - } + if (!this.hasValue) { + this.inputSelected = [] + return + } - let result = [] - for (let i = 0; i < value.length; i++) { - var val = value[i] - var item = dataList.find((v) => { - return v.value == val - }) - if (item) { - result.push(item) - } - } - if (result.length) { - this.inputSelected = result - } - }, - _filterForArray(data, valueArray) { - var result = [] - for (let i = 0; i < valueArray.length; i++) { - var value = valueArray[i] - var found = data.find((item) => { - return item.value == value - }) - if (found) { - result.push(found) - } - } - return result - }, - _dispatchEvent(selected) { - let item = {} - if (selected.length) { - var value = new Array(selected.length) - for (var i = 0; i < selected.length; i++) { - value[i] = selected[i].value - } - item = selected[selected.length - 1] - } else { - item.value = '' - } - if (this.formItem) { - this.formItem.setValue(item.value) - } + let result = [] + for (let i = 0; i < value.length; i++) { + var val = value[i] + var item = dataList.find((v) => { + return v.value == val + }) + if (item) { + result.push(item) + } + } + if (result.length) { + this.inputSelected = result + } + }, + _filterForArray(data, valueArray) { + var result = [] + for (let i = 0; i < valueArray.length; i++) { + var value = valueArray[i] + var found = data.find((item) => { + return item.value == value + }) + if (found) { + result.push(found) + } + } + return result + }, + _dispatchEvent(selected) { + let item = {} + if (selected.length) { + var value = new Array(selected.length) + for (var i = 0; i < selected.length; i++) { + value[i] = selected[i].value + } + item = selected[selected.length - 1] + } else { + item.value = '' + } + if (this.formItem) { + this.formItem.setValue(item.value) + } - this.$emit('input', item.value) - this.$emit('update:modelValue', item.value) - this.$emit('change', { - detail: { - value: selected - } - }) - } - } - } + this.$emit('input', item.value) + this.$emit('update:modelValue', item.value) + this.$emit('change', { + detail: { + value: selected + } + }) + } + } + } </script> <style> - .uni-data-tree { - flex: 1; - position: relative; - font-size: 14px; - } + .uni-data-tree { + flex: 1; + position: relative; + font-size: 14px; + } - .error-text { - color: #DD524D; - } + .error-text { + color: #DD524D; + } - .input-value { - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: row; - align-items: center; - flex-wrap: nowrap; - font-size: 14px; - /* line-height: 35px; */ - padding: 0 10px; - padding-right: 5px; - overflow: hidden; - height: 35px; - /* #ifndef APP-NVUE */ - box-sizing: border-box; - /* #endif */ - } + .input-value { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + flex-wrap: nowrap; + font-size: 14px; + /* line-height: 35px; */ + padding: 0 10px; + padding-right: 5px; + overflow: hidden; + height: 35px; + /* #ifndef APP-NVUE */ + box-sizing: border-box; + /* #endif */ + } - .input-value-border { - border: 1px solid #e5e5e5; - border-radius: 5px; - } + .input-value-border { + border: 1px solid #e5e5e5; + border-radius: 5px; + } - .selected-area { - flex: 1; - overflow: hidden; - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: row; - } + .selected-area { + flex: 1; + overflow: hidden; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + } - .load-more { - /* #ifndef APP-NVUE */ - margin-right: auto; - /* #endif */ - /* #ifdef APP-NVUE */ - width: 40px; - /* #endif */ - } + .load-more { + /* #ifndef APP-NVUE */ + margin-right: auto; + /* #endif */ + /* #ifdef APP-NVUE */ + width: 40px; + /* #endif */ + } - .selected-list { - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: row; - flex-wrap: nowrap; - /* padding: 0 5px; */ - } + .selected-list { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + flex-wrap: nowrap; + /* padding: 0 5px; */ + } - .selected-item { - flex-direction: row; - /* padding: 0 1px; */ - /* #ifndef APP-NVUE */ - white-space: nowrap; - /* #endif */ - } + .selected-item { + flex-direction: row; + /* padding: 0 1px; */ + /* #ifndef APP-NVUE */ + white-space: nowrap; + /* #endif */ + } - .text-color { - color: #333; - } + .text-color { + color: #333; + } - .placeholder { - color: grey; - font-size: 12px; - } + .placeholder { + color: grey; + font-size: 12px; + } - .input-split-line { - opacity: .5; - } + .input-split-line { + opacity: .5; + } - .arrow-area { - position: relative; - width: 20px; - /* #ifndef APP-NVUE */ - margin-bottom: 5px; - margin-left: auto; - display: flex; - /* #endif */ - justify-content: center; - transform: rotate(-45deg); - transform-origin: center; - } + .arrow-area { + position: relative; + width: 20px; + /* #ifndef APP-NVUE */ + margin-bottom: 5px; + margin-left: auto; + display: flex; + /* #endif */ + justify-content: center; + transform: rotate(-45deg); + transform-origin: center; + } - .input-arrow { - width: 7px; - height: 7px; - border-left: 1px solid #999; - border-bottom: 1px solid #999; - } + .input-arrow { + width: 7px; + height: 7px; + border-left: 1px solid #999; + border-bottom: 1px solid #999; + } - .uni-data-tree-cover { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - background-color: rgba(0, 0, 0, .4); - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: column; - z-index: 100; - } + .uni-data-tree-cover { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, .4); + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + z-index: 100; + } - .uni-data-tree-dialog { - position: fixed; - left: 0; - /* #ifndef APP-NVUE */ - top: 20%; - /* #endif */ - /* #ifdef APP-NVUE */ - top: 200px; - /* #endif */ - right: 0; - bottom: 0; - background-color: #FFFFFF; - border-top-left-radius: 10px; - border-top-right-radius: 10px; - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: column; - z-index: 102; - overflow: hidden; - /* #ifdef APP-NVUE */ - width: 750rpx; - /* #endif */ - } + .uni-data-tree-dialog { + position: fixed; + left: 0; + /* #ifndef APP-NVUE */ + top: 20%; + /* #endif */ + /* #ifdef APP-NVUE */ + top: 200px; + /* #endif */ + right: 0; + bottom: 0; + background-color: #FFFFFF; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: column; + z-index: 102; + overflow: hidden; + /* #ifdef APP-NVUE */ + width: 750rpx; + /* #endif */ + } - .dialog-caption { - position: relative; - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: row; - /* border-bottom: 1px solid #f0f0f0; */ - } + .dialog-caption { + position: relative; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + /* border-bottom: 1px solid #f0f0f0; */ + } - .title-area { - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - align-items: center; - /* #ifndef APP-NVUE */ - margin: auto; - /* #endif */ - padding: 0 10px; - } + .title-area { + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + align-items: center; + /* #ifndef APP-NVUE */ + margin: auto; + /* #endif */ + padding: 0 10px; + } - .dialog-title { - /* font-weight: bold; */ - line-height: 44px; - } + .dialog-title { + /* font-weight: bold; */ + line-height: 44px; + } - .dialog-close { - position: absolute; - top: 0; - right: 0; - bottom: 0; - /* #ifndef APP-NVUE */ - display: flex; - /* #endif */ - flex-direction: row; - align-items: center; - padding: 0 15px; - } + .dialog-close { + position: absolute; + top: 0; + right: 0; + bottom: 0; + /* #ifndef APP-NVUE */ + display: flex; + /* #endif */ + flex-direction: row; + align-items: center; + padding: 0 15px; + } - .dialog-close-plus { - width: 16px; - height: 2px; - background-color: #666; - border-radius: 2px; - transform: rotate(45deg); - } + .dialog-close-plus { + width: 16px; + height: 2px; + background-color: #666; + border-radius: 2px; + transform: rotate(45deg); + } - .dialog-close-rotate { - position: absolute; - transform: rotate(-45deg); - } + .dialog-close-rotate { + position: absolute; + transform: rotate(-45deg); + } - .picker-view { - flex: 1; - overflow: hidden; - } + .picker-view { + flex: 1; + overflow: hidden; + } - .icon-clear { - display: flex; - align-items: center; - } + .icon-clear { + display: flex; + align-items: center; + } - /* #ifdef H5 */ - @media all and (min-width: 768px) { - .uni-data-tree-cover { - background-color: transparent; - } + /* #ifdef H5 */ + @media all and (min-width: 768px) { + .uni-data-tree-cover { + background-color: transparent; + } - .uni-data-tree-dialog { - position: absolute; - top: 55px; - height: auto; - min-height: 400px; - max-height: 50vh; - background-color: #fff; - border: 1px solid #EBEEF5; - box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); - border-radius: 4px; - overflow: unset; - } + .uni-data-tree-dialog { + position: absolute; + top: 55px; + height: auto; + min-height: 400px; + max-height: 50vh; + background-color: #fff; + border: 1px solid #EBEEF5; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + border-radius: 4px; + overflow: unset; + } - .dialog-caption { - display: none; - } + .dialog-caption { + display: none; + } - .icon-clear { - /* margin-right: 5px; */ - } - } + .icon-clear { + /* margin-right: 5px; */ + } + } - /* #endif */ + /* #endif */ - /* picker 弹出层通用的指示小三角, todo:扩展至上下左右方向定位 */ - /* #ifndef APP-NVUE */ - .uni-popper__arrow, - .uni-popper__arrow::after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - border-width: 6px; - } + /* picker 弹出层通用的指示小三角, todo:扩展至上下左右方向定位 */ + /* #ifndef APP-NVUE */ + .uni-popper__arrow, + .uni-popper__arrow::after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 6px; + } - .uni-popper__arrow { - filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03)); - top: -6px; - left: 10%; - margin-right: 3px; - border-top-width: 0; - border-bottom-color: #EBEEF5; - } + .uni-popper__arrow { + filter: drop-shadow(0 2px 12px rgba(0, 0, 0, 0.03)); + top: -6px; + left: 10%; + margin-right: 3px; + border-top-width: 0; + border-bottom-color: #EBEEF5; + } - .uni-popper__arrow::after { - content: " "; - top: 1px; - margin-left: -6px; - border-top-width: 0; - border-bottom-color: #fff; - } + .uni-popper__arrow::after { + content: " "; + top: 1px; + margin-left: -6px; + border-top-width: 0; + border-bottom-color: #fff; + } - /* #endif */ -</style> + /* #endif */ +</style> \ No newline at end of file -- Gitblit v1.9.3