Compare commits
No commits in common. "master" and "feature/yi" have entirely different histories.
master
...
feature/yi
@ -9,5 +9,4 @@ export const apiArr = {
|
|||||||
updateApply: "/api/v2/wechat/commodity/after-sales/update-apply", //商品订单售后修改申请
|
updateApply: "/api/v2/wechat/commodity/after-sales/update-apply", //商品订单售后修改申请
|
||||||
createReview: "/api/v2/wechat/commodity/review/create", //创建订单评价
|
createReview: "/api/v2/wechat/commodity/review/create", //创建订单评价
|
||||||
orderRefund: "/api/v2/wechat/commodity/order/refund", //商品订单退款
|
orderRefund: "/api/v2/wechat/commodity/order/refund", //商品订单退款
|
||||||
selectGoodsDetail: "/api/v2/wechat/commodity/goods-info/by-goods", //根据货品id查询商品货品信息
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,13 +0,0 @@
|
|||||||
export const apiArr = {
|
|
||||||
ecApply: "/api/v2/wechat/lkl-split-business/ec-apply", //电子合同申请
|
|
||||||
ecQuery: "/api/v2/wechat/lkl-split-business/ec-query", //电子合同查询
|
|
||||||
ecDownload: "/api/v2/wechat/lkl-split-business/ec-download", //电子合同下载
|
|
||||||
upload: "/api/v2/wechat/lkl-split-business/upload", //附件上传
|
|
||||||
applyLedgerReceiver: "/api/v2/wechat/lkl-split-business/apply-ledger-receiver", //分账接收方创建申请
|
|
||||||
applyBind: "/api/v2/wechat/lkl-split-business/apply-bind", //分账关系绑定申请
|
|
||||||
addMer: "/api/v2/wechat/lkl-split-business/add-mer", //商户进件
|
|
||||||
queryMerchant: "/api/v2/wechat/lkl-split-business/query-merchant", //商户进件信息查询
|
|
||||||
applyLedgerMer: "/api/v2/wechat/lkl-split-business/apply-ledger-mer", //商户分账业务开通申请
|
|
||||||
queryLedgerMer: "/api/v2/wechat/lkl-split-business/query-ledger-mer", //商户分账信息查询
|
|
||||||
progresss: "/api/v2/wechat/lkl-split-business/progress", //商户分账进度查询
|
|
||||||
};
|
|
||||||
@ -1,26 +0,0 @@
|
|||||||
export const apiArr = {
|
|
||||||
// 到家服务
|
|
||||||
categoryList: "/api/v2/wechat/service/category/list", // 服务分类列表
|
|
||||||
serviceList: "/api/v2/wechat/service/list", // 服务商品列表
|
|
||||||
serviceInfo: "/api/v2/wechat/service/info", // 服务详情(含SKU+师傅)
|
|
||||||
orderCreate: "/api/v2/wechat/service/order/create", // 下单(定金单)
|
|
||||||
orderList: "/api/v2/wechat/service/order/list", // 我的服务订单列表
|
|
||||||
orderInfo: "/api/v2/wechat/service/order/info", // 服务订单详情
|
|
||||||
orderCancel: "/api/v2/wechat/service/order/cancel", // 取消服务订单
|
|
||||||
preorder: "/api/v2/wechat/service/order/preorder", // 预下单(拉卡拉)
|
|
||||||
tradeQuery: "/api/v2/wechat/service/order/trade-query", // 查单
|
|
||||||
// 师傅端
|
|
||||||
workerOrderList: "/api/v2/wechat/service/worker/order-list", // 师傅服务单列表
|
|
||||||
workerOrderStatus: "/api/v2/wechat/service/worker/order-status", // 师傅更新状态
|
|
||||||
workerExtraOrder: "/api/v2/wechat/service/worker/extra-order", // 师傅代客补差单
|
|
||||||
workerMyInfo: "/api/v2/wechat/service/worker/my-info", // 解析当前用户的师傅信息
|
|
||||||
// 家政合同(客户端)
|
|
||||||
contractList: "/api/v2/wechat/service/contract/list", // 我的家政合同列表
|
|
||||||
contractInfo: "/api/v2/wechat/service/contract/info", // 家政合同详情
|
|
||||||
// 月账单
|
|
||||||
workerMonthlyBillList: "/api/v2/wechat/service/worker/monthly-bill-list", // 师傅月账单列表
|
|
||||||
workerPushBill: "/api/v2/wechat/service/worker/push-bill", // 师傅推送/拒绝月账单
|
|
||||||
userMonthlyBillList: "/api/v2/wechat/service/user/monthly-bill-list", // 用户月账单列表
|
|
||||||
userMonthlyBillPreOrder: "/api/v2/wechat/service/user/monthly-bill/preorder", // 用户月账单预下单
|
|
||||||
userMonthlyBillTradeQuery: "/api/v2/wechat/service/user/monthly-bill/trade-query", // 用户月账单查单
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
export const apiArr = {
|
|
||||||
pointShopTab: "/api/v2/wechat/points-mall/tab", //积分商城tab
|
|
||||||
pointShopPage: "/api/v2/wechat/points-mall/page", //积分商城列表分页
|
|
||||||
platformPointsRule: "/api/v2/wechat/points-mall/platform-points-rule", //平台积分规则
|
|
||||||
pointShopRecord: "/api/v2/wechat/points-mall/order/record", //积分商城兑换记录
|
|
||||||
pointShopPay: "/api/v2/wechat/points-mall/order/pay", //积分商城订单支付
|
|
||||||
pointOrderInfo: "/api/v2/wechat/points-mall/order/info", //积分商城订单详情
|
|
||||||
pointShopAdd: "/api/v2/wechat/points-mall/order/add", //积分商城创建订单
|
|
||||||
pointGoodInfo: "/api/v2/wechat/points-mall/info", //积分商城商品详情
|
|
||||||
};
|
|
||||||
@ -16,8 +16,6 @@ export const apiArr = {
|
|||||||
addAddress: '/api/v2/wechat/commodity/receiving_address/add', // 收货地址添加
|
addAddress: '/api/v2/wechat/commodity/receiving_address/add', // 收货地址添加
|
||||||
addAddressList: '/api/v2/wechat/commodity/receiving_address', // 收货地址列表
|
addAddressList: '/api/v2/wechat/commodity/receiving_address', // 收货地址列表
|
||||||
queryOrder: '/api/v2/wechat/commodity/order/trade_query', // 查询订单
|
queryOrder: '/api/v2/wechat/commodity/order/trade_query', // 查询订单
|
||||||
splitLedger: '/api/v2/wechat/commodity/order/split-ledger', // 分账
|
|
||||||
orderUpdate: '/api/v2/wechat/commodity/order/update',
|
|
||||||
getComment: '/api/v2/wechat/commodity/review/list', // 获取评论
|
getComment: '/api/v2/wechat/commodity/review/list', // 获取评论
|
||||||
|
|
||||||
mergePreorder: '/api/v2/wechat/commodity/order/preorder', // 商品订单合并预下单
|
mergePreorder: '/api/v2/wechat/commodity/order/preorder', // 商品订单合并预下单
|
||||||
|
|||||||
@ -17,8 +17,4 @@ export const apiArr = {
|
|||||||
couponList: '/api/v1/wechat/discuss/list', // 获取优惠券列表
|
couponList: '/api/v1/wechat/discuss/list', // 获取优惠券列表
|
||||||
getUserCommunity:"/api/v1/wechat/community/owner/mylist",//获取用户社区信息
|
getUserCommunity:"/api/v1/wechat/community/owner/mylist",//获取用户社区信息
|
||||||
createQrcode: '/api/v1/wechat/water/device/qr-code', //获取小程序码
|
createQrcode: '/api/v1/wechat/water/device/qr-code', //获取小程序码
|
||||||
|
|
||||||
redPackageCenter: '/api/v2/wechat/red-package/center', //红包中心分页
|
|
||||||
redPackageClaim: '/api/v2/wechat/red-package/claim', //领取红包
|
|
||||||
redPackageMyred: '/api/v2/wechat/red-package/my-red', //我的红包分页
|
|
||||||
};
|
};
|
||||||
@ -2,9 +2,6 @@ export const apiArr = {
|
|||||||
getCateList: "/api/v2/wechat/merchant-cate-crud/list", //商家分类列表
|
getCateList: "/api/v2/wechat/merchant-cate-crud/list", //商家分类列表
|
||||||
getMerchantList: "/api/v2/wechat/merchant-info-crud/page", //商家列表
|
getMerchantList: "/api/v2/wechat/merchant-info-crud/page", //商家列表
|
||||||
getHomeBanner: "/api/v2/wechat/home-banner-region-crud/page", //获取首页banner及其广告
|
getHomeBanner: "/api/v2/wechat/home-banner-region-crud/page", //获取首页banner及其广告
|
||||||
getHomeBannerMulti: "/api/v2/wechat/home-banner-region-crud/multi", //按广告位批量获取首页广告(一次返回多个 ad_position)
|
|
||||||
getButtonNum:"/api/v2/wechat/nav-display-crud/info",//获取首页button的行数 数量
|
getButtonNum:"/api/v2/wechat/nav-display-crud/info",//获取首页button的行数 数量
|
||||||
getHomeButton:"/api/v2/wechat/home-button-region-crud/page", //获取首页button
|
getHomeButton:"/api/v2/wechat/home-button-region-crud/page", //获取首页button
|
||||||
|
|
||||||
statusQuery:"/api/v2/wechat/store-info-crud/status-query", //门店审核状态查询
|
|
||||||
};
|
};
|
||||||
@ -1,6 +1,6 @@
|
|||||||
export const apiArr = {
|
export const apiArr = {
|
||||||
getUserInfo: '/api/v2/wechat/mpuser-crud/info', // 获取城市列表
|
getUserInfo: '/api/v2/wechat/mpuser-crud/info', // 获取城市列表
|
||||||
userInfoUpdate: '/api/v2/wechat/mpuser-crud/update', // 会员信息更新
|
userInfoUpdate: '/api/v2/wechat/mpuser-crud/update', // 会员信息更新
|
||||||
getAccumulationFund: '/api/v2/wechat/government-housing-fund-flow-crud/page', // 岁银
|
getAccumulationFund: '/api/v2/wechat/government-housing-fund-flow-crud/page', // 物业费
|
||||||
getPoints: '/api/v2/wechat/member-points-flow-crud/page', // 积分
|
getPoints: '/api/v2/wechat/member-points-flow-crud/page', // 积分
|
||||||
}
|
}
|
||||||
@ -3,7 +3,6 @@ export const apiArr = {
|
|||||||
getMerchantList:"/api/v2/wechat/merchant-info-crud/page",//商家列表
|
getMerchantList:"/api/v2/wechat/merchant-info-crud/page",//商家列表
|
||||||
createComment:"/api/v2/wechat/merchant-evaluation-crud/creat",//创建用户评价
|
createComment:"/api/v2/wechat/merchant-evaluation-crud/creat",//创建用户评价
|
||||||
getMerchantInfo:"/api/v2/wechat/merchant-info-crud/info",//获取商家信息详情
|
getMerchantInfo:"/api/v2/wechat/merchant-info-crud/info",//获取商家信息详情
|
||||||
getShopActivityList:"/api/v2/wechat/commodity/shop-activity/list",//好店详情页-店铺活动商品列表
|
|
||||||
getMerchantComment:"/api/v2/wechat/merchant-evaluation-crud/page",//获取商家评价
|
getMerchantComment:"/api/v2/wechat/merchant-evaluation-crud/page",//获取商家评价
|
||||||
merChantCommentLike:"/api/v2/wechat/merchant-evaluation-like-crud/creat",//点赞
|
merChantCommentLike:"/api/v2/wechat/merchant-evaluation-like-crud/creat",//点赞
|
||||||
merChantCommentUnlike:"/api/v2/wechat/merchant-evaluation-like-crud/del",//取消点赞
|
merChantCommentUnlike:"/api/v2/wechat/merchant-evaluation-like-crud/del",//取消点赞
|
||||||
@ -27,5 +26,4 @@ export const apiArr = {
|
|||||||
|
|
||||||
|
|
||||||
createStore:"/api/v2/wechat/store-info-crud/creat",//门店信息创建
|
createStore:"/api/v2/wechat/store-info-crud/creat",//门店信息创建
|
||||||
ocrRecognize:"/api/v1/wechat/oss/ocr-recognize",//证件 OCR 自动识别
|
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,107 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="private-image">
|
|
||||||
<image v-if="signedUrl" :src="signedUrl" :mode="mode" :style="{ width: width, height: height }"
|
|
||||||
@click="onClick" @error="onError" />
|
|
||||||
<view v-else-if="loading" class="ph">加载中…</view>
|
|
||||||
<view v-else-if="error" class="ph err">{{ error }}</view>
|
|
||||||
<view v-else-if="!path" class="ph">未上传</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
// PrivateImage —— 私密文件查看(小程序,商家本人)
|
|
||||||
//
|
|
||||||
// 用法:
|
|
||||||
// <PrivateImage :path="form.id_card_front" width="200rpx" height="120rpx" />
|
|
||||||
//
|
|
||||||
// 不传 targetUserId —— 服务端会校验 object key 必须属于当前登录用户
|
|
||||||
import {
|
|
||||||
signPrivateView
|
|
||||||
} from '@/utils/uploadOSS.js'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'PrivateImage',
|
|
||||||
props: {
|
|
||||||
path: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
width: {
|
|
||||||
type: String,
|
|
||||||
default: '200rpx'
|
|
||||||
},
|
|
||||||
height: {
|
|
||||||
type: String,
|
|
||||||
default: '120rpx'
|
|
||||||
},
|
|
||||||
mode: {
|
|
||||||
type: String,
|
|
||||||
default: 'aspectFill'
|
|
||||||
},
|
|
||||||
// mount 立即签发;click 点击才签
|
|
||||||
trigger: {
|
|
||||||
type: String,
|
|
||||||
default: 'mount'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
signedUrl: '',
|
|
||||||
loading: false,
|
|
||||||
error: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
path: {
|
|
||||||
immediate: true,
|
|
||||||
handler(v) {
|
|
||||||
if (v && this.trigger === 'mount') this.fetch()
|
|
||||||
else this.signedUrl = ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
async fetch() {
|
|
||||||
if (!this.path) return
|
|
||||||
this.loading = true
|
|
||||||
this.error = ''
|
|
||||||
try {
|
|
||||||
const res = await signPrivateView(this.path)
|
|
||||||
this.signedUrl = res.url
|
|
||||||
} catch (e) {
|
|
||||||
this.error = e.message || '加载失败'
|
|
||||||
} finally {
|
|
||||||
this.loading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onClick() {
|
|
||||||
if (this.signedUrl) {
|
|
||||||
uni.previewImage({
|
|
||||||
urls: [this.signedUrl]
|
|
||||||
})
|
|
||||||
} else if (this.trigger === 'click') {
|
|
||||||
this.fetch()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onError() {
|
|
||||||
this.error = '图片加载失败'
|
|
||||||
this.signedUrl = ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.private-image .ph {
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
color: #999;
|
|
||||||
font-size: 22rpx;
|
|
||||||
padding: 16rpx;
|
|
||||||
border: 2rpx dashed #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-image .ph.err {
|
|
||||||
color: #f56c6c;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -43,63 +43,63 @@ export default {
|
|||||||
navList: [
|
navList: [
|
||||||
{
|
{
|
||||||
photo:
|
photo:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_home.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_home.png",
|
||||||
photoAc:
|
photoAc:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_homeAc.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_homeAc.png",
|
||||||
nav_name: "智慧首页",
|
nav_name: "智慧首页",
|
||||||
url: "/pages/index/index",
|
url: "/pages/index/index",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
photo:
|
photo:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_facility.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_facility.png",
|
||||||
photoAc:
|
photoAc:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_facilityAc.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_facilityAc.png",
|
||||||
nav_name: "智能设备",
|
nav_name: "智能设备",
|
||||||
url: "/packages/smartDevice/index/index",
|
url: "/packages/smartDevice/index/index",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
photo:
|
photo:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_richScan.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_richScan.png",
|
||||||
photoAc:
|
photoAc:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_richScan.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_richScan.png",
|
||||||
url: "",
|
url: "",
|
||||||
isScan: true,
|
isScan: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
photo:
|
photo:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_community.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_community.png",
|
||||||
photoAc:
|
photoAc:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_communityAc.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png",
|
||||||
nav_name: "我的小区",
|
nav_name: "我的小区",
|
||||||
url: "/packages/community/index/index",
|
url: "/packages/community/index/index",
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// photo: "https://static.hshuishang.com/property-img-file/footer_localLife.png",
|
// photo: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_localLife.png",
|
||||||
// photoAc: "https://static.hshuishang.com/property-img-file/footer_localLifeAc.png",
|
// photoAc: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_localLifeAc.png",
|
||||||
// nav_name: "本地生活",
|
// nav_name: "本地生活",
|
||||||
// url: "/packages/localLife/index/index",
|
// url: "/packages/localLife/index/index",
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// photo:
|
// photo:
|
||||||
// "https://static.hshuishang.com/property-img-file/footer_shop.png",
|
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shop.png",
|
||||||
// photoAc:
|
// photoAc:
|
||||||
// "https://static.hshuishang.com/property-img-file/footer_shopAc.png",
|
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shopAc.png",
|
||||||
// nav_name: "优选商城",
|
// nav_name: "优选商城",
|
||||||
// url: "/packages/shop/index/index",
|
// url: "/packages/shop/index/index",
|
||||||
// },
|
// },
|
||||||
// {
|
// {
|
||||||
// photo:
|
// photo:
|
||||||
// "https://static.hshuishang.com/property-img-file/footer_door.png",
|
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_door.png",
|
||||||
// photoAc:
|
// photoAc:
|
||||||
// "https://static.hshuishang.com/property-img-file/footer_communityAc.png",
|
// "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_communityAc.png",
|
||||||
// nav_name: "到家服务",
|
// nav_name: "到家服务",
|
||||||
// url: "/packages/homeServer/index/index",
|
// url: "/packages/homeServer/index/index",
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
photo:
|
photo:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_mine.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mine.png",
|
||||||
photoAc:
|
photoAc:
|
||||||
"https://static.hshuishang.com/property-img-file/footer_mineAc.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_mineAc.png",
|
||||||
nav_name: "个人中心",
|
nav_name: "个人中心",
|
||||||
url: "/pages/user/index",
|
url: "/pages/user/index",
|
||||||
},
|
},
|
||||||
@ -167,12 +167,10 @@ export default {
|
|||||||
// 解析path字段,提取scene参数的值
|
// 解析path字段,提取scene参数的值
|
||||||
const pathParts = res.path.split('?');
|
const pathParts = res.path.split('?');
|
||||||
if (pathParts.length > 1) {
|
if (pathParts.length > 1) {
|
||||||
if (pathParts[1].startsWith('scene=')){
|
const queryParams = pathParts[1].split('&');
|
||||||
const pathPart = decodeURIComponent(pathParts[1].substring(6))
|
|
||||||
const queryParams = pathPart.split('&');
|
|
||||||
for (const param of queryParams) {
|
for (const param of queryParams) {
|
||||||
const [key, value] = param.split('=');
|
const [key, value] = param.split('=');
|
||||||
if (key === 'id') {
|
if (key === 'scene') {
|
||||||
const params = {
|
const params = {
|
||||||
id: value
|
id: value
|
||||||
}
|
}
|
||||||
@ -183,7 +181,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
fail: (err) => {
|
fail: (err) => {
|
||||||
console.log('扫码失败:', err);
|
console.log('扫码失败:', err);
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="search">
|
<view class="search">
|
||||||
<view class="locat" catchtap="goPagesLink">
|
<view class="locat" catchtap="goPagesLink">
|
||||||
<image class="local_left_icon" src="https://static.hshuishang.com/User/_assets/location.png"
|
<image class="local_left_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/User/_assets/location.png"
|
||||||
mode="" />
|
mode="" />
|
||||||
<text class="local_city">{{address}}</text>
|
<text class="local_city">{{address}}</text>
|
||||||
<van-icon name="arrow-down" color="#FF512A " />
|
<van-icon name="arrow-down" color="#FF512A " />
|
||||||
</view>
|
</view>
|
||||||
<view class='search_bar'>
|
<view class='search_bar'>
|
||||||
<image class="search_icon"
|
<image class="search_icon"
|
||||||
src="https://static.hshuishang.com/community/_assets/Group_36.png" mode="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/_assets/Group_36.png" mode="" />
|
||||||
<input class="search_input" placeholder='输入搜索的社区名称' confirm-type='search' @input="searchInput"
|
<input class="search_input" placeholder='输入搜索的社区名称' confirm-type='search' @input="searchInput"
|
||||||
@confirm="searchInput" :value=" selectKeyWord" />
|
@confirm="searchInput" :value=" selectKeyWord" />
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<view class="center">物业公司:{{item.shop && item.shop.shop_name || item.property}}</view>
|
<view class="center">物业公司:{{item.shop && item.shop.shop_name || item.property}}</view>
|
||||||
<view class="address">
|
<view class="address">
|
||||||
<image class="address_icon"
|
<image class="address_icon"
|
||||||
src="https://static.hshuishang.com/community/_assets/Group_50.png" mode="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/_assets/Group_50.png" mode="" />
|
||||||
<view class="text-container">
|
<view class="text-container">
|
||||||
<text>{{item.addr}}</text>
|
<text>{{item.addr}}</text>
|
||||||
</view>
|
</view>
|
||||||
@ -17,13 +17,13 @@
|
|||||||
<view class="bottom">
|
<view class="bottom">
|
||||||
<view class="bottom_left">
|
<view class="bottom_left">
|
||||||
<view class="btn" @click.stop="handleOptionClick">
|
<view class="btn" @click.stop="handleOptionClick">
|
||||||
<image class="btn_icon" src="https://static.hshuishang.com/community/_assets/Send.png"
|
<image class="btn_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/_assets/Send.png"
|
||||||
mode="aspectFill" />
|
mode="aspectFill" />
|
||||||
导航
|
导航
|
||||||
</view>
|
</view>
|
||||||
<view class="btn mobile" @click.stop="headlePhoneClick">
|
<view class="btn mobile" @click.stop="headlePhoneClick">
|
||||||
<image class="btn_icon"
|
<image class="btn_icon"
|
||||||
src="https://static.hshuishang.com/community/_assets/Phone-telephone.png" mode="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community/_assets/Phone-telephone.png" mode="" />
|
||||||
电话
|
电话
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -1,84 +0,0 @@
|
|||||||
# 首页 Banner / 广告位 跳转现状梳理
|
|
||||||
|
|
||||||
> 状态:现状分析(仅梳理,代码未改)。日期:2026-06-03
|
|
||||||
> 范围:小程序 `pages/index/index.vue` 首页各广告位的点击跳转逻辑,对照后端配置。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、后端是怎么配置跳转的
|
|
||||||
|
|
||||||
每条 banner/广告(表 `home_banner_region`)、金刚位(表 `home_button_region`)都有统一的跳转配置字段,核心是 **`promotion_type`(推广类型)**:
|
|
||||||
|
|
||||||
| promotion_type | 含义 | 配套字段 |
|
|
||||||
|---|---|---|
|
|
||||||
| 1 | 无跳转 | — |
|
|
||||||
| 2 | 选择活动 | 关联 `advertisement_goods`(按 banner id) |
|
|
||||||
| 3 | 跳转本程序页面 | `link_url` |
|
|
||||||
| 4 | 跳转其他小程序 | `appid` + `link_url` |
|
|
||||||
| 5 | 选择商品 | `advertisement_goods[].goods_id` |
|
|
||||||
|
|
||||||
- 后台创建/编辑接口(`api/admin/v2/crud_home_banner_region.go`)用 `promotion_type` + `required-if` 校验对应字段,例如 type=4 必填 appid、type=3/4 必填 link_url。
|
|
||||||
- `home_button_region`(金刚位)字段相同,也有 `promotion_type` / `link_url` / `appid`。
|
|
||||||
- type=2/5 的落地:`/packages/advertising/index/index?id=<banner.id>` 是“广告聚合落地页”,传 banner 自身 id 进去,页面内部拉该 banner 关联的 `advertisement_goods` 商品列表展示,并可进入 `goodsDetail`。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 二、前端实际怎么跳的(问题所在)
|
|
||||||
|
|
||||||
首页有 4 个不同的点击处理函数各管一片,**几乎都没读 `promotion_type`**:
|
|
||||||
|
|
||||||
### 1. `headerServerClick`(金刚位 tabList、homeLeftList 用)
|
|
||||||
- 文件:`pages/index/index.vue`(搜 `headerServerClick(e)`)
|
|
||||||
- 只看 `link_url` 和 `appid`,**完全忽略 `promotion_type`**。
|
|
||||||
- 逻辑:无 `link_url` → 弹“此功能暂未开通”;有 `appid` → 跳小程序;否则当本程序路径 `NavgateTo`。
|
|
||||||
- **后果**:type=2(活动)、type=5(商品)的配置它不认 → 落到“没 link_url”分支 → 弹“暂未开通”。
|
|
||||||
|
|
||||||
### 2. `toAdvertisingView`(广告横幅 serverLeft、serverRight[0] 用)
|
|
||||||
- 文件:`pages/index/index.vue:357` 附近
|
|
||||||
- **写死**跳 `/packages/advertising/index/index?id=xxx`,不看 `promotion_type`,一律进广告落地页。
|
|
||||||
|
|
||||||
### 3. `goToPurify`(serverRight 非首个用,模板 `index.vue:101`)
|
|
||||||
- 文件:`pages/index/index.vue:363` 附近
|
|
||||||
- **彻底写死**:固定跳净水小程序 `appId=wx77b22c0a0018e580`,path/appId 全硬编码,传入的 `item` 没用到,与后台配置零关系。
|
|
||||||
- 模板:`@tap="index === 0 ? toAdvertisingView(serverRightList) : goToPurify(item)"` —— serverRight 第一个跳广告页,其余全跳净水小程序。
|
|
||||||
|
|
||||||
### 4. `headerServerClick2`(中部 serverItem / homeRightList1,2 用)
|
|
||||||
- 文件:`pages/index/index.vue`(搜 `headerServerClick2(e)`)
|
|
||||||
- 不跳外链,只按 `title` 匹配商家分类做筛选,或固定跳本地生活页。**注意:这一处可能是“按分类筛选”的有意设计,不一定算 bug。**
|
|
||||||
|
|
||||||
### 5. 顶部轮播 Banner(位置 1,模板 `index.vue:68`)
|
|
||||||
- 点击事件被**注释掉了**(`<!-- <swiper-item ... @click="headerServerClick(item)"> -->`),顶部 banner 现在点击无反应。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 三、根因
|
|
||||||
|
|
||||||
后台用统一的 `promotion_type` 模型配跳转,前端却是早期“按位置分别写死”的处理函数拼起来的:既没统一读 `promotion_type`,部分位置还硬编码了目标(广告页、净水小程序)。所以出现“很多跳转和后台配置不符”——不是数据错,是前端没按配置解析。
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 四、建议修法(未实施,待决策)
|
|
||||||
|
|
||||||
做一个统一跳转函数 `handleAdJump(item)`,严格按 `promotion_type` 分发:
|
|
||||||
|
|
||||||
```
|
|
||||||
switch promotion_type:
|
|
||||||
1: 不跳
|
|
||||||
2: NavgateTo('/packages/advertising/index/index?id=' + item.id) // 活动
|
|
||||||
3: link_url 跳本程序页面(兼容 shopEnter 特例 / H5 / APP webview)
|
|
||||||
4: navigateToMiniProgram(appid, link_url) // 其他小程序
|
|
||||||
5: NavgateTo('/packages/advertising/index/index?id=' + item.id) // 商品(同活动,落地页内展示)
|
|
||||||
其他: 弹“暂未开通”
|
|
||||||
```
|
|
||||||
|
|
||||||
然后把首页所有广告位的 `@click`/`@tap` 都换成 `handleAdJump(item)`:
|
|
||||||
- 顶部轮播 banner:取消注释,改 `handleAdJump`
|
|
||||||
- 金刚位 tabList、homeLeftList:`headerServerClick` → `handleAdJump`
|
|
||||||
- serverLeft、serverRight:`toAdvertisingView` / `goToPurify` → `handleAdJump`
|
|
||||||
|
|
||||||
### 实施前需确认的点
|
|
||||||
1. `headerServerClick2`(中部 serverItem 按 title 筛分类)是否要保留分类筛选语义?还是也改成按 `promotion_type` 跳?
|
|
||||||
2. 净水小程序跳转:是想**保留写死**,还是改由后台某条 banner 配 `type=4 + 该 appid` 来控制(更灵活,去掉硬编码)?
|
|
||||||
3. type=2/5 是否都统一进广告落地页 `/packages/advertising/index/index?id=banner.id`(当前分析结论是“是”)。
|
|
||||||
|
|
||||||
> 相关:`promotion_type` 字段定义见 `huichang-server/internal/model/entity/home_banner_region.go`、`home_button_region.go`;广告落地页 `uniapp-ZHSQ/packages/advertising/index/index.vue`。
|
|
||||||
@ -10,22 +10,22 @@
|
|||||||
<view class="msg">
|
<view class="msg">
|
||||||
<view class="msg_left">
|
<view class="msg_left">
|
||||||
<view class="msg_left_1">
|
<view class="msg_left_1">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_time.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_time.png" mode="widthFix" />
|
||||||
{{shopInfo.opening_time}}-{{shopInfo.closing_time}}
|
{{shopInfo.opening_time}}-{{shopInfo.closing_time}}
|
||||||
<view>营业</view>
|
<view>营业</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_left_2">
|
<view class="msg_left_2">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_add.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="widthFix" />
|
||||||
{{shopInfo.addrInfo}}
|
{{shopInfo.addrInfo}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_right">
|
<view class="msg_right">
|
||||||
<view class="msg_right1" @click="haderTelClick">
|
<view class="msg_right1" @click="haderTelClick">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_phone.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_phone.png" mode="widthFix" />
|
||||||
电话
|
电话
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_right2" @click="handleOptionClick">
|
<view class="msg_right2" @click="handleOptionClick">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_add.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="widthFix" />
|
||||||
导航
|
导航
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
.box {
|
.box {
|
||||||
width: 750rpx;
|
width: 750rpx;
|
||||||
height: 1343rpx;
|
height: 1343rpx;
|
||||||
background: url(https://static.hshuishang.com/kitchen/recharge_bg.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/recharge_bg.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.msg {
|
.msg {
|
||||||
width: 710rpx;
|
width: 710rpx;
|
||||||
height: 308rpx;
|
height: 308rpx;
|
||||||
background: url(https://static.hshuishang.com/kitchen/recharge_tit.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/recharge_tit.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<view class="msg">
|
<view class="msg">
|
||||||
账户余额(元)
|
账户余额(元)
|
||||||
<view>{{money}}</view>
|
<view>{{money}}</view>
|
||||||
<image src="https://static.hshuishang.com/kitchen/recharge_img.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/recharge_img.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="recharge">
|
<view class="recharge">
|
||||||
|
|||||||
32
main.js
32
main.js
@ -10,22 +10,6 @@ Vue.config.productionTip = false
|
|||||||
import uView from 'uni_modules/uview-ui';
|
import uView from 'uni_modules/uview-ui';
|
||||||
Vue.use(uView);
|
Vue.use(uView);
|
||||||
|
|
||||||
// 全局分享 mixin - 所有页面默认开启分享到微信好友和朋友圈
|
|
||||||
Vue.mixin({
|
|
||||||
onShareAppMessage() {
|
|
||||||
return {
|
|
||||||
title: '汇商生活家',
|
|
||||||
path: '/pages/index/index'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onShareTimeline() {
|
|
||||||
return {
|
|
||||||
title: '汇商生活家',
|
|
||||||
query: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// 导入工具函数
|
// 导入工具函数
|
||||||
import { processImageUrl } from './utils/index.js'
|
import { processImageUrl } from './utils/index.js'
|
||||||
|
|
||||||
@ -55,22 +39,6 @@ const app = createApp(App)
|
|||||||
// 安装 uView
|
// 安装 uView
|
||||||
app.use(uView)
|
app.use(uView)
|
||||||
|
|
||||||
// 全局分享 mixin - 所有页面默认开启分享到微信好友和朋友圈
|
|
||||||
app.mixin({
|
|
||||||
onShareAppMessage() {
|
|
||||||
return {
|
|
||||||
title: '汇商生活家',
|
|
||||||
path: '/pages/index/index'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onShareTimeline() {
|
|
||||||
return {
|
|
||||||
title: '汇商生活家',
|
|
||||||
query: ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// 导入工具函数
|
// 导入工具函数
|
||||||
import { processImageUrl } from './utils/index.js'
|
import { processImageUrl } from './utils/index.js'
|
||||||
|
|
||||||
|
|||||||
839
package-lock.json
generated
839
package-lock.json
generated
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "支付键盘、数字键盘、付款键盘、密码键盘",
|
"name": "支付键盘、数字键盘、付款键盘、密码键盘",
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
@ -1168,842 +1168,5 @@
|
|||||||
"node": ">=0.4"
|
"node": ">=0.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@babel/helper-string-parser": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="
|
|
||||||
},
|
|
||||||
"@babel/helper-validator-identifier": {
|
|
||||||
"version": "7.27.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
|
|
||||||
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="
|
|
||||||
},
|
|
||||||
"@babel/parser": {
|
|
||||||
"version": "7.28.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz",
|
|
||||||
"integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/types": "^7.28.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@babel/types": {
|
|
||||||
"version": "7.28.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz",
|
|
||||||
"integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/helper-string-parser": "^7.27.1",
|
|
||||||
"@babel/helper-validator-identifier": "^7.27.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@jridgewell/sourcemap-codec": {
|
|
||||||
"version": "1.5.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
|
|
||||||
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
|
|
||||||
},
|
|
||||||
"@vue/compiler-core": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-8i+LZ0vf6ZgII5Z9XmUvrCyEzocvWT+TeR2VBUVlzIH6Tyv57E20mPZ1bCS+tbejgUgmjrEh7q/0F0bibskAmw==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/parser": "^7.28.3",
|
|
||||||
"@vue/shared": "3.5.21",
|
|
||||||
"entities": "^4.5.0",
|
|
||||||
"estree-walker": "^2.0.2",
|
|
||||||
"source-map-js": "^1.2.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-dom": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-jNtbu/u97wiyEBJlJ9kmdw7tAr5Vy0Aj5CgQmo+6pxWNQhXZDPsRr1UWPN4v3Zf82s2H3kF51IbzZ4jMWAgPlQ==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-core": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-sfc": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-SXlyk6I5eUGBd2v8Ie7tF6ADHE9kCR6mBEuPyH1nUZ0h6Xx6nZI29i12sJKQmzbDyr2tUHMhhTt51Z6blbkTTQ==",
|
|
||||||
"requires": {
|
|
||||||
"@babel/parser": "^7.28.3",
|
|
||||||
"@vue/compiler-core": "3.5.21",
|
|
||||||
"@vue/compiler-dom": "3.5.21",
|
|
||||||
"@vue/compiler-ssr": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21",
|
|
||||||
"estree-walker": "^2.0.2",
|
|
||||||
"magic-string": "^0.30.18",
|
|
||||||
"postcss": "^8.5.6",
|
|
||||||
"source-map-js": "^1.2.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/compiler-ssr": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-vKQ5olH5edFZdf5ZrlEgSO1j1DMA4u23TVK5XR1uMhvwnYvVdDF0nHXJUblL/GvzlShQbjhZZ2uvYmDlAbgo9w==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-dom": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/reactivity": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-3ah7sa+Cwr9iiYEERt9JfZKPw4A2UlbY8RbbnH2mGCE8NwHkhmlZt2VsH0oDA3P08X3jJd29ohBDtX+TbD9AsA==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/runtime-core": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-+DplQlRS4MXfIf9gfD1BOJpk5RSyGgGXD/R+cumhe8jdjUcq/qlxDawQlSI8hCKupBlvM+3eS1se5xW+SuNAwA==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/reactivity": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/runtime-dom": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-3M2DZsOFwM5qI15wrMmNF5RJe1+ARijt2HM3TbzBbPSuBHOQpoidE+Pa+XEaVN+czbHf81ETRoG1ltztP2em8w==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/reactivity": "3.5.21",
|
|
||||||
"@vue/runtime-core": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21",
|
|
||||||
"csstype": "^3.1.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/server-renderer": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-qr8AqgD3DJPJcGvLcJKQo2tAc8OnXRcfxhOJCPF+fcfn5bBGz7VCcO7t+qETOPxpWK1mgysXvVT/j+xWaHeMWA==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-ssr": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@vue/shared": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-+2k1EQpnYuVuu3N7atWyG3/xoFWIVJZq4Mz8XNOdScFI0etES75fbny/oU4lKWk/577P1zmg0ioYvpGEDZ3DLw=="
|
|
||||||
},
|
|
||||||
"abort-controller": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
|
|
||||||
"requires": {
|
|
||||||
"event-target-shim": "^5.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"async-limiter": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
|
|
||||||
},
|
|
||||||
"balanced-match": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
|
||||||
},
|
|
||||||
"base64-js": {
|
|
||||||
"version": "1.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
|
||||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
|
||||||
},
|
|
||||||
"bl": {
|
|
||||||
"version": "4.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
|
|
||||||
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
|
||||||
"requires": {
|
|
||||||
"buffer": "^5.5.0",
|
|
||||||
"inherits": "^2.0.4",
|
|
||||||
"readable-stream": "^3.4.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"buffer": {
|
|
||||||
"version": "5.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
|
||||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
|
||||||
"requires": {
|
|
||||||
"base64-js": "^1.3.1",
|
|
||||||
"ieee754": "^1.1.13"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"readable-stream": {
|
|
||||||
"version": "3.6.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
|
||||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
|
||||||
"requires": {
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"string_decoder": "^1.1.1",
|
|
||||||
"util-deprecate": "^1.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
|
||||||
"version": "1.1.12",
|
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
|
||||||
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
|
||||||
"requires": {
|
|
||||||
"balanced-match": "^1.0.0",
|
|
||||||
"concat-map": "0.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"buffer": {
|
|
||||||
"version": "6.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
|
||||||
"integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
|
|
||||||
"requires": {
|
|
||||||
"base64-js": "^1.3.1",
|
|
||||||
"ieee754": "^1.2.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"buffer-from": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
|
|
||||||
},
|
|
||||||
"callback-stream": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==",
|
|
||||||
"requires": {
|
|
||||||
"inherits": "^2.0.1",
|
|
||||||
"readable-stream": "> 1.0.0 < 3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"commist": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
|
|
||||||
"requires": {
|
|
||||||
"leven": "^2.1.0",
|
|
||||||
"minimist": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"concat-map": {
|
|
||||||
"version": "0.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
|
||||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
|
|
||||||
},
|
|
||||||
"concat-stream": {
|
|
||||||
"version": "1.6.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
|
|
||||||
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
|
|
||||||
"requires": {
|
|
||||||
"buffer-from": "^1.0.0",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"readable-stream": "^2.2.2",
|
|
||||||
"typedarray": "^0.0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"core-util-is": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
|
|
||||||
},
|
|
||||||
"csstype": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
|
||||||
},
|
|
||||||
"d": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
|
|
||||||
"requires": {
|
|
||||||
"es5-ext": "^0.10.64",
|
|
||||||
"type": "^2.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"debug": {
|
|
||||||
"version": "4.4.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
|
|
||||||
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
|
|
||||||
"requires": {
|
|
||||||
"ms": "^2.1.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"duplexify": {
|
|
||||||
"version": "3.7.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
|
||||||
"integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
|
|
||||||
"requires": {
|
|
||||||
"end-of-stream": "^1.0.0",
|
|
||||||
"inherits": "^2.0.1",
|
|
||||||
"readable-stream": "^2.0.0",
|
|
||||||
"stream-shift": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"end-of-stream": {
|
|
||||||
"version": "1.4.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
|
|
||||||
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
|
|
||||||
"requires": {
|
|
||||||
"once": "^1.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"entities": {
|
|
||||||
"version": "4.5.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
|
||||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
|
|
||||||
},
|
|
||||||
"es5-ext": {
|
|
||||||
"version": "0.10.64",
|
|
||||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
|
|
||||||
"integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
|
|
||||||
"requires": {
|
|
||||||
"es6-iterator": "^2.0.3",
|
|
||||||
"es6-symbol": "^3.1.3",
|
|
||||||
"esniff": "^2.0.1",
|
|
||||||
"next-tick": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"es6-iterator": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
|
|
||||||
"requires": {
|
|
||||||
"d": "1",
|
|
||||||
"es5-ext": "^0.10.35",
|
|
||||||
"es6-symbol": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"es6-map": {
|
|
||||||
"version": "0.1.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
|
|
||||||
"integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
|
|
||||||
"requires": {
|
|
||||||
"d": "1",
|
|
||||||
"es5-ext": "~0.10.14",
|
|
||||||
"es6-iterator": "~2.0.1",
|
|
||||||
"es6-set": "~0.1.5",
|
|
||||||
"es6-symbol": "~3.1.1",
|
|
||||||
"event-emitter": "~0.3.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"es6-set": {
|
|
||||||
"version": "0.1.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz",
|
|
||||||
"integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
|
|
||||||
"requires": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.62",
|
|
||||||
"es6-iterator": "~2.0.3",
|
|
||||||
"es6-symbol": "^3.1.3",
|
|
||||||
"event-emitter": "^0.3.5",
|
|
||||||
"type": "^2.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"es6-symbol": {
|
|
||||||
"version": "3.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
|
|
||||||
"integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
|
|
||||||
"requires": {
|
|
||||||
"d": "^1.0.2",
|
|
||||||
"ext": "^1.7.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"esniff": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
|
|
||||||
"requires": {
|
|
||||||
"d": "^1.0.1",
|
|
||||||
"es5-ext": "^0.10.62",
|
|
||||||
"event-emitter": "^0.3.5",
|
|
||||||
"type": "^2.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"estree-walker": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
|
||||||
},
|
|
||||||
"event-emitter": {
|
|
||||||
"version": "0.3.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
|
|
||||||
"integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
|
|
||||||
"requires": {
|
|
||||||
"d": "1",
|
|
||||||
"es5-ext": "~0.10.14"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"event-target-shim": {
|
|
||||||
"version": "5.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
|
|
||||||
"integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
|
|
||||||
},
|
|
||||||
"ext": {
|
|
||||||
"version": "1.7.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
|
|
||||||
"integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
|
|
||||||
"requires": {
|
|
||||||
"type": "^2.7.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"extend": {
|
|
||||||
"version": "3.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
|
||||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
|
||||||
},
|
|
||||||
"fs.realpath": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
|
|
||||||
},
|
|
||||||
"glob": {
|
|
||||||
"version": "7.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
|
||||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
|
||||||
"requires": {
|
|
||||||
"fs.realpath": "^1.0.0",
|
|
||||||
"inflight": "^1.0.4",
|
|
||||||
"inherits": "2",
|
|
||||||
"minimatch": "^3.1.1",
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"path-is-absolute": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob-parent": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
|
|
||||||
"requires": {
|
|
||||||
"is-glob": "^3.1.0",
|
|
||||||
"path-dirname": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"glob-stream": {
|
|
||||||
"version": "6.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz",
|
|
||||||
"integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
|
|
||||||
"requires": {
|
|
||||||
"extend": "^3.0.0",
|
|
||||||
"glob": "^7.1.1",
|
|
||||||
"glob-parent": "^3.1.0",
|
|
||||||
"is-negated-glob": "^1.0.0",
|
|
||||||
"ordered-read-streams": "^1.0.0",
|
|
||||||
"pumpify": "^1.3.5",
|
|
||||||
"readable-stream": "^2.1.5",
|
|
||||||
"remove-trailing-separator": "^1.0.1",
|
|
||||||
"to-absolute-glob": "^2.0.0",
|
|
||||||
"unique-stream": "^2.0.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"help-me": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/help-me/-/help-me-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==",
|
|
||||||
"requires": {
|
|
||||||
"callback-stream": "^1.0.2",
|
|
||||||
"glob-stream": "^6.1.0",
|
|
||||||
"through2": "^2.0.1",
|
|
||||||
"xtend": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ieee754": {
|
|
||||||
"version": "1.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
|
|
||||||
},
|
|
||||||
"inflight": {
|
|
||||||
"version": "1.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
|
||||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
|
||||||
"requires": {
|
|
||||||
"once": "^1.3.0",
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"inherits": {
|
|
||||||
"version": "2.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
|
|
||||||
},
|
|
||||||
"is-absolute": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
|
|
||||||
"requires": {
|
|
||||||
"is-relative": "^1.0.0",
|
|
||||||
"is-windows": "^1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"is-extglob": {
|
|
||||||
"version": "2.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
|
||||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
|
|
||||||
},
|
|
||||||
"is-glob": {
|
|
||||||
"version": "3.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
|
|
||||||
"integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
|
|
||||||
"requires": {
|
|
||||||
"is-extglob": "^2.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"is-negated-glob": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug=="
|
|
||||||
},
|
|
||||||
"is-relative": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
|
|
||||||
"requires": {
|
|
||||||
"is-unc-path": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"is-unc-path": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
|
|
||||||
"requires": {
|
|
||||||
"unc-path-regex": "^0.1.2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"is-windows": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="
|
|
||||||
},
|
|
||||||
"isarray": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
|
|
||||||
},
|
|
||||||
"json-stable-stringify-without-jsonify": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
|
|
||||||
},
|
|
||||||
"leven": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA=="
|
|
||||||
},
|
|
||||||
"magic-string": {
|
|
||||||
"version": "0.30.19",
|
|
||||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz",
|
|
||||||
"integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
|
|
||||||
"requires": {
|
|
||||||
"@jridgewell/sourcemap-codec": "^1.5.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimatch": {
|
|
||||||
"version": "3.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
||||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
|
||||||
"requires": {
|
|
||||||
"brace-expansion": "^1.1.7"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"minimist": {
|
|
||||||
"version": "1.2.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
|
||||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
|
|
||||||
},
|
|
||||||
"mqtt": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mqtt/-/mqtt-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-0nKV6MAc1ibKZwaZQUTb3iIdT4NVpj541BsYrqrGBcQdQ7Jd0MnZD1/6/nj1UFdGTboK9ZEUXvkCu2nPCugHFA==",
|
|
||||||
"requires": {
|
|
||||||
"base64-js": "^1.3.0",
|
|
||||||
"commist": "^1.0.0",
|
|
||||||
"concat-stream": "^1.6.2",
|
|
||||||
"end-of-stream": "^1.4.1",
|
|
||||||
"es6-map": "^0.1.5",
|
|
||||||
"help-me": "^1.0.1",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"minimist": "^1.2.0",
|
|
||||||
"mqtt-packet": "^6.0.0",
|
|
||||||
"pump": "^3.0.0",
|
|
||||||
"readable-stream": "^2.3.6",
|
|
||||||
"reinterval": "^1.1.0",
|
|
||||||
"split2": "^3.1.0",
|
|
||||||
"websocket-stream": "^5.1.2",
|
|
||||||
"xtend": "^4.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"mqtt-packet": {
|
|
||||||
"version": "6.10.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
|
|
||||||
"integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
|
|
||||||
"requires": {
|
|
||||||
"bl": "^4.0.2",
|
|
||||||
"debug": "^4.1.1",
|
|
||||||
"process-nextick-args": "^2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ms": {
|
|
||||||
"version": "2.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
|
||||||
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
|
|
||||||
},
|
|
||||||
"nanoid": {
|
|
||||||
"version": "3.3.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
|
|
||||||
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
|
|
||||||
},
|
|
||||||
"next-tick": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
|
|
||||||
},
|
|
||||||
"once": {
|
|
||||||
"version": "1.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
|
||||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
|
||||||
"requires": {
|
|
||||||
"wrappy": "1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ordered-read-streams": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
|
|
||||||
"requires": {
|
|
||||||
"readable-stream": "^2.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"path-dirname": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
|
|
||||||
},
|
|
||||||
"path-is-absolute": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
|
|
||||||
},
|
|
||||||
"picocolors": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
|
||||||
},
|
|
||||||
"postcss": {
|
|
||||||
"version": "8.5.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
|
||||||
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
|
||||||
"requires": {
|
|
||||||
"nanoid": "^3.3.11",
|
|
||||||
"picocolors": "^1.1.1",
|
|
||||||
"source-map-js": "^1.2.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"process-nextick-args": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
|
||||||
},
|
|
||||||
"pump": {
|
|
||||||
"version": "3.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
|
|
||||||
"integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
|
|
||||||
"requires": {
|
|
||||||
"end-of-stream": "^1.1.0",
|
|
||||||
"once": "^1.3.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"pumpify": {
|
|
||||||
"version": "1.5.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
|
|
||||||
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
|
|
||||||
"requires": {
|
|
||||||
"duplexify": "^3.6.0",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"pump": "^2.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"pump": {
|
|
||||||
"version": "2.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
|
|
||||||
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
|
|
||||||
"requires": {
|
|
||||||
"end-of-stream": "^1.1.0",
|
|
||||||
"once": "^1.3.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"readable-stream": {
|
|
||||||
"version": "2.3.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
|
|
||||||
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
|
|
||||||
"requires": {
|
|
||||||
"core-util-is": "~1.0.0",
|
|
||||||
"inherits": "~2.0.3",
|
|
||||||
"isarray": "~1.0.0",
|
|
||||||
"process-nextick-args": "~2.0.0",
|
|
||||||
"safe-buffer": "~5.1.1",
|
|
||||||
"string_decoder": "~1.1.1",
|
|
||||||
"util-deprecate": "~1.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"reinterval": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
|
||||||
},
|
|
||||||
"remove-trailing-separator": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
|
|
||||||
},
|
|
||||||
"safe-buffer": {
|
|
||||||
"version": "5.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
|
||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
|
||||||
},
|
|
||||||
"source-map-js": {
|
|
||||||
"version": "1.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
|
||||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
|
|
||||||
},
|
|
||||||
"split2": {
|
|
||||||
"version": "3.2.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
|
|
||||||
"integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
|
|
||||||
"requires": {
|
|
||||||
"readable-stream": "^3.0.0"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"readable-stream": {
|
|
||||||
"version": "3.6.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
|
||||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
|
||||||
"requires": {
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"string_decoder": "^1.1.1",
|
|
||||||
"util-deprecate": "^1.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"stream-shift": {
|
|
||||||
"version": "1.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
|
|
||||||
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ=="
|
|
||||||
},
|
|
||||||
"string_decoder": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
|
||||||
"requires": {
|
|
||||||
"safe-buffer": "~5.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"through2": {
|
|
||||||
"version": "2.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
|
|
||||||
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
|
|
||||||
"requires": {
|
|
||||||
"readable-stream": "~2.3.6",
|
|
||||||
"xtend": "~4.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"through2-filter": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
|
|
||||||
"requires": {
|
|
||||||
"through2": "~2.0.0",
|
|
||||||
"xtend": "~4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"to-absolute-glob": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
|
|
||||||
"requires": {
|
|
||||||
"is-absolute": "^1.0.0",
|
|
||||||
"is-negated-glob": "^1.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"version": "2.7.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
|
|
||||||
"integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
|
|
||||||
},
|
|
||||||
"typedarray": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
|
|
||||||
},
|
|
||||||
"ultron": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
|
|
||||||
},
|
|
||||||
"unc-path-regex": {
|
|
||||||
"version": "0.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
|
|
||||||
"integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg=="
|
|
||||||
},
|
|
||||||
"unique-stream": {
|
|
||||||
"version": "2.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz",
|
|
||||||
"integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
|
|
||||||
"requires": {
|
|
||||||
"json-stable-stringify-without-jsonify": "^1.0.1",
|
|
||||||
"through2-filter": "^3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"util-deprecate": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
|
|
||||||
},
|
|
||||||
"vue": {
|
|
||||||
"version": "3.5.21",
|
|
||||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.21.tgz",
|
|
||||||
"integrity": "sha512-xxf9rum9KtOdwdRkiApWL+9hZEMWE90FHh8yS1+KJAiWYh+iGWV1FquPjoO9VUHQ+VIhsCXNNyZ5Sf4++RVZBA==",
|
|
||||||
"requires": {
|
|
||||||
"@vue/compiler-dom": "3.5.21",
|
|
||||||
"@vue/compiler-sfc": "3.5.21",
|
|
||||||
"@vue/runtime-dom": "3.5.21",
|
|
||||||
"@vue/server-renderer": "3.5.21",
|
|
||||||
"@vue/shared": "3.5.21"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"websocket-stream": {
|
|
||||||
"version": "5.5.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/websocket-stream/-/websocket-stream-5.5.2.tgz",
|
|
||||||
"integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==",
|
|
||||||
"requires": {
|
|
||||||
"duplexify": "^3.5.1",
|
|
||||||
"inherits": "^2.0.1",
|
|
||||||
"readable-stream": "^2.3.3",
|
|
||||||
"safe-buffer": "^5.1.2",
|
|
||||||
"ws": "^3.2.0",
|
|
||||||
"xtend": "^4.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"wrappy": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
|
|
||||||
},
|
|
||||||
"ws": {
|
|
||||||
"version": "3.3.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz",
|
|
||||||
"integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
|
|
||||||
"requires": {
|
|
||||||
"async-limiter": "~1.0.0",
|
|
||||||
"safe-buffer": "~5.1.0",
|
|
||||||
"ultron": "~1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"xtend": {
|
|
||||||
"version": "4.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
|
||||||
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,7 +62,7 @@ image {
|
|||||||
height: 150rpx;
|
height: 150rpx;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
display: flex;
|
display: flex;
|
||||||
background-image: url('https://static.hshuishang.com/gp_detail_top.png');
|
background-image: url('https://wechat-img-file.oss-cn-beijing.aliyuncs.com/gp_detail_top.png');
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-position: -30rpx center;
|
background-position: -30rpx center;
|
||||||
}
|
}
|
||||||
@ -621,7 +621,7 @@ image {
|
|||||||
.shadowBox_img {
|
.shadowBox_img {
|
||||||
width: 600rpx;
|
width: 600rpx;
|
||||||
height: 945rpx;
|
height: 945rpx;
|
||||||
background: url('https://static.hshuishang.com/property-img-file/shop_share_bg.png') no-repeat;
|
background: url('https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_bg.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -83,7 +83,7 @@
|
|||||||
<view class="Msg_ItemTit">货号</view>
|
<view class="Msg_ItemTit">货号</view>
|
||||||
<view class="Msg_ItemCon" @click="copys(currentGG.goods_no)">
|
<view class="Msg_ItemCon" @click="copys(currentGG.goods_no)">
|
||||||
{{ currentGG.goods_no }}
|
{{ currentGG.goods_no }}
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_copy.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="Msg_Item">
|
<view class="Msg_Item">
|
||||||
@ -117,14 +117,14 @@
|
|||||||
<view class="Car">
|
<view class="Car">
|
||||||
<view class="car_left">
|
<view class="car_left">
|
||||||
<view class="share" @click="share">
|
<view class="share" @click="share">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_share.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
|
||||||
mode="widthFix"></image>
|
mode="widthFix"></image>
|
||||||
分享
|
分享
|
||||||
</view>
|
</view>
|
||||||
<view class="cars" @click="car">
|
<view class="cars" @click="car">
|
||||||
<u-badge numberType="limit" :type="type" max="99" :value="carNum"></u-badge>
|
<u-badge numberType="limit" :type="type" max="99" :value="carNum"></u-badge>
|
||||||
|
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_car.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_car.png"
|
||||||
mode="widthFix"></image>
|
mode="widthFix"></image>
|
||||||
购物车
|
购物车
|
||||||
</view>
|
</view>
|
||||||
@ -155,14 +155,14 @@
|
|||||||
<view class="shadowBox1">
|
<view class="shadowBox1">
|
||||||
<view class="shadowBox1Item" @click="shareFriend">
|
<view class="shadowBox1Item" @click="shareFriend">
|
||||||
<button class="shadowBox1Item_btn" open-type="share" bindtap="onShareButtonClick">
|
<button class="shadowBox1Item_btn" open-type="share" bindtap="onShareButtonClick">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_WX.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
微信好友
|
微信好友
|
||||||
</button>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="shadowBox1Item" @click="openSave">
|
<view class="shadowBox1Item" @click="openSave">
|
||||||
<button class="shadowBox1Item_btn">
|
<button class="shadowBox1Item_btn">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_saveImg.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
生成海报
|
生成海报
|
||||||
</button>
|
</button>
|
||||||
@ -175,7 +175,7 @@
|
|||||||
<view class="shadowBox_img">
|
<view class="shadowBox_img">
|
||||||
<view class="boxshadow_tit">今日商品推荐</view>
|
<view class="boxshadow_tit">今日商品推荐</view>
|
||||||
<view class="boxshadow_img">
|
<view class="boxshadow_img">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/shop_share_img.png">
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="line"></view>
|
<view class="line"></view>
|
||||||
@ -203,12 +203,12 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="temp">
|
<view class="temp">
|
||||||
<view class="temp1">
|
<view class="temp1">
|
||||||
<img class="temp_img" src="https://static.hshuishang.com/pingjia.png" />
|
<img class="temp_img" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/pingjia.png" />
|
||||||
为你展示真实评价
|
为你展示真实评价
|
||||||
</view>
|
</view>
|
||||||
<view class="temp1" @click="showSizePopup">
|
<view class="temp1" @click="showSizePopup">
|
||||||
款式
|
款式
|
||||||
<img class="temp_img1" src="https://static.hshuishang.com/kuanshi.png" />
|
<img class="temp_img1" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kuanshi.png" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="reviews-list" v-if="comments.length > 0">
|
<view class="reviews-list" v-if="comments.length > 0">
|
||||||
@ -297,7 +297,6 @@ export default {
|
|||||||
boxshadow1: false,
|
boxshadow1: false,
|
||||||
boxshadow2: false,
|
boxshadow2: false,
|
||||||
id: "",
|
id: "",
|
||||||
adver_id: "",//活动id
|
|
||||||
groupById: "",
|
groupById: "",
|
||||||
promotional_price: "", //活动价
|
promotional_price: "", //活动价
|
||||||
info: "",
|
info: "",
|
||||||
@ -507,7 +506,7 @@ export default {
|
|||||||
this.boxshadow2 = false;
|
this.boxshadow2 = false;
|
||||||
// 微信小程序保存图片
|
// 微信小程序保存图片
|
||||||
uni.downloadFile({
|
uni.downloadFile({
|
||||||
url: "https://static.hshuishang.com/property-img-file/shop_share_img.png",
|
url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png",
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
if (res.statusCode === 200) {
|
if (res.statusCode === 200) {
|
||||||
uni.saveImageToPhotosAlbum({
|
uni.saveImageToPhotosAlbum({
|
||||||
@ -542,7 +541,6 @@ export default {
|
|||||||
getGoodsInfo() {
|
getGoodsInfo() {
|
||||||
const params = {
|
const params = {
|
||||||
id: this.id,
|
id: this.id,
|
||||||
adver_id: this.adver_id,
|
|
||||||
}
|
}
|
||||||
request(apiArr.getGoodsInfo, "POST", params).then((res) => {
|
request(apiArr.getGoodsInfo, "POST", params).then((res) => {
|
||||||
// 分割图片
|
// 分割图片
|
||||||
@ -582,10 +580,8 @@ export default {
|
|||||||
|
|
||||||
// 使用完整的商品数据对象,而不是itemObj
|
// 使用完整的商品数据对象,而不是itemObj
|
||||||
this.currentGG = this.info.commodity_goods_info_list[this.currentGGIndex];
|
this.currentGG = this.info.commodity_goods_info_list[this.currentGGIndex];
|
||||||
// 将promotional_price赋值给sales_price(无活动价时保留商品自身价格,如客服分享场景)
|
// 将promotional_price赋值给sales_price
|
||||||
if (this.promotional_price !== "" && this.promotional_price != null) {
|
|
||||||
this.currentGG.sales_price = this.promotional_price;
|
this.currentGG.sales_price = this.promotional_price;
|
||||||
}
|
|
||||||
|
|
||||||
// 设置相关属性
|
// 设置相关属性
|
||||||
this.changeImg = this.currentGG.commodity_pic[0];
|
this.changeImg = this.currentGG.commodity_pic[0];
|
||||||
@ -618,10 +614,8 @@ export default {
|
|||||||
// 切换规格
|
// 切换规格
|
||||||
changeGG(item, index) {
|
changeGG(item, index) {
|
||||||
this.currentGG = item;
|
this.currentGG = item;
|
||||||
// 将promotional_price赋值给sales_price(无活动价时保留商品自身价格)
|
// 将promotional_price赋值给sales_price
|
||||||
if (this.promotional_price !== "" && this.promotional_price != null) {
|
|
||||||
this.currentGG.sales_price = this.promotional_price;
|
this.currentGG.sales_price = this.promotional_price;
|
||||||
}
|
|
||||||
this.currentGGIndex = index;
|
this.currentGGIndex = index;
|
||||||
if (this.currentGG.cart_count) {
|
if (this.currentGG.cart_count) {
|
||||||
this.currentNum = this.currentGG.cart_count.count;
|
this.currentNum = this.currentGG.cart_count.count;
|
||||||
@ -733,14 +727,14 @@ export default {
|
|||||||
// 购买记录
|
// 购买记录
|
||||||
getBuyRecord() {
|
getBuyRecord() {
|
||||||
const params = {
|
const params = {
|
||||||
activity_id: this.groupById,
|
activity_id: 47,
|
||||||
goods_id: this.itemObj.id,
|
goods_id: this.id
|
||||||
}
|
}
|
||||||
request(apiArr2.groupBuyRecord, 'POST', params).then(res => {
|
request(apiArr2.groupBuyRecord, 'POST', params).then(res => {
|
||||||
const record = res.group_buy_record.map(item => {
|
const record = res.group_buy_record.map(item => {
|
||||||
return {
|
return {
|
||||||
...item,
|
...item,
|
||||||
avatar: picUrl + item.avatar
|
avatar: picture + item.avatar
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.purchaseRecords = record
|
this.purchaseRecords = record
|
||||||
@ -782,20 +776,11 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
// 来自客服聊天卡片:优先从本地存储读完整数据(避免 URL 过长)
|
|
||||||
if (options && options.fromChat) {
|
|
||||||
let stashed
|
|
||||||
try { stashed = uni.getStorageSync('chatCardItem') } catch (e) { stashed = null }
|
|
||||||
uni.removeStorageSync('chatCardItem')
|
|
||||||
this.itemObj = stashed || JSON.parse(decodeURIComponent(options.item))
|
|
||||||
} else {
|
|
||||||
this.itemObj = JSON.parse(decodeURIComponent(options.item));
|
this.itemObj = JSON.parse(decodeURIComponent(options.item));
|
||||||
}
|
|
||||||
const meun = menuButtonInfo();
|
const meun = menuButtonInfo();
|
||||||
this.top = meun.top;
|
this.top = meun.top;
|
||||||
this.localHeight = meun.height;
|
this.localHeight = meun.height;
|
||||||
this.id = this.itemObj.commodity_id ? this.itemObj.commodity_id : this.itemObj.id;
|
this.id = this.itemObj.commodity_id ? this.itemObj.commodity_id : this.itemObj.id;
|
||||||
this.adver_id = this.itemObj.adver_id
|
|
||||||
this.groupById = this.itemObj.groupById
|
this.groupById = this.itemObj.groupById
|
||||||
this.promotional_price = this.itemObj.promotional_price
|
this.promotional_price = this.itemObj.promotional_price
|
||||||
this.getBuyRecord()
|
this.getBuyRecord()
|
||||||
|
|||||||
@ -277,7 +277,7 @@ page {
|
|||||||
.copy-icon {
|
.copy-icon {
|
||||||
width: 30rpx;
|
width: 30rpx;
|
||||||
height: 30rpx;
|
height: 30rpx;
|
||||||
background-image: url('https://static.hshuishang.com/myOrder/copy.png');
|
background-image: url('https://wechat-img-file.oss-cn-beijing.aliyuncs.com/myOrder/copy.png');
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
margin-left: 10rpx;
|
margin-left: 10rpx;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,7 @@
|
|||||||
<view class="payment-item" @click="selectPayment('wechat')">
|
<view class="payment-item" @click="selectPayment('wechat')">
|
||||||
<view class="payment-icon">
|
<view class="payment-icon">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_wechat.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_wechat.png"
|
||||||
mode="aspectFit"></image>
|
mode="aspectFit"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="payment-content">
|
<view class="payment-content">
|
||||||
@ -82,12 +82,12 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="payment-select" v-if="selectedPayment === 'wechat'">
|
<view class="payment-select" v-if="selectedPayment === 'wechat'">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png"
|
||||||
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="payment-select" v-else>
|
<view class="payment-select" v-else>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png"
|
||||||
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -195,7 +195,7 @@
|
|||||||
<view class="payment-item" @click="selectPayment('wechat')">
|
<view class="payment-item" @click="selectPayment('wechat')">
|
||||||
<view class="payment-icon">
|
<view class="payment-icon">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_wechat.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_wechat.png"
|
||||||
mode="aspectFit"></image>
|
mode="aspectFit"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="payment-content">
|
<view class="payment-content">
|
||||||
@ -205,12 +205,12 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="payment-select" v-if="selectedPayment === 'wechat'">
|
<view class="payment-select" v-if="selectedPayment === 'wechat'">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png"
|
||||||
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="payment-select" v-else>
|
<view class="payment-select" v-else>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png"
|
||||||
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
mode="aspectFit" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -227,7 +227,7 @@
|
|||||||
<view class="shadowBox2">
|
<view class="shadowBox2">
|
||||||
<view class="shadowBox_img">
|
<view class="shadowBox_img">
|
||||||
<view class="boxshadow_tit">
|
<view class="boxshadow_tit">
|
||||||
<image src="https://static.hshuishang.com/af_√.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/af_√.png"
|
||||||
class="boxshadow_tit_img">
|
class="boxshadow_tit_img">
|
||||||
</image>
|
</image>
|
||||||
已支付成功
|
已支付成功
|
||||||
@ -235,7 +235,7 @@
|
|||||||
<view class="boxshadow_img">
|
<view class="boxshadow_img">
|
||||||
<view v-if="verifyCode">核销码:{{ verifyCode }}</view>
|
<view v-if="verifyCode">核销码:{{ verifyCode }}</view>
|
||||||
<!-- <image
|
<!-- <image
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_share_img.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
|
||||||
</image> -->
|
</image> -->
|
||||||
</view>
|
</view>
|
||||||
<view>
|
<view>
|
||||||
@ -246,7 +246,7 @@
|
|||||||
<view class="wealBox">
|
<view class="wealBox">
|
||||||
<view class="wealBoxItem wealBoxItem1">
|
<view class="wealBoxItem wealBoxItem1">
|
||||||
<view class="wealBoxItemTop">
|
<view class="wealBoxItemTop">
|
||||||
<image src="https://static.hshuishang.com/activity_fen.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/activity_fen.png"
|
||||||
mode="aspectFit">
|
mode="aspectFit">
|
||||||
</image>
|
</image>
|
||||||
<view>石榴分</view>
|
<view>石榴分</view>
|
||||||
@ -260,7 +260,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="wealBoxItem wealBoxItem2">
|
<view class="wealBoxItem wealBoxItem2">
|
||||||
<view class="wealBoxItemTop">
|
<view class="wealBoxItemTop">
|
||||||
<image src="https://static.hshuishang.com/activity_zi.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/activity_zi.png"
|
||||||
mode="aspectFit">
|
mode="aspectFit">
|
||||||
</image>
|
</image>
|
||||||
<view>石榴籽</view>
|
<view>石榴籽</view>
|
||||||
@ -274,7 +274,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="wealBoxItem wealBoxItem3">
|
<view class="wealBoxItem wealBoxItem3">
|
||||||
<view class="wealBoxItemTop">
|
<view class="wealBoxItemTop">
|
||||||
<image src="https://static.hshuishang.com/activity_jin.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/activity_jin.png"
|
||||||
mode="aspectFit" />
|
mode="aspectFit" />
|
||||||
<view>石榴金</view>
|
<view>石榴金</view>
|
||||||
</view>
|
</view>
|
||||||
@ -299,20 +299,20 @@
|
|||||||
<button class="shadowBox1Item_btn" open-type="share" bindtap="onShareButtonClick" />
|
<button class="shadowBox1Item_btn" open-type="share" bindtap="onShareButtonClick" />
|
||||||
<view class="shadowBox1Item">
|
<view class="shadowBox1Item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_WX.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
微信好友
|
微信好友
|
||||||
</view>
|
</view>
|
||||||
<button class="shadowBox2Item_btn" open-type="share" bindtap="onShareButtonClick" />
|
<button class="shadowBox2Item_btn" open-type="share" bindtap="onShareButtonClick" />
|
||||||
<view class="shadowBox1Item" @click="shareFriend">
|
<view class="shadowBox1Item" @click="shareFriend">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_WX.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
小程序链接
|
小程序链接
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="shadowBox1Item" @click="openSave">
|
<!-- <view class="shadowBox1Item" @click="openSave">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_saveImg.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
二维码海报
|
二维码海报
|
||||||
</view> -->
|
</view> -->
|
||||||
@ -331,7 +331,7 @@
|
|||||||
<view class="boxshadow_tit">今日商品推荐</view>
|
<view class="boxshadow_tit">今日商品推荐</view>
|
||||||
<view class="boxshadow_img">
|
<view class="boxshadow_img">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_share_img.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="shadowBoxInfo">
|
<view class="shadowBoxInfo">
|
||||||
@ -786,7 +786,7 @@ export default {
|
|||||||
this.boxshadow2 = false;
|
this.boxshadow2 = false;
|
||||||
// 微信小程序保存图片
|
// 微信小程序保存图片
|
||||||
uni.downloadFile({
|
uni.downloadFile({
|
||||||
url: "https://static.hshuishang.com/property-img-file/shop_share_img.png",
|
url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png",
|
||||||
success: (res) => {
|
success: (res) => {
|
||||||
if (res.statusCode === 200) {
|
if (res.statusCode === 200) {
|
||||||
uni.saveImageToPhotosAlbum({
|
uni.saveImageToPhotosAlbum({
|
||||||
|
|||||||
@ -185,30 +185,23 @@
|
|||||||
|
|
||||||
/* 购物车按钮 */
|
/* 购物车按钮 */
|
||||||
.shop_car {
|
.shop_car {
|
||||||
width: 80rpx;
|
width: 140rpx;
|
||||||
height: 80rpx;
|
height: 140rpx;
|
||||||
position: absolute;
|
position: fixed;
|
||||||
bottom: 150rpx;
|
right: 33rpx;
|
||||||
right: 30rpx;
|
bottom: 80rpx;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
border-radius: 50%;
|
|
||||||
background-color: #ffffff;
|
|
||||||
padding: 10rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop_car image {
|
.shop_car image {
|
||||||
width: 60rpx;
|
width: 100%;
|
||||||
height: 60rpx;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.u-badge {
|
.u-badge {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0rpx;
|
right: 0;
|
||||||
top: -6rpx;
|
top: -10rpx;
|
||||||
z-index: 11;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 规格标签样式 */
|
/* 规格标签样式 */
|
||||||
|
|||||||
@ -34,7 +34,7 @@
|
|||||||
<!-- 购物车按钮 -->
|
<!-- 购物车按钮 -->
|
||||||
<view class="shop_car" @click="shopCar">
|
<view class="shop_car" @click="shopCar">
|
||||||
<u-badge numberType="limit" type="error" max="99" :value="carNum"></u-badge>
|
<u-badge numberType="limit" type="error" max="99" :value="carNum"></u-badge>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/page_user_Group_1564.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_car_num.png"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@ -83,17 +83,17 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getGoodsList() {
|
getGoodsList() {
|
||||||
// if (!uni.getStorageSync('userId')) {
|
if (!uni.getStorageSync('userId')) {
|
||||||
// uni.showToast({
|
uni.showToast({
|
||||||
// title: '请先登录',
|
title: '请先登录',
|
||||||
// icon: 'none'
|
icon: 'none'
|
||||||
// })
|
})
|
||||||
// return
|
return
|
||||||
// }
|
}
|
||||||
const params = {
|
const params = {
|
||||||
adver_id: this.idVal,
|
adver_id: this.idVal,
|
||||||
}
|
}
|
||||||
return request(shopApi.adverGoodsList, 'POST', params, {}, false).then(res => {
|
return request(shopApi.adverGoodsList, 'POST', params).then(res => {
|
||||||
const list = res.adver_goods_list.map(item => {
|
const list = res.adver_goods_list.map(item => {
|
||||||
// 为每个商品初始化quantity
|
// 为每个商品初始化quantity
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="empty" v-if="shopCarTotal == 0">
|
<view class="empty" v-if="shopCarTotal == 0">
|
||||||
<image src="https://static.hshuishang.com/shopCar_no.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/shopCar_no.png"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="main" v-else>
|
<view class="main" v-else>
|
||||||
<view class="deleteIcon" @click="deleteItem">
|
<view class="deleteIcon" @click="deleteItem">
|
||||||
@ -22,10 +22,10 @@
|
|||||||
<view class="footer_all" @click="is_day_checked"
|
<view class="footer_all" @click="is_day_checked"
|
||||||
style="color: orange; font-size: 35rpx; font-weight: bolder;">
|
style="color: orange; font-size: 35rpx; font-weight: bolder;">
|
||||||
<image v-if="!isDaychecked"
|
<image v-if="!isDaychecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="isDaychecked"
|
<image v-if="isDaychecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
当日达
|
当日达
|
||||||
</view>
|
</view>
|
||||||
@ -34,10 +34,10 @@
|
|||||||
<view class="goodsItem_supplier">
|
<view class="goodsItem_supplier">
|
||||||
<view class="goodsItem_left" @click="supplierCheck(carItem, true)">
|
<view class="goodsItem_left" @click="supplierCheck(carItem, true)">
|
||||||
<image v-if="!carItem.supplierChecked"
|
<image v-if="!carItem.supplierChecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="carItem.supplierChecked"
|
<image v-if="carItem.supplierChecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="goodsItem_tit">
|
<view class="goodsItem_tit">
|
||||||
@ -48,10 +48,10 @@
|
|||||||
:key="item.id">
|
:key="item.id">
|
||||||
<view class="goodsItem_left" @click="DayChecked(item)">
|
<view class="goodsItem_left" @click="DayChecked(item)">
|
||||||
<image v-if="!item.checked"
|
<image v-if="!item.checked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="item.checked"
|
<image v-if="item.checked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="goodsItem_right">
|
<view class="goodsItem_right">
|
||||||
@ -107,10 +107,10 @@
|
|||||||
<view class="footer_all" @click="parcel_post_checked"
|
<view class="footer_all" @click="parcel_post_checked"
|
||||||
style="color: orange; font-size: 35rpx; font-weight: bolder;">
|
style="color: orange; font-size: 35rpx; font-weight: bolder;">
|
||||||
<image v-if="!isParcelPostchecked"
|
<image v-if="!isParcelPostchecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="isParcelPostchecked"
|
<image v-if="isParcelPostchecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
包邮
|
包邮
|
||||||
</view>
|
</view>
|
||||||
@ -119,10 +119,10 @@
|
|||||||
<view class="goodsItem_supplier">
|
<view class="goodsItem_supplier">
|
||||||
<view class="goodsItem_left" @click="supplierCheck(carItem, false)">
|
<view class="goodsItem_left" @click="supplierCheck(carItem, false)">
|
||||||
<image v-if="!carItem.supplierChecked"
|
<image v-if="!carItem.supplierChecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="carItem.supplierChecked"
|
<image v-if="carItem.supplierChecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="goodsItem_tit">
|
<view class="goodsItem_tit">
|
||||||
@ -133,10 +133,10 @@
|
|||||||
:key="item.id">
|
:key="item.id">
|
||||||
<view class="goodsItem_left" @click="changeChecked(item)">
|
<view class="goodsItem_left" @click="changeChecked(item)">
|
||||||
<image v-if="!item.checked"
|
<image v-if="!item.checked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="item.checked"
|
<image v-if="item.checked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
<view class="goodsItem_right">
|
<view class="goodsItem_right">
|
||||||
@ -169,7 +169,8 @@
|
|||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
<template #input>
|
<template #input>
|
||||||
<text style="width: 80rpx; text-align: center" class="input">{{
|
<text style="width: 80rpx; text-align: center"
|
||||||
|
class="input">{{
|
||||||
item.count }}</text>
|
item.count }}</text>
|
||||||
</template>
|
</template>
|
||||||
<template #plus>
|
<template #plus>
|
||||||
@ -192,10 +193,10 @@
|
|||||||
<view class="footer_left">
|
<view class="footer_left">
|
||||||
<view class="footer_all" @click="allChecked">
|
<view class="footer_all" @click="allChecked">
|
||||||
<image v-if="!isAllchecked"
|
<image v-if="!isAllchecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check1.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
|
||||||
</image>
|
</image>
|
||||||
<image v-if="isAllchecked"
|
<image v-if="isAllchecked"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_check2.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
|
||||||
</image>
|
</image>
|
||||||
全选
|
全选
|
||||||
</view>
|
</view>
|
||||||
@ -534,7 +535,6 @@ export default {
|
|||||||
const that = this;
|
const that = this;
|
||||||
request(apiArr.deleteCar, "POST", {
|
request(apiArr.deleteCar, "POST", {
|
||||||
ids: [carItem.id],
|
ids: [carItem.id],
|
||||||
goods_cate: 3,
|
|
||||||
}).then((res) => {
|
}).then((res) => {
|
||||||
// 从商品列表中移除该商品
|
// 从商品列表中移除该商品
|
||||||
item.splice(goodsIndex, 1);
|
item.splice(goodsIndex, 1);
|
||||||
@ -700,7 +700,6 @@ export default {
|
|||||||
|
|
||||||
request(apiArr.deleteCar, "POST", {
|
request(apiArr.deleteCar, "POST", {
|
||||||
ids,
|
ids,
|
||||||
goods_cate: 3,
|
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
|
|||||||
@ -307,7 +307,7 @@ page {
|
|||||||
content: '';
|
content: '';
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<div class="myRealEstate">
|
<div class="myRealEstate">
|
||||||
<div class="myRealEstates">
|
<div class="myRealEstates">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
||||||
<div class="name">滏阳锦苑</div>
|
<div class="name">滏阳锦苑</div>
|
||||||
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<div class="ConList">
|
<div class="ConList">
|
||||||
<div class="ConItem" v-for="item in 3" @click="desc">
|
<div class="ConItem" v-for="item in 3" @click="desc">
|
||||||
<div class="ConItem_left">
|
<div class="ConItem_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="ConItem_right">
|
<div class="ConItem_right">
|
||||||
<div class="ConItem_right_tit">关于小区停车场治理通告</div>
|
<div class="ConItem_right_tit">关于小区停车场治理通告</div>
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<view class="container">
|
<view class="container">
|
||||||
|
|
||||||
<div class="userAva">
|
<div class="userAva">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png" alt="" mode="aspectFill" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png" alt="" mode="aspectFill" />
|
||||||
</div>
|
</div>
|
||||||
<div class="Name">MarrekoZhang</div>
|
<div class="Name">MarrekoZhang</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container">
|
<view class="container">
|
||||||
<div class="searchBox">
|
<div class="searchBox">
|
||||||
<img src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png" alt="" />
|
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png" alt="" />
|
||||||
<input placeholder="请输入小区名称" type="text">
|
<input placeholder="请输入小区名称" type="text">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="communityList">
|
<div class="communityList">
|
||||||
<div class="communityItem" v-for="(item, index) in 5" :key="index" @click="chooseCommunityInfo">
|
<div class="communityItem" v-for="(item, index) in 5" :key="index" @click="chooseCommunityInfo">
|
||||||
<div class="communityItem_img">
|
<div class="communityItem_img">
|
||||||
<img src="https://static.hshuishang.com/property-img-file/com_act2Img.png" alt="" />
|
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="communityItem_msg">
|
<div class="communityItem_msg">
|
||||||
@ -21,8 +21,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="communityItem_msg_more">
|
<div class="communityItem_msg_more">
|
||||||
<img src="https://static.hshuishang.com/property-img-file/com_check1.png" alt="" />
|
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png" alt="" />
|
||||||
<!-- <img src="https://static.hshuishang.com/property-img-file/com_check2.png" alt="" /> -->
|
<!-- <img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png" alt="" /> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
<div class="communityList">
|
<div class="communityList">
|
||||||
<div class="communityItem">
|
<div class="communityItem">
|
||||||
<div class="communityItem_img">
|
<div class="communityItem_img">
|
||||||
<image mode="aspectFill" src="https://static.hshuishang.com/property-img-file/com_act2Img.png" alt="" />
|
<image mode="aspectFill" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="communityItem_msg">
|
<div class="communityItem_msg">
|
||||||
@ -20,7 +20,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="communityItem_msg_more">
|
<div class="communityItem_msg_more">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communityMore.png" alt="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityMore.png" alt="" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -167,7 +167,7 @@ image {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_activeIcon.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_activeIcon.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ image {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_activeIcon.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_activeIcon.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
<div class="currentAdd_left">{{ city.region }}</div>
|
<div class="currentAdd_left">{{ city.region }}</div>
|
||||||
<div class="currentAdd_right" @click="changeAddress">
|
<div class="currentAdd_right" @click="changeAddress">
|
||||||
切换城市
|
切换城市
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_choseAddress.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_choseAddress.png"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<div class="search">
|
<div class="search">
|
||||||
<input type="text" placeholder="请输入小区名称" v-model="communityName" />
|
<input type="text" placeholder="请输入小区名称" v-model="communityName" />
|
||||||
<image @click="searchByName"
|
<image @click="searchByName"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png">
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -24,14 +24,14 @@
|
|||||||
<div class="communityItem_address">{{ item.addr }}</div>
|
<div class="communityItem_address">{{ item.addr }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="communityItem_right">
|
<div class="communityItem_right">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communityMore.png">
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityMore.png">
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="empty" v-if="communityList.length == 0">
|
<div class="empty" v-if="communityList.length == 0">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_noSearch.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
|
||||||
<span>未找到相关信息的小区</span>
|
<span>未找到相关信息的小区</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<!-- <div class="communityBox" v-if="step == 2">
|
<!-- <div class="communityBox" v-if="step == 2">
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<input type="text" placeholder="请输入楼栋名称">
|
<input type="text" placeholder="请输入楼栋名称">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="floorList">
|
<div class="floorList">
|
||||||
@ -49,7 +49,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="empty" v-if="!foloorList">
|
<div class="empty" v-if="!foloorList">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_noSearch.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
|
||||||
<span>未找到相关信息的楼栋</span>
|
<span>未找到相关信息的楼栋</span>
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<div class="search">
|
<div class="search">
|
||||||
<input v-model="searchQuery" type="text" placeholder="请输入楼栋名称" />
|
<input v-model="searchQuery" type="text" placeholder="请输入楼栋名称" />
|
||||||
<image @click="searchName"
|
<image @click="searchName"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png">
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -70,7 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="empty" v-if="filteredFloorsList.length === 0">
|
<div class="empty" v-if="filteredFloorsList.length === 0">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_noSearch.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
|
||||||
<span>未找到相关信息的楼栋</span>
|
<span>未找到相关信息的楼栋</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -79,7 +79,7 @@
|
|||||||
<div class="search">
|
<div class="search">
|
||||||
<input v-model="searchQuery" type="text" placeholder="请输入楼层名称" />
|
<input v-model="searchQuery" type="text" placeholder="请输入楼层名称" />
|
||||||
<image @click="searchName"
|
<image @click="searchName"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png">
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -92,7 +92,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="empty" v-if="filteredFloorsList.length === 0">
|
<div class="empty" v-if="filteredFloorsList.length === 0">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_noSearch.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
|
||||||
<span>未找到相关信息的楼层</span>
|
<span>未找到相关信息的楼层</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -101,7 +101,7 @@
|
|||||||
<div class="search">
|
<div class="search">
|
||||||
<input v-model="searchQuery" type="text" placeholder="请输入房间名称" />
|
<input v-model="searchQuery" type="text" placeholder="请输入房间名称" />
|
||||||
<image @click="searchName"
|
<image @click="searchName"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png">
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -114,7 +114,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="empty" v-if="filteredFloorsList.length === 0">
|
<div class="empty" v-if="filteredFloorsList.length === 0">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_noSearch.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_noSearch.png"></image>
|
||||||
<span>未找到相关信息的房间</span>
|
<span>未找到相关信息的房间</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -378,17 +378,17 @@ page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabItem1 {
|
.tabItem1 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg1.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg1.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabItem2 {
|
.tabItem2 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg2.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg2.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabItem3 {
|
.tabItem3 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg3.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg3.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ page {
|
|||||||
content: '';
|
content: '';
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@ -2,57 +2,57 @@
|
|||||||
<view class="container">
|
<view class="container">
|
||||||
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
|
<view class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
|
||||||
<view class="searchBox_add">
|
<view class="searchBox_add">
|
||||||
<img src="https://static.hshuishang.com/property-img-file/com_communityIcon.png" alt="" />
|
<img src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityIcon.png" alt="" />
|
||||||
我的房产
|
我的房产
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<div class="myRealEstate">
|
<div class="myRealEstate">
|
||||||
<div class="myRealEstates">
|
<div class="myRealEstates">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
||||||
<div class="name">滏阳锦苑</div>
|
<div class="name">滏阳锦苑</div>
|
||||||
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class="Announcement">
|
<div class="Announcement">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_Announcement.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_Announcement.png" mode="aspectFill"></image>
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
<div class="msg" @click="notice">
|
<div class="msg" @click="notice">
|
||||||
<div>asdasdasd</div>
|
<div>asdasdasd</div>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_more.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_more.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navList">
|
<div class="navList">
|
||||||
<div class="navItem">
|
<div class="navItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIcon1.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIcon1.png" mode="aspectFill"></image>
|
||||||
物业服务
|
物业服务
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navItem" @click="repair">
|
<div class="navItem" @click="repair">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIcon2.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIcon2.png" mode="aspectFill"></image>
|
||||||
在线报修
|
在线报修
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navItem" @click="propertyPayment">
|
<div class="navItem" @click="propertyPayment">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIcon3.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIcon3.png" mode="aspectFill"></image>
|
||||||
物业缴费
|
物业缴费
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navItem">
|
<div class="navItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIcon4.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIcon4.png" mode="aspectFill"></image>
|
||||||
物业公积
|
物业公积
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navItem">
|
<div class="navItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIcon5.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIcon5.png" mode="aspectFill"></image>
|
||||||
社区管家
|
社区管家
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="navItem" @click="mores">
|
<div class="navItem" @click="mores">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_NavIconMore.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_NavIconMore.png" mode="aspectFill"></image>
|
||||||
更多
|
更多
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
|
|
||||||
<div class="nearbyList">
|
<div class="nearbyList">
|
||||||
<div class="emptys" v-if="false">
|
<div class="emptys" v-if="false">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyList_empty.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyList_empty.png" mode="aspectFill"></image>
|
||||||
周边暂无补贴公积金商家
|
周边暂无补贴公积金商家
|
||||||
|
|
||||||
<div class="emptysBtn">
|
<div class="emptysBtn">
|
||||||
@ -88,21 +88,21 @@
|
|||||||
|
|
||||||
<div class="nearbyList_left">
|
<div class="nearbyList_left">
|
||||||
<div class="nearbyList_leftItem">
|
<div class="nearbyList_leftItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyImg1.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyImg1.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="nearbyList_leftItem">
|
<div class="nearbyList_leftItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyImg1.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyImg1.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="nearbyList_right">
|
<div class="nearbyList_right">
|
||||||
<div class="nearbyList_rightItem">
|
<div class="nearbyList_rightItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="nearbyList_rightItem">
|
<div class="nearbyList_rightItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="nearbyList_rightItem">
|
<div class="nearbyList_rightItem">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyImg2.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -124,7 +124,7 @@
|
|||||||
|
|
||||||
<div v-if="active == 0" class="act1">
|
<div v-if="active == 0" class="act1">
|
||||||
<div class="empty" >
|
<div class="empty" >
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
||||||
暂无信息
|
暂无信息
|
||||||
|
|
||||||
<div class="emptyAdd">发布社区互动信息</div>
|
<div class="emptyAdd">发布社区互动信息</div>
|
||||||
@ -133,20 +133,20 @@
|
|||||||
<div class="MsgList_left" v-if="false">
|
<div class="MsgList_left" v-if="false">
|
||||||
<div class="MsgList_leftItem">
|
<div class="MsgList_leftItem">
|
||||||
<div class="MsgList_leftItemImg">
|
<div class="MsgList_leftItemImg">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png" mode="widthFix"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemName">我家的小猫丢了,谁看见了请联系我~</div>
|
<div class="MsgList_leftItemName">我家的小猫丢了,谁看见了请联系我~</div>
|
||||||
<div class="MsgList_leftItemMsg">
|
<div class="MsgList_leftItemMsg">
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<div class="MsgList_right" v-if="false">
|
<div class="MsgList_right" v-if="false">
|
||||||
<div class="MsgList_rightItem">
|
<div class="MsgList_rightItem">
|
||||||
<div class="MsgList_rightItemImg">
|
<div class="MsgList_rightItemImg">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg2.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg2.png" mode="widthFix"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="MsgList_rightItemName">
|
<div class="MsgList_rightItemName">
|
||||||
@ -165,15 +165,15 @@
|
|||||||
|
|
||||||
<div class="MsgList_leftItemMsg">
|
<div class="MsgList_leftItemMsg">
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -187,15 +187,15 @@
|
|||||||
|
|
||||||
<div class="MsgList_leftItemMsg">
|
<div class="MsgList_leftItemMsg">
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_likeIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_comIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
<div class="MsgList_leftItemMsg_like">
|
<div class="MsgList_leftItemMsg_like">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shareIcon.png" mode="aspectFill"></image>
|
||||||
134
|
134
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -206,7 +206,7 @@
|
|||||||
<div v-if="active == 1" class="act2">
|
<div v-if="active == 1" class="act2">
|
||||||
|
|
||||||
<div class="empty" >
|
<div class="empty" >
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
||||||
暂无信息
|
暂无信息
|
||||||
|
|
||||||
<div class="emptyAdd">发布社区互动信息</div>
|
<div class="emptyAdd">发布社区互动信息</div>
|
||||||
@ -214,7 +214,7 @@
|
|||||||
|
|
||||||
<div class="act2Item" v-for="itme in 3">
|
<div class="act2Item" v-for="itme in 3">
|
||||||
<div class="act2Item_left">
|
<div class="act2Item_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Img.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" mode="widthFix"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="act2Item_right">
|
<div class="act2Item_right">
|
||||||
<div class="act2Item_right_Name">约1.7~2.3斤/份 【软糯甜香】新鲜水果 玉米</div>
|
<div class="act2Item_right_Name">约1.7~2.3斤/份 【软糯甜香】新鲜水果 玉米</div>
|
||||||
@ -224,7 +224,7 @@
|
|||||||
|
|
||||||
<div class="act2Item_right_Btn">
|
<div class="act2Item_right_Btn">
|
||||||
<div class="act2Item_right_Btn_left">
|
<div class="act2Item_right_Btn_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Ms.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Ms.png" mode="widthFix"></image>
|
||||||
¥
|
¥
|
||||||
<span>5.58</span>
|
<span>5.58</span>
|
||||||
</div>
|
</div>
|
||||||
@ -242,7 +242,7 @@
|
|||||||
<div v-if="active == 2" class="act2">
|
<div v-if="active == 2" class="act2">
|
||||||
|
|
||||||
<div class="empty" >
|
<div class="empty" >
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_empty.png" mode="aspectFill"></image>
|
||||||
暂无信息
|
暂无信息
|
||||||
|
|
||||||
<div class="emptyAdd">发布社区互动信息</div>
|
<div class="emptyAdd">发布社区互动信息</div>
|
||||||
@ -250,7 +250,7 @@
|
|||||||
|
|
||||||
<div class="act2Item" v-for="itme in 3">
|
<div class="act2Item" v-for="itme in 3">
|
||||||
<div class="act2Item_left">
|
<div class="act2Item_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Img.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" mode="widthFix"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="act2Item_right">
|
<div class="act2Item_right">
|
||||||
<div class="act2Item_right_Name">约1.7~2.3斤/份 【软糯甜香】新鲜水果 玉米</div>
|
<div class="act2Item_right_Name">约1.7~2.3斤/份 【软糯甜香】新鲜水果 玉米</div>
|
||||||
@ -278,7 +278,7 @@
|
|||||||
<div v-if="active == 3" class="act4">
|
<div v-if="active == 3" class="act4">
|
||||||
<div class="act4Item" v-for="itme in 4">
|
<div class="act4Item" v-for="itme in 4">
|
||||||
<div class="act4Img">
|
<div class="act4Img">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="act4Name">
|
<div class="act4Name">
|
||||||
舒克小苏打牙膏(洁白细护)120G
|
舒克小苏打牙膏(洁白细护)120G
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"category_name": "岁银"
|
"category_name": "物业费"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
@ -21,39 +21,39 @@
|
|||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"title": "物业介绍",
|
"title": "物业介绍",
|
||||||
"pic": "https://static.hshuishang.com/Group_3677.png"
|
"pic": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_3677.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"title": "物业缴费",
|
"title": "物业缴费",
|
||||||
"pic": "https://static.hshuishang.com/Group_3680.png"
|
"pic": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_3680.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"title": "岁银",
|
"title": "物业费",
|
||||||
"pic": "https://static.hshuishang.com/Group_3679.png"
|
"pic": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_3679.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"title": "报事报修",
|
"title": "报事报修",
|
||||||
"pic": "https://static.hshuishang.com/Group_3678.png"
|
"pic": "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/Group_3678.png"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"defaultNoticeList": [
|
"defaultNoticeList": [
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"title": "物业介绍",
|
"title": "物业介绍",
|
||||||
"content": "您好!\n 物业服务中心是小区专属服务团队,核心服务包括:岁银收缴、公共区域清洁维护、设施设备(电梯/水电/绿化)检修、秩序安全管理,及应急事件响应、活动组织等日常事务。\n 我们始终以\"用心服务、共建美好\"为宗旨,欢迎大家监督并提出改进建议。感谢您的理解与配合,让我们携手维护舒心的园区环境!"
|
"content": "您好!\n 物业服务中心是小区专属服务团队,核心服务包括:物业费收缴、公共区域清洁维护、设施设备(电梯/水电/绿化)检修、秩序安全管理,及应急事件响应、活动组织等日常事务。\n 我们始终以\"用心服务、共建美好\"为宗旨,欢迎大家监督并提出改进建议。感谢您的理解与配合,让我们携手维护舒心的园区环境!"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"title": "物业缴费",
|
"title": "物业缴费",
|
||||||
"content": "各位业主:\n 为简化缴费流程,提升服务效率,物业已上线\"线上+线下\"一体化缴费功能,支持岁银、车位费、公共能耗费等各类费用便捷缴纳,具体使用说明如下:\n一、线上缴费(推荐)\n 1. 小程序端操作:打开物业专属小程序,进入\"我的-物业缴费\"页面,系统将自动展示您需缴纳的费用账单(含费用类型、金额、缴费周期等明细);确认账单无误后,选择微信支付,点击\"确认缴费\"即可完成。\n 2. 账单查询:在缴费页面点击\"缴费记录\",可查看缴费明细(含缴费时间、金额、凭证号)。\n二、线下缴费(备用)\n若您偏好线下办理,可前往物业前台,通过现金、银行卡、移动支付(微信/支付宝扫码)完成缴费。"
|
"content": "各位业主:\n 为简化缴费流程,提升服务效率,物业已上线\"线上+线下\"一体化缴费功能,支持物业费、车位费、公共能耗费等各类费用便捷缴纳,具体使用说明如下:\n一、线上缴费(推荐)\n 1. 小程序端操作:打开物业专属小程序,进入\"我的-物业缴费\"页面,系统将自动展示您需缴纳的费用账单(含费用类型、金额、缴费周期等明细);确认账单无误后,选择微信支付,点击\"确认缴费\"即可完成。\n 2. 账单查询:在缴费页面点击\"缴费记录\",可查看缴费明细(含缴费时间、金额、凭证号)。\n二、线下缴费(备用)\n若您偏好线下办理,可前往物业前台,通过现金、银行卡、移动支付(微信/支付宝扫码)完成缴费。"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"title": "岁银",
|
"title": "物业费",
|
||||||
"content": "各位业主:\n 上线\"岁银\"功能,其核心规则与使用方式如下,覆盖所有房产通用场景:\n一、岁银的获取方式\n 通过周边合作门店消费,即可获得岁银;\n二、跨房产通用:一份公积金,多房产可用\n 您的个人岁银不绑定单一房产,可通用至您已加入的所有房产。例如:您的个人公积金,既可抵扣A小区的岁银,也可抵扣您加入的B小区的水电费、C小区的燃气费,无需额外转移或申请。\n三、查询与透明化\n 在物业平台\"我的-岁银\"页面,可实时查看:个人公积金余额、所属房产的总额、抵扣记录(含抵扣房产、金额、个人扣除份额),确保每笔使用清晰可溯。"
|
"content": "各位业主:\n 上线\"物业费\"功能,其核心规则与使用方式如下,覆盖所有房产通用场景:\n一、物业费的获取方式\n 通过周边合作门店消费,即可获得物业费;\n二、跨房产通用:一份公积金,多房产可用\n 您的个人物业费不绑定单一房产,可通用至您已加入的所有房产。例如:您的个人公积金,既可抵扣A小区的物业费,也可抵扣您加入的B小区的水电费、C小区的燃气费,无需额外转移或申请。\n三、查询与透明化\n 在物业平台\"我的-物业费\"页面,可实时查看:个人公积金余额、所属房产的总额、抵扣记录(含抵扣房产、金额、个人扣除份额),确保每笔使用清晰可溯。"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
|
|||||||
@ -234,7 +234,7 @@ image {
|
|||||||
|
|
||||||
.active2::after {
|
.active2::after {
|
||||||
content: '';
|
content: '';
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container">
|
<view class="container">
|
||||||
<!-- <view class="empty" v-if="communityList.length == 0">
|
<!-- <view class="empty" v-if="communityList.length == 0">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_newEmpty.png" alt="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_newEmpty.png" alt="" />
|
||||||
<text>当前账户未绑定任何项目房源信息</text>
|
<text>当前账户未绑定任何项目房源信息</text>
|
||||||
<button class="emptyBtn" @click="addCommunity">新增房产绑定</button>
|
<button class="emptyBtn" @click="addCommunity">新增房产绑定</button>
|
||||||
</view> -->
|
</view> -->
|
||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<view class="swiperBox_no1">
|
<view class="swiperBox_no1">
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
<swiper @animationfinish="swipers" autoplay circular>
|
||||||
<image src="https://static.hshuishang.com/community_no_image1.png" mode="aspectFill"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community_no_image1.png" mode="aspectFill"
|
||||||
class="swiperBox_no_img" @click="addCommunity" />
|
class="swiperBox_no_img" @click="addCommunity" />
|
||||||
</swiper>
|
</swiper>
|
||||||
|
|
||||||
@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
<view class="swiperBox_no2">
|
<view class="swiperBox_no2">
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
<swiper @animationfinish="swipers" autoplay circular>
|
||||||
<image src="https://static.hshuishang.com/community_no_image2.png" mode="aspectFill"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community_no_image2.png" mode="aspectFill"
|
||||||
class="swiperBox_no_img" @click="addCommunity" />
|
class="swiperBox_no_img" @click="addCommunity" />
|
||||||
</swiper>
|
</swiper>
|
||||||
</view>
|
</view>
|
||||||
@ -73,7 +73,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="swiperBox1" v-if="bannerList.length > 0">
|
<view class="swiperBox1">
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
<swiper @animationfinish="swipers" autoplay circular>
|
||||||
<swiper-item v-for="(item, index) in bannerList" :key="index" @click="headerServerClick(item)">
|
<swiper-item v-for="(item, index) in bannerList" :key="index" @click="headerServerClick(item)">
|
||||||
<image :src="item.ad_picture" mode="aspectFill" />
|
<image :src="item.ad_picture" mode="aspectFill" />
|
||||||
@ -87,20 +87,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="swiperBox_no1" v-else>
|
<view class="swiperBox2">
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
|
||||||
<image src="https://static.hshuishang.com/community_no_image1.png" mode="aspectFill"
|
|
||||||
class="swiperBox_no_img" />
|
|
||||||
</swiper>
|
|
||||||
|
|
||||||
<view class="dot">
|
|
||||||
<view :class="['dotItem', currentIdx == index ? 'active' : '']" v-for="(item, index) in bannerList"
|
|
||||||
:key="index">
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="swiperBox2" v-if="streamerList.length > 0">
|
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
<swiper @animationfinish="swipers" autoplay circular>
|
||||||
<swiper-item v-for="(item, index) in streamerList" :key="index" @click="headerServerClick(item)">
|
<swiper-item v-for="(item, index) in streamerList" :key="index" @click="headerServerClick(item)">
|
||||||
<image :src="item.ad_picture" mode="aspectFill" class="swiperBox2_img" />
|
<image :src="item.ad_picture" mode="aspectFill" class="swiperBox2_img" />
|
||||||
@ -108,13 +95,6 @@
|
|||||||
</swiper>
|
</swiper>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="swiperBox_no2" v-else>
|
|
||||||
<swiper @animationfinish="swipers" autoplay circular>
|
|
||||||
<image src="https://static.hshuishang.com/community_no_image2.png" mode="aspectFill"
|
|
||||||
class="swiperBox_no_img" />
|
|
||||||
</swiper>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="funcList">
|
<view class="funcList">
|
||||||
<u-grid :col="rowNum" :border="false">
|
<u-grid :col="rowNum" :border="false">
|
||||||
<u-grid-item v-for="(item, index) in functionList" @click="jump(item.mini_program_url)" :key="index">
|
<u-grid-item v-for="(item, index) in functionList" @click="jump(item.mini_program_url)" :key="index">
|
||||||
@ -179,7 +159,7 @@
|
|||||||
</swiper>
|
</swiper>
|
||||||
</view>
|
</view>
|
||||||
<view class="close" @click="closeAds">
|
<view class="close" @click="closeAds">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_close.png">
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_close.png">
|
||||||
</image>
|
</image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -238,43 +218,43 @@ export default {
|
|||||||
functionList: [],
|
functionList: [],
|
||||||
noValFunctionList: [
|
noValFunctionList: [
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction1.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction1.png',
|
||||||
nav_name: "物业介绍",
|
nav_name: "物业介绍",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction2.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction2.png',
|
||||||
nav_name: "物业缴费",
|
nav_name: "物业缴费",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction3.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction3.png',
|
||||||
nav_name: "岁银",
|
nav_name: "物业费",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction1.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction1.png',
|
||||||
nav_name: "物业报修",
|
nav_name: "物业报修",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction4.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction4.png',
|
||||||
nav_name: "便民电话",
|
nav_name: "便民电话",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction5.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction5.png',
|
||||||
nav_name: "人脸门禁",
|
nav_name: "人脸门禁",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction6.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction6.png',
|
||||||
nav_name: "手机开门",
|
nav_name: "手机开门",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction7.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction7.png',
|
||||||
nav_name: "物业活动",
|
nav_name: "物业活动",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction8.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction8.png',
|
||||||
nav_name: "访客邀请",
|
nav_name: "访客邀请",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nav_icon: 'https://static.hshuishang.com/noValFunction10.png',
|
nav_icon: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction10.png',
|
||||||
nav_name: "场地预约",
|
nav_name: "场地预约",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -337,7 +317,7 @@ export default {
|
|||||||
is_published: 1,
|
is_published: 1,
|
||||||
jump_target: 1,
|
jump_target: 1,
|
||||||
mini_program_url: "/packages/community/repairList/index",
|
mini_program_url: "/packages/community/repairList/index",
|
||||||
nav_icon: "https://static.hshuishang.com/noValFunction1.png",
|
nav_icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction1.png",
|
||||||
nav_name: "报事报修",
|
nav_name: "报事报修",
|
||||||
other_appid: "",
|
other_appid: "",
|
||||||
other_path: "",
|
other_path: "",
|
||||||
@ -351,7 +331,7 @@ export default {
|
|||||||
is_published: 1,
|
is_published: 1,
|
||||||
jump_target: 1,
|
jump_target: 1,
|
||||||
mini_program_url: "/packages/community/propertyPayment/index",
|
mini_program_url: "/packages/community/propertyPayment/index",
|
||||||
nav_icon: "https://static.hshuishang.com/noValFunction2.png",
|
nav_icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction2.png",
|
||||||
nav_name: "物业缴费",
|
nav_name: "物业缴费",
|
||||||
other_appid: "",
|
other_appid: "",
|
||||||
other_path: "",
|
other_path: "",
|
||||||
@ -365,8 +345,8 @@ export default {
|
|||||||
is_published: 1,
|
is_published: 1,
|
||||||
jump_target: 1,
|
jump_target: 1,
|
||||||
mini_program_url: "/packages/community/providentFund/index",
|
mini_program_url: "/packages/community/providentFund/index",
|
||||||
nav_icon: "https://static.hshuishang.com/noValFunction3.png",
|
nav_icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/noValFunction3.png",
|
||||||
nav_name: "岁银",
|
nav_name: "物业费",
|
||||||
other_appid: "",
|
other_appid: "",
|
||||||
other_path: "",
|
other_path: "",
|
||||||
sort: 2,
|
sort: 2,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="community-list-container">
|
<view class="community-list-container">
|
||||||
<view class="top">
|
<view class="top">
|
||||||
<image src="https://static.hshuishang.com/communityTopImg.png" mode=""></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/communityTopImg.png" mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="community-list">
|
<view class="community-list">
|
||||||
<view class="community-item-box" v-for="(item, index) in communityList" :key="index">
|
<view class="community-item-box" v-for="(item, index) in communityList" :key="index">
|
||||||
@ -30,7 +30,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="community-address">
|
<view class="community-address">
|
||||||
<image id="local"
|
<image id="local"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_localIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_localIcon.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
<view class="community-address-text">{{ item.addr }}</view>
|
<view class="community-address-text">{{ item.addr }}</view>
|
||||||
</view>
|
</view>
|
||||||
@ -62,7 +62,7 @@ export default {
|
|||||||
hasMoreData: true,
|
hasMoreData: true,
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
tencentMapKey: '55NBZ-MUQYW-EAJRL-YIWPA-ZXCR6-4NBPP', // 腾讯地图API Key
|
tencentMapKey: '55NBZ-MUQYW-EAJRL-YIWPA-ZXCR6-4NBPP', // 腾讯地图API Key
|
||||||
defaultCommunityImage: 'https://static.hshuishang.com/community_no_image3.png' // 默认小区图片
|
defaultCommunityImage: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community_no_image3.png' // 默认小区图片
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
<view class="empty" v-if="communityList.length == 0">
|
<view class="empty" v-if="communityList.length == 0">
|
||||||
<view class="emptyTitle">绑定房源</view>
|
<view class="emptyTitle">绑定房源</view>
|
||||||
<view class="emptyMsg">请绑定房源信息 以便使用其他功能</view>
|
<view class="emptyMsg">请绑定房源信息 以便使用其他功能</view>
|
||||||
<image src="https://static.hshuishang.com/community_no_image3.png" alt="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/community_no_image3.png" alt="" />
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="communityList">
|
<view class="communityList">
|
||||||
@ -30,9 +30,9 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="communityItem_right">
|
<view class="communityItem_right">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_check1.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png"
|
||||||
v-if="item.community_id != currentCommunity.id"></image>
|
v-if="item.community_id != currentCommunity.id"></image>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_check2.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png"
|
||||||
v-if="item.community_id == currentCommunity.id"></image>
|
v-if="item.community_id == currentCommunity.id"></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -91,9 +91,6 @@ export default {
|
|||||||
this.currentCommunity = e
|
this.currentCommunity = e
|
||||||
uni.setStorageSync('changeCommData', { id: e.community_id, name: e.name });
|
uni.setStorageSync('changeCommData', { id: e.community_id, name: e.name });
|
||||||
uni.setStorageSync('currentCommunityAddr', e.addr);
|
uni.setStorageSync('currentCommunityAddr', e.addr);
|
||||||
// 缓存该小区已绑定房产的门牌号(room_name,如「1栋1单元1层103」),供到家服务等下单页缺省填写
|
|
||||||
const owner = (e.room_owner_list && e.room_owner_list.length) ? e.room_owner_list[0] : null
|
|
||||||
uni.setStorageSync('currentRoomNo', owner && owner.room_name ? owner.room_name : '');
|
|
||||||
NavgateTo("1")
|
NavgateTo("1")
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -25,7 +25,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="add" @click="addCar">
|
<view class="add" @click="addCar">
|
||||||
<image src="https://static.hshuishang.com/ConvenServer/addCar.png" mode="widthFix"/>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/ConvenServer/addCar.png" mode="widthFix"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@ -307,7 +307,7 @@ page {
|
|||||||
content: '';
|
content: '';
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<div class="myRealEstate">
|
<div class="myRealEstate">
|
||||||
<div class="myRealEstates">
|
<div class="myRealEstates">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communityNav.png" mode="aspectFill"></image>
|
||||||
<div class="name">滏阳锦苑</div>
|
<div class="name">滏阳锦苑</div>
|
||||||
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
<div class="Visitor">访客身份 点击立即入驻本社区</div>
|
||||||
</div>
|
</div>
|
||||||
@ -25,7 +25,7 @@
|
|||||||
<div class="ConList">
|
<div class="ConList">
|
||||||
<div class="ConItem" v-for="item in 3" @click="desc">
|
<div class="ConItem" v-for="item in 3" @click="desc">
|
||||||
<div class="ConItem_left">
|
<div class="ConItem_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_act2Img.png" mode="aspectFill"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="ConItem_right">
|
<div class="ConItem_right">
|
||||||
<div class="ConItem_right_tit">关于小区停车场治理通告</div>
|
<div class="ConItem_right_tit">关于小区停车场治理通告</div>
|
||||||
|
|||||||
@ -128,7 +128,7 @@ page {
|
|||||||
bottom: -2rpx;
|
bottom: -2rpx;
|
||||||
width: 30rpx;
|
width: 30rpx;
|
||||||
height: 30rpx;
|
height: 30rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_activeIcon.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_activeIcon.png);
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -65,7 +65,7 @@
|
|||||||
<u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple
|
<u-upload :fileList="imgList" name="imgList" @afterRead="afterReadImg" @delete="deletePic" multiple
|
||||||
:maxCount="5">
|
:maxCount="5">
|
||||||
<view class="imgCon">
|
<view class="imgCon">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_imageImg.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_imageImg.png" mode="widthFix"></image>
|
||||||
上传图片
|
上传图片
|
||||||
</view>
|
</view>
|
||||||
</u-upload>
|
</u-upload>
|
||||||
@ -78,7 +78,7 @@
|
|||||||
<u-upload v-if="!videoList.url" :fileList="videoList" @afterRead="afterReadVideo" @delete="deleteVideo" name="videoList"
|
<u-upload v-if="!videoList.url" :fileList="videoList" @afterRead="afterReadVideo" @delete="deleteVideo" name="videoList"
|
||||||
:maxCount="1" accept="video">
|
:maxCount="1" accept="video">
|
||||||
<view class="imgCon">
|
<view class="imgCon">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_videoImg.png" mode="widthFix"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_videoImg.png" mode="widthFix"></image>
|
||||||
上传视频
|
上传视频
|
||||||
</view>
|
</view>
|
||||||
</u-upload>
|
</u-upload>
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
<view class="searchIpt">
|
<view class="searchIpt">
|
||||||
<input type="text" placeholder="社区名称/业主姓名/业主手机" placeholder-style="color: #999999;font-size: 24rpx;"
|
<input type="text" placeholder="社区名称/业主姓名/业主手机" placeholder-style="color: #999999;font-size: 24rpx;"
|
||||||
:value="search" @input="search" />
|
:value="search" @input="search" />
|
||||||
<image class="sear_icon" src="https://static.hshuishang.com/water_filter/dervice/deriveSearch.png"
|
<image class="sear_icon" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/dervice/deriveSearch.png"
|
||||||
mode="" />
|
mode="" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -131,7 +131,7 @@ image {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
right: 8rpx;
|
right: 8rpx;
|
||||||
top: 23rpx;
|
top: 23rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_jfImg.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_jfImg.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<view class="community">
|
<view class="community">
|
||||||
<view class="community_left">
|
<view class="community_left">
|
||||||
<image mode="aspectFill" src="https://static.hshuishang.com/property-img-file/test.png"
|
<image mode="aspectFill" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/test.png"
|
||||||
alt="" />
|
alt="" />
|
||||||
</view>
|
</view>
|
||||||
<view class="community_right" @click="changeShow">
|
<view class="community_right" @click="changeShow">
|
||||||
@ -35,7 +35,7 @@
|
|||||||
<view class="homeMoney" v-if="active == 0">
|
<view class="homeMoney" v-if="active == 0">
|
||||||
<view class="homeMoney_box">
|
<view class="homeMoney_box">
|
||||||
<view class="homeMoney_box_left">
|
<view class="homeMoney_box_left">
|
||||||
<view class="homeMoney_box_left1">岁银</view>
|
<view class="homeMoney_box_left1">物业费</view>
|
||||||
<view class="homeMoney_box_left2">可抵扣账户金额</view>
|
<view class="homeMoney_box_left2">可抵扣账户金额</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="homeMoney_box_right">
|
<view class="homeMoney_box_right">
|
||||||
@ -102,7 +102,7 @@
|
|||||||
<view class="PayTypeItem_left">
|
<view class="PayTypeItem_left">
|
||||||
<view class="PayTypeItem_img">
|
<view class="PayTypeItem_img">
|
||||||
<image mode="aspectFill"
|
<image mode="aspectFill"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_wechat.png" alt="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_wechat.png" alt="" />
|
||||||
</view>
|
</view>
|
||||||
<view class="PayTypeItem_con">
|
<view class="PayTypeItem_con">
|
||||||
<view class="PayTypeItem_con_tit">微信支付</view>
|
<view class="PayTypeItem_con_tit">微信支付</view>
|
||||||
@ -119,10 +119,10 @@
|
|||||||
<view class="PayTypeItem_left">
|
<view class="PayTypeItem_left">
|
||||||
<view class="PayTypeItem_img">
|
<view class="PayTypeItem_img">
|
||||||
<image mode="aspectFill"
|
<image mode="aspectFill"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_homeMoney.png" alt="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_homeMoney.png" alt="" />
|
||||||
</view>
|
</view>
|
||||||
<view class="PayTypeItem_con">
|
<view class="PayTypeItem_con">
|
||||||
<view class="PayTypeItem_con_tit">岁银支付</view>
|
<view class="PayTypeItem_con_tit">物业费支付</view>
|
||||||
<view class="PayTypeItem_con_msg">
|
<view class="PayTypeItem_con_msg">
|
||||||
可用公积金:<span>¥</span>{{ balanceMoney }}
|
可用公积金:<span>¥</span>{{ balanceMoney }}
|
||||||
<view class="PayTypeItem_con_msg2" @click="changeShow2">
|
<view class="PayTypeItem_con_msg2" @click="changeShow2">
|
||||||
@ -174,7 +174,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<view class="row_label">岁银抵扣金额</view>
|
<view class="row_label">物业费抵扣金额</view>
|
||||||
<view class="row_con4">-¥{{ item.property_housing_fund }}</view>
|
<view class="row_con4">-¥{{ item.property_housing_fund }}</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -228,7 +228,7 @@
|
|||||||
<view class="banlenceItem">
|
<view class="banlenceItem">
|
||||||
<view class="banlenceItem_left">
|
<view class="banlenceItem_left">
|
||||||
<image mode="aspectFill"
|
<image mode="aspectFill"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_wechat.png" alt="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_wechat.png" alt="" />
|
||||||
微信支付
|
微信支付
|
||||||
</view>
|
</view>
|
||||||
<view class="banlenceItem_right">
|
<view class="banlenceItem_right">
|
||||||
@ -239,8 +239,8 @@
|
|||||||
<view class="banlenceItem">
|
<view class="banlenceItem">
|
||||||
<view class="banlenceItem_left">
|
<view class="banlenceItem_left">
|
||||||
<image mode="aspectFill"
|
<image mode="aspectFill"
|
||||||
src="https://static.hshuishang.com/property-img-file/com_homeMoney.png" alt="" />
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_homeMoney.png" alt="" />
|
||||||
岁银支付
|
物业费支付
|
||||||
</view>
|
</view>
|
||||||
<view class="banlenceItem_right">
|
<view class="banlenceItem_right">
|
||||||
<span>¥</span>{{ balanceMoney > currentMoney ? currentMoney : balanceMoney }}
|
<span>¥</span>{{ balanceMoney > currentMoney ? currentMoney : balanceMoney }}
|
||||||
@ -249,7 +249,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="btn" @click="createPay">
|
<view class="btn" @click="createPay">
|
||||||
岁银+微信支付 <span>¥</span>{{ currentMoney }}
|
物业费+微信支付 <span>¥</span>{{ currentMoney }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -611,9 +611,9 @@ export default {
|
|||||||
if (this.payType == 1) {
|
if (this.payType == 1) {
|
||||||
name_mini = "微信";
|
name_mini = "微信";
|
||||||
} else if (this.payType == 2) {
|
} else if (this.payType == 2) {
|
||||||
name_mini = "岁银";
|
name_mini = "物业费";
|
||||||
} else {
|
} else {
|
||||||
name_mini = "微信 + 岁银";
|
name_mini = "微信 + 物业费";
|
||||||
}
|
}
|
||||||
if (!this.currentMoney) {
|
if (!this.currentMoney) {
|
||||||
return uni.showToast({
|
return uni.showToast({
|
||||||
@ -674,7 +674,7 @@ export default {
|
|||||||
// 组合支付
|
// 组合支付
|
||||||
if (isComboPay && (payParams.money != 0.00 || payParams.money != 0)) {
|
if (isComboPay && (payParams.money != 0.00 || payParams.money != 0)) {
|
||||||
this.payType = 3;
|
this.payType = 3;
|
||||||
name_mini = "微信 + 岁银";
|
name_mini = "微信 + 物业费";
|
||||||
}
|
}
|
||||||
|
|
||||||
payParams.name_mini = name_mini;
|
payParams.name_mini = name_mini;
|
||||||
@ -682,7 +682,7 @@ export default {
|
|||||||
if (this.payType == 2) {
|
if (this.payType == 2) {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
content: '确定使用岁银支付?',
|
content: '确定使用物业费支付?',
|
||||||
success: async (res) => {
|
success: async (res) => {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
await request(apiArr.createPayOrder, "POST", payParams).then((res) => {
|
await request(apiArr.createPayOrder, "POST", payParams).then((res) => {
|
||||||
@ -799,7 +799,7 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
//岁银详情
|
//物业费详情
|
||||||
more(item) {
|
more(item) {
|
||||||
NavgateTo(`../providentFund/index?item=${JSON.stringify(item)}`);
|
NavgateTo(`../providentFund/index?item=${JSON.stringify(item)}`);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -3,7 +3,7 @@ page {
|
|||||||
}
|
}
|
||||||
.container {
|
.container {
|
||||||
.container_body {
|
.container_body {
|
||||||
background: url("https://static.hshuishang.com/property-img-file/community_providentFund_Group_1523.png") no-repeat;
|
background: url("https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Group_1523.png") no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
}
|
}
|
||||||
.title {
|
.title {
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
:autoBack="true"
|
:autoBack="true"
|
||||||
/>
|
/>
|
||||||
<view class="container_body" :style="{ paddingTop: top + 'px' }">
|
<view class="container_body" :style="{ paddingTop: top + 'px' }">
|
||||||
<view class="title">岁银</view>
|
<view class="title">物业费</view>
|
||||||
<view class="title_bottom">
|
<view class="title_bottom">
|
||||||
<view>¥{{ getTotal(list.owners) }}</view>
|
<view>¥{{ getTotal(list.owners) }}</view>
|
||||||
<u-icon
|
<u-icon
|
||||||
@ -49,7 +49,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="item">
|
<view class="item">
|
||||||
<view class="label fix">
|
<view class="label fix">
|
||||||
<text>岁银总余额</text>
|
<text>物业费总余额</text>
|
||||||
<u-icon
|
<u-icon
|
||||||
name="info-circle-fill"
|
name="info-circle-fill"
|
||||||
size="30rpx"
|
size="30rpx"
|
||||||
@ -90,13 +90,13 @@
|
|||||||
<image
|
<image
|
||||||
v-if="item.checked"
|
v-if="item.checked"
|
||||||
class="pic"
|
class="pic"
|
||||||
src="https://static.hshuishang.com/property-img-file/community_providentFund_Group_1444.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Group_1444.png"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
/>
|
/>
|
||||||
<image
|
<image
|
||||||
v-else
|
v-else
|
||||||
class="pic"
|
class="pic"
|
||||||
src="https://static.hshuishang.com/property-img-file/community_providentFund_Ellipse_160.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Ellipse_160.png"
|
||||||
mode="scaleToFill"
|
mode="scaleToFill"
|
||||||
/>
|
/>
|
||||||
</view>
|
</view>
|
||||||
@ -124,8 +124,8 @@ export default {
|
|||||||
moeny: "0.00",
|
moeny: "0.00",
|
||||||
show: false,
|
show: false,
|
||||||
ownerDesc:
|
ownerDesc:
|
||||||
"本房产的岁银为该房产的所有成员岁银总和。无需经过成员同意便可用于本房产的岁银抵扣,一旦成功抵扣,成员所拥有的岁银将自动进行扣除。",
|
"本房产的物业费为该房产的所有成员物业费总和。无需经过成员同意便可用于本房产的物业费抵扣,一旦成功抵扣,成员所拥有的物业费将自动进行扣除。",
|
||||||
desc: "岁银可通用至您加入的所有房产,任一房产的物业相关费用均可用该岁银抵扣。",
|
desc: "物业费可通用至您加入的所有房产,任一房产的物业相关费用均可用该物业费抵扣。",
|
||||||
defaultName: "",
|
defaultName: "",
|
||||||
list: [],
|
list: [],
|
||||||
houseList: [],
|
houseList: [],
|
||||||
|
|||||||
@ -61,7 +61,7 @@
|
|||||||
content: '';
|
content: '';
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
|
|||||||
@ -71,7 +71,7 @@
|
|||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="list.length == 0" class="empty">
|
<view v-if="list.length == 0" class="empty">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_nearbyList_empty.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_nearbyList_empty.png"
|
||||||
mode="aspectFill"></image>
|
mode="aspectFill"></image>
|
||||||
暂无数据
|
暂无数据
|
||||||
</view>
|
</view>
|
||||||
@ -188,11 +188,6 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
onShow() {
|
|
||||||
this.init();
|
|
||||||
this.getTabsList();
|
|
||||||
},
|
|
||||||
|
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
const meun = menuButtonInfo();
|
const meun = menuButtonInfo();
|
||||||
this.top = meun.top;
|
this.top = meun.top;
|
||||||
|
|||||||
@ -88,17 +88,17 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tabItem1 {
|
.tabItem1 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg1.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg1.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabItem2 {
|
.tabItem2 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg2.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg2.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabItem3 {
|
.tabItem3 {
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_tabBg3.png);
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_tabBg3.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -75,128 +75,128 @@ export default {
|
|||||||
return {
|
return {
|
||||||
functionList: [
|
functionList: [
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon1.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon1.png",
|
||||||
name: "业主入驻",
|
name: "业主入驻",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon2.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon2.png",
|
||||||
name: "我的房产",
|
name: "我的房产",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon3.png",
|
||||||
name: "生活缴费",
|
name: "生活缴费",
|
||||||
url: "weixin://dl/business/?t=WvQ1ZJv0J5Z"
|
url: "weixin://dl/business/?t=WvQ1ZJv0J5Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon4.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon4.png",
|
||||||
name: "便民服务",
|
name: "便民服务",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon5.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon5.png",
|
||||||
name: "岁银",
|
name: "物业费",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon6.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon6.png",
|
||||||
name: "社区互动",
|
name: "社区互动",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon7.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon7.png",
|
||||||
name: "岁银",
|
name: "物业费",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon8.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon8.png",
|
||||||
name: "物业服务",
|
name: "物业服务",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon9.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon9.png",
|
||||||
name: "报事报修",
|
name: "报事报修",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon10.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon10.png",
|
||||||
name: "物业缴费",
|
name: "物业缴费",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon11.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon11.png",
|
||||||
name: "纠纷调解",
|
name: "纠纷调解",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_serverIcon12.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_serverIcon12.png",
|
||||||
name: "社区管家",
|
name: "社区管家",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
localList: [
|
localList: [
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_localIcon1.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_localIcon1.png",
|
||||||
name: "美食",
|
name: "美食",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_localIcon2.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_localIcon2.png",
|
||||||
name: "家教",
|
name: "家教",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_localIcon3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_localIcon3.png",
|
||||||
name: "超市",
|
name: "超市",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_localIcon4.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_localIcon4.png",
|
||||||
name: "健身",
|
name: "健身",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
shopList: [
|
shopList: [
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_shopIcon1.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shopIcon1.png",
|
||||||
name: "电商购物",
|
name: "电商购物",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_shopIcon2.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shopIcon2.png",
|
||||||
name: "社区团购",
|
name: "社区团购",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_shopIcon3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shopIcon3.png",
|
||||||
name: "本地优选",
|
name: "本地优选",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_shopIcon4.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_shopIcon4.png",
|
||||||
name: "社区拼团",
|
name: "社区拼团",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
cardList: [
|
cardList: [
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_cardIcon1.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_cardIcon1.png",
|
||||||
name: "我的积分",
|
name: "我的积分",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_cardIcon2.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_cardIcon2.png",
|
||||||
name: "积分兑换",
|
name: "积分兑换",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_cardIcon3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_cardIcon3.png",
|
||||||
name: "我的优惠卡",
|
name: "我的优惠卡",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_cardIcon4.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_cardIcon4.png",
|
||||||
name: "我的会员卡",
|
name: "我的会员卡",
|
||||||
url: ""
|
url: ""
|
||||||
},
|
},
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
<view class="swiper">
|
<view class="swiper">
|
||||||
<swiper>
|
<swiper>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/door_img.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_img.png" mode="" />
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
</view>
|
</view>
|
||||||
@ -29,25 +29,25 @@
|
|||||||
<view class="serviceTagItem" @click="jump">
|
<view class="serviceTagItem" @click="jump">
|
||||||
<view class="serviceTagItem_name">家政保洁</view>
|
<view class="serviceTagItem_name">家政保洁</view>
|
||||||
<view class="serviceTagItem_img1">
|
<view class="serviceTagItem_img1">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/hot1.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot1.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="serviceTagItem item2" @click="jump">
|
<view class="serviceTagItem item2" @click="jump">
|
||||||
<view class="serviceTagItem_name">专业保姆</view>
|
<view class="serviceTagItem_name">专业保姆</view>
|
||||||
<view class="serviceTagItem_img2">
|
<view class="serviceTagItem_img2">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/hot2.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot2.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="serviceTagItem item3" @click="jump">
|
<view class="serviceTagItem item3" @click="jump">
|
||||||
<view class="serviceTagItem_name">家电维修</view>
|
<view class="serviceTagItem_name">家电维修</view>
|
||||||
<view class="serviceTagItem_img3">
|
<view class="serviceTagItem_img3">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/hot3.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot3.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="serviceTagItem item4" @click="jump">
|
<view class="serviceTagItem item4" @click="jump">
|
||||||
<view class="serviceTagItem_name">搬家拉货</view>
|
<view class="serviceTagItem_name">搬家拉货</view>
|
||||||
<view class="serviceTagItem_img4">
|
<view class="serviceTagItem_img4">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/hot4.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/hot4.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
<view class="item_tit_left">{{item.cate_name}}</view>
|
<view class="item_tit_left">{{item.cate_name}}</view>
|
||||||
<view class="item_tit_right" @click="jump(item.cate_id)">
|
<view class="item_tit_right" @click="jump(item.cate_id)">
|
||||||
更多
|
更多
|
||||||
<image src="https://static.hshuishang.com/water_filter/filter_more.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item_goodsList">
|
<view class="item_goodsList">
|
||||||
@ -123,55 +123,55 @@
|
|||||||
return {
|
return {
|
||||||
tabList:[{
|
tabList:[{
|
||||||
name:"服务中心",
|
name:"服务中心",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon1.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon1.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"家政保洁",
|
name:"家政保洁",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon2.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon2.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"衣物洗护",
|
name:"衣物洗护",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon3.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon3.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"家电维修",
|
name:"家电维修",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon4.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon4.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"跑腿服务",
|
name:"跑腿服务",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon5.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon5.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"养车用车",
|
name:"养车用车",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon6.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon6.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"保姆月嫂",
|
name:"保姆月嫂",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon7.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon7.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"家电清洗",
|
name:"家电清洗",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon8.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon8.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"搬家拉货",
|
name:"搬家拉货",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon9.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon9.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:"家装维修",
|
name:"家装维修",
|
||||||
img:'https://static.hshuishang.com/doorToDoor/door_icon10.png',
|
img:'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/door_icon10.png',
|
||||||
url:"../ServiceMore/ServiceMore",
|
url:"../ServiceMore/ServiceMore",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
@ -4,29 +4,29 @@
|
|||||||
<view class="tit">请填写预约信息</view>
|
<view class="tit">请填写预约信息</view>
|
||||||
<view class="row none" v-if="isreal == 1">
|
<view class="row none" v-if="isreal == 1">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon1.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon1.png" mode="" />
|
||||||
请选择上门时间
|
请选择上门时间
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="row_con" @click="changeShow">
|
<view class="row_con" @click="changeShow">
|
||||||
{{time}}
|
{{time}}
|
||||||
<image src="https://static.hshuishang.com/water_filter/filter_more.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="row none" v-if="isreal == 2">
|
<view class="row none" v-if="isreal == 2">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon2.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon2.png" mode="" />
|
||||||
请选择服务时间
|
请选择服务时间
|
||||||
</view>
|
</view>
|
||||||
<view class="row_con" @click="changeShow2">
|
<view class="row_con" @click="changeShow2">
|
||||||
{{serTime}}
|
{{serTime}}
|
||||||
<image src="https://static.hshuishang.com/water_filter/filter_more.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="gray"></view>
|
<view class="gray"></view>
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon3.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon3.png" mode="" />
|
||||||
联系人姓名
|
联系人姓名
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -44,7 +44,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon4.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon4.png" mode="" />
|
||||||
联系人电话
|
联系人电话
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -62,18 +62,18 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="row">
|
<view class="row">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon5.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon5.png" mode="" />
|
||||||
请选择服务地址
|
请选择服务地址
|
||||||
</view>
|
</view>
|
||||||
<view class="row_con" @click="changeArea">
|
<view class="row_con" @click="changeArea">
|
||||||
|
|
||||||
{{citys}}
|
{{citys}}
|
||||||
<image src="https://static.hshuishang.com/water_filter/filter_more.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/water_filter/filter_more.png" mode="" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="row none">
|
<view class="row none">
|
||||||
<view class="row_tit">
|
<view class="row_tit">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon5.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon5.png" mode="" />
|
||||||
详细地址
|
详细地址
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -103,7 +103,7 @@
|
|||||||
<view class="gray"></view>
|
<view class="gray"></view>
|
||||||
<view class="row none">
|
<view class="row none">
|
||||||
<view class="row_tit2">
|
<view class="row_tit2">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/reser_icon6.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/reser_icon6.png" mode="" />
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
placeholder="给商家捎句话"
|
placeholder="给商家捎句话"
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<view class="item_left_msg_tit">
|
<view class="item_left_msg_tit">
|
||||||
{{item.title}}
|
{{item.title}}
|
||||||
<view class="phone" @click="call">
|
<view class="phone" @click="call">
|
||||||
<image src="https://static.hshuishang.com/doorToDoor/phone.png" mode="widthFix" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/doorToDoor/phone.png" mode="widthFix" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="item_left_msg_time">服务时间:{{item.biz_time}}</view>
|
<view class="item_left_msg_time">服务时间:{{item.biz_time}}</view>
|
||||||
|
|||||||
@ -8,22 +8,22 @@
|
|||||||
<view class="msg">
|
<view class="msg">
|
||||||
<view class="msg_left">
|
<view class="msg_left">
|
||||||
<view class="msg_left_1">
|
<view class="msg_left_1">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_time.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_time.png" mode="" />
|
||||||
{{info.opening_time}}-{{info.closing_time}}
|
{{info.opening_time}}-{{info.closing_time}}
|
||||||
<view>{{info.is_open === 1 ? '营业' :'停业'}}</view>
|
<view>{{info.is_open === 1 ? '营业' :'停业'}}</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_left_2">
|
<view class="msg_left_2">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_add.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="" />
|
||||||
{{info.addr}}
|
{{info.addr}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_right">
|
<view class="msg_right">
|
||||||
<view class="msg_right1" @click="call">
|
<view class="msg_right1" @click="call">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_phone.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_phone.png" mode="" />
|
||||||
电话
|
电话
|
||||||
</view>
|
</view>
|
||||||
<view class="msg_right2" @click="handleOptionClick">
|
<view class="msg_right2" @click="handleOptionClick">
|
||||||
<image src="https://static.hshuishang.com/kitchen/kitchen_add.png" mode="" />
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/kitchen/kitchen_add.png" mode="" />
|
||||||
导航
|
导航
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@ -1,279 +0,0 @@
|
|||||||
/* addMer/index.css */
|
|
||||||
page {
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.establish-acceptor-container {
|
|
||||||
padding: 0 30rpx;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.acceptor-form {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
padding: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-section {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
padding-bottom: 12rpx;
|
|
||||||
border-bottom: 1px solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-item {
|
|
||||||
margin-bottom: 32rpx;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
display: block;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 12rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label.required::after {
|
|
||||||
content: '*';
|
|
||||||
color: #e64340;
|
|
||||||
margin-left: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input {
|
|
||||||
width: 100%;
|
|
||||||
height: 88rpx;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #007aff;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input::placeholder {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗样式 */
|
|
||||||
.popup {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-content {
|
|
||||||
width: 80%;
|
|
||||||
max-height: 70vh;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-title {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-list {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
max-height: 50vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
font-size: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item:active {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-footer {
|
|
||||||
padding: 20rpx;
|
|
||||||
border-top: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-cancel-btn {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗选择器样式 */
|
|
||||||
.popup-select {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
height: 88rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 附件上传样式 */
|
|
||||||
.attachment-section {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachment-item {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 24rpx;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-info {
|
|
||||||
margin-top: 16rpx;
|
|
||||||
padding: 16rpx;
|
|
||||||
background-color: #e8f4ff;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: #007aff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn {
|
|
||||||
padding: 0rpx 20rpx;
|
|
||||||
background-color: #e64340;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
margin-right: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn:active {
|
|
||||||
background-color: #c21f1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #666;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 提交按钮样式 */
|
|
||||||
.submit-section {
|
|
||||||
margin-top: 40rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn,
|
|
||||||
.submit-btn1 {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 4rpx 12rpx rgba(0, 122, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
background-color: #007aff;
|
|
||||||
margin-left: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn1 {
|
|
||||||
background-color: #ff4016;
|
|
||||||
margin-right: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
transform: scale(0.98);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:disabled {
|
|
||||||
background-color: #b8d5ff;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输入框错误状态 */
|
|
||||||
.form-input.error {
|
|
||||||
border-color: #e64340;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 滚动条样式 */
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 8rpx;
|
|
||||||
height: 8rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: #f1f1f1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: #c1c1c1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #a8a8a8;
|
|
||||||
}
|
|
||||||
@ -1,789 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="establish-acceptor-container">
|
|
||||||
<form class="acceptor-form" @submit.prevent="submitForm">
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<!-- <view class="form-item">
|
|
||||||
<label class="form-label required">商户ID</label>
|
|
||||||
<input type="number" class="form-input" v-model.number="formData.mch_id" placeholder="请输入商户ID"
|
|
||||||
required>
|
|
||||||
</view> -->
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户注册名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merRegName"
|
|
||||||
placeholder="请输入商户注册名称,长度不小于4个汉字,8~40字符" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户地区代码</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merRegDistCode"
|
|
||||||
placeholder="请输入商户地区代码" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户详细地址</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merRegAddr"
|
|
||||||
placeholder="请输入去除省、市、区后的详细地址" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户MCC编号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.mccCode"
|
|
||||||
placeholder="请输入商户MCC编号" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merBlisName"
|
|
||||||
placeholder="请输入营业执照名称,小微商户可不传">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merBlis" placeholder="请输入营业执照号,小微商户可不传">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照开始日期</label>
|
|
||||||
<input type="date" class="form-input" v-model="formData.merBlisStDt" placeholder="请选择营业执照开始日期">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照有效期</label>
|
|
||||||
<input type="date" class="form-input" v-model="formData.merBlisExpDt" placeholder="请选择营业执照有效期">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户经营内容</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merBusiContent"
|
|
||||||
placeholder="请输入商户经营内容" required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 法人信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户法人姓名</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.larName" placeholder="请输入商户法人姓名" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">法人证件类型</label>
|
|
||||||
<view class="popup-select" @click="showIdTypePopup = true">
|
|
||||||
<span>{{ selectedIdTypeLabel || '请选择法人证件类型' }}</span>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">法人身份证号码</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.larIdcard" placeholder="请输入法人身份证号码"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">法人身份证开始日期</label>
|
|
||||||
<input type="date" class="form-input" v-model="formData.larIdcardStDt" placeholder="请选择法人身份证开始日期"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">法人身份证有效期</label>
|
|
||||||
<input type="date" class="form-input" v-model="formData.larIdcardExpDt" placeholder="请选择法人身份证有效期"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 联系人信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户联系人姓名</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merContactName" placeholder="请输入商户联系人姓名"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">商户联系人手机号码</label>
|
|
||||||
<input type="number" class="form-input" v-model="formData.merContactMobile"
|
|
||||||
placeholder="请输入商户联系人手机号码" required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 结算账户信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户开户行号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.openningBankCode" placeholder="请输入结算账户开户行号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户开户行名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.openningBankName" placeholder="请输入结算账户开户行名称"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户清算行号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.clearingBankCode" placeholder="请输入结算账户清算行号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户账号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctNo" placeholder="请输入结算账户账号" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctName" placeholder="请输入结算账户名称" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">结算账户性质</label>
|
|
||||||
<view class="popup-select" @click="showAcctTypePopup = true">
|
|
||||||
<span>{{ selectedAcctTypeLabel || '请选择结算账户性质' }}</span>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 费率信息 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">费率类型</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.feeData[0].feeRateTypeCode" placeholder="请输入费率类型" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">费率类型名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.feeData[0].feeRateTypeName" placeholder="请输入费率类型名称" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">手续费率(%)</label>
|
|
||||||
<input type="number" class="form-input" v-model="formData.feeData[0].feeRatePct" placeholder="请输入手续费率" step="0.01" required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 附件上传 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<h3 class="section-title">附件上传(可选)</h3>
|
|
||||||
<view class="attachment-section">
|
|
||||||
<view class="attachment-item" v-for="(file, index) in formData.fileData" :key="index">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件类型</label>
|
|
||||||
<view class="popup-select" @click="showFileAttachTypePopup = index">
|
|
||||||
<span>{{ getAttachTypeLabel(file.attType) || '请选择附件类型' }}</span>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<button class="upload-btn" @click="uploadFile(index)">上传文件</button>
|
|
||||||
<view v-if="file.attFileId" class="file-info">
|
|
||||||
<span>{{ file.attachName || '已上传文件' }}</span>
|
|
||||||
<button class="delete-btn" @click="removeFile(index)">删除</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<button class="add-attachment-btn" @click="addFile">添加附件</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 提交按钮 -->
|
|
||||||
<view class="form-section submit-section">
|
|
||||||
<button type="button" class="submit-btn1" @click="ecQuery">结果查询</button>
|
|
||||||
<button type="submit" class="submit-btn" @click="submitForm">提交申请</button>
|
|
||||||
</view>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- 地区代码弹窗 -->
|
|
||||||
<view class="popup" v-if="showAreaPopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择商户地区代码</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="area in areaOptions" :key="area.value" @click="selectArea(area)">
|
|
||||||
{{ area.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showAreaPopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- MCC编号弹窗 -->
|
|
||||||
<view class="popup" v-if="showMccPopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择商户MCC编号</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="mcc in mccOptions" :key="mcc.value" @click="selectMcc(mcc)">
|
|
||||||
{{ mcc.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showMccPopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 经营内容弹窗 -->
|
|
||||||
<view class="popup" v-if="showBusiContentPopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择商户经营内容</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="content in busiContentOptions" :key="content.value"
|
|
||||||
@click="selectBusiContent(content)">
|
|
||||||
{{ content.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showBusiContentPopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 法人证件类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showIdTypePopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择法人证件类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in idTypeOptions" :key="type.value"
|
|
||||||
@click="selectIdType(type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showIdTypePopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 结算账户性质弹窗 -->
|
|
||||||
<view class="popup" v-if="showAcctTypePopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择结算账户性质</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in acctTypeOptions" :key="type.value"
|
|
||||||
@click="selectAcctType(type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showAcctTypePopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 文件附件类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showFileAttachTypePopup >= 0">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择附件类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in fileAttachTypeOptions" :key="type.value"
|
|
||||||
@click="selectFileAttachType(showFileAttachTypePopup, type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showFileAttachTypePopup = -1">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { picUrl, menuButtonInfo, request, NavgateTo, RequsetUrl } from "../../../utils";
|
|
||||||
import { apiArr } from "../../../api/contract";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 表单数据
|
|
||||||
formData: {
|
|
||||||
mch_id: uni.getStorageSync('mchId'), // 商户ID
|
|
||||||
merRegName: '', // 商户注册名称
|
|
||||||
merRegDistCode: '', // 商户地区代码
|
|
||||||
merRegAddr: '', // 商户详细地址
|
|
||||||
mccCode: '', // 商户MCC编号
|
|
||||||
merBlisName: '', // 营业执照名称
|
|
||||||
merBlis: '', // 营业执照号
|
|
||||||
merBlisStDt: '', // 营业执照开始日期
|
|
||||||
merBlisExpDt: '', // 营业执照有效期
|
|
||||||
merBusiContent: '', // 商户经营内容
|
|
||||||
larName: '', // 商户法人姓名
|
|
||||||
larIdType: '', // 法人证件类型
|
|
||||||
larIdcard: '', // 法人身份证号码
|
|
||||||
larIdcardStDt: '', // 法人身份证开始日期
|
|
||||||
larIdcardExpDt: '', // 法人身份证有效期
|
|
||||||
merContactMobile: '', // 商户联系人手机号码
|
|
||||||
merContactName: '', // 商户联系人姓名
|
|
||||||
openningBankCode: '', // 结算账户开户行号
|
|
||||||
openningBankName: '', // 结算账户开户行名称
|
|
||||||
clearingBankCode: '', // 结算账户清算行号
|
|
||||||
acctNo: '', // 结算账户账号
|
|
||||||
acctName: '', // 结算账户名称
|
|
||||||
acctTypeCode: '', // 结算账户性质
|
|
||||||
feeData: [
|
|
||||||
{
|
|
||||||
feeRateTypeCode: "",
|
|
||||||
feeRateTypeName: "",
|
|
||||||
feeRatePct: ""
|
|
||||||
}
|
|
||||||
], // 费率数据
|
|
||||||
fileData: [
|
|
||||||
{
|
|
||||||
attType: '',
|
|
||||||
attFileId: '',
|
|
||||||
attachName: ''
|
|
||||||
}
|
|
||||||
] // 文件数据(可选)
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹窗控制
|
|
||||||
showAreaPopup: false,
|
|
||||||
showMccPopup: false,
|
|
||||||
showBusiContentPopup: false,
|
|
||||||
showIdTypePopup: false,
|
|
||||||
showAcctTypePopup: false,
|
|
||||||
showFileAttachTypePopup: -1,
|
|
||||||
|
|
||||||
// 选择项标签
|
|
||||||
selectedAreaLabel: '',
|
|
||||||
selectedMccLabel: '',
|
|
||||||
selectedBusiContentLabel: '',
|
|
||||||
selectedIdTypeLabel: '',
|
|
||||||
selectedAcctTypeLabel: '',
|
|
||||||
|
|
||||||
// 选项数据(示例数据,实际应从API获取)
|
|
||||||
areaOptions: [
|
|
||||||
{ value: '110101', label: '北京市东城区' },
|
|
||||||
{ value: '110102', label: '北京市西城区' },
|
|
||||||
{ value: '310101', label: '上海市黄浦区' },
|
|
||||||
{ value: '310102', label: '上海市黄浦区' }
|
|
||||||
],
|
|
||||||
|
|
||||||
mccOptions: [
|
|
||||||
{ value: '5411', label: '大型超市' },
|
|
||||||
{ value: '5999', label: '其他零售商户' },
|
|
||||||
{ value: '7011', label: '住宿服务' },
|
|
||||||
{ value: '7221', label: '美容美发服务' }
|
|
||||||
],
|
|
||||||
|
|
||||||
busiContentOptions: [
|
|
||||||
{ value: 'GROCERY', label: '食品饮料' },
|
|
||||||
{ value: 'CLOTHING', label: '服装鞋帽' },
|
|
||||||
{ value: 'SERVICE', label: '生活服务' },
|
|
||||||
{ value: 'ENTERTAINMENT', label: '娱乐休闲' }
|
|
||||||
],
|
|
||||||
|
|
||||||
idTypeOptions: [
|
|
||||||
{ value: '01', label: '身份证' },
|
|
||||||
{ value: '02', label: '护照' },
|
|
||||||
{ value: '03', label: '港澳通行证' },
|
|
||||||
{ value: '04', label: '台胞证' },
|
|
||||||
{ value: '10', label: '外国人永久居留身份证' },
|
|
||||||
{ value: '11', label: '港澳居民居住证' },
|
|
||||||
{ value: '12', label: '台湾居民居住证' },
|
|
||||||
{ value: '13', label: '执行事务合伙人' },
|
|
||||||
{ value: '99', label: '其它证件' },
|
|
||||||
],
|
|
||||||
|
|
||||||
acctTypeOptions: [
|
|
||||||
{ value: '57', label: '对公' },
|
|
||||||
{ value: '58', label: '对私' }
|
|
||||||
],
|
|
||||||
|
|
||||||
fileAttachTypeOptions: [
|
|
||||||
{ value: 'FR_ID_CARD_FRONT', label: '法人身份证正面' },
|
|
||||||
{ value: 'FR_ID_CARD_BEHIND', label: '法人身份证反面' },
|
|
||||||
{ value: 'ID_CARD_FRONT', label: '结算人身份证正面' },
|
|
||||||
{ value: 'ID_CARD_BEHIND', label: '结算人身份证反面' },
|
|
||||||
{ value: 'BANK_CARD', label: '银行卡' },
|
|
||||||
{ value: 'BUSINESS_LICENCE', label: '营业执照' },
|
|
||||||
{ value: 'MERCHANT_PHOTO', label: '商户门头照' },
|
|
||||||
{ value: 'SHOPINNER', label: '商铺内部照片' },
|
|
||||||
{ value: 'XY', label: '线下纸质协议' },
|
|
||||||
{ value: 'NETWORK_XY', label: '电子协议' },
|
|
||||||
{ value: 'HT', label: '租赁合同' },
|
|
||||||
{ value: 'COOPERATION_QUALIFICATION_PROOF', label: '合作资质证明' },
|
|
||||||
{ value: 'FOOD_QUALIFICATION_PROOF', label: '食品经营相关资质' },
|
|
||||||
{ value: 'NO_LEGAL_PERSON_SETT_AUTH_LETTER', label: '非法人结算授权书' },
|
|
||||||
{ value: 'SPLIT_ENTRUST_FILE', label: '结算授权委托书' },
|
|
||||||
{ value: 'RENTAL_AGREEMENT', label: '集市方与场地方间的租赁协议' },
|
|
||||||
{ value: 'SPLIT_COOPERATION_FILE', label: '集市方与摊主间的合作协议' },
|
|
||||||
{ value: 'OTHERS', label: '其他' }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
// 添加附件
|
|
||||||
addFile() {
|
|
||||||
this.formData.fileData.push({
|
|
||||||
attType: '',
|
|
||||||
attFileId: '',
|
|
||||||
attachName: ''
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择商户地区代码
|
|
||||||
selectArea(area) {
|
|
||||||
this.formData.merRegDistCode = area.value;
|
|
||||||
this.selectedAreaLabel = area.label;
|
|
||||||
this.showAreaPopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择商户MCC编号
|
|
||||||
selectMcc(mcc) {
|
|
||||||
this.formData.mccCode = mcc.value;
|
|
||||||
this.selectedMccLabel = mcc.label;
|
|
||||||
this.showMccPopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择商户经营内容
|
|
||||||
selectBusiContent(content) {
|
|
||||||
this.formData.merBusiContent = content.value;
|
|
||||||
this.selectedBusiContentLabel = content.label;
|
|
||||||
this.showBusiContentPopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择法人证件类型
|
|
||||||
selectIdType(type) {
|
|
||||||
this.formData.larIdType = type.value;
|
|
||||||
this.selectedIdTypeLabel = type.label;
|
|
||||||
this.showIdTypePopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择结算账户性质
|
|
||||||
selectAcctType(type) {
|
|
||||||
this.formData.acctTypeCode = type.value;
|
|
||||||
this.selectedAcctTypeLabel = type.label;
|
|
||||||
this.showAcctTypePopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择文件附件类型
|
|
||||||
selectFileAttachType(index, type) {
|
|
||||||
this.formData.fileData[index].attType = type.value;
|
|
||||||
this.showFileAttachTypePopup = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取附件类型标签
|
|
||||||
getAttachTypeLabel(typeValue) {
|
|
||||||
if (!typeValue) return '';
|
|
||||||
const option = this.fileAttachTypeOptions.find(type => type.value === typeValue);
|
|
||||||
return option ? option.label : '';
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除附件
|
|
||||||
removeFile(index) {
|
|
||||||
this.formData.fileData.splice(index, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传文件
|
|
||||||
uploadFile(index) {
|
|
||||||
const fileData = this.formData.fileData[index];
|
|
||||||
|
|
||||||
// 检查是否选择了附件类型
|
|
||||||
if (!fileData.attType) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先选择附件类型',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 调用 uni.chooseMessageFile API 选择文件
|
|
||||||
uni.chooseMessageFile({
|
|
||||||
count: 1,
|
|
||||||
type: 'file',
|
|
||||||
extension: ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png'], // 支持的文件类型
|
|
||||||
success: (res) => {
|
|
||||||
const tempFile = res.tempFiles[0];
|
|
||||||
console.log("选择的文件:", tempFile);
|
|
||||||
|
|
||||||
// 设置文件名
|
|
||||||
fileData.attachName = tempFile.name;
|
|
||||||
|
|
||||||
// 显示上传中提示
|
|
||||||
uni.showLoading({
|
|
||||||
title: '上传中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 直接使用uni.uploadFile上传文件
|
|
||||||
uni.uploadFile({
|
|
||||||
url: RequsetUrl + apiArr.upload, // 完整的上传接口URL
|
|
||||||
filePath: tempFile.path, // 文件路径
|
|
||||||
name: 'file', // 文件对应的key,根据后端要求设置
|
|
||||||
formData: {
|
|
||||||
attType: fileData.attType // 附件类型
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
Authorization: uni.getStorageSync("ctoken") // 添加认证信息
|
|
||||||
},
|
|
||||||
success: (uploadRes) => {
|
|
||||||
// 解析响应数据
|
|
||||||
const res = JSON.parse(uploadRes.data);
|
|
||||||
|
|
||||||
// 更新附件信息
|
|
||||||
fileData.attFileId = res.data.respData.attFileId;
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (error) => {
|
|
||||||
console.error('文件上传失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
complete: () => {
|
|
||||||
uni.hideLoading(); // 隐藏加载提示
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('选择文件失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '选择文件失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单验证
|
|
||||||
validateForm() {
|
|
||||||
const { formData } = this;
|
|
||||||
|
|
||||||
// 验证必需字段
|
|
||||||
if (!formData.mch_id) {
|
|
||||||
uni.showToast({ title: '请输入商户ID', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merRegName) {
|
|
||||||
uni.showToast({ title: '请输入商户注册名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
} else if (formData.merRegName.length < 8 || formData.merRegName.length > 40) {
|
|
||||||
uni.showToast({ title: '商户注册名称长度必须在8~40字符之间', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merRegDistCode) {
|
|
||||||
uni.showToast({ title: '请选择商户地区代码', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merRegAddr) {
|
|
||||||
uni.showToast({ title: '请输入商户详细地址', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
} else if (formData.merRegAddr.length < 6 || formData.merRegAddr.length > 200) {
|
|
||||||
uni.showToast({ title: '商户详细地址长度必须在6~200字符之间', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.mccCode) {
|
|
||||||
uni.showToast({ title: '请选择商户MCC编号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merBusiContent) {
|
|
||||||
uni.showToast({ title: '请选择商户经营内容', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.larName) {
|
|
||||||
uni.showToast({ title: '请输入商户法人姓名', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.larIdType) {
|
|
||||||
uni.showToast({ title: '请选择法人证件类型', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.larIdcard) {
|
|
||||||
uni.showToast({ title: '请输入法人身份证号码', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.larIdcardStDt) {
|
|
||||||
uni.showToast({ title: '请选择法人身份证开始日期', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.larIdcardExpDt) {
|
|
||||||
uni.showToast({ title: '请选择法人身份证有效期', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merContactMobile) {
|
|
||||||
uni.showToast({ title: '请输入商户联系人手机号码', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.merContactName) {
|
|
||||||
uni.showToast({ title: '请输入商户联系人姓名', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.openningBankCode) {
|
|
||||||
uni.showToast({ title: '请输入结算账户开户行号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.openningBankName) {
|
|
||||||
uni.showToast({ title: '请输入结算账户开户行名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.clearingBankCode) {
|
|
||||||
uni.showToast({ title: '请输入结算账户清算行号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctNo) {
|
|
||||||
uni.showToast({ title: '请输入结算账户账号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctName) {
|
|
||||||
uni.showToast({ title: '请输入结算账户名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctTypeCode) {
|
|
||||||
uni.showToast({ title: '请选择结算账户性质', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 校验费率信息
|
|
||||||
if (!formData.feeData[0].feeRateTypeCode) {
|
|
||||||
uni.showToast({ title: '请输入费率类型', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.feeData[0].feeRateTypeName) {
|
|
||||||
uni.showToast({ title: '请输入费率类型名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.feeData[0].feeRatePct) {
|
|
||||||
uni.showToast({ title: '请输入手续费率', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
ecQuery() {
|
|
||||||
const storeValue = uni.getStorageSync('storeValue');
|
|
||||||
if (!storeValue || !storeValue.contractId) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先提交申请',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const params = {
|
|
||||||
contractId: storeValue.contractId
|
|
||||||
}
|
|
||||||
request(apiArr.queryMerchant, "POST", params).then(res => {
|
|
||||||
if (res.respData.contractStatus === 'REVIEW_ING') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '审核通过',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
uni.setStorageSync('storeValue', { merInnerNo: res.respData.merInnerNo });
|
|
||||||
uni.setStorageSync('storeValue', { merCupNo: res.respData.merCupNo });
|
|
||||||
} else if (res.respData.contractStatus === 'WAIT_FOR_CONTACT') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '审核驳回',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
} else if (res.respData.contractStatus === 'MANUAL_AUDIT') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '审核中',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单提交逻辑
|
|
||||||
submitForm() {
|
|
||||||
// 验证表单
|
|
||||||
if (!this.validateForm()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uni.showLoading({
|
|
||||||
title: '提交中...',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 准备请求参数
|
|
||||||
const submitData = {
|
|
||||||
mch_id: this.formData.mch_id,
|
|
||||||
merRegName: this.formData.merRegName,
|
|
||||||
merRegDistCode: this.formData.merRegDistCode,
|
|
||||||
merRegAddr: this.formData.merRegAddr,
|
|
||||||
mccCode: this.formData.mccCode,
|
|
||||||
merBlisName: this.formData.merBlisName,
|
|
||||||
merBlis: this.formData.merBlis,
|
|
||||||
merBlisStDt: this.formData.merBlisStDt,
|
|
||||||
merBlisExpDt: this.formData.merBlisExpDt,
|
|
||||||
merBusiContent: this.formData.merBusiContent,
|
|
||||||
larName: this.formData.larName,
|
|
||||||
larIdType: this.formData.larIdType,
|
|
||||||
larIdcard: this.formData.larIdcard,
|
|
||||||
larIdcardStDt: this.formData.larIdcardStDt,
|
|
||||||
larIdcardExpDt: this.formData.larIdcardExpDt,
|
|
||||||
merContactMobile: this.formData.merContactMobile,
|
|
||||||
merContactName: this.formData.merContactName,
|
|
||||||
openningBankCode: this.formData.openningBankCode,
|
|
||||||
openningBankName: this.formData.openningBankName,
|
|
||||||
clearingBankCode: this.formData.clearingBankCode,
|
|
||||||
acctNo: this.formData.acctNo,
|
|
||||||
acctName: this.formData.acctName,
|
|
||||||
acctTypeCode: this.formData.acctTypeCode,
|
|
||||||
feeData: this.formData.feeData,
|
|
||||||
fileData: []
|
|
||||||
};
|
|
||||||
|
|
||||||
// 只添加有attFileId的文件到fileData
|
|
||||||
const validFiles = this.formData.fileData.filter(file => file.attFileId);
|
|
||||||
if (validFiles.length > 0) {
|
|
||||||
submitData.fileData = validFiles.map(file => ({
|
|
||||||
attType: file.attType,
|
|
||||||
attFileId: file.attFileId,
|
|
||||||
attachName: file.attachName
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('提交的数据:', submitData);
|
|
||||||
|
|
||||||
// 调用addMer接口提交数据
|
|
||||||
request(apiArr.addMer, "POST", submitData).then(res => {
|
|
||||||
uni.hideLoading();
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
uni.setStorageSync('storeValue', { contractId: res.respData.contractId });
|
|
||||||
}).catch(error => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('提交失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("./index.css");
|
|
||||||
</style>
|
|
||||||
@ -1,283 +0,0 @@
|
|||||||
/* 分账接收方创建页面样式 */
|
|
||||||
.establish-acceptor-container {
|
|
||||||
padding: 0 30rpx;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
page{
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗样式 */
|
|
||||||
.popup {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-content {
|
|
||||||
width: 80%;
|
|
||||||
max-height: 70vh;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-title {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-list {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
max-height: 50vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
font-size: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item:active {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-footer {
|
|
||||||
padding: 20rpx;
|
|
||||||
border-top: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-cancel-btn {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗选择器样式 */
|
|
||||||
.popup-select {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 6rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
min-height: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-title {
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
margin: 30rpx 0 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.acceptor-form {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
padding: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-section {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
padding-bottom: 12rpx;
|
|
||||||
border-bottom: 1px solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-item {
|
|
||||||
margin-bottom: 32rpx;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
display: block;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 12rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label.required::after {
|
|
||||||
content: '*';
|
|
||||||
color: #e64340;
|
|
||||||
margin-left: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input {
|
|
||||||
width: 100%;
|
|
||||||
height: 88rpx;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #007aff;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input::placeholder {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 附件上传样式 */
|
|
||||||
.attachment-section {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachment-item {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 24rpx;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-info {
|
|
||||||
margin-top: 16rpx;
|
|
||||||
padding: 16rpx;
|
|
||||||
background-color: #e8f4ff;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: #007aff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn {
|
|
||||||
padding: 0rpx 20rpx;
|
|
||||||
background-color: #e64340;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
margin-right: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn:active {
|
|
||||||
background-color: #c21f1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #666;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 提交按钮样式 */
|
|
||||||
.submit-section {
|
|
||||||
margin-top: 40rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 4rpx 12rpx rgba(0, 122, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
transform: scale(0.98);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:disabled {
|
|
||||||
background-color: #b8d5ff;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 响应式调整 */
|
|
||||||
@media (min-width: 768px) {
|
|
||||||
.establish-acceptor-container {
|
|
||||||
max-width: 800rpx;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输入框错误状态 */
|
|
||||||
.form-input.error {
|
|
||||||
border-color: #e64340;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 滚动条样式 */
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 8rpx;
|
|
||||||
height: 8rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: #f1f1f1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: #c1c1c1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #a8a8a8;
|
|
||||||
}
|
|
||||||
@ -1,417 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="establish-acceptor-container">
|
|
||||||
<form class="acceptor-form" @submit.prevent="submitForm">
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">分账商户内部商户号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merInnerNo" placeholder="请输入分账商户内部商户号">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">分账商户银联商户号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merCupNo" placeholder="请输入分账商户银联商户号">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">分账接收方编号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.receiverNo" placeholder="请输入分账接收方编号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 合作协议附件 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">附件名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.entrustFileName" placeholder="请输入合作协议附件名称"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
<button class="upload-btn" @click="uploadEntrustFile">上传合作协议</button>
|
|
||||||
<view v-if="formData.entrustFilePath" class="file-info">
|
|
||||||
<span>{{ formData.entrustFileName || '已上传文件' }}</span>
|
|
||||||
<button class="delete-btn" @click="removeEntrustFile">删除</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 其他附件(可选) -->
|
|
||||||
<view class="form-section">
|
|
||||||
<h3 class="section-title">附件上传(可选)</h3>
|
|
||||||
<view class="attachment-section">
|
|
||||||
<view class="attachment-item" v-for="(attachment, index) in formData.attachments" :key="index">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件类型</label>
|
|
||||||
<view class="popup-select" @click="showAttachTypePopup = index">
|
|
||||||
<span>{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型' }}</span>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="attachment.attachName" placeholder="请输入附件名称">
|
|
||||||
</view>
|
|
||||||
<button class="upload-btn" @click="uploadFile(index)">上传文件</button>
|
|
||||||
<view v-if="attachment.attachStorePath" class="file-info">
|
|
||||||
<span>{{ attachment.attachName || '已上传文件' }}</span>
|
|
||||||
<button class="delete-btn" @click="removeAttachment(index)">删除</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<button class="add-attachment-btn" @click="addAttachment">添加附件</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-section submit-section">
|
|
||||||
<button type="submit" class="submit-btn" @click="submitForm">申请绑定</button>
|
|
||||||
</view>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- 附件类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showAttachTypePopup >= 0">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择附件类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in attachTypeOptions" :key="type.value"
|
|
||||||
@click="selectAttachType(showAttachTypePopup, type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showAttachTypePopup = -1">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { picUrl, menuButtonInfo, request, NavgateTo, RequsetUrl } from "../../../utils";
|
|
||||||
import { apiArr } from "../../../api/contract";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 弹窗控制
|
|
||||||
showAttachTypePopup: -1,
|
|
||||||
|
|
||||||
// 附件类型选项
|
|
||||||
attachTypeOptions: [
|
|
||||||
{ value: 'FR_ID_CARD_FRONT', label: '法人身份证正面' },
|
|
||||||
{ value: 'FR_ID_CARD_BEHIND', label: '法人身份证反面' },
|
|
||||||
{ value: 'ID_CARD_FRONT', label: '结算人身份证正面' },
|
|
||||||
{ value: 'ID_CARD_BEHIND', label: '结算人身份证反面' },
|
|
||||||
{ value: 'BANK_CARD', label: '银行卡' },
|
|
||||||
{ value: 'BUSINESS_LICENCE', label: '营业执照' },
|
|
||||||
{ value: 'MERCHANT_PHOTO', label: '商户门头照' },
|
|
||||||
{ value: 'SHOPINNER', label: '商铺内部照片' },
|
|
||||||
{ value: 'XY', label: '线下纸质协议' },
|
|
||||||
{ value: 'NETWORK_XY', label: '电子协议' },
|
|
||||||
{ value: 'HT', label: '租赁合同' },
|
|
||||||
{ value: 'COOPERATION_QUALIFICATION_PROOF', label: '合作资质证明' },
|
|
||||||
{ value: 'FOOD_QUALIFICATION_PROOF', label: '食品经营相关资质' },
|
|
||||||
{ value: 'NO_LEGAL_PERSON_SETT_AUTH_LETTER', label: '非法人结算授权书' },
|
|
||||||
{ value: 'SPLIT_ENTRUST_FILE', label: '结算授权委托书' },
|
|
||||||
{ value: 'RENTAL_AGREEMENT', label: '集市方与场地方间的租赁协议' },
|
|
||||||
{ value: 'SPLIT_COOPERATION_FILE', label: '集市方与摊主间的合作协议' },
|
|
||||||
{ value: 'OTHERS', label: '其他' }
|
|
||||||
],
|
|
||||||
|
|
||||||
// 表单数据
|
|
||||||
formData: {
|
|
||||||
// 可选字段
|
|
||||||
merInnerNo: '',
|
|
||||||
merCupNo: '',
|
|
||||||
// 必需字段
|
|
||||||
receiverNo: '',
|
|
||||||
entrustFileName: '',
|
|
||||||
entrustFilePath: '',
|
|
||||||
// 可选附件列表
|
|
||||||
attachments: [{
|
|
||||||
attachType: '',
|
|
||||||
attachName: '',
|
|
||||||
attachStorePath: ''
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 添加附件
|
|
||||||
addAttachment() {
|
|
||||||
this.formData.attachments.push({
|
|
||||||
attachType: '',
|
|
||||||
attachName: '',
|
|
||||||
attachStorePath: ''
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择附件类型
|
|
||||||
selectAttachType(index, type) {
|
|
||||||
this.formData.attachments[index].attachType = type.value;
|
|
||||||
this.showAttachTypePopup = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取附件类型标签
|
|
||||||
getAttachTypeLabel(typeValue) {
|
|
||||||
if (!typeValue) return '';
|
|
||||||
const option = this.attachTypeOptions.find(type => type.value === typeValue);
|
|
||||||
return option ? option.label : '';
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除附件
|
|
||||||
removeAttachment(index) {
|
|
||||||
this.formData.attachments.splice(index, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传合作协议文件
|
|
||||||
uploadEntrustFile() {
|
|
||||||
// 调用 uni.chooseMessageFile API 选择文件
|
|
||||||
uni.chooseMessageFile({
|
|
||||||
count: 1,
|
|
||||||
type: 'file',
|
|
||||||
extension: ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png'], // 支持的文件类型
|
|
||||||
success: (res) => {
|
|
||||||
const tempFile = res.tempFiles[0];
|
|
||||||
console.log("选择的文件:", tempFile);
|
|
||||||
|
|
||||||
// 如果用户没有填写附件名称,使用选择的文件名
|
|
||||||
if (!this.formData.entrustFileName) {
|
|
||||||
this.formData.entrustFileName = tempFile.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示上传中提示
|
|
||||||
uni.showLoading({
|
|
||||||
title: '上传中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 直接使用uni.uploadFile上传文件
|
|
||||||
uni.uploadFile({
|
|
||||||
url: RequsetUrl + apiArr.upload, // 完整的上传接口URL
|
|
||||||
filePath: tempFile.path, // 文件路径
|
|
||||||
name: 'file', // 文件对应的key,根据后端要求设置
|
|
||||||
formData: {
|
|
||||||
attType: 'ENTRUST_FILE' // 合作协议附件类型
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
Authorization: uni.getStorageSync("ctoken") // 添加认证信息
|
|
||||||
},
|
|
||||||
success: (uploadRes) => {
|
|
||||||
// 解析响应数据
|
|
||||||
const res = JSON.parse(uploadRes.data);
|
|
||||||
|
|
||||||
// 更新附件信息
|
|
||||||
this.formData.entrustFilePath = res.data.respData.attFileId;
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (error) => {
|
|
||||||
console.error('文件上传失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
complete: () => {
|
|
||||||
uni.hideLoading(); // 隐藏加载提示
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('选择文件失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '选择文件失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除合作协议文件
|
|
||||||
removeEntrustFile() {
|
|
||||||
this.formData.entrustFileName = '';
|
|
||||||
this.formData.entrustFilePath = '';
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传其他附件
|
|
||||||
uploadFile(index) {
|
|
||||||
const attachment = this.formData.attachments[index];
|
|
||||||
|
|
||||||
// 检查是否选择了附件类型
|
|
||||||
if (!attachment.attachType) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先选择附件类型',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 调用 uni.chooseMessageFile API 选择文件
|
|
||||||
uni.chooseMessageFile({
|
|
||||||
count: 1,
|
|
||||||
type: 'file',
|
|
||||||
extension: ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png'], // 支持的文件类型
|
|
||||||
success: (res) => {
|
|
||||||
const tempFile = res.tempFiles[0];
|
|
||||||
console.log("选择的文件:", tempFile);
|
|
||||||
|
|
||||||
// 如果用户没有填写附件名称,使用选择的文件名
|
|
||||||
if (!attachment.attachName) {
|
|
||||||
attachment.attachName = tempFile.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示上传中提示
|
|
||||||
uni.showLoading({
|
|
||||||
title: '上传中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 直接使用uni.uploadFile上传文件
|
|
||||||
uni.uploadFile({
|
|
||||||
url: RequsetUrl + apiArr.upload, // 完整的上传接口URL
|
|
||||||
filePath: tempFile.path, // 文件路径
|
|
||||||
name: 'file', // 文件对应的key,根据后端要求设置
|
|
||||||
formData: {
|
|
||||||
attType: attachment.attachType // 其他表单参数
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
Authorization: uni.getStorageSync("ctoken") // 添加认证信息
|
|
||||||
},
|
|
||||||
success: (uploadRes) => {
|
|
||||||
// 解析响应数据
|
|
||||||
const res = JSON.parse(uploadRes.data);
|
|
||||||
|
|
||||||
// 更新附件信息
|
|
||||||
attachment.attachStorePath = res.data.respData.attFileId;
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (error) => {
|
|
||||||
console.error('文件上传失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
complete: () => {
|
|
||||||
uni.hideLoading(); // 隐藏加载提示
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('选择文件失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '选择文件失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单验证
|
|
||||||
validateForm() {
|
|
||||||
const { formData } = this;
|
|
||||||
|
|
||||||
// 验证必需字段
|
|
||||||
if (!formData.receiverNo) {
|
|
||||||
uni.showToast({ title: '请输入分账接收方编号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.entrustFileName) {
|
|
||||||
uni.showToast({ title: '请输入合作协议附件名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.entrustFilePath) {
|
|
||||||
uni.showToast({ title: '请上传合作协议附件', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单提交逻辑
|
|
||||||
submitForm() {
|
|
||||||
// 验证表单
|
|
||||||
if (!this.validateForm()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uni.showLoading({
|
|
||||||
title: '提交中...',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 准备请求参数
|
|
||||||
const submitData = {
|
|
||||||
merInnerNo: this.formData.merInnerNo, // 分账商户内部商户号(可选)
|
|
||||||
merCupNo: this.formData.merCupNo, // 分账商户银联商户号(可选)
|
|
||||||
receiverNo: this.formData.receiverNo, // 分账接收方编号(必需)
|
|
||||||
entrustFileName: this.formData.entrustFileName, // 合作协议附件名称(必需)
|
|
||||||
entrustFilePath: this.formData.entrustFilePath, // 合作协议附件路径(必需)
|
|
||||||
attachments: [] // 分账关系绑定申请附件(可选)
|
|
||||||
};
|
|
||||||
|
|
||||||
// 只添加有attachStorePath的附件到attachments
|
|
||||||
const validAttachments = this.formData.attachments.filter(attach => attach.attachStorePath);
|
|
||||||
if (validAttachments.length > 0) {
|
|
||||||
submitData.attachments = validAttachments.map(attach => ({
|
|
||||||
attachType: attach.attachType,
|
|
||||||
attachName: attach.attachName,
|
|
||||||
attachStorePath: attach.attachStorePath
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('提交的数据:', submitData);
|
|
||||||
|
|
||||||
// 调用applyBind接口提交数据
|
|
||||||
request(apiArr.applyBind, "POST", submitData).then(res => {
|
|
||||||
uni.hideLoading();
|
|
||||||
|
|
||||||
if (res && res.cmdRetCode === 'SUCCESS') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.navigateBack();
|
|
||||||
}, 1500);
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: res?.retMsg || '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).catch(error => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('提交失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 重置表单
|
|
||||||
resetForm() {
|
|
||||||
this.formData = {
|
|
||||||
merInnerNo: '',
|
|
||||||
merCupNo: '',
|
|
||||||
receiverNo: '',
|
|
||||||
entrustFileName: '',
|
|
||||||
entrustFilePath: '',
|
|
||||||
attachments: []
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("./index.css");
|
|
||||||
</style>
|
|
||||||
@ -1,279 +0,0 @@
|
|||||||
/* addMer/index.css */
|
|
||||||
page {
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.establish-acceptor-container {
|
|
||||||
padding: 0 30rpx;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.acceptor-form {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
padding: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-section {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
padding-bottom: 12rpx;
|
|
||||||
border-bottom: 1px solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-item {
|
|
||||||
margin-bottom: 32rpx;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
display: block;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 12rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label.required::after {
|
|
||||||
content: '*';
|
|
||||||
color: #e64340;
|
|
||||||
margin-left: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input {
|
|
||||||
width: 100%;
|
|
||||||
height: 88rpx;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #007aff;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input::placeholder {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗样式 */
|
|
||||||
.popup {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-content {
|
|
||||||
width: 80%;
|
|
||||||
max-height: 70vh;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-title {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-list {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
max-height: 50vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
font-size: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item:active {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-footer {
|
|
||||||
padding: 20rpx;
|
|
||||||
border-top: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-cancel-btn {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗选择器样式 */
|
|
||||||
.popup-select {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
height: 88rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 附件上传样式 */
|
|
||||||
.attachment-section {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachment-item {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 24rpx;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-info {
|
|
||||||
margin-top: 16rpx;
|
|
||||||
padding: 16rpx;
|
|
||||||
background-color: #e8f4ff;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: #007aff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn {
|
|
||||||
padding: 0rpx 20rpx;
|
|
||||||
background-color: #e64340;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
margin-right: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn:active {
|
|
||||||
background-color: #c21f1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #666;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 提交按钮样式 */
|
|
||||||
.submit-section {
|
|
||||||
margin-top: 40rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn,
|
|
||||||
.submit-btn1 {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 4rpx 12rpx rgba(0, 122, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
background-color: #007aff;
|
|
||||||
margin-left: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn1 {
|
|
||||||
background-color: #ff4016;
|
|
||||||
margin-right: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
transform: scale(0.98);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:disabled {
|
|
||||||
background-color: #b8d5ff;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输入框错误状态 */
|
|
||||||
.form-input.error {
|
|
||||||
border-color: #e64340;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 滚动条样式 */
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 8rpx;
|
|
||||||
height: 8rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: #f1f1f1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: #c1c1c1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #a8a8a8;
|
|
||||||
}
|
|
||||||
@ -1,327 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="establish-acceptor-container">
|
|
||||||
<form class="acceptor-form" @submit.prevent="submitForm">
|
|
||||||
<!-- 基本信息 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<!-- <view class="form-item">
|
|
||||||
<label class="form-label required">商户号</label>
|
|
||||||
<input type="number" class="form-input" v-model.number="formData.mch_id" placeholder="请输入商户号"
|
|
||||||
required>
|
|
||||||
</view> -->
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">拉卡拉内部商户号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merInnerNo" placeholder="请输入拉卡拉内部商户号(可选)">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">银联商户号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.merCupNo" placeholder="请输入银联商户号(可选)">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">联系手机号</label>
|
|
||||||
<input type="number" class="form-input" v-model="formData.contactMobile" placeholder="请输入联系手机号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">电子分账协议号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.eleContractNo" placeholder="请输入电子分账协议号(可选)">
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 附件上传 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<h3 class="section-title">附件上传(可选)</h3>
|
|
||||||
<view class="attachment-section">
|
|
||||||
<view class="attachment-item" v-for="(file, index) in formData.fileData" :key="index">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件类型</label>
|
|
||||||
<view class="popup-select" @click="showFileAttachTypePopup = index">
|
|
||||||
<span>{{ getAttachTypeLabel(file.attType) || '请选择附件类型' }}</span>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<button class="upload-btn" @click="uploadFile(index)">上传文件</button>
|
|
||||||
<view v-if="file.attFileId" class="file-info">
|
|
||||||
<span>{{ file.attachName || '已上传文件' }}</span>
|
|
||||||
<button class="delete-btn" @click="removeFile(index)">删除</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<button class="add-attachment-btn" @click="addFile">添加附件</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 提交按钮 -->
|
|
||||||
<view class="form-section submit-section">
|
|
||||||
<button type="button" class="submit-btn1" @click="ecQuery">结果查询</button>
|
|
||||||
<button type="submit" class="submit-btn" @click="submitForm">提交申请</button>
|
|
||||||
</view>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- 文件附件类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showFileAttachTypePopup >= 0">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择附件类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in fileAttachTypeOptions" :key="type.value"
|
|
||||||
@click="selectFileAttachType(showFileAttachTypePopup, type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showFileAttachTypePopup = -1">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { picUrl, menuButtonInfo, request, NavgateTo, RequsetUrl } from "../../../utils";
|
|
||||||
import { apiArr } from "../../../api/contract";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 表单数据
|
|
||||||
formData: {
|
|
||||||
mch_id: uni.getStorageSync('mchId'), // 商户号(必需)
|
|
||||||
merInnerNo: '', // 拉卡拉内部商户号(可选)
|
|
||||||
merCupNo: '', // 银联商户号(可选)
|
|
||||||
contactMobile: '', // 联系手机号(必需)
|
|
||||||
eleContractNo: '', // 电子分账协议号(可选)
|
|
||||||
fileData: [
|
|
||||||
{
|
|
||||||
attType: '',
|
|
||||||
attFileId: '',
|
|
||||||
attachName: ''
|
|
||||||
}
|
|
||||||
] // 文件数据(可选)
|
|
||||||
},
|
|
||||||
|
|
||||||
// 弹窗控制
|
|
||||||
showFileAttachTypePopup: -1,
|
|
||||||
|
|
||||||
// 文件附件类型选项(示例数据,实际应从API获取)
|
|
||||||
fileAttachTypeOptions: [
|
|
||||||
{ value: 'BUSINESS_LICENSE', label: '营业执照' },
|
|
||||||
{ value: 'ID_CARD_FRONT', label: '身份证正面' },
|
|
||||||
{ value: 'ID_CARD_BACK', label: '身份证反面' },
|
|
||||||
{ value: 'BANK_CARD', label: '银行卡' },
|
|
||||||
{ value: 'CONTRACT', label: '合同文件' },
|
|
||||||
{ value: 'OTHER', label: '其他' }
|
|
||||||
]
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
// 添加附件
|
|
||||||
addFile() {
|
|
||||||
this.formData.fileData.push({
|
|
||||||
attType: '',
|
|
||||||
attFileId: '',
|
|
||||||
attachName: ''
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择文件附件类型
|
|
||||||
selectFileAttachType(index, type) {
|
|
||||||
this.formData.fileData[index].attType = type.value;
|
|
||||||
this.showFileAttachTypePopup = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取附件类型标签
|
|
||||||
getAttachTypeLabel(typeValue) {
|
|
||||||
if (!typeValue) return '';
|
|
||||||
const option = this.fileAttachTypeOptions.find(type => type.value === typeValue);
|
|
||||||
return option ? option.label : '';
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除附件
|
|
||||||
removeFile(index) {
|
|
||||||
this.formData.fileData.splice(index, 1);
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传文件
|
|
||||||
uploadFile(index) {
|
|
||||||
const fileData = this.formData.fileData[index];
|
|
||||||
|
|
||||||
// 检查是否选择了附件类型
|
|
||||||
if (!fileData.attType) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先选择附件类型',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 调用 uni.chooseMessageFile API 选择文件
|
|
||||||
uni.chooseMessageFile({
|
|
||||||
count: 1,
|
|
||||||
type: 'file',
|
|
||||||
extension: ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png'], // 支持的文件类型
|
|
||||||
success: (res) => {
|
|
||||||
const tempFile = res.tempFiles[0];
|
|
||||||
console.log("选择的文件:", tempFile);
|
|
||||||
|
|
||||||
// 设置文件名
|
|
||||||
fileData.attachName = tempFile.name;
|
|
||||||
|
|
||||||
// 显示上传中提示
|
|
||||||
uni.showLoading({
|
|
||||||
title: '上传中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 直接使用uni.uploadFile上传文件
|
|
||||||
uni.uploadFile({
|
|
||||||
url: RequsetUrl + apiArr.upload, // 完整的上传接口URL
|
|
||||||
filePath: tempFile.path, // 文件路径
|
|
||||||
name: 'file', // 文件对应的key,根据后端要求设置
|
|
||||||
formData: {
|
|
||||||
attType: fileData.attType // 附件类型
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
Authorization: uni.getStorageSync("ctoken") // 添加认证信息
|
|
||||||
},
|
|
||||||
success: (uploadRes) => {
|
|
||||||
// 解析响应数据
|
|
||||||
const res = JSON.parse(uploadRes.data);
|
|
||||||
|
|
||||||
// 更新附件信息
|
|
||||||
fileData.attFileId = res.data.respData.attFileId;
|
|
||||||
fileData.attachName = tempFile.name; // 文件名
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (error) => {
|
|
||||||
console.error('文件上传失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
complete: () => {
|
|
||||||
uni.hideLoading(); // 隐藏加载提示
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('选择文件失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '选择文件失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单验证
|
|
||||||
validateForm() {
|
|
||||||
const { formData } = this;
|
|
||||||
|
|
||||||
// 验证必需字段
|
|
||||||
if (!formData.mch_id) {
|
|
||||||
uni.showToast({ title: '请输入商户号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.contactMobile) {
|
|
||||||
uni.showToast({ title: '请输入联系手机号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
} else if (!/^1[3-9]\d{9}$/.test(formData.contactMobile)) {
|
|
||||||
uni.showToast({ title: '请输入有效的手机号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
ecQuery() {
|
|
||||||
// const storeValue = uni.getStorageSync('storeValue');
|
|
||||||
// if (!storeValue || !storeValue.contractId) {
|
|
||||||
// uni.showToast({
|
|
||||||
// title: '请先提交申请',
|
|
||||||
// icon: 'none'
|
|
||||||
// });
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
// const params = {
|
|
||||||
// contractId: storeValue.contractId
|
|
||||||
// }
|
|
||||||
request(apiArr.queryLedgerMer, "POST", {}).then(res => {
|
|
||||||
if (res.respData.splitStatus === 'VALID') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '审核通过',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
} else if (res.respData.contractStatus === 'INVALID') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '审核未通过',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单提交逻辑
|
|
||||||
submitForm() {
|
|
||||||
// 验证表单
|
|
||||||
if (!this.validateForm()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uni.showLoading({
|
|
||||||
title: '提交中...',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 准备请求参数
|
|
||||||
const submitData = {
|
|
||||||
mch_id: this.formData.mch_id,
|
|
||||||
merInnerNo: this.formData.merInnerNo,
|
|
||||||
merCupNo: this.formData.merCupNo,
|
|
||||||
contactMobile: this.formData.contactMobile,
|
|
||||||
eleContractNo: this.formData.eleContractNo,
|
|
||||||
attachments: []
|
|
||||||
};
|
|
||||||
|
|
||||||
// 只添加有attFileId的文件到attachments
|
|
||||||
const validFiles = this.formData.fileData.filter(file => file.attFileId);
|
|
||||||
if (validFiles.length > 0) {
|
|
||||||
submitData.attachments = validFiles.map(file => ({
|
|
||||||
attachType: file.attType,
|
|
||||||
attachName: file.attachName,
|
|
||||||
attachStorePath: file.attFileId
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('提交的数据:', submitData);
|
|
||||||
|
|
||||||
request(apiArr.applyLedgerMer, "POST", submitData).then(res => {
|
|
||||||
uni.hideLoading();
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
uni.setStorageSync('storeValue', { fz_apply_id: res.resp_data.ec_apply_id });
|
|
||||||
}).catch(error => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('提交失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("./index.css");
|
|
||||||
</style>
|
|
||||||
@ -68,9 +68,9 @@ export default {
|
|||||||
},
|
},
|
||||||
getAvatarUrl(record){
|
getAvatarUrl(record){
|
||||||
if(record.client_id_one == uni.getStorageSync('openId')){
|
if(record.client_id_one == uni.getStorageSync('openId')){
|
||||||
return record.two && record.two.avatar ? picUrl + record.two.avatar : 'https://static.hshuishang.com/defaultTx.png'
|
return record.two.avatar ? picUrl + record.two.avatar : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
|
||||||
}else{
|
}else{
|
||||||
return record.one && record.one.avatar ? picUrl + record.one.avatar : 'https://static.hshuishang.com/defaultTx.png'
|
return record.one.avatar ? picUrl + record.one.avatar : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 格式化时间
|
// 格式化时间
|
||||||
|
|||||||
@ -1,322 +0,0 @@
|
|||||||
/* 全局样式重置 */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: 'SimSun', '宋体', serif;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333;
|
|
||||||
line-height: 1.5;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
page{
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 合同容器 */
|
|
||||||
.contract-container {
|
|
||||||
max-width: 1200rpx;
|
|
||||||
margin: 0 auto;
|
|
||||||
padding: 140rpx 30rpx 40rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 提交申请按钮样式 */
|
|
||||||
.submit-container {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
margin: 40rpx 0;
|
|
||||||
padding: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
width: 80%;
|
|
||||||
max-width: 400rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007bff;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: background-color 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:hover {
|
|
||||||
background-color: #0056b3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #004085;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header{
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
z-index: 1000;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 20rpx 30rpx;
|
|
||||||
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 合同标题 */
|
|
||||||
.contract-title {
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header-title{
|
|
||||||
font-size: 36rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.print-btn{
|
|
||||||
padding: 2rpx 20rpx;
|
|
||||||
background-color: #007bff;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 甲乙双方信息 */
|
|
||||||
.party-info {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.party-info p {
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 合同内容 */
|
|
||||||
.contract-content {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contract-intro {
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
text-align: justify;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 标题样式 */
|
|
||||||
h2 {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 30rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 章节样式 */
|
|
||||||
.section {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-desc input {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-desc {
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-desc {
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field {
|
|
||||||
width: 40px;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subsection {
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
margin-left: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subsection p {
|
|
||||||
margin-bottom: 15rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subsection-item view {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.subsection-item input {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 复选框组 */
|
|
||||||
.checkbox-group {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 20rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-item {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 28rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.checkbox-label {
|
|
||||||
margin-right: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输入框样式 */
|
|
||||||
.input-field1 {
|
|
||||||
width: 500rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
border: 1rpx solid #ccc;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
margin: 0 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
border: 1rpx solid #ccc;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
margin: 0 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field.small {
|
|
||||||
width: 100rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field.very-small {
|
|
||||||
width: 100rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 费用标准样式 */
|
|
||||||
.fee-standard {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
gap: 20rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-standard .checkbox-item {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 28rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 表格样式 */
|
|
||||||
.fee-table {
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrap-text {
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-table th,
|
|
||||||
.fee-table td {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
border: 1rpx solid #ccc;
|
|
||||||
padding: 20rpx;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-table th {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-table tr:nth-child(even) {
|
|
||||||
background-color: #fafafa;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 响应式设计 */
|
|
||||||
@media (max-width: 750rpx) {
|
|
||||||
.contract-container {
|
|
||||||
padding: 20rpx 15rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contract-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 26rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field {
|
|
||||||
width: 250rpx;
|
|
||||||
height: 50rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field.small {
|
|
||||||
width: 150rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field.very-small {
|
|
||||||
width: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fee-table th,
|
|
||||||
.fee-table td {
|
|
||||||
padding: 15rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 打印样式 */
|
|
||||||
@media print {
|
|
||||||
.contract-container {
|
|
||||||
max-width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-field {
|
|
||||||
border: 1rpx solid #000;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@ -1,283 +0,0 @@
|
|||||||
/* 分账接收方创建页面样式 */
|
|
||||||
.establish-acceptor-container {
|
|
||||||
padding: 20rpx;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
page{
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗样式 */
|
|
||||||
.popup {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-content {
|
|
||||||
width: 80%;
|
|
||||||
max-height: 70vh;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-title {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-list {
|
|
||||||
flex: 1;
|
|
||||||
overflow-y: auto;
|
|
||||||
max-height: 50vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item {
|
|
||||||
padding: 30rpx;
|
|
||||||
text-align: center;
|
|
||||||
border-bottom: 1rpx solid #eee;
|
|
||||||
font-size: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-item:active {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-footer {
|
|
||||||
padding: 20rpx;
|
|
||||||
border-top: 1rpx solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-cancel-btn {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹窗选择器样式 */
|
|
||||||
.popup-select {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
border: 1rpx solid #ddd;
|
|
||||||
border-radius: 6rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
min-height: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-title {
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #333;
|
|
||||||
text-align: center;
|
|
||||||
margin: 30rpx 0 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.acceptor-form {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
padding: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-section {
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.section-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
padding-bottom: 12rpx;
|
|
||||||
border-bottom: 1px solid #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-item {
|
|
||||||
margin-bottom: 32rpx;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
display: block;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 12rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label.required::after {
|
|
||||||
content: '*';
|
|
||||||
color: #e64340;
|
|
||||||
margin-left: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input {
|
|
||||||
width: 100%;
|
|
||||||
height: 88rpx;
|
|
||||||
padding: 0 24rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus {
|
|
||||||
border-color: #007aff;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input::placeholder {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 附件上传样式 */
|
|
||||||
.attachment-section {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.attachment-item {
|
|
||||||
background-color: #f9f9f9;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 24rpx;
|
|
||||||
margin-bottom: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.upload-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.file-info {
|
|
||||||
margin-top: 16rpx;
|
|
||||||
padding: 16rpx;
|
|
||||||
background-color: #e8f4ff;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: #007aff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn {
|
|
||||||
padding: 0rpx 20rpx;
|
|
||||||
background-color: #e64340;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
margin-right: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.delete-btn:active {
|
|
||||||
background-color: #c21f1c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #666;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.add-attachment-btn:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 提交按钮样式 */
|
|
||||||
.submit-section {
|
|
||||||
margin-top: 40rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
font-size: 28rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
margin-top: 16rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 4rpx 12rpx rgba(0, 122, 255, 0.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #0051d5;
|
|
||||||
transform: scale(0.98);
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:disabled {
|
|
||||||
background-color: #b8d5ff;
|
|
||||||
cursor: not-allowed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 响应式调整 */
|
|
||||||
@media (min-width: 768px) {
|
|
||||||
.establish-acceptor-container {
|
|
||||||
max-width: 800rpx;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 输入框错误状态 */
|
|
||||||
.form-input.error {
|
|
||||||
border-color: #e64340;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 滚动条样式 */
|
|
||||||
::-webkit-scrollbar {
|
|
||||||
width: 8rpx;
|
|
||||||
height: 8rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-track {
|
|
||||||
background: #f1f1f1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb {
|
|
||||||
background: #c1c1c1;
|
|
||||||
border-radius: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: #a8a8a8;
|
|
||||||
}
|
|
||||||
@ -1,512 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="establish-acceptor-container">
|
|
||||||
<form class="acceptor-form" @submit.prevent="submitForm">
|
|
||||||
<!-- 必需字段 -->
|
|
||||||
<view class="form-section">
|
|
||||||
<!-- <view class="form-item">
|
|
||||||
<label class="form-label required">商户号</label>
|
|
||||||
<input
|
|
||||||
type="number"
|
|
||||||
class="form-input"
|
|
||||||
v-model="formData.mchId"
|
|
||||||
placeholder="请输入商户号"
|
|
||||||
required
|
|
||||||
>
|
|
||||||
</view> -->
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">分账接收方名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.receiverName" placeholder="请输入分账接收方名称"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">联系手机号</label>
|
|
||||||
<input type="tel" class="form-input" v-model="formData.contactMobile" placeholder="请输入联系手机号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照号码</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.licenseNo" placeholder="请输入营业执照号码">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">营业执照名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.licenseName" placeholder="请输入营业执照名称">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">法人姓名</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.legalPersonName" placeholder="请输入法人姓名">
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">法人证件号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.legalPersonCertificateNo"
|
|
||||||
placeholder="请输入法人证件号">
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-section">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户卡号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctNo" placeholder="请输入收款账户卡号" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctName" placeholder="请输入收款账户名称" required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户类型</label>
|
|
||||||
<view class="popup-select" @click="showAccountTypePopup = true">
|
|
||||||
<span class="selected-value">{{ selectedAccountType || '请选择账户类型' }}</span>
|
|
||||||
<uni-icons type="down" size="16"></uni-icons>
|
|
||||||
</view>
|
|
||||||
<!-- 账户类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showAccountTypePopup">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择账户类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in accountTypeOptions" :key="type.value"
|
|
||||||
@click="selectAccountType(type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showAccountTypePopup = false">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户证件号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctCertificateNo" placeholder="请输入收款账户证件号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户开户行号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctOpenBankCode" placeholder="请输入开户行号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户开户行名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctOpenBankName" placeholder="请输入开户行名称"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label required">收款账户清算行行号</label>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acctClearBankCode" placeholder="请输入清算行行号"
|
|
||||||
required>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-section">
|
|
||||||
<h3 class="section-title">附件上传(可选)</h3>
|
|
||||||
|
|
||||||
<view class="attachment-section">
|
|
||||||
<view class="attachment-item" v-for="(attachment, index) in formData.attachList" :key="index">
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件类型</label>
|
|
||||||
<view class="popup-select" @click="showAttachTypePopup = index">
|
|
||||||
<span class="selected-value">{{ getAttachTypeLabel(attachment.attachType) || '请选择附件类型'
|
|
||||||
}}</span>
|
|
||||||
<uni-icons type="down" size="16"></uni-icons>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="form-item">
|
|
||||||
<label class="form-label">附件名称</label>
|
|
||||||
<input type="text" class="form-input" v-model="attachment.attachName" placeholder="请输入附件名称">
|
|
||||||
</view>
|
|
||||||
<button class="upload-btn" @click="uploadFile(index)">上传文件</button>
|
|
||||||
<view v-if="attachment.attachStorePath" class="file-info">
|
|
||||||
<span>{{ attachment.attachName || '已上传文件' }}</span>
|
|
||||||
<button class="delete-btn" @click="removeAttachment(index)">删除</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<button class="add-attachment-btn" @click="addAttachment">添加附件</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="form-section submit-section">
|
|
||||||
<button type="submit" class="submit-btn" @click="submitForm">提交申请</button>
|
|
||||||
</view>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- 附件类型弹窗 -->
|
|
||||||
<view class="popup" v-if="showAttachTypePopup >= 0">
|
|
||||||
<view class="popup-content">
|
|
||||||
<view class="popup-title">选择附件类型</view>
|
|
||||||
<view class="popup-list">
|
|
||||||
<view class="popup-item" v-for="type in attachTypeOptions" :key="type.value"
|
|
||||||
@click="selectAttachType(showAttachTypePopup, type)">
|
|
||||||
{{ type.label }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="popup-footer">
|
|
||||||
<button class="popup-cancel-btn" @click="showAttachTypePopup = -1">取消</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { picUrl, menuButtonInfo, request, NavgateTo, RequsetUrl } from "../../../utils";
|
|
||||||
import { apiArr } from "../../../api/contract";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 弹窗控制
|
|
||||||
showAccountTypePopup: false,
|
|
||||||
showAttachTypePopup: -1,
|
|
||||||
|
|
||||||
// 账户类型选项
|
|
||||||
accountTypeOptions: [
|
|
||||||
{ value: '57', label: '对公' },
|
|
||||||
{ value: '58', label: '对私' }
|
|
||||||
],
|
|
||||||
|
|
||||||
// 附件类型选项
|
|
||||||
attachTypeOptions: [
|
|
||||||
{ value: 'FR_ID_CARD_FRONT', label: '法人身份证正面' },
|
|
||||||
{ value: 'FR_ID_CARD_BEHIND', label: '法人身份证反面' },
|
|
||||||
{ value: 'ID_CARD_FRONT', label: '结算人身份证正面' },
|
|
||||||
{ value: 'ID_CARD_BEHIND', label: '结算人身份证反面' },
|
|
||||||
{ value: 'BANK_CARD', label: '银行卡' },
|
|
||||||
{ value: 'BUSINESS_LICENCE', label: '营业执照' },
|
|
||||||
{ value: 'MERCHANT_PHOTO', label: '商户门头照' },
|
|
||||||
{ value: 'SHOPINNER', label: '商铺内部照片' },
|
|
||||||
{ value: 'XY', label: '线下纸质协议' },
|
|
||||||
{ value: 'NETWORK_XY', label: '电子协议' },
|
|
||||||
{ value: 'HT', label: '租赁合同' },
|
|
||||||
{ value: 'COOPERATION_QUALIFICATION_PROOF', label: '合作资质证明' },
|
|
||||||
{ value: 'FOOD_QUALIFICATION_PROOF', label: '食品经营相关资质' },
|
|
||||||
{ value: 'NO_LEGAL_PERSON_SETT_AUTH_LETTER', label: '非法人结算授权书' },
|
|
||||||
{ value: 'SPLIT_ENTRUST_FILE', label: '结算授权委托书' },
|
|
||||||
{ value: 'RENTAL_AGREEMENT', label: '集市方与场地方间的租赁协议' },
|
|
||||||
{ value: 'SPLIT_COOPERATION_FILE', label: '集市方与摊主间的合作协议' },
|
|
||||||
{ value: 'OTHERS', label: '其他' }
|
|
||||||
],
|
|
||||||
|
|
||||||
formData: {
|
|
||||||
// 必需字段
|
|
||||||
mchId: '',
|
|
||||||
receiverName: '',
|
|
||||||
contactMobile: '',
|
|
||||||
acctNo: '',
|
|
||||||
acctName: '',
|
|
||||||
acctTypeCode: '',
|
|
||||||
acctCertificateNo: '',
|
|
||||||
acctOpenBankCode: '',
|
|
||||||
acctOpenBankName: '',
|
|
||||||
acctClearBankCode: '',
|
|
||||||
// 可选字段
|
|
||||||
licenseNo: '',
|
|
||||||
licenseName: '',
|
|
||||||
legalPersonName: '',
|
|
||||||
legalPersonCertificateNo: '',
|
|
||||||
// 附件列表(初始添加一个空附件)
|
|
||||||
attachList: [{
|
|
||||||
attachType: '',
|
|
||||||
attachName: '',
|
|
||||||
attachStorePath: ''
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
// 获取选中的账户类型标签
|
|
||||||
selectedAccountType() {
|
|
||||||
if (!this.formData.acctTypeCode) return '';
|
|
||||||
const option = this.accountTypeOptions.find(type => type.value === this.formData.acctTypeCode);
|
|
||||||
return option ? option.label : '';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 添加附件
|
|
||||||
addAttachment() {
|
|
||||||
this.formData.attachList.push({
|
|
||||||
attachType: '',
|
|
||||||
attachName: '',
|
|
||||||
attachStorePath: ''
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择账户类型
|
|
||||||
selectAccountType(type) {
|
|
||||||
this.formData.acctTypeCode = type.value;
|
|
||||||
this.showAccountTypePopup = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择附件类型
|
|
||||||
selectAttachType(index, type) {
|
|
||||||
this.formData.attachList[index].attachType = type.value;
|
|
||||||
this.showAttachTypePopup = -1;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取附件类型标签
|
|
||||||
getAttachTypeLabel(typeValue) {
|
|
||||||
if (!typeValue) return '';
|
|
||||||
const option = this.attachTypeOptions.find(type => type.value === typeValue);
|
|
||||||
return option ? option.label : '';
|
|
||||||
},
|
|
||||||
|
|
||||||
// 删除附件
|
|
||||||
removeAttachment(index) {
|
|
||||||
this.formData.attachList.splice(index, 1);
|
|
||||||
// 如果列表为空,添加一个空附件以保持界面显示
|
|
||||||
if (this.formData.attachList.length === 0) {
|
|
||||||
this.formData.attachList.push({
|
|
||||||
attachType: '',
|
|
||||||
attachName: '',
|
|
||||||
attachStorePath: ''
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传文件
|
|
||||||
uploadFile(index) {
|
|
||||||
const attachment = this.formData.attachList[index];
|
|
||||||
|
|
||||||
// 检查是否选择了附件类型
|
|
||||||
if (!attachment.attachType) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先选择附件类型',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 调用 uni.chooseMessageFile API 选择文件(支持所有文件类型)
|
|
||||||
uni.chooseMessageFile({
|
|
||||||
count: 1,
|
|
||||||
type: 'file',
|
|
||||||
extension: ['pdf', 'doc', 'docx', 'jpg', 'jpeg', 'png'], // 支持的文件类型
|
|
||||||
success: (res) => {
|
|
||||||
const tempFile = res.tempFiles[0];
|
|
||||||
console.log("选择的文件:", tempFile);
|
|
||||||
|
|
||||||
// 如果用户没有填写附件名称,使用选择的文件名
|
|
||||||
if (!attachment.attachName) {
|
|
||||||
attachment.attachName = tempFile.name;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示上传中提示
|
|
||||||
uni.showLoading({
|
|
||||||
title: '上传中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 直接使用uni.uploadFile上传文件
|
|
||||||
uni.uploadFile({
|
|
||||||
url: RequsetUrl + apiArr.upload, // 完整的上传接口URL
|
|
||||||
filePath: tempFile.path, // 文件路径
|
|
||||||
name: 'file', // 文件对应的key,根据后端要求设置
|
|
||||||
formData: {
|
|
||||||
attType: attachment.attachType // 其他表单参数
|
|
||||||
},
|
|
||||||
header: {
|
|
||||||
Authorization: uni.getStorageSync("ctoken") // 添加认证信息
|
|
||||||
},
|
|
||||||
success: (uploadRes) => {
|
|
||||||
// 解析响应数据
|
|
||||||
const res = JSON.parse(uploadRes.data);
|
|
||||||
|
|
||||||
// 更新附件信息
|
|
||||||
attachment.attachStorePath = res.data.respData.attFileId;
|
|
||||||
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (error) => {
|
|
||||||
console.error('文件上传失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '上传失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
complete: () => {
|
|
||||||
uni.hideLoading(); // 隐藏加载提示
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
console.error('选择文件失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '选择文件失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单验证
|
|
||||||
validateForm() {
|
|
||||||
const { formData } = this;
|
|
||||||
|
|
||||||
// 验证必需字段
|
|
||||||
// if (!formData.mchId) {
|
|
||||||
// uni.showToast({ title: '请输入商户号', icon: 'none' });
|
|
||||||
// return false;
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (!formData.receiverName) {
|
|
||||||
uni.showToast({ title: '请输入分账接收方名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.contactMobile) {
|
|
||||||
uni.showToast({ title: '请输入联系手机号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
} else if (!/^1[3-9]\d{9}$/.test(formData.contactMobile)) {
|
|
||||||
uni.showToast({ title: '请输入正确的手机号格式', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctNo) {
|
|
||||||
uni.showToast({ title: '请输入收款账户卡号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctName) {
|
|
||||||
uni.showToast({ title: '请输入收款账户名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctTypeCode) {
|
|
||||||
uni.showToast({ title: '请选择收款账户类型', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctCertificateNo) {
|
|
||||||
uni.showToast({ title: '请输入收款账户证件号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctOpenBankCode) {
|
|
||||||
uni.showToast({ title: '请输入收款账户开户行号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctOpenBankName) {
|
|
||||||
uni.showToast({ title: '请输入收款账户开户行名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acctClearBankCode) {
|
|
||||||
uni.showToast({ title: '请输入收款账户清算行行号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单提交逻辑
|
|
||||||
submitForm() {
|
|
||||||
// 验证表单
|
|
||||||
if (!this.validateForm()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uni.showLoading({
|
|
||||||
title: '提交中...',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// 准备请求参数
|
|
||||||
const submitData = {
|
|
||||||
mchId: '000', // 商户号(必需)
|
|
||||||
receiverName: this.formData.receiverName, // 分账接收方名称(必需)
|
|
||||||
contactMobile: this.formData.contactMobile, // 联系手机号(必需)
|
|
||||||
licenseNo: this.formData.licenseNo, // 营业执照号码(可选)
|
|
||||||
licenseName: this.formData.licenseName, // 营业执照名称(可选)
|
|
||||||
legalPersonName: this.formData.legalPersonName, // 法人姓名(可选)
|
|
||||||
legalPersonCertificateNo: this.formData.legalPersonCertificateNo, // 法人证件号(可选)
|
|
||||||
acctNo: this.formData.acctNo, // 收款账户卡号(必需)
|
|
||||||
acctName: this.formData.acctName, // 收款账户名称(必需)
|
|
||||||
acctTypeCode: this.formData.acctTypeCode, // 收款账户类型(必需)
|
|
||||||
acctCertificateNo: this.formData.acctCertificateNo, // 收款账户证件号(必需)
|
|
||||||
acctOpenBankCode: this.formData.acctOpenBankCode, // 收款账户开户行号(必需)
|
|
||||||
acctOpenBankName: this.formData.acctOpenBankName, // 收款账户开户行名称(必需)
|
|
||||||
acctClearBankCode: this.formData.acctClearBankCode // 收款账户清算行行号(必需)
|
|
||||||
};
|
|
||||||
|
|
||||||
// 只添加有attachStorePath的附件到attachList
|
|
||||||
const validAttachments = this.formData.attachList.filter(attach => attach.attachStorePath);
|
|
||||||
if (validAttachments.length > 0) {
|
|
||||||
submitData.attachList = validAttachments.map(attach => ({
|
|
||||||
attachType: attach.attachType,
|
|
||||||
attachName: attach.attachName,
|
|
||||||
attachStorePath: attach.attachStorePath
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log('提交的数据:', submitData);
|
|
||||||
|
|
||||||
request(apiArr.applyLedgerReceiver, "POST", submitData).then(res => {
|
|
||||||
uni.hideLoading();
|
|
||||||
|
|
||||||
if (res && res.cmdRetCode === 'SUCCESS') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.navigateBack();
|
|
||||||
}, 1500);
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: res?.retMsg || '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).catch(error => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('提交失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 重置表单
|
|
||||||
resetForm() {
|
|
||||||
this.formData = {
|
|
||||||
// mchId: '',
|
|
||||||
receiverName: '',
|
|
||||||
contactMobile: '',
|
|
||||||
acctNo: '',
|
|
||||||
acctName: '',
|
|
||||||
acctTypeCode: '',
|
|
||||||
acctCertificateNo: '',
|
|
||||||
acctOpenBankCode: '',
|
|
||||||
acctOpenBankName: '',
|
|
||||||
acctClearBankCode: '',
|
|
||||||
licenseNo: '',
|
|
||||||
licenseName: '',
|
|
||||||
legalPersonName: '',
|
|
||||||
legalPersonCertificateNo: '',
|
|
||||||
attachList: []
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("./index.css");
|
|
||||||
</style>
|
|
||||||
@ -15,15 +15,15 @@
|
|||||||
<view v-if="connectingStatus" class="connecting-status">{{ connectingStatus }}</view>
|
<view v-if="connectingStatus" class="connecting-status">{{ connectingStatus }}</view>
|
||||||
|
|
||||||
<!-- 聊天消息区域 -->
|
<!-- 聊天消息区域 -->
|
||||||
<scroll-view class="chat-messages" scroll-y="true"
|
<scroll-view :scroll-into-view="scrollToView" class="chat-messages" lower-threshold="100" scroll-y="true"
|
||||||
upper-threshold="50" @scrolltoupper="loadMoreHistory" @scroll="onScroll">
|
upper-threshold="100" @scrolltolower="loadMoreHistory" @scrolltoupper="loadMoreHistory">
|
||||||
<!-- 加载历史消息提示 -->
|
<!-- 加载历史消息提示 -->
|
||||||
<view v-if="isLoadingHistory" class="message-time">加载历史消息...</view>
|
<view v-if="isLoadingHistory" class="message-time">加载历史消息...</view>
|
||||||
|
|
||||||
<!-- 消息列表 -->
|
<!-- 消息列表 -->
|
||||||
<block v-for="(message, index) in messages" :key="index">
|
<block v-for="(message, index) in messages" :key="index">
|
||||||
<!-- 时间分割线 -->
|
<!-- 时间分割线 -->
|
||||||
<view v-if="needShowTime(index)" class="message-time">{{ message.times }}</view>
|
<view v-if="needShowTime(index)" class="message-time">{{ formatTime(message.time) }}</view>
|
||||||
|
|
||||||
<!-- 消息项 -->
|
<!-- 消息项 -->
|
||||||
<view :id="'msg-' + index" :class="{
|
<view :id="'msg-' + index" :class="{
|
||||||
@ -33,44 +33,9 @@
|
|||||||
}" class="message-item">
|
}" class="message-item">
|
||||||
<image :src="message.isSelf ? userAvatar : getAvatarUrl(message)" class="message-avatar" mode="aspectFill">
|
<image :src="message.isSelf ? userAvatar : getAvatarUrl(message)" class="message-avatar" mode="aspectFill">
|
||||||
</image>
|
</image>
|
||||||
<!-- 文字 -->
|
<view class="message-content">
|
||||||
<view v-if="!message.type || message.type === 1" class="message-content">
|
|
||||||
{{ message.content }}
|
{{ message.content }}
|
||||||
</view>
|
</view>
|
||||||
<!-- 图片 -->
|
|
||||||
<view v-else-if="message.type === 2" class="message-media">
|
|
||||||
<image v-if="message.mediaUrl" :src="message.mediaUrl" class="chat-img" mode="aspectFit"
|
|
||||||
@tap="previewImage(message.mediaUrl)" />
|
|
||||||
<view v-else class="media-loading">图片加载中…</view>
|
|
||||||
</view>
|
|
||||||
<!-- 视频 -->
|
|
||||||
<view v-else-if="message.type === 3" class="message-media">
|
|
||||||
<video v-if="message.mediaUrl" :src="message.mediaUrl" class="chat-video" controls></video>
|
|
||||||
<view v-else class="media-loading">视频加载中…</view>
|
|
||||||
</view>
|
|
||||||
<!-- 商品/购物车卡片 -->
|
|
||||||
<view v-else-if="message.type === 4" class="message-card" @tap="openCardLink(message.card)">
|
|
||||||
<image v-if="message.card.pic && !message.card._picErr" :src="message.card.pic" class="card-pic"
|
|
||||||
mode="aspectFill" @error="onCardPicError(message)" />
|
|
||||||
<view v-else class="card-pic card-pic--ph">商品</view>
|
|
||||||
<view class="card-info">
|
|
||||||
<view class="card-name">{{ message.card.name }}</view>
|
|
||||||
<view class="card-price">¥{{ message.card.price }}</view>
|
|
||||||
<view class="card-tag">商品</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<!-- 订单卡片 -->
|
|
||||||
<view v-else-if="message.type === 5" class="message-card" @tap="openCardLink(message.card)">
|
|
||||||
<image v-if="message.card.pic && !message.card._picErr" :src="message.card.pic" class="card-pic"
|
|
||||||
mode="aspectFill" @error="onCardPicError(message)" />
|
|
||||||
<view v-else class="card-pic card-pic--ph">订单</view>
|
|
||||||
<view class="card-info">
|
|
||||||
<view class="card-name">订单 {{ message.card.order_no }}</view>
|
|
||||||
<view class="card-price">¥{{ message.card.amount }}</view>
|
|
||||||
<view class="card-tag">订单 · 共{{ message.card.count }}件</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-else class="message-content">{{ message.content }}</view>
|
|
||||||
</view>
|
</view>
|
||||||
</block>
|
</block>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
@ -81,45 +46,18 @@
|
|||||||
<textarea v-model="inputMessage" :adjust-position="true" auto-height class="message-input" cursor-spacing="10"
|
<textarea v-model="inputMessage" :adjust-position="true" auto-height class="message-input" cursor-spacing="10"
|
||||||
enable-keyboard-accessory-view="true" hold-keyboard="true" maxlength="500" placeholder="请输入消息..."
|
enable-keyboard-accessory-view="true" hold-keyboard="true" maxlength="500" placeholder="请输入消息..."
|
||||||
@blur="onInputBlur" @confirm="sendMessage" @focus="onInputFocus" @input="handleInput"></textarea>
|
@blur="onInputBlur" @confirm="sendMessage" @focus="onInputFocus" @input="handleInput"></textarea>
|
||||||
<view class="plus-btn" @tap="togglePanel">
|
|
||||||
<uni-icons color="#666" size="30" type="plusempty"></uni-icons>
|
|
||||||
</view>
|
|
||||||
<button :disabled="inputMessage.trim() === ''" class="send-btn" @tap="sendMessage">
|
<button :disabled="inputMessage.trim() === ''" class="send-btn" @tap="sendMessage">
|
||||||
发送
|
发送
|
||||||
</button>
|
</button>
|
||||||
</view>
|
</view>
|
||||||
<!-- 更多功能面板 -->
|
|
||||||
<view v-if="showPanel" class="more-panel">
|
|
||||||
<view class="panel-item" @tap="chooseMedia('image')">
|
|
||||||
<view class="panel-icon">🖼️</view>
|
|
||||||
<text>相册图片</text>
|
|
||||||
</view>
|
|
||||||
<view class="panel-item" @tap="chooseMedia('camera')">
|
|
||||||
<view class="panel-icon">📷</view>
|
|
||||||
<text>拍摄</text>
|
|
||||||
</view>
|
|
||||||
<view class="panel-item" @tap="chooseMedia('video')">
|
|
||||||
<view class="panel-icon">🎬</view>
|
|
||||||
<text>视频</text>
|
|
||||||
</view>
|
|
||||||
<view class="panel-item" @tap="openGoodsPicker">
|
|
||||||
<view class="panel-icon">🛒</view>
|
|
||||||
<text>商品/购物车</text>
|
|
||||||
</view>
|
|
||||||
<view class="panel-item" @tap="openOrderPicker">
|
|
||||||
<view class="panel-icon">📦</view>
|
|
||||||
<text>订单</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { menuButtonInfo, picUrl, request, NavgateTo } from '@/utils'
|
import { menuButtonInfo, picUrl, request } from '@/utils'
|
||||||
|
import { apiArr } from '@/api/customerService'
|
||||||
import mqttTool from '@/utils/mqtt'
|
import mqttTool from '@/utils/mqtt'
|
||||||
import { apiArr } from '../../../api/customerService'
|
|
||||||
import { uploadOSS, signPrivateView } from '@/utils/uploadOSS'
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
@ -138,11 +76,8 @@ export default {
|
|||||||
userAvatar: '',
|
userAvatar: '',
|
||||||
// 消息列表
|
// 消息列表
|
||||||
messages: [],
|
messages: [],
|
||||||
|
|
||||||
// 输入的消息
|
// 输入的消息
|
||||||
inputMessage: '',
|
inputMessage: '',
|
||||||
// 更多功能面板
|
|
||||||
showPanel: false,
|
|
||||||
// 是否可以发送消息
|
// 是否可以发送消息
|
||||||
canSend: false,
|
canSend: false,
|
||||||
// 连接状态
|
// 连接状态
|
||||||
@ -170,11 +105,9 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
console.log('客服聊天页面onLoad触发')
|
|
||||||
const meun = menuButtonInfo()
|
const meun = menuButtonInfo()
|
||||||
this.top = meun.top
|
this.top = meun.top
|
||||||
this.localHeight = meun.height
|
this.localHeight = meun.height
|
||||||
console.log('导航栏信息:top:', this.top, 'height:', this.localHeight)
|
|
||||||
// 获取聊天对象信息
|
// 获取聊天对象信息
|
||||||
if (options.item) {
|
if (options.item) {
|
||||||
const item = JSON.parse(options.item)
|
const item = JSON.parse(options.item)
|
||||||
@ -186,10 +119,7 @@ export default {
|
|||||||
this.chatTarget.title = this.chatTarget.employee_name
|
this.chatTarget.title = this.chatTarget.employee_name
|
||||||
this.getMqttConfig().then(() => {
|
this.getMqttConfig().then(() => {
|
||||||
// 获取配置后再初始化聊天
|
// 获取配置后再初始化聊天
|
||||||
console.log('获取MQTT配置成功,开始初始化聊天')
|
|
||||||
this.initChat()
|
this.initChat()
|
||||||
}).catch(error => {
|
|
||||||
console.error('获取MQTT配置失败:', error)
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 客服选择聊天列表进来
|
// 客服选择聊天列表进来
|
||||||
@ -203,35 +133,23 @@ export default {
|
|||||||
this.chatTarget.openId = this.chatTarget.client_id_one
|
this.chatTarget.openId = this.chatTarget.client_id_one
|
||||||
}
|
}
|
||||||
// 初始化MQTT连接
|
// 初始化MQTT连接
|
||||||
console.log('开始初始化聊天')
|
|
||||||
this.initChat()
|
this.initChat()
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
console.log('没有接收到参数item')
|
|
||||||
}
|
}
|
||||||
// 初始化用户头像
|
// 初始化用户头像
|
||||||
this.userAvatar = picUrl + uni.getStorageSync('headPhoto')
|
this.userAvatar = picUrl + uni.getStorageSync('headPhoto')
|
||||||
console.log('用户头像:', this.userAvatar)
|
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
// 监听 picker 页回传的商品/订单卡片(只注册一次)
|
|
||||||
if (!this._onPickCard) {
|
|
||||||
this._onPickCard = ({ type, card }) => {
|
|
||||||
this.publishMsg(type, JSON.stringify(card))
|
|
||||||
}
|
|
||||||
uni.$on('chat:pickCard', this._onPickCard)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getAvatarUrl(record) {
|
getAvatarUrl(record) {
|
||||||
return this.chatTarget.employee_image ? this.chatTarget.employee_image : 'https://static.hshuishang.com/defaultTx.png'
|
return this.chatTarget.employee_image ? this.chatTarget.employee_image : 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/defaultTx.png'
|
||||||
},
|
},
|
||||||
async connect() {
|
async connect() {
|
||||||
this.client = null
|
this.client = null
|
||||||
const options = {
|
const options = {
|
||||||
clientId: this.selfClientId
|
clientId: this.selfClientId
|
||||||
}
|
}
|
||||||
console.log('clientId:', options.clientId)
|
|
||||||
|
|
||||||
// 添加连接状态回调
|
// 添加连接状态回调
|
||||||
const callbacks = {
|
const callbacks = {
|
||||||
@ -264,46 +182,26 @@ export default {
|
|||||||
let jsMsg = msg // 直接使用已解析的对象,无需再次解析
|
let jsMsg = msg // 直接使用已解析的对象,无需再次解析
|
||||||
console.log('收到消息', topic, msg)
|
console.log('收到消息', topic, msg)
|
||||||
if (jsMsg.send_client === this.selfClientId || jsMsg.receive_client === this.selfClientId) {
|
if (jsMsg.send_client === this.selfClientId || jsMsg.receive_client === this.selfClientId) {
|
||||||
|
console.log('接收或发送人是我')
|
||||||
if (jsMsg.send_client === this.chatTarget.openId || jsMsg.receive_client === this.chatTarget.openId) {
|
if (jsMsg.send_client === this.chatTarget.openId || jsMsg.receive_client === this.chatTarget.openId) {
|
||||||
this.appendMessage(jsMsg, jsMsg.send_client === this.selfClientId)
|
console.log('接收或发送人是我的聊天对象')
|
||||||
|
this.messages.push({
|
||||||
|
content: jsMsg.content,
|
||||||
|
time: Date.now(),
|
||||||
|
isSelf: jsMsg.send_client === this.selfClientId,
|
||||||
|
isLoading: false
|
||||||
|
})
|
||||||
|
console.log('收到我的消息', this.messages)
|
||||||
|
this.scrollToView = 'msg-' + (this.messages.length - 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// 把一条原始消息(含 type/content)转成可渲染的消息对象并追加;图片/视频异步签名 URL
|
|
||||||
async appendMessage(raw, isSelf) {
|
|
||||||
const type = Number(raw.type) || 1
|
|
||||||
const item = {
|
|
||||||
type,
|
|
||||||
content: raw.content,
|
|
||||||
time: Date.now(),
|
|
||||||
isSelf,
|
|
||||||
isLoading: false,
|
|
||||||
mediaUrl: '',
|
|
||||||
card: null
|
|
||||||
}
|
|
||||||
if (type === 4 || type === 5) {
|
|
||||||
try { item.card = typeof raw.content === 'string' ? JSON.parse(raw.content) : raw.content } catch (e) { item.card = {} }
|
|
||||||
}
|
|
||||||
const idx = this.messages.push(item) - 1
|
|
||||||
this.scrollToView = 'msg-' + idx
|
|
||||||
// 图片/视频:content 是私密 object_key,需签名后显示
|
|
||||||
if (type === 2 || type === 3) {
|
|
||||||
try {
|
|
||||||
const r = await signPrivateView(raw.content)
|
|
||||||
this.$set(this.messages[idx], 'mediaUrl', r.url)
|
|
||||||
} catch (e) {
|
|
||||||
console.error('签发聊天媒体URL失败', e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async subscribe() {
|
async subscribe() {
|
||||||
if (this.isConnected && this.client) {
|
if (this.isConnected && this.client) {
|
||||||
const topic = 'contact/message/send_msg/' + this.chatTarget.bindId // 按会话精确订阅,天然隔离(沿用 contact/message 授权前缀)
|
this.client.subscribe('contact/message/receive_msg', { qos: 0 }, (err) => {
|
||||||
this.client.subscribe(topic, { qos: 0 }, (err) => {
|
|
||||||
if (!err) {
|
if (!err) {
|
||||||
console.log('订阅成功', topic, { qos: 0 })
|
console.log('订阅成功', 'contact/message/receive_msg', { qos: 0 })
|
||||||
this.connectingStatus = ''
|
this.connectingStatus = ''
|
||||||
} else {
|
} else {
|
||||||
console.log('订阅失败:', err)
|
console.log('订阅失败:', err)
|
||||||
@ -324,11 +222,7 @@ export default {
|
|||||||
// 连接成功后启动心跳包
|
// 连接成功后启动心跳包
|
||||||
this.startKeepalive()
|
this.startKeepalive()
|
||||||
// 连接成功后立即加载历史消息
|
// 连接成功后立即加载历史消息
|
||||||
console.log('连接成功,开始加载历史消息')
|
|
||||||
await this.loadHistoryMessages()
|
await this.loadHistoryMessages()
|
||||||
console.log('历史消息加载完成,消息数量:', this.messages.length)
|
|
||||||
|
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('初始化聊天失败', error)
|
console.error('初始化聊天失败', error)
|
||||||
this.connectingStatus = '连接失败,请检查网络'
|
this.connectingStatus = '连接失败,请检查网络'
|
||||||
@ -397,23 +291,16 @@ export default {
|
|||||||
|
|
||||||
// 加载历史消息
|
// 加载历史消息
|
||||||
async loadHistoryMessages() {
|
async loadHistoryMessages() {
|
||||||
console.log('loadHistoryMessages方法调用')
|
|
||||||
console.log('加载条件检查:hasMoreHistory:', this.hasMoreHistory, 'isLoadingHistory:', this.isLoadingHistory)
|
|
||||||
|
|
||||||
if (!this.hasMoreHistory || this.isLoadingHistory) {
|
if (!this.hasMoreHistory || this.isLoadingHistory) {
|
||||||
console.log('不满足加载条件:hasMoreHistory:', this.hasMoreHistory, 'isLoadingHistory:', this.isLoadingHistory)
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.isLoadingHistory = true
|
this.isLoadingHistory = true
|
||||||
console.log('开始加载历史消息,当前页码:', this.pageNum)
|
|
||||||
|
|
||||||
// 确保已经获取了mqttConfig.bindId
|
// 确保已经获取了mqttConfig.bindId
|
||||||
if (!this.chatTarget.bindId) {
|
if (!this.chatTarget.bindId) {
|
||||||
console.log('没有bindId,开始获取MQTT配置')
|
|
||||||
await this.getMqttConfig()
|
await this.getMqttConfig()
|
||||||
console.log('获取MQTT配置成功,bindId:', this.chatTarget.bindId)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
@ -427,108 +314,43 @@ export default {
|
|||||||
const res = await request(apiArr.csGetMsgRecord, 'POST', params)
|
const res = await request(apiArr.csGetMsgRecord, 'POST', params)
|
||||||
|
|
||||||
console.log('历史消息返回结果:', res)
|
console.log('历史消息返回结果:', res)
|
||||||
if (res && res.msg_record) {
|
if (res && res.code === 1 && res.data && res.data.msg_record) {
|
||||||
const historyMessages = res.msg_record
|
const historyMessages = res.data.msg_record
|
||||||
|
|
||||||
console.log('原始历史消息数量:', historyMessages.length)
|
|
||||||
// 如果没有更多历史消息了
|
// 如果没有更多历史消息了
|
||||||
if (historyMessages.length === 0) {
|
if (historyMessages.length === 0) {
|
||||||
console.log('没有更多历史消息了')
|
|
||||||
this.hasMoreHistory = false
|
this.hasMoreHistory = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理历史消息,转换为需要的格式
|
// 处理历史消息,转换为需要的格式
|
||||||
const formattedMessages = historyMessages.map(msg => {
|
const formattedMessages = historyMessages.map(msg => ({
|
||||||
const type = Number(msg.type) || 1
|
|
||||||
const item = {
|
|
||||||
type,
|
|
||||||
content: msg.content,
|
content: msg.content,
|
||||||
time: new Date(msg.create_time).getTime(),
|
time: new Date(msg.create_time).getTime(),
|
||||||
times: msg.update_time,
|
isSelf: msg.send_client === this.selfClientId, // 修正判断条件
|
||||||
isSelf: msg.send_client === this.selfClientId,
|
isLoading: false
|
||||||
isLoading: false,
|
})).reverse(); // 反转消息顺序,确保最早的消息在最前面
|
||||||
mediaUrl: '',
|
|
||||||
card: null
|
|
||||||
}
|
|
||||||
if (type === 4 || type === 5) {
|
|
||||||
try { item.card = typeof msg.content === 'string' ? JSON.parse(msg.content) : msg.content } catch (e) { item.card = {} }
|
|
||||||
}
|
|
||||||
return item
|
|
||||||
}).reverse(); // 反转消息顺序,确保最早的消息在最前面
|
|
||||||
|
|
||||||
// 图片/视频历史消息:异步签发私密 URL
|
|
||||||
formattedMessages.forEach(item => {
|
|
||||||
if (item.type === 2 || item.type === 3) {
|
|
||||||
signPrivateView(item.content).then(r => {
|
|
||||||
this.$set(item, 'mediaUrl', r.url)
|
|
||||||
}).catch(e => console.error('历史媒体签名失败', e))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
console.log('格式化后的历史消息:', formattedMessages)
|
|
||||||
// 将格式化后的历史消息添加到消息列表开头
|
// 将格式化后的历史消息添加到消息列表开头
|
||||||
const previousMessageCount = this.messages.length;
|
this.messages = [...formattedMessages, ...this.messages]
|
||||||
console.log('添加前消息数量:', previousMessageCount)
|
|
||||||
this.messages = [...formattedMessages, ...this.messages];
|
|
||||||
console.log('添加后消息数量:', this.messages.length)
|
|
||||||
|
|
||||||
// 增加页码
|
// 增加页码
|
||||||
this.pageNum++;
|
this.pageNum++
|
||||||
console.log('下一页页码:', this.pageNum)
|
|
||||||
|
|
||||||
// 如果是首次加载,滚动到底部显示最新消息
|
|
||||||
if (previousMessageCount === 0) {
|
|
||||||
setTimeout(() => {
|
|
||||||
console.log('首次加载,滚动到底部,消息数量:', this.messages.length)
|
|
||||||
// 使用更可靠的滚动方式
|
|
||||||
uni.pageScrollTo({
|
|
||||||
scrollTop: 999999,
|
|
||||||
duration: 300
|
|
||||||
});
|
|
||||||
}, 100);
|
|
||||||
} else {
|
|
||||||
// 不是首次加载时,保持当前滚动位置,不自动滚动到底部
|
|
||||||
// 确保新加载的历史消息在顶部可见
|
|
||||||
console.log('非首次加载,新增消息数量:', formattedMessages.length)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
console.log('接口返回数据格式不正确或无消息记录')
|
|
||||||
// 仅当不是第一页时才设置hasMoreHistory为false
|
|
||||||
if (this.pageNum > 1) {
|
|
||||||
this.hasMoreHistory = false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('加载历史消息失败', error)
|
console.error('加载历史消息失败', error)
|
||||||
} finally {
|
} finally {
|
||||||
this.isLoadingHistory = false
|
this.isLoadingHistory = false
|
||||||
console.log('加载历史消息结束')
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 滚动事件监听
|
|
||||||
onScroll(e) {
|
|
||||||
console.log('滚动事件触发,scrollTop:', e.detail.scrollTop)
|
|
||||||
},
|
|
||||||
|
|
||||||
// 加载更多历史消息
|
// 加载更多历史消息
|
||||||
loadMoreHistory() {
|
loadMoreHistory(e) {
|
||||||
console.log('滚动到顶部事件触发')
|
// 当滚动到顶部时加载更多历史消息
|
||||||
// 滚动到顶部时加载更多历史消息
|
if (e && e.detail.direction === 'top') {
|
||||||
console.log('当前条件:isLoadingHistory:', this.isLoadingHistory, 'hasMoreHistory:', this.hasMoreHistory, 'pageNum:', this.pageNum)
|
|
||||||
|
|
||||||
// 重置hasMoreHistory为true,确保可以继续加载
|
|
||||||
if (!this.hasMoreHistory && this.pageNum === 1) {
|
|
||||||
console.log('重置hasMoreHistory为true')
|
|
||||||
this.hasMoreHistory = true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.isLoadingHistory && this.hasMoreHistory) {
|
if (!this.isLoadingHistory && this.hasMoreHistory) {
|
||||||
console.log('开始加载更多历史消息')
|
|
||||||
this.loadHistoryMessages()
|
this.loadHistoryMessages()
|
||||||
} else {
|
}
|
||||||
console.log('不满足加载更多条件:isLoadingHistory:', this.isLoadingHistory, 'hasMoreHistory:', this.hasMoreHistory)
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -551,7 +373,7 @@ export default {
|
|||||||
}
|
}
|
||||||
console.log('发送消息', msgData)
|
console.log('发送消息', msgData)
|
||||||
this.client.publish(
|
this.client.publish(
|
||||||
'contact/message/send_msg/' + this.chatTarget.bindId, // 按会话精确主题,双方订阅同一主题
|
'contact/message/send_msg', // 使用指定的发送消息主题
|
||||||
JSON.stringify(msgData),
|
JSON.stringify(msgData),
|
||||||
{ Qos: 0 },
|
{ Qos: 0 },
|
||||||
(err) => {
|
(err) => {
|
||||||
@ -568,107 +390,6 @@ export default {
|
|||||||
this.inputMessage = ''
|
this.inputMessage = ''
|
||||||
},
|
},
|
||||||
|
|
||||||
// 切换"+"功能面板
|
|
||||||
togglePanel() {
|
|
||||||
this.showPanel = !this.showPanel
|
|
||||||
},
|
|
||||||
|
|
||||||
// 统一发布消息(type: 1文字 2图片 3视频 4商品 5订单;content 为文本/object_key/JSON字符串)
|
|
||||||
publishMsg(type, content) {
|
|
||||||
if (!this.client || !this.isConnected) {
|
|
||||||
uni.showToast({ title: '连接断开,请重试', icon: 'none' })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const msgData = {
|
|
||||||
bind_id: this.chatTarget.bindId,
|
|
||||||
send_client: this.selfClientId,
|
|
||||||
receive_client: this.chatTarget.openId,
|
|
||||||
type,
|
|
||||||
content,
|
|
||||||
receive_read_status: 2
|
|
||||||
}
|
|
||||||
this.client.publish('contact/message/send_msg/' + this.chatTarget.bindId, JSON.stringify(msgData), { Qos: 0 }, (err) => {
|
|
||||||
if (err) console.error('发送消息失败', err)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择图片/拍摄/视频并上传(私密,按会话授权)
|
|
||||||
chooseMedia(source) {
|
|
||||||
this.showPanel = false
|
|
||||||
if (source === 'video') {
|
|
||||||
uni.chooseVideo({
|
|
||||||
sourceType: ['album', 'camera'],
|
|
||||||
maxDuration: 60,
|
|
||||||
success: (res) => this.uploadAndSend(res.tempFilePath, 'chat_video', 3)
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
uni.chooseImage({
|
|
||||||
count: 1,
|
|
||||||
sizeType: ['compressed'],
|
|
||||||
sourceType: source === 'camera' ? ['camera'] : ['album'],
|
|
||||||
success: (res) => {
|
|
||||||
const fp = res.tempFilePaths && res.tempFilePaths[0]
|
|
||||||
if (fp) this.uploadAndSend(fp, 'chat_image', 2)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 上传到私密 bucket 后,把 object_key 作为消息内容发布
|
|
||||||
async uploadAndSend(filePath, scene, type) {
|
|
||||||
try {
|
|
||||||
const { objectKey } = await uploadOSS({ filePath, scene, bindId: this.chatTarget.bindId })
|
|
||||||
this.publishMsg(type, objectKey)
|
|
||||||
} catch (e) {
|
|
||||||
console.error('上传失败', e)
|
|
||||||
uni.showToast({ title: '上传失败,请重试', icon: 'none' })
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 预览图片
|
|
||||||
previewImage(url) {
|
|
||||||
if (url) uni.previewImage({ urls: [url], current: url })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 点击商品/订单卡片跳转
|
|
||||||
openCardLink(card) {
|
|
||||||
if (!card) return
|
|
||||||
// 兼容老消息:仍带 path 的直接跳
|
|
||||||
if (!card.page && card.path) {
|
|
||||||
NavgateTo(card.path, { isLogin: false })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (!card.page) return
|
|
||||||
// 完整 item 经本地存储中转,避免 URL 过长被截断(详情页优先读 storage)
|
|
||||||
const item = card.item || {}
|
|
||||||
try {
|
|
||||||
uni.setStorageSync('chatCardItem', item)
|
|
||||||
} catch (e) {
|
|
||||||
console.error('暂存卡片数据失败', e)
|
|
||||||
}
|
|
||||||
NavgateTo(card.page + '?item=' + encodeURIComponent(JSON.stringify(item)) + '&fromChat=1', { isLogin: false })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 卡片图片加载失败 -> 显示占位(用 $set 保证响应式)
|
|
||||||
onCardPicError(message) {
|
|
||||||
if (message && message.card) {
|
|
||||||
this.$set(message.card, '_picErr', true)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择商品/购物车发送
|
|
||||||
openGoodsPicker() {
|
|
||||||
this.showPanel = false
|
|
||||||
// 跳转到选择页(复用购物车/商品列表),选完回传后 publishMsg(4, JSON)
|
|
||||||
NavgateTo('/packages/customerService/picker/index?type=goods&bindId=' + this.chatTarget.bindId, { isLogin: false })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 选择订单发送
|
|
||||||
openOrderPicker() {
|
|
||||||
this.showPanel = false
|
|
||||||
NavgateTo('/packages/customerService/picker/index?type=order&bindId=' + this.chatTarget.bindId, { isLogin: false })
|
|
||||||
},
|
|
||||||
|
|
||||||
// 处理输入事件
|
// 处理输入事件
|
||||||
handleInput() {
|
handleInput() {
|
||||||
this.canSend = this.inputMessage.trim().length > 0
|
this.canSend = this.inputMessage.trim().length > 0
|
||||||
@ -712,11 +433,7 @@ export default {
|
|||||||
// 滚动到底部
|
// 滚动到底部
|
||||||
scrollToBottom() {
|
scrollToBottom() {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
console.log('手动滚动到底部')
|
this.scrollToView = 'msg-' + (this.messages.length - 1)
|
||||||
uni.pageScrollTo({
|
|
||||||
scrollTop: 999999,
|
|
||||||
duration: 300
|
|
||||||
});
|
|
||||||
}, 100)
|
}, 100)
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -791,12 +508,6 @@ export default {
|
|||||||
clearTimeout(this.reconnectFailedTimer)
|
clearTimeout(this.reconnectFailedTimer)
|
||||||
this.reconnectFailedTimer = null
|
this.reconnectFailedTimer = null
|
||||||
}
|
}
|
||||||
|
|
||||||
// 移除卡片选择监听
|
|
||||||
if (this._onPickCard) {
|
|
||||||
uni.$off('chat:pickCard', this._onPickCard)
|
|
||||||
this._onPickCard = null
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@ -804,120 +515,3 @@ export default {
|
|||||||
<style>
|
<style>
|
||||||
@import url("./index.css");
|
@import url("./index.css");
|
||||||
</style>
|
</style>
|
||||||
<style scoped>
|
|
||||||
:root {
|
|
||||||
--header-height: 80px; /* 头部高度 */
|
|
||||||
--input-height: 80px; /* 输入区域高度 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 图片/视频消息 */
|
|
||||||
.message-media {
|
|
||||||
max-width: 60%;
|
|
||||||
}
|
|
||||||
.chat-img {
|
|
||||||
width: 320rpx;
|
|
||||||
height: 320rpx;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
background: #f0f0f0;
|
|
||||||
}
|
|
||||||
.chat-video {
|
|
||||||
width: 400rpx;
|
|
||||||
height: 300rpx;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
}
|
|
||||||
.media-loading {
|
|
||||||
padding: 30rpx 40rpx;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
color: #999;
|
|
||||||
font-size: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 商品/订单卡片 */
|
|
||||||
.message-card {
|
|
||||||
display: flex;
|
|
||||||
width: 520rpx;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 14rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.06);
|
|
||||||
}
|
|
||||||
.card-pic {
|
|
||||||
width: 180rpx;
|
|
||||||
height: 180rpx;
|
|
||||||
flex-shrink: 0;
|
|
||||||
background: #f5f5f5;
|
|
||||||
}
|
|
||||||
.card-pic--ph {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: #bbb;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
.card-info {
|
|
||||||
flex: 1;
|
|
||||||
padding: 18rpx 20rpx;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: space-between;
|
|
||||||
min-width: 0;
|
|
||||||
}
|
|
||||||
.card-name {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #222;
|
|
||||||
line-height: 38rpx;
|
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.card-price {
|
|
||||||
font-size: 32rpx;
|
|
||||||
color: #FF370B;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
.card-tag {
|
|
||||||
align-self: flex-start;
|
|
||||||
font-size: 20rpx;
|
|
||||||
color: #999;
|
|
||||||
border: 1rpx solid #eee;
|
|
||||||
border-radius: 6rpx;
|
|
||||||
padding: 0 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* "+" 按钮与更多面板 */
|
|
||||||
.plus-btn {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 60rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
}
|
|
||||||
.more-panel {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
padding: 24rpx 12rpx;
|
|
||||||
background: #f7f7f7;
|
|
||||||
}
|
|
||||||
.panel-item {
|
|
||||||
width: 20%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
gap: 8rpx;
|
|
||||||
font-size: 22rpx;
|
|
||||||
color: #666;
|
|
||||||
margin-bottom: 16rpx;
|
|
||||||
}
|
|
||||||
.panel-icon {
|
|
||||||
width: 96rpx;
|
|
||||||
height: 96rpx;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 44rpx;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,165 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="picker-page">
|
|
||||||
<!-- 订单:普通/团购 两个 tab -->
|
|
||||||
<view v-if="mode === 'order'" class="tabs">
|
|
||||||
<view class="tab" :class="{ active: orderTab === 'normal' }" @tap="switchTab('normal')">普通订单</view>
|
|
||||||
<view class="tab" :class="{ active: orderTab === 'group' }" @tap="switchTab('group')">团购订单</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<scroll-view class="list" scroll-y>
|
|
||||||
<!-- 订单列表 -->
|
|
||||||
<block v-if="mode === 'order'">
|
|
||||||
<view v-for="(item, idx) in orderList" :key="idx" class="order-card" @tap="pickOrder(item)">
|
|
||||||
<view class="order-head">
|
|
||||||
<text class="order-no">订单号:{{ item.order_no }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="order-goods">
|
|
||||||
<image v-for="(g, gi) in (item.commodity_order_item_list || []).slice(0, 4)" :key="gi"
|
|
||||||
:src="g.commodity_pic" class="goods-thumb" mode="aspectFill" />
|
|
||||||
</view>
|
|
||||||
<view class="order-foot">
|
|
||||||
<text>共{{ item.total_count }}件</text>
|
|
||||||
<text class="amount">¥{{ item.total_amount }}</text>
|
|
||||||
<view class="send-btn">发送</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="orderList.length === 0" class="empty">暂无订单</view>
|
|
||||||
</block>
|
|
||||||
|
|
||||||
<!-- 购物车列表 -->
|
|
||||||
<block v-else>
|
|
||||||
<view v-for="(g, idx) in cartGoods" :key="idx" class="goods-row" @tap="pickGoods(g)">
|
|
||||||
<image :src="g.pic" class="goods-thumb-lg" mode="aspectFill" />
|
|
||||||
<view class="goods-info">
|
|
||||||
<view class="goods-name">{{ g.name }}</view>
|
|
||||||
<view class="goods-price">¥{{ g.price }}</view>
|
|
||||||
</view>
|
|
||||||
<view class="send-btn">发送</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="cartGoods.length === 0" class="empty">购物车为空</view>
|
|
||||||
</block>
|
|
||||||
</scroll-view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl } from '@/utils'
|
|
||||||
import { apiArr as shopApi } from '@/api/shop'
|
|
||||||
import { apiArr as afterSaleApi } from '@/api/afterSale'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
mode: 'order', // order | goods
|
|
||||||
bindId: 0,
|
|
||||||
orderTab: 'normal', // normal | group
|
|
||||||
orderList: [],
|
|
||||||
cartGoods: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
this.mode = options.type === 'goods' ? 'goods' : 'order'
|
|
||||||
this.bindId = Number(options.bindId) || 0
|
|
||||||
uni.setNavigationBarTitle({ title: this.mode === 'goods' ? '选择购物车商品' : '选择订单' })
|
|
||||||
if (this.mode === 'goods') {
|
|
||||||
this.loadCart()
|
|
||||||
} else {
|
|
||||||
this.loadOrders()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
switchTab(t) {
|
|
||||||
this.orderTab = t
|
|
||||||
this.loadOrders()
|
|
||||||
},
|
|
||||||
// 订单列表:order_cate 1普通 2团购(按 tab 过滤)
|
|
||||||
loadOrders() {
|
|
||||||
request(afterSaleApi.orderList, 'POST', {
|
|
||||||
user_id: uni.getStorageSync('userId')
|
|
||||||
}).then(res => {
|
|
||||||
const list = res.order_list || []
|
|
||||||
list.forEach(item => {
|
|
||||||
(item.commodity_order_item_list || []).forEach(g => {
|
|
||||||
g.commodity_pic = (g.commodity_pic && g.commodity_pic.startsWith('http')) ? g.commodity_pic : picUrl + g.commodity_pic
|
|
||||||
})
|
|
||||||
})
|
|
||||||
if (this.orderTab === 'group') {
|
|
||||||
this.orderList = list.filter(i => i.order_cate == 2)
|
|
||||||
} else {
|
|
||||||
this.orderList = list.filter(i => i.order_cate == 1 || i.order_cate == 4)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 购物车(非团购)
|
|
||||||
loadCart() {
|
|
||||||
request(shopApi.getCar, 'POST', { is_group_buy: '' }).then(res => {
|
|
||||||
const groups = [].concat(res.same_day_cart_list || [], res.normal_cart_list || [])
|
|
||||||
const goods = []
|
|
||||||
groups.forEach(sup => {
|
|
||||||
(sup.commodity_cart_and_goods_model || []).forEach(c => {
|
|
||||||
const gi = c.commodity_goods_info || {}
|
|
||||||
goods.push({
|
|
||||||
goods_id: c.goods_id,
|
|
||||||
commodity_id: c.commodity_id,
|
|
||||||
name: gi.commodity_name || gi.goods_name || '商品',
|
|
||||||
pic: (gi.commodity_pic && gi.commodity_pic.startsWith('http')) ? gi.commodity_pic : picUrl + (gi.commodity_pic || ''),
|
|
||||||
price: gi.sales_price || c.price || 0
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
this.cartGoods = goods
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 选中订单 -> 回传订单卡片(type=5)
|
|
||||||
pickOrder(item) {
|
|
||||||
const firstPic = (item.commodity_order_item_list && item.commodity_order_item_list[0] && item.commodity_order_item_list[0].commodity_pic) || ''
|
|
||||||
const card = {
|
|
||||||
order_id: item.id,
|
|
||||||
order_no: item.order_no,
|
|
||||||
amount: item.total_amount,
|
|
||||||
count: item.total_count,
|
|
||||||
pic: firstPic,
|
|
||||||
page: '/packages/myOrders/orderDetails/index', // 点击跳转目标页(完整 item 经 storage 中转,避免 URL 超长)
|
|
||||||
item // 完整订单对象,详情页直接用
|
|
||||||
}
|
|
||||||
uni.$emit('chat:pickCard', { type: 5, card })
|
|
||||||
uni.navigateBack()
|
|
||||||
},
|
|
||||||
// 选中购物车商品 -> 回传商品卡片(type=4)
|
|
||||||
pickGoods(g) {
|
|
||||||
const card = {
|
|
||||||
goods_id: g.goods_id,
|
|
||||||
commodity_id: g.commodity_id,
|
|
||||||
name: g.name,
|
|
||||||
price: g.price,
|
|
||||||
pic: g.pic,
|
|
||||||
page: '/packages/advertising/goodsDetail/index',
|
|
||||||
item: { commodity_id: g.commodity_id, id: g.goods_id, promotional_price: g.price } // goodsDetail 需 commodity_id 查详情、id 定位规格、promotional_price 作展示价
|
|
||||||
}
|
|
||||||
uni.$emit('chat:pickCard', { type: 4, card })
|
|
||||||
uni.navigateBack()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.picker-page { display: flex; flex-direction: column; height: 100vh; background: #f5f5f5; }
|
|
||||||
.tabs { display: flex; background: #fff; }
|
|
||||||
.tab { flex: 1; text-align: center; padding: 28rpx 0; font-size: 28rpx; color: #666; }
|
|
||||||
.tab.active { color: #FF370B; font-weight: 600; border-bottom: 4rpx solid #FF370B; }
|
|
||||||
.list { flex: 1; padding: 20rpx; box-sizing: border-box; }
|
|
||||||
.order-card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 20rpx; }
|
|
||||||
.order-head { font-size: 24rpx; color: #999; margin-bottom: 14rpx; }
|
|
||||||
.order-goods { display: flex; gap: 12rpx; }
|
|
||||||
.goods-thumb { width: 120rpx; height: 120rpx; border-radius: 8rpx; background: #f0f0f0; }
|
|
||||||
.order-foot { display: flex; align-items: center; justify-content: flex-end; gap: 20rpx; margin-top: 16rpx; }
|
|
||||||
.order-foot .amount { color: #FF370B; font-weight: 600; }
|
|
||||||
.goods-row { display: flex; align-items: center; background: #fff; border-radius: 12rpx; padding: 16rpx; margin-bottom: 16rpx; }
|
|
||||||
.goods-thumb-lg { width: 140rpx; height: 140rpx; border-radius: 8rpx; background: #f0f0f0; flex-shrink: 0; }
|
|
||||||
.goods-info { flex: 1; margin-left: 20rpx; min-width: 0; }
|
|
||||||
.goods-name { font-size: 28rpx; color: #222; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
|
||||||
.goods-price { font-size: 30rpx; color: #FF370B; font-weight: 600; margin-top: 12rpx; }
|
|
||||||
.send-btn { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 24rpx; padding: 10rpx 28rpx; border-radius: 30rpx; flex-shrink: 0; }
|
|
||||||
.empty { text-align: center; color: #999; font-size: 26rpx; padding: 80rpx 0; }
|
|
||||||
</style>
|
|
||||||
@ -1,246 +0,0 @@
|
|||||||
/* 合同申请表单样式 */
|
|
||||||
.contract-apply-container {
|
|
||||||
padding: 30rpx;
|
|
||||||
min-height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header {
|
|
||||||
margin-bottom: 15rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
page {
|
|
||||||
padding-bottom: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header h1 {
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.download-btn{
|
|
||||||
height: 65rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
line-height: 65rpx;
|
|
||||||
background-color: #409eff;
|
|
||||||
color: #fff;
|
|
||||||
margin-right: 0rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-header .subtitle {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contract-form {
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
padding: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-item {
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 10rpx;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-label.required::after {
|
|
||||||
content: '*';
|
|
||||||
color: #e64340;
|
|
||||||
margin-left: 4rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input,
|
|
||||||
.form-select {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
border: 1rpx solid #d9d9d9;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
line-height: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-input:focus,
|
|
||||||
.form-select:focus {
|
|
||||||
border-color: #409eff;
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-select {
|
|
||||||
appearance: none;
|
|
||||||
background: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><path fill="%23999" d="M840.4 300H183.6c-19.7 0-30.7 20.8-18.5 35l328.4 380.8c9.4 10.9 27.5 10.9 37 0L858.9 335c12.2-14.2 1.2-35-18.5-35z"></path></svg>') no-repeat right 20rpx center;
|
|
||||||
background-size: 24rpx 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom-btn{
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 按钮样式 */
|
|
||||||
.sign-btn,
|
|
||||||
.submit-btn1,
|
|
||||||
.submit-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 90rpx;
|
|
||||||
border: none;
|
|
||||||
border-radius: 45rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
transition: all 0.3s;
|
|
||||||
line-height: 90rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sign-btn {
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sign-btn:active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn {
|
|
||||||
background-color: #409eff;
|
|
||||||
color: #fff;
|
|
||||||
margin-left: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn1 {
|
|
||||||
background-color: #ff4016;
|
|
||||||
color: #fff;
|
|
||||||
margin-right: 5rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-btn:active {
|
|
||||||
background-color: #66b1ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 响应式调整 */
|
|
||||||
@media screen and (max-width: 768px) {
|
|
||||||
.contract-apply-container {
|
|
||||||
padding: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contract-form {
|
|
||||||
padding: 20rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 自定义弹窗样式 */
|
|
||||||
.custom-modal-overlay {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
z-index: 9999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-modal {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 650rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-header {
|
|
||||||
padding: 30rpx;
|
|
||||||
border-bottom: 2rpx solid #f0f0f0;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-header h3 {
|
|
||||||
margin: 0;
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-btn {
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
font-size: 40rpx;
|
|
||||||
color: #999;
|
|
||||||
cursor: pointer;
|
|
||||||
padding: 0;
|
|
||||||
width: 40rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content {
|
|
||||||
padding: 40rpx 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-content p {
|
|
||||||
margin: 0 0 30rpx 0;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #666;
|
|
||||||
line-height: 1.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-container {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
padding: 20rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
word-break: break-all;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-text {
|
|
||||||
color: #007aff;
|
|
||||||
font-size: 26rpx;
|
|
||||||
text-decoration: underline;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modal-footer {
|
|
||||||
padding: 0 30rpx 30rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirm-btn {
|
|
||||||
background-color: #007aff;
|
|
||||||
color: #fff;
|
|
||||||
border: none;
|
|
||||||
line-height: 80rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
min-width: 200rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirm-btn2 {
|
|
||||||
border: none;
|
|
||||||
line-height: 80rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
cursor: pointer;
|
|
||||||
min-width: 200rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
}
|
|
||||||
@ -1,511 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="contract-apply-container">
|
|
||||||
<view class="page-header">
|
|
||||||
<h1>合同申请</h1>
|
|
||||||
<button type="button" class="download-btn" @click="download">合同下载</button>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<form class="contract-form">
|
|
||||||
|
|
||||||
<!-- 合同类别 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">合同类别</view>
|
|
||||||
<view class="form-input-wrapper">
|
|
||||||
<view class="form-select" @click="handleEcTypeClick">
|
|
||||||
{{ getEcTypeLabel({ value: formData.ec_type_code }) || formData.ec_type_code || '请选择合同类别' }}
|
|
||||||
</view>
|
|
||||||
<u-picker :show="showEcTypePicker" :columns="[ecTypeOptions]" keyName="label" @confirm="onEcTypeConfirm"
|
|
||||||
@cancel="showEcTypePicker = false" @close="showEcTypePicker = false" :closeOnClickOverlay="true"></u-picker>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 法人/经营者证件类型 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">法人/经营者证件类型</view>
|
|
||||||
<view class="form-input-wrapper">
|
|
||||||
<view class="form-select" @click="handleCertTypeClick">
|
|
||||||
{{ getCertTypeLabel(formData.cert_type) || '请选择证件类型' }}
|
|
||||||
</view>
|
|
||||||
<u-picker :show="showCertTypePicker" :columns="[certTypeOptions]" keyName="label" @confirm="onCertTypeConfirm"
|
|
||||||
@cancel="showCertTypePicker = false" @close="showCertTypePicker = false"
|
|
||||||
:closeOnClickOverlay="true"></u-picker>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 法人/经营者姓名 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">法人/经营者姓名</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.cert_name" placeholder="请输入姓名" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 法人/经营者证件号码 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">法人/经营者证件号码</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.cert_no" placeholder="请输入证件号码" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 签约手机号 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">签约手机号</view>
|
|
||||||
<input type="tel" class="form-input" v-model="formData.mobile" placeholder="请输入手机号" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 营业执照号 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label">营业执照号</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.business_license_no" placeholder="请输入营业执照号(可选)" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 营业执照名称 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label">营业执照名称</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.business_license_name" placeholder="请输入营业执照名称(可选)" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 企业/经营者结算开户行号 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">企业/经营者结算开户行号</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.openning_bank_code" placeholder="请输入开户行号" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 企业/经营者结算开户行名称 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">企业/经营者结算开户行名称</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.openning_bank_name" placeholder="请输入开户行名称" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 企业/经营者结算卡性质 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">企业/经营者结算卡性质</view>
|
|
||||||
<view class="form-input-wrapper">
|
|
||||||
<view class="form-select" @click="handleAcctTypeClick">
|
|
||||||
{{ formData.acct_type_code ? (formData.acct_type_code === '57' ? '对公' : '对私') : '请选择结算卡性质' }}
|
|
||||||
</view>
|
|
||||||
<u-picker :show="showAcctTypePicker" :columns="[acctTypeOptions]" keyName="label" @confirm="onAcctTypeConfirm"
|
|
||||||
@cancel="showAcctTypePicker = false" @close="showAcctTypePicker = false"
|
|
||||||
:closeOnClickOverlay="true"></u-picker>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 企业/经营者结算卡号 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">企业/经营者结算卡号</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acct_no" placeholder="请输入结算卡号" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 企业/经营者结算卡名称 -->
|
|
||||||
<view class="form-item">
|
|
||||||
<view class="form-label required">企业/经营者结算卡名称</view>
|
|
||||||
<input type="text" class="form-input" v-model="formData.acct_name" placeholder="请输入结算卡名称" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 签署协议按钮 -->
|
|
||||||
<button type="button" class="sign-btn" @click="goToSignAgreement">签署协议</button>
|
|
||||||
|
|
||||||
<!-- 提交申请按钮 -->
|
|
||||||
<view class="bottom-btn">
|
|
||||||
<button type="button" class="submit-btn1" @click="ecQuery">结果查询</button>
|
|
||||||
<button type="button" class="submit-btn" @click="submitApplication">提交申请</button>
|
|
||||||
</view>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<!-- 自定义弹窗 -->
|
|
||||||
<view v-if="showCustomModal" class="custom-modal-overlay" @click="closeModal">
|
|
||||||
<view class="custom-modal" @click.stop>
|
|
||||||
<view class="modal-content">
|
|
||||||
<p>查询结果前请先确认是否在以下页面中填写信息</p>
|
|
||||||
<view class="link-container">
|
|
||||||
<text class="link-text" @click="openApplyUrl">{{ applyUrl || '暂无链接' }}</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="modal-footer">
|
|
||||||
<button type="button" class="confirm-btn2" @click="closeModal">取消</button>
|
|
||||||
<button type="button" class="confirm-btn" @click="confirmQuery">确认</button>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { picUrl, menuButtonInfo, request, NavgateTo, RequsetUrl } from "../../../utils";
|
|
||||||
import { apiArr } from "../../../api/contract";
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
formData: {
|
|
||||||
mch_id: uni.getStorageSync('mchId'),
|
|
||||||
ec_type_code: 'Ec007',
|
|
||||||
cert_type: '',
|
|
||||||
cert_name: '',
|
|
||||||
cert_no: '',
|
|
||||||
mobile: '',
|
|
||||||
business_license_no: '',
|
|
||||||
business_license_name: '',
|
|
||||||
openning_bank_code: '',
|
|
||||||
openning_bank_name: '',
|
|
||||||
acct_type_code: '',
|
|
||||||
acct_no: '',
|
|
||||||
acct_name: '',
|
|
||||||
ec_content_parameters: '',
|
|
||||||
},
|
|
||||||
// picker显示状态
|
|
||||||
showEcTypePicker: false,
|
|
||||||
showCertTypePicker: false,
|
|
||||||
showAcctTypePicker: false,
|
|
||||||
// picker选项数据
|
|
||||||
ecTypeOptions: [
|
|
||||||
{ label: '特约商户支付服务合作协议V4.1 + 结算授权委托书', value: 'Ec007' }
|
|
||||||
],
|
|
||||||
certTypeOptions: [
|
|
||||||
{ label: '身份证', value: 'RESIDENT_ID' },
|
|
||||||
{ label: '护照', value: 'PASSPORT' },
|
|
||||||
{ label: '港澳居民往来内地通行证', value: 'HK_MACAO_PASS' },
|
|
||||||
{ label: '台湾居民来往大陆通行证', value: 'TAIWAN_PASS' }
|
|
||||||
],
|
|
||||||
acctTypeOptions: [
|
|
||||||
{ label: '对公', value: '57' },
|
|
||||||
{ label: '对私', value: '58' }
|
|
||||||
],
|
|
||||||
// 自定义弹窗状态
|
|
||||||
showCustomModal: false,
|
|
||||||
applyUrl: ''
|
|
||||||
};
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
// 如果从上一个页面返回并携带了ec_content参数,则设置
|
|
||||||
if (options.ec_content) {
|
|
||||||
this.formData.ec_content_parameters = options.ec_content;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 监听协议签署成功事件
|
|
||||||
uni.$on('agreementSigned', (data) => {
|
|
||||||
if (data && data.ec_content) {
|
|
||||||
this.formData.ec_content_parameters = data.ec_content;
|
|
||||||
uni.showToast({
|
|
||||||
title: '协议签署成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
// 页面卸载时移除事件监听
|
|
||||||
onUnload() {
|
|
||||||
uni.$off('agreementSigned');
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
//下载合同
|
|
||||||
download() {
|
|
||||||
const storeValue = uni.getStorageSync('storeValue');
|
|
||||||
if (!storeValue || !storeValue.ec_apply_id) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先提交申请',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const params = {
|
|
||||||
ec_apply_id: storeValue.ec_apply_id
|
|
||||||
};
|
|
||||||
|
|
||||||
uni.showLoading({
|
|
||||||
title: '下载中',
|
|
||||||
mask: true
|
|
||||||
});
|
|
||||||
|
|
||||||
request(apiArr.ecDownload, "POST", params).then(res => {
|
|
||||||
const respData = res.resp_data;
|
|
||||||
// 检查合同状态是否为已完成
|
|
||||||
if (respData.ec_status === 'COMPLETED' && respData.ec_file) {
|
|
||||||
try {
|
|
||||||
// 处理Base64编码的文件数据(URL安全的Base64)
|
|
||||||
const base64Data = respData.ec_file;
|
|
||||||
// 替换URL安全的Base64字符
|
|
||||||
const safeBase64 = base64Data.replace(/-/g, '+').replace(/_/g, '/');
|
|
||||||
|
|
||||||
// 文件名(可以根据需要设置)
|
|
||||||
const fileName = `contract_${respData.ec_apply_id || Date.now()}.pdf`;
|
|
||||||
|
|
||||||
// 在uni-app中,我们需要使用文件系统API来保存文件
|
|
||||||
// 首先获取文件系统管理器
|
|
||||||
const fs = uni.getFileSystemManager();
|
|
||||||
|
|
||||||
// 生成临时文件路径
|
|
||||||
const tempFilePath = `${uni.env.USER_DATA_PATH}/${fileName}`;
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 将Base64数据写入临时文件
|
|
||||||
fs.writeFile({
|
|
||||||
filePath: tempFilePath,
|
|
||||||
data: safeBase64,
|
|
||||||
encoding: 'base64',
|
|
||||||
success: () => {
|
|
||||||
uni.hideLoading();
|
|
||||||
uni.showToast({
|
|
||||||
title: '合同下载成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
console.log('文件保存成功:', tempFilePath);
|
|
||||||
|
|
||||||
// 打开文件
|
|
||||||
uni.openDocument({
|
|
||||||
filePath: tempFilePath,
|
|
||||||
showMenu: true,
|
|
||||||
success: (openRes) => {
|
|
||||||
console.log('文件打开成功:', openRes);
|
|
||||||
},
|
|
||||||
fail: (openErr) => {
|
|
||||||
console.error('文件打开失败:', openErr);
|
|
||||||
uni.showToast({
|
|
||||||
title: '文件打开失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
fail: (writeErr) => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('文件写入失败:', writeErr);
|
|
||||||
uni.showToast({
|
|
||||||
title: '合同下载失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (fsError) {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('文件系统操作失败:', fsError);
|
|
||||||
uni.showToast({
|
|
||||||
title: '文件系统错误',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('处理文件数据失败:', error);
|
|
||||||
uni.showToast({
|
|
||||||
title: '文件处理失败',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
uni.hideLoading();
|
|
||||||
if (respData.ec_status !== 'COMPLETED') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '电子合同尚未完成',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: '合同文件不存在',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}).catch(err => {
|
|
||||||
uni.hideLoading();
|
|
||||||
console.error('下载合同失败:', err);
|
|
||||||
uni.showToast({
|
|
||||||
title: '下载失败,请重试',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
})
|
|
||||||
},
|
|
||||||
// 合同查询
|
|
||||||
ecQuery() {
|
|
||||||
// 显示自定义弹窗
|
|
||||||
this.applyUrl = uni.getStorageSync('applyUrl');
|
|
||||||
this.showCustomModal = true;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 关闭自定义弹窗
|
|
||||||
closeModal() {
|
|
||||||
this.showCustomModal = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
// 打开申请链接
|
|
||||||
openApplyUrl() {
|
|
||||||
if (this.applyUrl) {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/pages/webview/webview?url=${encodeURIComponent(this.applyUrl)}`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 确认查询
|
|
||||||
confirmQuery() {
|
|
||||||
this.showCustomModal = false;
|
|
||||||
|
|
||||||
// 继续查询流程
|
|
||||||
const storeValue = uni.getStorageSync('storeValue');
|
|
||||||
if (!storeValue || !storeValue.ec_apply_id) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '请先提交申请',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const params = {
|
|
||||||
ec_apply_id: storeValue.ec_apply_id
|
|
||||||
}
|
|
||||||
request(apiArr.ecQuery, "POST", params).then(res => {
|
|
||||||
if (res.resp_data.ec_status === 'COMPLETED') {
|
|
||||||
uni.showToast({
|
|
||||||
title: '申请通过',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: '申请未通过',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 获取合同类别显示文本
|
|
||||||
getEcTypeLabel(code) {
|
|
||||||
// 兼容直接传入value或者包含value属性的对象
|
|
||||||
const targetValue = typeof code === 'string' ? code : (code && code.value ? code.value : code);
|
|
||||||
const option = this.ecTypeOptions.find(item => item.value === targetValue);
|
|
||||||
return option ? option.label : null;
|
|
||||||
},
|
|
||||||
// 获取证件类型显示文本
|
|
||||||
getCertTypeLabel(type) {
|
|
||||||
const option = this.certTypeOptions.find(item => item.value === type);
|
|
||||||
return option ? option.label : null;
|
|
||||||
},
|
|
||||||
// 调试点击事件
|
|
||||||
handleEcTypeClick() {
|
|
||||||
this.showEcTypePicker = true;
|
|
||||||
},
|
|
||||||
handleCertTypeClick() {
|
|
||||||
this.showCertTypePicker = true;
|
|
||||||
},
|
|
||||||
handleAcctTypeClick() {
|
|
||||||
this.showAcctTypePicker = true;
|
|
||||||
},
|
|
||||||
// 合同类别选择确认
|
|
||||||
onEcTypeConfirm(e) {
|
|
||||||
const selectedValue = e.value[0];
|
|
||||||
// 查找对应的选项对象
|
|
||||||
const selectedOption = this.ecTypeOptions.find(item => item.value === selectedValue);
|
|
||||||
this.formData.ec_type_code = selectedOption ? selectedOption.value : selectedValue;
|
|
||||||
this.showEcTypePicker = false;
|
|
||||||
},
|
|
||||||
// 证件类型选择确认
|
|
||||||
onCertTypeConfirm(e) {
|
|
||||||
const selectedValue = e.value[0];
|
|
||||||
const selectedOption = this.certTypeOptions.find(item => item.value === selectedValue.value);
|
|
||||||
this.formData.cert_type = selectedOption ? selectedOption.value : selectedValue;
|
|
||||||
this.showCertTypePicker = false;
|
|
||||||
},
|
|
||||||
// 结算卡性质选择确认
|
|
||||||
onAcctTypeConfirm(e) {
|
|
||||||
const selectedValue = e.value[0];
|
|
||||||
const selectedOption = this.acctTypeOptions.find(item => item.value === selectedValue.value);
|
|
||||||
this.formData.acct_type_code = selectedOption ? selectedOption.value : selectedValue;
|
|
||||||
this.showAcctTypePicker = false;
|
|
||||||
},
|
|
||||||
goToSignAgreement() {
|
|
||||||
NavgateTo('/packages/customerService/contract/index', {
|
|
||||||
// 监听协议页面传递回来的数据
|
|
||||||
onAgreementSigned: (data) => {
|
|
||||||
if (data && data.ec_content) {
|
|
||||||
this.formData.ec_content_parameters = data.ec_content;
|
|
||||||
uni.showToast({
|
|
||||||
title: '协议签署成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
submitApplication() {
|
|
||||||
// 表单验证
|
|
||||||
if (!this.validateForm()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
request(apiArr.ecApply, "POST", this.formData).then(res => {
|
|
||||||
uni.showToast({
|
|
||||||
title: '提交成功',
|
|
||||||
icon: 'success'
|
|
||||||
});
|
|
||||||
uni.setStorageSync('storeValue', { ec_apply_id: res.resp_data.ec_apply_id });
|
|
||||||
uni.setStorageSync('applyUrl', res.resp_data.result_url);
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 表单验证方法
|
|
||||||
validateForm() {
|
|
||||||
const { formData } = this;
|
|
||||||
|
|
||||||
if (!formData.ec_type_code) {
|
|
||||||
uni.showToast({ title: '请选择合同类别', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.cert_type) {
|
|
||||||
uni.showToast({ title: '请选择法人/经营者证件类型', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.cert_name) {
|
|
||||||
uni.showToast({ title: '请输入法人/经营者姓名', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.cert_no) {
|
|
||||||
uni.showToast({ title: '请输入法人/经营者证件号码', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 验证手机号格式
|
|
||||||
if (!formData.mobile) {
|
|
||||||
uni.showToast({ title: '请输入签约手机号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
} else if (!/^1[3-9]\d{9}$/.test(formData.mobile)) {
|
|
||||||
uni.showToast({ title: '手机号格式不正确', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.openning_bank_code) {
|
|
||||||
uni.showToast({ title: '请输入企业/经营者结算开户行号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.openning_bank_name) {
|
|
||||||
uni.showToast({ title: '请输入企业/经营者结算开户行名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acct_type_code) {
|
|
||||||
uni.showToast({ title: '请选择企业/经营者结算卡性质', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acct_no) {
|
|
||||||
uni.showToast({ title: '请输入企业/经营者结算卡号', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.acct_name) {
|
|
||||||
uni.showToast({ title: '请输入企业/经营者结算卡名称', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!formData.ec_content_parameters) {
|
|
||||||
uni.showToast({ title: '请先点击签署协议并完成协议签署', icon: 'none' });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
@import url("./index.css");
|
|
||||||
</style>
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<div class="iptBox">
|
<div class="iptBox">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
|
||||||
></image>
|
></image>
|
||||||
<u--input
|
<u--input
|
||||||
placeholder="请输入内容"
|
placeholder="请输入内容"
|
||||||
@ -31,35 +31,35 @@
|
|||||||
<div class="FilterItem" @click="showDialog(1)">
|
<div class="FilterItem" @click="showDialog(1)">
|
||||||
附近
|
附近
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(2)">
|
<div class="FilterItem" @click="showDialog(2)">
|
||||||
综合
|
综合
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(3)">
|
<div class="FilterItem" @click="showDialog(3)">
|
||||||
排序
|
排序
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(4)">
|
<div class="FilterItem" @click="showDialog(4)">
|
||||||
分类
|
分类
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(5)">
|
<div class="FilterItem" @click="showDialog(5)">
|
||||||
性别
|
性别
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -67,7 +67,7 @@
|
|||||||
<div class="Filter_right">
|
<div class="Filter_right">
|
||||||
筛选
|
筛选
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filter.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filter.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -155,11 +155,11 @@
|
|||||||
<div class="MasterItem" v-for="(item, index) in 3" :key="index">
|
<div class="MasterItem" v-for="(item, index) in 3" :key="index">
|
||||||
<div class="MasterItem_left">
|
<div class="MasterItem_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/community_providentFund_Group_1444.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Group_1444.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/community_providentFund_Ellipse_160.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/community_providentFund_Ellipse_160.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
</div>
|
</div>
|
||||||
@ -167,7 +167,7 @@
|
|||||||
<div class="MasterItem_info">
|
<div class="MasterItem_info">
|
||||||
<div class="MasterItem_Info_left">
|
<div class="MasterItem_Info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
@ -178,18 +178,18 @@
|
|||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
@ -211,13 +211,13 @@
|
|||||||
|
|
||||||
<div class="MasterItem_Info_right_6">
|
<div class="MasterItem_Info_right_6">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<view class="location" @click="chooseLocation">
|
<view class="location" @click="chooseLocation">
|
||||||
<image
|
<image
|
||||||
id="local"
|
id="local"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_localIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_localIcon.png"
|
||||||
mode="aspectFill"
|
mode="aspectFill"
|
||||||
></image>
|
></image>
|
||||||
|
|
||||||
@ -14,7 +14,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="search-box">
|
<view class="search-box">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
|
||||||
class="search-icon"
|
class="search-icon"
|
||||||
></image>
|
></image>
|
||||||
<input class="search-placeholder" placeholder="请输入您要找的服务" />
|
<input class="search-placeholder" placeholder="请输入您要找的服务" />
|
||||||
@ -44,7 +44,7 @@
|
|||||||
>
|
>
|
||||||
<view id="top" style="height: 1px; opacity: 0"></view>
|
<view id="top" style="height: 1px; opacity: 0"></view>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/guanggao4.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/guanggao4.png"
|
||||||
class="content-img"
|
class="content-img"
|
||||||
></image>
|
></image>
|
||||||
<view
|
<view
|
||||||
@ -138,23 +138,23 @@ export default {
|
|||||||
serviceCategories: [
|
serviceCategories: [
|
||||||
{
|
{
|
||||||
name: "家电维修",
|
name: "家电维修",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/index_top3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_top3.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "数码维修",
|
name: "数码维修",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/index_top3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_top3.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "电器清洗",
|
name: "电器清洗",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/index_top3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_top3.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "洗衣洗鞋",
|
name: "洗衣洗鞋",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/index_top3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_top3.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "精细擦窗",
|
name: "精细擦窗",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/index_top3.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_top3.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
currentIndex: 0,
|
currentIndex: 0,
|
||||||
|
|||||||
@ -386,7 +386,7 @@
|
|||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 33rpx;
|
right: 33rpx;
|
||||||
bottom: 100rpx;
|
bottom: 320rpx;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
<u-icon name="arrow-down" color="#999999" size="28"></u-icon>
|
<u-icon name="arrow-down" color="#999999" size="28"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
<view class="search-box" @click="searchService">
|
<view class="search-box" @click="searchService">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
|
||||||
class="search-icon" mode="aspectFit"></image>
|
class="search-icon" mode="aspectFit"></image>
|
||||||
<text class="search-placeholder">请输入您要找的服务</text>
|
<text class="search-placeholder">请输入您要找的服务</text>
|
||||||
</view>
|
</view>
|
||||||
@ -45,12 +45,12 @@
|
|||||||
<view class="announcement-flex">
|
<view class="announcement-flex">
|
||||||
到家
|
到家
|
||||||
<text class="announcement-title"> 公告</text>
|
<text class="announcement-title"> 公告</text>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_notice1.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_notice1.png"
|
||||||
class="announcement-img" mode="aspectFit"></image>
|
class="announcement-img" mode="aspectFit"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="hrStyle">|</view>
|
<view class="hrStyle">|</view>
|
||||||
<text class="announcement-content">公告内容公告内容公告内容公告内容...</text>
|
<text class="announcement-content">公告内容公告内容公告内容公告内容...</text>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_notice2.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_notice2.png"
|
||||||
class="arrow-right" @click="lookNotice" mode="aspectFit"></image>
|
class="arrow-right" @click="lookNotice" mode="aspectFit"></image>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
@ -58,7 +58,7 @@
|
|||||||
<view class="serverList">
|
<view class="serverList">
|
||||||
<view class="serverList_left">
|
<view class="serverList_left">
|
||||||
<!-- <view> -->
|
<!-- <view> -->
|
||||||
<image src="https://static.hshuishang.com/property-img-file/guanggao1.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/guanggao1.png"
|
||||||
mode="aspectFit" />
|
mode="aspectFit" />
|
||||||
<!-- <swiper-item v-for="(item, index) in homeLeftList" :key="index">
|
<!-- <swiper-item v-for="(item, index) in homeLeftList" :key="index">
|
||||||
<image :src="item.pic_src" alt="" mode="aspectFit" />
|
<image :src="item.pic_src" alt="" mode="aspectFit" />
|
||||||
@ -75,14 +75,14 @@
|
|||||||
|
|
||||||
<!-- 立即联系 -->
|
<!-- 立即联系 -->
|
||||||
<view class="contact-section" @click="contactService">
|
<view class="contact-section" @click="contactService">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_kefu1.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_kefu1.png"
|
||||||
class="contact-icon"></image>
|
class="contact-icon"></image>
|
||||||
<view class="contact-text">
|
<view class="contact-text">
|
||||||
<text class="contact-title">立即联系</text>
|
<text class="contact-title">立即联系</text>
|
||||||
<br />
|
<br />
|
||||||
<text class="contact-subtitle">未找到您需要的服务?</text>
|
<text class="contact-subtitle">未找到您需要的服务?</text>
|
||||||
</view>
|
</view>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_kefu2.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_kefu2.png"
|
||||||
class="contact-icon2"></image>
|
class="contact-icon2"></image>
|
||||||
</view>
|
</view>
|
||||||
<view class="interval"></view>
|
<view class="interval"></view>
|
||||||
@ -90,19 +90,19 @@
|
|||||||
<!-- 推荐热门服务 -->
|
<!-- 推荐热门服务 -->
|
||||||
<view class="hot-services">
|
<view class="hot-services">
|
||||||
<view class="section-header">
|
<view class="section-header">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_bottom1.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_bottom1.png"
|
||||||
class="section-arrow"></image>
|
class="section-arrow"></image>
|
||||||
<text class="section-title">推荐热门服务</text>
|
<text class="section-title">推荐热门服务</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="service-list">
|
<view class="service-list">
|
||||||
<view class="service-card" v-for="(service, index) in hotServiceList" :key="index">
|
<view class="service-card" v-for="(service, index) in hotServiceList" :key="index">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/ceshi.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/ceshi.png"
|
||||||
class="service-image"></image>
|
class="service-image"></image>
|
||||||
<view class="service-info">
|
<view class="service-info">
|
||||||
<view class="service-info-left">
|
<view class="service-info-left">
|
||||||
<view class="service-info-left-top">
|
<view class="service-info-left-top">
|
||||||
<text class="service-name">{{ service.name }}</text>
|
<text class="service-name">{{ service.name }}</text>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/index_bottom2.png"
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_bottom2.png"
|
||||||
class="service-image2"></image>
|
class="service-image2"></image>
|
||||||
<text class="service-tag">{{ service.tag }}</text>
|
<text class="service-tag">{{ service.tag }}</text>
|
||||||
</view>
|
</view>
|
||||||
@ -127,7 +127,7 @@
|
|||||||
<!-- 回到顶部 -->
|
<!-- 回到顶部 -->
|
||||||
<div class="toUp" @click="scrollToTop">
|
<div class="toUp" @click="scrollToTop">
|
||||||
<u-badge numberType="limit" type="error" max="99" :value="value"></u-badge>
|
<u-badge numberType="limit" type="error" max="99" :value="value"></u-badge>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/toUp.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/toUp.png"></image>
|
||||||
</div>
|
</div>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@ -158,17 +158,17 @@ export default {
|
|||||||
homeLeftList: [
|
homeLeftList: [
|
||||||
{
|
{
|
||||||
title: "",
|
title: "",
|
||||||
pic_src: "https://static.hshuishang.com/property-img-file/guanggao1.png",
|
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/guanggao1.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
homeRightList: [
|
homeRightList: [
|
||||||
{
|
{
|
||||||
title: "",
|
title: "",
|
||||||
pic_src: "https://static.hshuishang.com/property-img-file/guanggao2.png",
|
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/guanggao2.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "",
|
title: "",
|
||||||
pic_src: "https://static.hshuishang.com/property-img-file/guanggao3.png",
|
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/guanggao3.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
// 热门服务数据
|
// 热门服务数据
|
||||||
|
|||||||
@ -30,7 +30,7 @@
|
|||||||
<swiper>
|
<swiper>
|
||||||
<swiper-item>
|
<swiper-item>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_banner.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_banner.png"
|
||||||
></image>
|
></image>
|
||||||
</swiper-item>
|
</swiper-item>
|
||||||
</swiper>
|
</swiper>
|
||||||
@ -44,7 +44,7 @@
|
|||||||
<div class="master_info">
|
<div class="master_info">
|
||||||
<div class="master_info_left">
|
<div class="master_info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
@ -55,17 +55,17 @@
|
|||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
@ -110,28 +110,28 @@
|
|||||||
<div class="master_msg">
|
<div class="master_msg">
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon1.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">52岁</div>
|
<div class="master_msg_itemText">52岁</div>
|
||||||
<div>广东梅州人</div>
|
<div>广东梅州人</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon2.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon2.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">5-10年</div>
|
<div class="master_msg_itemText">5-10年</div>
|
||||||
<div>服务经验</div>
|
<div>服务经验</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon3.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon3.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">500+</div>
|
<div class="master_msg_itemText">500+</div>
|
||||||
<div>成功预约</div>
|
<div>成功预约</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon4.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon4.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">100+</div>
|
<div class="master_msg_itemText">100+</div>
|
||||||
<div>用户评价</div>
|
<div>用户评价</div>
|
||||||
@ -149,7 +149,7 @@
|
|||||||
<div class="imgList">
|
<div class="imgList">
|
||||||
<div class="imgItem" v-for="(item, index) in 5" :key="index">
|
<div class="imgItem" v-for="(item, index) in 5" :key="index">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
<div class="master_info mt20" v-for="(item, index) in 3" :key="index">
|
<div class="master_info mt20" v-for="(item, index) in 3" :key="index">
|
||||||
<div class="master_info_left">
|
<div class="master_info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
@ -172,17 +172,17 @@
|
|||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
@ -215,7 +215,7 @@
|
|||||||
<div class="master_info">
|
<div class="master_info">
|
||||||
<div class="master_info_left">
|
<div class="master_info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
@ -226,17 +226,17 @@
|
|||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
@ -282,28 +282,28 @@
|
|||||||
<div class="master_msg">
|
<div class="master_msg">
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon1.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">52岁</div>
|
<div class="master_msg_itemText">52岁</div>
|
||||||
<div>广东梅州人</div>
|
<div>广东梅州人</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon2.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon2.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">5-10年</div>
|
<div class="master_msg_itemText">5-10年</div>
|
||||||
<div>服务经验</div>
|
<div>服务经验</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon3.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon3.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">500+</div>
|
<div class="master_msg_itemText">500+</div>
|
||||||
<div>成功预约</div>
|
<div>成功预约</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_msg_item">
|
<div class="master_msg_item">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon4.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon4.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="master_msg_itemText">100+</div>
|
<div class="master_msg_itemText">100+</div>
|
||||||
<div>用户评价</div>
|
<div>用户评价</div>
|
||||||
@ -323,7 +323,7 @@
|
|||||||
<div class="evaluateItem_header">
|
<div class="evaluateItem_header">
|
||||||
<div class="evaluateItem_ava">
|
<div class="evaluateItem_ava">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="evaluateItem_msg">
|
<div class="evaluateItem_msg">
|
||||||
@ -332,7 +332,7 @@
|
|||||||
<image
|
<image
|
||||||
v-for="(item, index) in 5"
|
v-for="(item, index) in 5"
|
||||||
:key="index"
|
:key="index"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_stait.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_stait.png"
|
||||||
></image>
|
></image>
|
||||||
<span class="evaluateItem_msg3">技术评级:100分</span>
|
<span class="evaluateItem_msg3">技术评级:100分</span>
|
||||||
</div>
|
</div>
|
||||||
@ -349,7 +349,7 @@
|
|||||||
<div class="imgList">
|
<div class="imgList">
|
||||||
<div class="imgItem" v-for="(item, index) in 5" :key="index">
|
<div class="imgItem" v-for="(item, index) in 5" :key="index">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -361,14 +361,14 @@
|
|||||||
<div class="footerIcon" @click="Vendor">
|
<div class="footerIcon" @click="Vendor">
|
||||||
<image
|
<image
|
||||||
id="footerIcon1"
|
id="footerIcon1"
|
||||||
src="https://static.hshuishang.com/property-img-file/footer_shop.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/footer_shop.png"
|
||||||
></image>
|
></image>
|
||||||
店铺
|
店铺
|
||||||
</div>
|
</div>
|
||||||
<div class="footerIcon">
|
<div class="footerIcon">
|
||||||
<image
|
<image
|
||||||
id="footerIcon2"
|
id="footerIcon2"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_CollectIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_CollectIcon.png"
|
||||||
></image>
|
></image>
|
||||||
收藏
|
收藏
|
||||||
</div>
|
</div>
|
||||||
@ -376,7 +376,7 @@
|
|||||||
<image
|
<image
|
||||||
@click="openSave"
|
@click="openSave"
|
||||||
id="footerIcon2"
|
id="footerIcon2"
|
||||||
src="https://static.hshuishang.com/property-img-file/shop_share.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
|
||||||
></image>
|
></image>
|
||||||
分享
|
分享
|
||||||
</div>
|
</div>
|
||||||
@ -393,7 +393,7 @@
|
|||||||
<view class="boxshadow_text">好友对方可以直接查看详情</view>
|
<view class="boxshadow_text">好友对方可以直接查看详情</view>
|
||||||
<view class="boxshadow_text2">张师傅</view>
|
<view class="boxshadow_text2">张师傅</view>
|
||||||
<view class="boxshadow_img">
|
<view class="boxshadow_img">
|
||||||
<image src="https://static.hshuishang.com/erweima.png"> </image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/erweima.png"> </image>
|
||||||
</view>
|
</view>
|
||||||
<view class="boxshadow_text2">扫描二维码查看服务详情</view>
|
<view class="boxshadow_text2">扫描二维码查看服务详情</view>
|
||||||
<view class="boxshadow_btnList">
|
<view class="boxshadow_btnList">
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
<div class="EvaluateItem" v-for="(item, index) in 3" :key="index">
|
<div class="EvaluateItem" v-for="(item, index) in 3" :key="index">
|
||||||
<div class="evaluateItem_header">
|
<div class="evaluateItem_header">
|
||||||
<div class="evaluateItem_ava">
|
<div class="evaluateItem_ava">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="evaluateItem_msg">
|
<div class="evaluateItem_msg">
|
||||||
<div class="evaluateItem_msg1">TP</div>
|
<div class="evaluateItem_msg1">TP</div>
|
||||||
@ -37,7 +37,7 @@
|
|||||||
<image
|
<image
|
||||||
v-for="(item, index) in 5"
|
v-for="(item, index) in 5"
|
||||||
:key="index"
|
:key="index"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_stait.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_stait.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
<view class="notice-content">{{ item.content }}</view>
|
<view class="notice-content">{{ item.content }}</view>
|
||||||
<view class="notice-date">
|
<view class="notice-date">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/time.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/time.png"
|
||||||
class="date-image"
|
class="date-image"
|
||||||
></image>
|
></image>
|
||||||
<view>{{ item.date }}</view>
|
<view>{{ item.date }}</view>
|
||||||
@ -31,13 +31,13 @@ export default {
|
|||||||
return {
|
return {
|
||||||
noticeList: [
|
noticeList: [
|
||||||
{
|
{
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "公告标题1",
|
title: "公告标题1",
|
||||||
content: "公告内容",
|
content: "公告内容",
|
||||||
date: "2023-01-01",
|
date: "2023-01-01",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "公告标题2",
|
title: "公告标题2",
|
||||||
content: "公告内容",
|
content: "公告内容",
|
||||||
date: "2023-01-02",
|
date: "2023-01-02",
|
||||||
|
|||||||
@ -105,7 +105,7 @@
|
|||||||
|
|
||||||
.active2::after {
|
.active2::after {
|
||||||
content: '';
|
content: '';
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
></u-icon>
|
></u-icon>
|
||||||
<view class="search-input-container">
|
<view class="search-input-container">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
|
||||||
class="search-icon"
|
class="search-icon"
|
||||||
></image>
|
></image>
|
||||||
<input
|
<input
|
||||||
@ -100,7 +100,7 @@
|
|||||||
@click="navigateToReservation(service)"
|
@click="navigateToReservation(service)"
|
||||||
>
|
>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/ceshi.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/ceshi.png"
|
||||||
class="service-image"
|
class="service-image"
|
||||||
/>
|
/>
|
||||||
<view class="service-info">
|
<view class="service-info">
|
||||||
@ -108,7 +108,7 @@
|
|||||||
<view class="service-info-left-top">
|
<view class="service-info-left-top">
|
||||||
<text class="service-name">{{ service.name }}</text>
|
<text class="service-name">{{ service.name }}</text>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/index_bottom2.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/index_bottom2.png"
|
||||||
class="service-image2"
|
class="service-image2"
|
||||||
></image>
|
></image>
|
||||||
<text class="service-tag">{{ service.tag }}</text>
|
<text class="service-tag">{{ service.tag }}</text>
|
||||||
@ -153,7 +153,7 @@
|
|||||||
:value="value"
|
:value="value"
|
||||||
></u-badge>
|
></u-badge>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/toUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/toUp.png"
|
||||||
></image>
|
></image>
|
||||||
</div> -->
|
</div> -->
|
||||||
</view>
|
</view>
|
||||||
@ -177,15 +177,15 @@ export default {
|
|||||||
specifiedContent: [
|
specifiedContent: [
|
||||||
{
|
{
|
||||||
name: "服务",
|
name: "服务",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "阿石",
|
name: "阿石",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "阿榴",
|
name: "阿榴",
|
||||||
icon: "https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png",
|
icon: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
searchHistory: [],
|
searchHistory: [],
|
||||||
|
|||||||
@ -205,86 +205,71 @@ page {
|
|||||||
padding: 20rpx 30rpx;
|
padding: 20rpx 30rpx;
|
||||||
border-bottom: 1rpx solid #f5f5f5;
|
border-bottom: 1rpx solid #f5f5f5;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-title {
|
.filter-title {
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #333;
|
color: #333;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-options {
|
.filter-options {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
gap: 15rpx;
|
gap: 15rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-option {
|
.filter-option {
|
||||||
border-radius: 10rpx;
|
background: #f5f5f5;
|
||||||
border: 1rpx solid #cccccc;
|
border-radius: 50rpx;
|
||||||
padding: 12rpx 30rpx;
|
padding: 12rpx 30rpx;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #666;
|
color: #666;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-option.active {
|
.filter-option.active {
|
||||||
background: #ff370b;
|
background: #ff370b;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.price-range {
|
.price-range {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 20rpx;
|
gap: 20rpx;
|
||||||
margin-top: 10rpx;
|
margin-top: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.price-input {
|
.price-input {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 60rpx;
|
height: 60rpx;
|
||||||
border: 1rpx solid #cccccc;
|
background: #f5f5f5;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
padding: 0 20rpx;
|
padding: 0 20rpx;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.price-separator {
|
.price-separator {
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-buttons {
|
.filter-buttons {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 20rpx 30rpx;
|
padding: 20rpx 30rpx;
|
||||||
margin-top: 10rpx;
|
margin-top: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reset-button {
|
.reset-button {
|
||||||
width: 200rpx;
|
width: 200rpx;
|
||||||
height: 70rpx;
|
height: 70rpx;
|
||||||
border: 1rpx solid #cccccc;
|
border: 1rpx solid #7abbff;
|
||||||
border-radius: 50rpx;
|
border-radius: 50rpx;
|
||||||
background: #d9d9d9;
|
background: #f0f7ff;
|
||||||
color: black;
|
color: #409eff;
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.confirm-button {
|
.confirm-button {
|
||||||
width: 200rpx;
|
width: 200rpx;
|
||||||
height: 70rpx;
|
height: 70rpx;
|
||||||
background: #ff370b;
|
background: #409eff;
|
||||||
border-radius: 50rpx;
|
border-radius: 50rpx;
|
||||||
color: white;
|
color: white;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
display: flex;
|
border: none;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.MasterItem_Info_right_1 {
|
.MasterItem_Info_right_1 {
|
||||||
@ -416,7 +401,6 @@ page {
|
|||||||
|
|
||||||
.local span {
|
.local span {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
margin: 0 10rpx;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.filterMore1 {
|
.filterMore1 {
|
||||||
@ -425,32 +409,27 @@ page {
|
|||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
margin: 40rpx 0 20rpx 0;
|
margin-top: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filterMoreItem {
|
.filterMoreItem {
|
||||||
font-size: 26rpx;
|
font-size: 28rpx;
|
||||||
color: #222222;
|
color: #222222;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
background-color: #f6f6fa;
|
||||||
padding: 0 20rpx;
|
padding: 0 20rpx;
|
||||||
margin-right: 10rpx;
|
margin-right: 10rpx;
|
||||||
margin-right: 20rpx;
|
margin-right: 20rpx;
|
||||||
border-radius: 10rpx;
|
border-radius: 20rpx;
|
||||||
border: 1rpx solid #cccccc;
|
|
||||||
padding: 10rpx 20rpx;
|
padding: 10rpx 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filterMoreItem-active {
|
|
||||||
color: #ff702c !important;
|
|
||||||
border: 1rpx solid #ff702c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filterMore2_item {
|
.filterMore2_item {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin: 0 10rpx 45rpx 10rpx;
|
margin-bottom: 20rpx;
|
||||||
color: #999;
|
color: #999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,178 +1,179 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container2">
|
<view class="container2">
|
||||||
<view class="header">
|
<div class="header">
|
||||||
<view class="Filter">
|
<div class="Filter">
|
||||||
<view class="Filter_left">
|
<div class="Filter_left">
|
||||||
<view
|
<div
|
||||||
v-for="filter in filters"
|
v-for="filter in filters"
|
||||||
:key="filter.id"
|
:key="filter.id"
|
||||||
class="FilterItem"
|
class="FilterItem"
|
||||||
:class="{ active: selectedFilter === filter.id }"
|
:class="{ active: selectedFilter === filter.id }"
|
||||||
@click="
|
@click="
|
||||||
showDialog(filter.id);
|
showDialog(filter.id);
|
||||||
|
selectedFilter = filter.id;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ filter.label }}
|
{{ filter.label }}
|
||||||
<image
|
<image
|
||||||
:src="
|
:src="
|
||||||
selectedFilter === filter.id
|
selectedFilter === filter.id
|
||||||
? 'https://static.hshuishang.com/search_up.png'
|
? 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/search_up.png'
|
||||||
: 'https://static.hshuishang.com/property-img-file/homeServer_filterMore.png'
|
: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png'
|
||||||
"
|
"
|
||||||
:class="{ iconStyle: selectedFilter === filter.id }"
|
:class="{ iconStyle: selectedFilter === filter.id }"
|
||||||
></image>
|
></image>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="Filter_right" @click="showDialog(6)">
|
<div class="Filter_right" @click="showDialog(6)">
|
||||||
<text :class="{ activeFilter: show6 }">筛选</text>
|
<text :class="{ activeFilter: show6 }">筛选</text>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filter.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filter.png"
|
||||||
></image>
|
></image>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<!-- 位置筛选 -->
|
<!-- 位置筛选 -->
|
||||||
<view class="FilterMore" v-if="show1">
|
<div class="FilterMore" v-if="show1">
|
||||||
<view class="local">距离 <span>上海公馆</span> ></view>
|
<div class="local">距离 <span>上海公馆</span></div>
|
||||||
<view class="filterMore1">
|
<div class="filterMore1">
|
||||||
<view class="filterMoreItem filterMoreItem-active">附近</view>
|
<div class="filterMoreItem">附近</div>
|
||||||
<view class="filterMoreItem">500m</view>
|
<div class="filterMoreItem">500m</div>
|
||||||
<view class="filterMoreItem">1km</view>
|
<div class="filterMoreItem">1km</div>
|
||||||
<view class="filterMoreItem">3km</view>
|
<div class="filterMoreItem">3km</div>
|
||||||
<view class="filterMoreItem">5km</view>
|
<div class="filterMoreItem">5km</div>
|
||||||
<view class="filterMoreItem">10km</view>
|
<div class="filterMoreItem">10km</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<!-- 综合筛选 -->
|
<!-- 综合筛选 -->
|
||||||
<view class="FilterMore" v-if="show2">
|
<div class="FilterMore" v-if="show2">
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left">综合</view>
|
<div class="filterMore2_item_left">综合</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left active3">从高到低</view>
|
<div class="filterMore2_item_left active3">从高到低</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left">从低到高</view>
|
<div class="filterMore2_item_left">从低到高</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<!-- 排序筛选 -->
|
<!-- 排序筛选 -->
|
||||||
<view class="FilterMore" v-if="show3">
|
<div class="FilterMore" v-if="show3">
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left2">智能排序</view>
|
<div class="filterMore2_item_left2">智能排序</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left2 active3">距离优先</view>
|
<div class="filterMore2_item_left2 active3">距离优先</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left2">好评优先</view>
|
<div class="filterMore2_item_left2">好评优先</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="filterMore2_item">
|
<div class="filterMore2_item">
|
||||||
<view class="filterMore2_item_left2">销量优先</view>
|
<div class="filterMore2_item_left2">销量优先</div>
|
||||||
<view class="filterMore2_item_right">
|
<div class="filterMore2_item_right">
|
||||||
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
<u-icon name="checkmark-circle-fill" color="#ff702c"></u-icon>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<!-- 高级筛选面板 -->
|
<!-- 高级筛选面板 -->
|
||||||
<view class="FilterMore" v-if="show6">
|
<div class="FilterMore" v-if="show6">
|
||||||
<view class="filter-section">
|
<div class="filter-section">
|
||||||
<view class="filter-title">满意度</view>
|
<div class="filter-title">满意度</div>
|
||||||
<view class="filter-options">
|
<div class="filter-options">
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('5+') }"
|
:class="{ active: selectedSatisfaction.includes('5+') }"
|
||||||
@click="toggleSatisfaction('5+')"
|
@click="toggleSatisfaction('5+')"
|
||||||
>
|
>
|
||||||
5分及以上
|
5分及以上
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('4.9+') }"
|
:class="{ active: selectedSatisfaction.includes('4.9+') }"
|
||||||
@click="toggleSatisfaction('4.9+')"
|
@click="toggleSatisfaction('4.9+')"
|
||||||
>
|
>
|
||||||
4.9分及以上
|
4.9分及以上
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('4.8+') }"
|
:class="{ active: selectedSatisfaction.includes('4.8+') }"
|
||||||
@click="toggleSatisfaction('4.8+')"
|
@click="toggleSatisfaction('4.8+')"
|
||||||
>
|
>
|
||||||
4.8分及以上
|
4.8分及以上
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('4.7+') }"
|
:class="{ active: selectedSatisfaction.includes('4.7+') }"
|
||||||
@click="toggleSatisfaction('4.7+')"
|
@click="toggleSatisfaction('4.7+')"
|
||||||
>
|
>
|
||||||
4.7分及以上
|
4.7分及以上
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('4.6+') }"
|
:class="{ active: selectedSatisfaction.includes('4.6+') }"
|
||||||
@click="toggleSatisfaction('4.6+')"
|
@click="toggleSatisfaction('4.6+')"
|
||||||
>
|
>
|
||||||
4.6分及以上
|
4.6分及以上
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedSatisfaction.includes('4.5+') }"
|
:class="{ active: selectedSatisfaction.includes('4.5+') }"
|
||||||
@click="toggleSatisfaction('4.5+')"
|
@click="toggleSatisfaction('4.5+')"
|
||||||
>
|
>
|
||||||
4.5分及以上
|
4.5分及以上
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="filter-section">
|
<div class="filter-section">
|
||||||
<view class="filter-title">评论数量</view>
|
<div class="filter-title">评论数量</div>
|
||||||
<view class="filter-options">
|
<div class="filter-options">
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedReviewCount === '1-100' }"
|
:class="{ active: selectedReviewCount === '1-100' }"
|
||||||
@click="selectedReviewCount = '1-100'"
|
@click="selectedReviewCount = '1-100'"
|
||||||
>
|
>
|
||||||
1-100
|
1-100
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedReviewCount === '100-500' }"
|
:class="{ active: selectedReviewCount === '100-500' }"
|
||||||
@click="selectedReviewCount = '100-500'"
|
@click="selectedReviewCount = '100-500'"
|
||||||
>
|
>
|
||||||
100-500
|
100-500
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedReviewCount === '500+' }"
|
:class="{ active: selectedReviewCount === '500+' }"
|
||||||
@click="selectedReviewCount = '500+'"
|
@click="selectedReviewCount = '500+'"
|
||||||
>
|
>
|
||||||
500以上
|
500以上
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="filter-section">
|
<div class="filter-section">
|
||||||
<view class="filter-title">价格范围</view>
|
<div class="filter-title">价格范围</div>
|
||||||
<view class="price-range">
|
<div class="price-range">
|
||||||
<input
|
<input
|
||||||
type="number"
|
type="number"
|
||||||
v-model="minPrice"
|
v-model="minPrice"
|
||||||
@ -188,111 +189,111 @@
|
|||||||
class="price-input"
|
class="price-input"
|
||||||
@input="validatePriceRange"
|
@input="validatePriceRange"
|
||||||
/>
|
/>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="filter-section">
|
<div class="filter-section">
|
||||||
<view class="filter-title">类别</view>
|
<div class="filter-title">类别</div>
|
||||||
<view class="filter-options">
|
<div class="filter-options">
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedCategory === 'airConditioner' }"
|
:class="{ active: selectedCategory === 'airConditioner' }"
|
||||||
@click="selectedCategory = 'airConditioner'"
|
@click="selectedCategory = 'airConditioner'"
|
||||||
>
|
>
|
||||||
空调维修
|
空调维修
|
||||||
</view>
|
</div>
|
||||||
<view
|
<div
|
||||||
class="filter-option"
|
class="filter-option"
|
||||||
:class="{ active: selectedCategory === 'refrigerator' }"
|
:class="{ active: selectedCategory === 'refrigerator' }"
|
||||||
@click="selectedCategory = 'refrigerator'"
|
@click="selectedCategory = 'refrigerator'"
|
||||||
>
|
>
|
||||||
冰箱维修
|
冰箱维修
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="filter-buttons">
|
<div class="filter-buttons">
|
||||||
<button class="reset-button" @click="resetFilters">重置</button>
|
<button class="reset-button" @click="resetFilters">重置</button>
|
||||||
<button class="confirm-button" @click="applyFilters">确定</button>
|
<button class="confirm-button" @click="applyFilters">确定</button>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="main">
|
<div class="main">
|
||||||
<!-- 遮罩 -->
|
<!-- 遮罩 -->
|
||||||
<view class="dialogBox" v-if="isShowDia" @click="closeAllFilters"></view>
|
<div class="dialogBox" v-if="isShowDia"></div>
|
||||||
|
|
||||||
<view class="MasterList">
|
<div class="MasterList">
|
||||||
<view class="MasterItem" v-for="(item, index) in 5" :key="index">
|
<div class="MasterItem" v-for="(item, index) in 5" :key="index">
|
||||||
<view class="MasterItem_right">
|
<div class="MasterItem_right">
|
||||||
<view class="MasterItem_info">
|
<div class="MasterItem_info">
|
||||||
<view class="MasterItem_Info_left">
|
<div class="MasterItem_Info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<view class="state state1">待服务</view>
|
<div class="state state1">待服务</div>
|
||||||
<view class="state state2" v-if="false">休息中</view>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
<view class="state state3" v-if="false">服务中</view>
|
<div class="state state3" v-if="false">服务中</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="MasterItem_Info_right">
|
<div class="MasterItem_Info_right">
|
||||||
<view class="MasterItem_Info_right_1">
|
<div class="MasterItem_Info_right_1">
|
||||||
<view class="master_info_right_left">
|
<div class="master_info_right_left">
|
||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="master_info_right_right" @click="masterInfo">
|
<div class="master_info_right_right" @click="masterInfo">
|
||||||
查看资料
|
查看资料
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
<view class="MasterItem_Info_right_2">
|
<div class="MasterItem_Info_right_2">
|
||||||
52岁 广东梅州人 5-10年
|
52岁 广东梅州人 5-10年
|
||||||
</view>
|
</div>
|
||||||
<view class="MasterItem_Info_right_3">
|
<div class="MasterItem_Info_right_3">
|
||||||
<span>500+</span>预定 <span>100+</span>评价
|
<span>500+</span>预定 <span>100+</span>评价
|
||||||
</view>
|
</div>
|
||||||
<view class="MasterItem_Info_right_4">
|
<div class="MasterItem_Info_right_4">
|
||||||
<view class="tagItem tag1">积极主动</view>
|
<div class="tagItem tag1">积极主动</div>
|
||||||
<view class="tagItem tag2">技术精湛</view>
|
<div class="tagItem tag2">技术精湛</div>
|
||||||
<view class="tagItem tag3">技术精湛</view>
|
<div class="tagItem tag3">技术精湛</div>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="MasterItem_Info_right_5">
|
<div class="MasterItem_Info_right_5">
|
||||||
价格范围: <span>¥500-¥800</span>
|
价格范围: <span>¥500-¥800</span>
|
||||||
</view>
|
</div>
|
||||||
|
|
||||||
<view class="MasterItem_Info_right_6">
|
<div class="MasterItem_Info_right_6">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</div>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -338,8 +339,18 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
// 修改watch逻辑,只在点击空白区域关闭筛选器时清除选中状态
|
show1(val) {
|
||||||
// 而不是在切换不同筛选器时清除
|
if (!val) this.selectedFilter = null;
|
||||||
|
},
|
||||||
|
show2(val) {
|
||||||
|
if (!val) this.selectedFilter = null;
|
||||||
|
},
|
||||||
|
show3(val) {
|
||||||
|
if (!val) this.selectedFilter = null;
|
||||||
|
},
|
||||||
|
show6(val) {
|
||||||
|
if (!val) this.selectedFilter = null;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
masterInfo() {
|
masterInfo() {
|
||||||
@ -390,9 +401,6 @@ export default {
|
|||||||
this.isShowDia = false;
|
this.isShowDia = false;
|
||||||
},
|
},
|
||||||
showDialog(index) {
|
showDialog(index) {
|
||||||
// 先更新选中的过滤器ID
|
|
||||||
this.selectedFilter = index;
|
|
||||||
// 然后处理显示状态
|
|
||||||
this[`show${index}`] = !this[`show${index}`];
|
this[`show${index}`] = !this[`show${index}`];
|
||||||
this.logOtherButtons(index);
|
this.logOtherButtons(index);
|
||||||
this.isShowDia = this[`show${index}`];
|
this.isShowDia = this[`show${index}`];
|
||||||
@ -404,14 +412,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
closeAllFilters() {
|
|
||||||
// 关闭所有筛选面板并重置选中状态
|
|
||||||
for (let i = 1; i <= 6; i++) {
|
|
||||||
this[`show${i}`] = false;
|
|
||||||
}
|
|
||||||
this.isShowDia = false;
|
|
||||||
this.selectedFilter = null;
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
onReady() {},
|
onReady() {},
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<div class="iptBox">
|
<div class="iptBox">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"
|
||||||
></image>
|
></image>
|
||||||
<u--input
|
<u--input
|
||||||
placeholder="请输入内容"
|
placeholder="请输入内容"
|
||||||
@ -31,42 +31,42 @@
|
|||||||
<div class="FilterItem" @click="showDialog(1)">
|
<div class="FilterItem" @click="showDialog(1)">
|
||||||
附近
|
附近
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(2)">
|
<div class="FilterItem" @click="showDialog(2)">
|
||||||
综合
|
综合
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(3)">
|
<div class="FilterItem" @click="showDialog(3)">
|
||||||
排序
|
排序
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(4)">
|
<div class="FilterItem" @click="showDialog(4)">
|
||||||
分类
|
分类
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(5)">
|
<div class="FilterItem" @click="showDialog(5)">
|
||||||
性别
|
性别
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="showDialog(6)">
|
<div class="FilterItem" @click="showDialog(6)">
|
||||||
地区
|
地区
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<div class="Filter_right">
|
<div class="Filter_right">
|
||||||
筛选
|
筛选
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_filter.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filter.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -202,7 +202,7 @@
|
|||||||
<div class="MasterItem_info">
|
<div class="MasterItem_info">
|
||||||
<div class="MasterItem_Info_left">
|
<div class="MasterItem_Info_left">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/home_icon12.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"
|
||||||
></image>
|
></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
@ -214,18 +214,18 @@
|
|||||||
林师傅
|
林师傅
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="Medal"
|
class="Medal"
|
||||||
v-if="false"
|
v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png"
|
||||||
>
|
>
|
||||||
</image>
|
</image>
|
||||||
<image
|
<image
|
||||||
class="star"
|
class="star"
|
||||||
src="https://static.hshuishang.com/property-img-file/local_start1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"
|
||||||
></image>
|
></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
@ -252,13 +252,13 @@
|
|||||||
|
|
||||||
<div class="MasterItem_Info_right_6">
|
<div class="MasterItem_Info_right_6">
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
<image
|
<image
|
||||||
src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"
|
||||||
></image>
|
></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -37,7 +37,7 @@ export default {
|
|||||||
shops: [
|
shops: [
|
||||||
{
|
{
|
||||||
id: 1,
|
id: 1,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -46,7 +46,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -55,7 +55,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 3,
|
id: 3,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -64,7 +64,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 4,
|
id: 4,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -73,7 +73,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -82,7 +82,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 6,
|
id: 6,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -91,7 +91,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -100,7 +100,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -109,7 +109,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -118,7 +118,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -127,7 +127,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -136,7 +136,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -145,7 +145,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -154,7 +154,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -163,7 +163,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -172,7 +172,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -181,7 +181,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
@ -190,7 +190,7 @@ export default {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 7,
|
id: 7,
|
||||||
image: "https://static.hshuishang.com/test.png",
|
image: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
title: "专业到家服务",
|
title: "专业到家服务",
|
||||||
ratingCount: 5,
|
ratingCount: 5,
|
||||||
rating: 4.8,
|
rating: 4.8,
|
||||||
|
|||||||
@ -253,7 +253,7 @@
|
|||||||
|
|
||||||
.active2::after {
|
.active2::after {
|
||||||
content: '';
|
content: '';
|
||||||
background: url(https://static.hshuishang.com/property-img-file/com_active.png) no-repeat;
|
background: url(https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_active.png) no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
width: 52rpx;
|
width: 52rpx;
|
||||||
height: 22rpx;
|
height: 22rpx;
|
||||||
|
|||||||
@ -75,7 +75,7 @@
|
|||||||
|
|
||||||
<div class="serverItem" @click="selectVendor">
|
<div class="serverItem" @click="selectVendor">
|
||||||
<div class="serverItem_left">
|
<div class="serverItem_left">
|
||||||
<image src="https://static.hshuishang.com/test.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="serverItem_right">
|
<div class="serverItem_right">
|
||||||
<div class="serverItem_right_msg">
|
<div class="serverItem_right_msg">
|
||||||
@ -89,20 +89,20 @@
|
|||||||
<span class="rating">
|
<span class="rating">
|
||||||
<image
|
<image
|
||||||
class="infoImage"
|
class="infoImage"
|
||||||
src="https://static.hshuishang.com/serverInfo_xing.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_xing.png"
|
||||||
/>
|
/>
|
||||||
4.8
|
4.8
|
||||||
</span>
|
</span>
|
||||||
<span class="distance">
|
<span class="distance">
|
||||||
<image
|
<image
|
||||||
class="infoImage"
|
class="infoImage"
|
||||||
src="https://static.hshuishang.com/serverInfo_weizhi.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_weizhi.png"
|
||||||
/>3.3km</span
|
/>3.3km</span
|
||||||
>
|
>
|
||||||
<span class="served">
|
<span class="served">
|
||||||
<image
|
<image
|
||||||
class="infoImage"
|
class="infoImage"
|
||||||
src="https://static.hshuishang.com/serverInfo_fuwu.png"
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/serverInfo_fuwu.png"
|
||||||
/>服务12226人</span
|
/>服务12226人</span
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
@ -133,14 +133,14 @@ export default {
|
|||||||
return {
|
return {
|
||||||
bannerList: [
|
bannerList: [
|
||||||
{
|
{
|
||||||
pic_src: "https://static.hshuishang.com/test.png",
|
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pic_src:
|
pic_src:
|
||||||
"https://static.hshuishang.com/property-img-file/homeServer_banner.png",
|
"https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_banner.png",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pic_src: "https://static.hshuishang.com/test.png",
|
pic_src: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/test.png",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
currentIdx: 0,
|
currentIdx: 0,
|
||||||
|
|||||||
22
packages/homeServer/vendor/index.vue
vendored
22
packages/homeServer/vendor/index.vue
vendored
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="container">
|
<view class="container">
|
||||||
<div class="searchIpt" @click="search">
|
<div class="searchIpt" @click="search">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
|
||||||
<u--input placeholder="请输入内容" border="none" disabled v-model="value" @change="change"></u--input>
|
<u--input placeholder="请输入内容" border="none" disabled v-model="value" @change="change"></u--input>
|
||||||
</div>
|
</div>
|
||||||
<div class="line"></div>
|
<div class="line"></div>
|
||||||
@ -10,7 +10,7 @@
|
|||||||
<div class="vendorInfo">
|
<div class="vendorInfo">
|
||||||
<div class="vendorInfo_left">
|
<div class="vendorInfo_left">
|
||||||
<div class="vendorInfo_img">
|
<div class="vendorInfo_img">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
|
||||||
</div>
|
</div>
|
||||||
<div class="vendorInfo_info">
|
<div class="vendorInfo_info">
|
||||||
<div class="vendor_name">专业到家服务</div>
|
<div class="vendor_name">专业到家服务</div>
|
||||||
@ -18,15 +18,15 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vendorInfo_right">
|
<div class="vendorInfo_right">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/local_start1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"></image>
|
||||||
<image v-if="false" src="https://static.hshuishang.com/property-img-file/local_start2.png"></image>
|
<image v-if="false" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start2.png"></image>
|
||||||
<div>收藏</div>
|
<div>收藏</div>
|
||||||
<div v-if="false">取消收藏</div>
|
<div v-if="false">取消收藏</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vendorMsg">
|
<div class="vendorMsg">
|
||||||
<div class="vendorMsg_Item">
|
<div class="vendorMsg_Item">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon1.png"></image>
|
||||||
<div class="vendorMsg_Item_msg">
|
<div class="vendorMsg_Item_msg">
|
||||||
<div class="num">150+</div>
|
<div class="num">150+</div>
|
||||||
<div>服务师傅</div>
|
<div>服务师傅</div>
|
||||||
@ -34,7 +34,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="vendorMsg_Item">
|
<div class="vendorMsg_Item">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_CumulativeIcon.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_CumulativeIcon.png"></image>
|
||||||
<div class="vendorMsg_Item_msg">
|
<div class="vendorMsg_Item_msg">
|
||||||
<div class="num">5000+</div>
|
<div class="num">5000+</div>
|
||||||
<div>累计订单</div>
|
<div>累计订单</div>
|
||||||
@ -42,7 +42,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="vendorMsg_Item">
|
<div class="vendorMsg_Item">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_masterIcon2.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_masterIcon2.png"></image>
|
||||||
<div class="vendorMsg_Item_msg">
|
<div class="vendorMsg_Item_msg">
|
||||||
<div class="num">10+</div>
|
<div class="num">10+</div>
|
||||||
<div>行业经验</div>
|
<div>行业经验</div>
|
||||||
@ -62,7 +62,7 @@
|
|||||||
|
|
||||||
<div class="master_info" v-for="(item, index) in 3" :key="index">
|
<div class="master_info" v-for="(item, index) in 3" :key="index">
|
||||||
<div class="master_info_left">
|
<div class="master_info_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/home_icon12.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
<div class="state state3" v-if="false">服务中</div>
|
<div class="state state3" v-if="false">服务中</div>
|
||||||
@ -70,10 +70,10 @@
|
|||||||
<div class="master_info_right">
|
<div class="master_info_right">
|
||||||
<div class="master_info_right1">
|
<div class="master_info_right1">
|
||||||
<div class="master_info_right_left">林师傅
|
<div class="master_info_right_left">林师傅
|
||||||
<image class="Medal" src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png"></image>
|
<image class="Medal" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png"></image>
|
||||||
<image class="Medal" v-if="false" src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png">
|
<image class="Medal" v-if="false" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png">
|
||||||
</image>
|
</image>
|
||||||
<image class="star" src="https://static.hshuishang.com/property-img-file/local_start1.png"></image>
|
<image class="star" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="master_info_right_right">
|
<div class="master_info_right_right">
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
<u-icon bold color="#000" size="40" name="arrow-left" @click="back"></u-icon>
|
<u-icon bold color="#000" size="40" name="arrow-left" @click="back"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
<div class="iptBox">
|
<div class="iptBox">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_communitySearchIcon.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_communitySearchIcon.png"></image>
|
||||||
<u--input placeholder="请输入内容" border="none" v-model="value" @change="change"></u--input>
|
<u--input placeholder="请输入内容" border="none" v-model="value" @change="change"></u--input>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -14,33 +14,33 @@
|
|||||||
<div class="Filter_left">
|
<div class="Filter_left">
|
||||||
<div class="FilterItem" @click="show1 = !show1">
|
<div class="FilterItem" @click="show1 = !show1">
|
||||||
接单量
|
接单量
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="show2 = !show2">
|
<div class="FilterItem" @click="show2 = !show2">
|
||||||
满意度
|
满意度
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="show3 = !show3">
|
<div class="FilterItem" @click="show3 = !show3">
|
||||||
排序
|
排序
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="show4 = !show4">
|
<div class="FilterItem" @click="show4 = !show4">
|
||||||
分类
|
分类
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"></image>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="FilterItem" @click="show5 = !show5">
|
<div class="FilterItem" @click="show5 = !show5">
|
||||||
性别
|
性别
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filterMore.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filterMore.png"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="Filter_right">
|
<div class="Filter_right">
|
||||||
筛选
|
筛选
|
||||||
<image src="https://static.hshuishang.com/property-img-file/homeServer_filter.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_filter.png"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 位置筛选 -->
|
<!-- 位置筛选 -->
|
||||||
@ -126,7 +126,7 @@
|
|||||||
<div class="MasterItem_right">
|
<div class="MasterItem_right">
|
||||||
<div class="MasterItem_info">
|
<div class="MasterItem_info">
|
||||||
<div class="MasterItem_Info_left">
|
<div class="MasterItem_Info_left">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/home_icon12.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/home_icon12.png"></image>
|
||||||
<div class="state state1">待服务</div>
|
<div class="state state1">待服务</div>
|
||||||
<div class="state state2" v-if="false">休息中</div>
|
<div class="state state2" v-if="false">休息中</div>
|
||||||
<div class="state state3" v-if="false">服务中</div>
|
<div class="state state3" v-if="false">服务中</div>
|
||||||
@ -135,12 +135,12 @@
|
|||||||
<div class="MasterItem_Info_right_1">
|
<div class="MasterItem_Info_right_1">
|
||||||
<div class="master_info_right_left">
|
<div class="master_info_right_left">
|
||||||
林师傅
|
林师傅
|
||||||
<image class="Medal" src="https://static.hshuishang.com/property-img-file/homeServer_Champion.png">
|
<image class="Medal" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_Champion.png">
|
||||||
</image>
|
</image>
|
||||||
<image class="Medal" v-if="false"
|
<image class="Medal" v-if="false"
|
||||||
src="https://static.hshuishang.com/property-img-file/homeServer_RunnerUp.png">
|
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/homeServer_RunnerUp.png">
|
||||||
</image>
|
</image>
|
||||||
<image class="star" src="https://static.hshuishang.com/property-img-file/local_start1.png"></image>
|
<image class="star" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/local_start1.png"></image>
|
||||||
<span>4.8</span>
|
<span>4.8</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -163,9 +163,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="MasterItem_Info_right_6">
|
<div class="MasterItem_Info_right_6">
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
|
||||||
<image src="https://static.hshuishang.com/property-img-file/com_MsgImg1.png"></image>
|
<image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_MsgImg1.png"></image>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,79 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hcd-page" v-if="info.id">
|
|
||||||
<view class="hcd-card">
|
|
||||||
<view class="hcd-status" :class="'st' + info.status">{{ statusText(info.status) }}</view>
|
|
||||||
<view class="hcd-name">{{ info.contract_name }}</view>
|
|
||||||
<view class="hcd-no">合同编号:{{ info.contract_no }}</view>
|
|
||||||
</view>
|
|
||||||
<view class="hcd-block">
|
|
||||||
<view class="hcd-item"><text class="hcd-label">月薪</text><text class="hcd-val amount">¥{{ info.month_amount }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">账单日</text><text class="hcd-val">每月 {{ info.pay_day }} 号</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">结算方式</text><text class="hcd-val">{{ info.settle_mode === 1 ? '平台月账单' : '线下自付' }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">合同开始</text><text class="hcd-val">{{ fmtDate(info.start_date) }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">合同结束</text><text class="hcd-val">{{ fmtDate(info.end_date) }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">联系人</text><text class="hcd-val">{{ info.contact_name || '-' }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">联系电话</text><text class="hcd-val">{{ info.contact_phone || '-' }}</text></view>
|
|
||||||
<view class="hcd-item"><text class="hcd-label">服务地址</text><text class="hcd-val">{{ info.service_address || '-' }}</text></view>
|
|
||||||
<view class="hcd-item" v-if="info.remark"><text class="hcd-label">备注</text><text class="hcd-val">{{ info.remark }}</text></view>
|
|
||||||
</view>
|
|
||||||
<view class="hcd-block" v-if="info.file_url">
|
|
||||||
<view class="hcd-file" @tap="openFile">查看已签合同</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return { picUrl, id: 0, info: {} }
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
this.id = Number(options.id)
|
|
||||||
this.loadInfo()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadInfo() {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.contractInfo, 'POST', { id: this.id, user_id: userId }, {}, false).then(res => {
|
|
||||||
this.info = res || {}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
statusText(s) {
|
|
||||||
const map = { 1: '待签署', 2: '生效中', 3: '已到期', 4: '已解除', 5: '线下结算' }
|
|
||||||
return map[s] || ''
|
|
||||||
},
|
|
||||||
fmtDate(v) {
|
|
||||||
return v ? String(v).slice(0, 10) : '-'
|
|
||||||
},
|
|
||||||
openFile() {
|
|
||||||
const url = this.info.file_url.startsWith('http') ? this.info.file_url : this.picUrl + this.info.file_url
|
|
||||||
uni.downloadFile({
|
|
||||||
url,
|
|
||||||
success: (d) => {
|
|
||||||
uni.openDocument({ filePath: d.tempFilePath, showMenu: true })
|
|
||||||
},
|
|
||||||
fail: () => uni.showToast({ title: '打开失败', icon: 'none' })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hcd-page { background: #f5f5f5; min-height: 100vh; padding: 20rpx; }
|
|
||||||
.hcd-card { background: #fff; border-radius: 16rpx; padding: 28rpx; margin-bottom: 20rpx; }
|
|
||||||
.hcd-status { font-size: 26rpx; color: #FF370B; margin-bottom: 12rpx; }
|
|
||||||
.hcd-status.st2 { color: #07c160; }
|
|
||||||
.hcd-status.st3, .hcd-status.st4 { color: #999; }
|
|
||||||
.hcd-name { font-size: 34rpx; color: #222; font-weight: 600; }
|
|
||||||
.hcd-no { font-size: 26rpx; color: #888; margin-top: 10rpx; }
|
|
||||||
.hcd-block { background: #fff; border-radius: 16rpx; padding: 8rpx 28rpx; margin-bottom: 20rpx; }
|
|
||||||
.hcd-item { display: flex; justify-content: space-between; padding: 22rpx 0; border-bottom: 1rpx solid #f2f2f2; }
|
|
||||||
.hcd-label { font-size: 28rpx; color: #888; }
|
|
||||||
.hcd-val { font-size: 28rpx; color: #222; max-width: 460rpx; text-align: right; }
|
|
||||||
.hcd-val.amount { color: #FF370B; font-weight: 600; }
|
|
||||||
.hcd-file { text-align: center; color: #2b6cff; font-size: 28rpx; padding: 24rpx 0; }
|
|
||||||
</style>
|
|
||||||
@ -1,152 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hsd-page">
|
|
||||||
<swiper class="hsd-swiper" autoplay circular v-if="carousel.length">
|
|
||||||
<swiper-item v-for="(p, i) in carousel" :key="i">
|
|
||||||
<image :src="p" mode="aspectFill" class="hsd-swiper-img" />
|
|
||||||
</swiper-item>
|
|
||||||
</swiper>
|
|
||||||
<image v-else :src="picUrl + (info.cover_pic || '')" class="hsd-swiper-img" mode="aspectFill" />
|
|
||||||
|
|
||||||
<view class="hsd-main">
|
|
||||||
<view class="hsd-name">{{ info.service_name }}</view>
|
|
||||||
<view class="hsd-pricedesc">{{ info.price_desc }}</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- SKU 选择 -->
|
|
||||||
<view class="hsd-block" v-if="skuList.length">
|
|
||||||
<view class="hsd-block-tit">选择规格</view>
|
|
||||||
<view class="hsd-sku-list">
|
|
||||||
<view class="hsd-sku" :class="{ active: currentSku && currentSku.id === sku.id }"
|
|
||||||
v-for="sku in skuList" :key="sku.id" @tap="selectSku(sku)">
|
|
||||||
<view class="hsd-sku-name">{{ sku.sku_name }}</view>
|
|
||||||
<view class="hsd-sku-price" v-if="isHousekeeping">月薪 ¥{{ sku.month_salary }}</view>
|
|
||||||
<view class="hsd-sku-price" v-else>定金 ¥{{ sku.deposit }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 师傅选择 -->
|
|
||||||
<view class="hsd-block" v-if="workerList.length">
|
|
||||||
<view class="hsd-block-tit">选择师傅</view>
|
|
||||||
<view class="hsd-worker-list">
|
|
||||||
<view class="hsd-worker" :class="{ active: currentWorker && currentWorker.employee_id === w.employee_id }"
|
|
||||||
v-for="w in workerList" :key="w.employee_id" @tap="selectWorker(w)">
|
|
||||||
<image class="hsd-worker-img" :src="w.employee_image || defaultAvatar" mode="aspectFill" />
|
|
||||||
<view class="hsd-worker-name">{{ w.employee_name }}</view>
|
|
||||||
<view class="hsd-worker-exp">{{ w.expertise }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 详情图 -->
|
|
||||||
<view class="hsd-block" v-if="detailPics.length">
|
|
||||||
<view class="hsd-block-tit">服务详情</view>
|
|
||||||
<image v-for="(p, i) in detailPics" :key="i" :src="p" mode="widthFix" class="hsd-detail-img" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="hsd-bottom">
|
|
||||||
<template v-if="isHousekeeping">
|
|
||||||
<view class="hsd-bottom-price">月薪 <text>¥{{ currentSku ? currentSku.month_salary : '--' }}</text></view>
|
|
||||||
<view class="hsd-bottom-btn" @tap="goConsult">咨询预约</view>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<view class="hsd-bottom-price">定金 <text>¥{{ currentSku ? currentSku.deposit : '--' }}</text></view>
|
|
||||||
<view class="hsd-bottom-btn" @tap="goOrder">立即预约</view>
|
|
||||||
</template>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl, NavgateTo } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
picUrl,
|
|
||||||
defaultAvatar: 'https://static.hshuishang.com/defaultTx.png',
|
|
||||||
id: 0,
|
|
||||||
info: {},
|
|
||||||
carousel: [],
|
|
||||||
detailPics: [],
|
|
||||||
skuList: [],
|
|
||||||
workerList: [],
|
|
||||||
currentSku: null,
|
|
||||||
currentWorker: null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
this.id = Number(options.id)
|
|
||||||
this.loadInfo()
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
// 家政服务(原长期服务 service_type=2):走咨询签约,不付定金
|
|
||||||
isHousekeeping() {
|
|
||||||
return Number(this.info.service_type) === 2
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadInfo() {
|
|
||||||
request(apiArr.serviceInfo, 'POST', { id: this.id }, {}, false).then(res => {
|
|
||||||
this.info = res || {}
|
|
||||||
this.carousel = (res.carousel ? res.carousel.split(',') : []).filter(Boolean).map(p => p.startsWith('http') ? p : this.picUrl + p)
|
|
||||||
this.detailPics = (res.detail_pic ? res.detail_pic.split(',') : []).filter(Boolean).map(p => p.startsWith('http') ? p : this.picUrl + p)
|
|
||||||
this.skuList = res.sku_list || []
|
|
||||||
this.workerList = res.worker_list || []
|
|
||||||
if (this.skuList.length) this.currentSku = this.skuList[0]
|
|
||||||
if (this.workerList.length) this.currentWorker = this.workerList[0]
|
|
||||||
})
|
|
||||||
},
|
|
||||||
selectSku(sku) { this.currentSku = sku },
|
|
||||||
selectWorker(w) { this.currentWorker = w },
|
|
||||||
goOrder() {
|
|
||||||
if (!this.currentSku) { uni.showToast({ title: '请选择规格', icon: 'none' }); return }
|
|
||||||
if (!this.currentWorker) { uni.showToast({ title: '请选择师傅', icon: 'none' }); return }
|
|
||||||
const params = {
|
|
||||||
service_info_id: this.id,
|
|
||||||
sku_id: this.currentSku.id,
|
|
||||||
employee_id: this.currentWorker.employee_id,
|
|
||||||
service_name: this.info.service_name,
|
|
||||||
deposit: this.currentSku.deposit
|
|
||||||
}
|
|
||||||
NavgateTo('/packages/homeService/order/index?params=' + encodeURIComponent(JSON.stringify(params)))
|
|
||||||
},
|
|
||||||
// 家政服务:先与商家客服沟通签约,不走定金下单
|
|
||||||
goConsult() {
|
|
||||||
const supplierId = this.info.supplier_id
|
|
||||||
if (!supplierId) { uni.showToast({ title: '商家信息缺失', icon: 'none' }); return }
|
|
||||||
// 客服列表依赖 merchantInfo.id,写入当前服务所属商家
|
|
||||||
const mi = uni.getStorageSync('merchantInfo') || {}
|
|
||||||
mi.id = supplierId
|
|
||||||
uni.setStorageSync('merchantInfo', mi)
|
|
||||||
NavgateTo('/packages/customerService/changeService/index')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hsd-page { background: #f5f5f5; min-height: 100vh; padding-bottom: 130rpx; }
|
|
||||||
.hsd-swiper, .hsd-swiper-img { width: 100%; height: 520rpx; }
|
|
||||||
.hsd-main { background: #fff; padding: 24rpx; }
|
|
||||||
.hsd-name { font-size: 36rpx; font-weight: 600; color: #222; }
|
|
||||||
.hsd-pricedesc { font-size: 26rpx; color: #FF370B; margin-top: 14rpx; }
|
|
||||||
.hsd-block { background: #fff; margin-top: 16rpx; padding: 24rpx; }
|
|
||||||
.hsd-block-tit { font-size: 30rpx; font-weight: 600; color: #222; margin-bottom: 18rpx; }
|
|
||||||
.hsd-sku-list, .hsd-worker-list { display: flex; flex-wrap: wrap; gap: 18rpx; }
|
|
||||||
.hsd-sku { border: 1rpx solid #eee; border-radius: 10rpx; padding: 16rpx 24rpx; }
|
|
||||||
.hsd-sku.active { border-color: #FF370B; background: #FFF1ED; }
|
|
||||||
.hsd-sku-name { font-size: 28rpx; color: #222; }
|
|
||||||
.hsd-sku-price { font-size: 24rpx; color: #FF370B; margin-top: 8rpx; }
|
|
||||||
.hsd-worker { width: 160rpx; display: flex; flex-direction: column; align-items: center; border: 1rpx solid #eee; border-radius: 10rpx; padding: 16rpx 8rpx; }
|
|
||||||
.hsd-worker.active { border-color: #FF370B; background: #FFF1ED; }
|
|
||||||
.hsd-worker-img { width: 100rpx; height: 100rpx; border-radius: 50%; background: #f0f0f0; }
|
|
||||||
.hsd-worker-name { font-size: 26rpx; color: #222; margin-top: 10rpx; }
|
|
||||||
.hsd-worker-exp { font-size: 20rpx; color: #999; margin-top: 4rpx; }
|
|
||||||
.hsd-detail-img { width: 100%; display: block; }
|
|
||||||
.hsd-bottom { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; display: flex; align-items: center; padding: 16rpx 24rpx calc(16rpx + env(safe-area-inset-bottom)); box-shadow: 0 -4rpx 20rpx rgba(0,0,0,0.04); }
|
|
||||||
.hsd-bottom-price { flex: 1; font-size: 26rpx; color: #333; }
|
|
||||||
.hsd-bottom-price text { color: #FF370B; font-size: 36rpx; font-weight: 600; }
|
|
||||||
.hsd-bottom-btn { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 30rpx; padding: 20rpx 60rpx; border-radius: 44rpx; }
|
|
||||||
</style>
|
|
||||||
@ -1,124 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hs-page">
|
|
||||||
<!-- 到家/家政 Tab -->
|
|
||||||
<view class="hs-tabs">
|
|
||||||
<view class="hs-tab" :class="{ active: serviceType === 1 }" @tap="switchType(1)">到家服务</view>
|
|
||||||
<view class="hs-tab" :class="{ active: serviceType === 2 }" @tap="switchType(2)">家政服务</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="hs-body">
|
|
||||||
<!-- 左侧分类 -->
|
|
||||||
<scroll-view class="hs-cate" scroll-y>
|
|
||||||
<view class="hs-cate-item" :class="{ active: currentCate === 0 }" @tap="selectCate(0)">全部</view>
|
|
||||||
<view class="hs-cate-item" :class="{ active: currentCate === item.id }"
|
|
||||||
v-for="item in categoryList" :key="item.id" @tap="selectCate(item.id)">
|
|
||||||
{{ item.category_name }}
|
|
||||||
</view>
|
|
||||||
</scroll-view>
|
|
||||||
|
|
||||||
<!-- 右侧服务列表 -->
|
|
||||||
<scroll-view class="hs-list" scroll-y @scrolltolower="loadMore">
|
|
||||||
<view class="hs-card" v-for="item in serviceList" :key="item.id" @tap="toDetail(item)">
|
|
||||||
<image class="hs-card-pic" :src="picUrl + item.cover_pic" mode="aspectFill" />
|
|
||||||
<view class="hs-card-info">
|
|
||||||
<view class="hs-card-name">{{ item.service_name }}</view>
|
|
||||||
<view class="hs-card-desc">{{ item.price_desc }}</view>
|
|
||||||
<view class="hs-card-foot">
|
|
||||||
<text class="hs-card-tag">{{ serviceType === 1 ? '到家' : '家政' }}</text>
|
|
||||||
<text class="hs-card-btn">查看</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="serviceList.length === 0" class="hs-empty">暂无服务</view>
|
|
||||||
</scroll-view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl, NavgateTo } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
picUrl,
|
|
||||||
serviceType: 1,
|
|
||||||
categoryList: [],
|
|
||||||
currentCate: 0,
|
|
||||||
serviceList: [],
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
hasMore: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad() {
|
|
||||||
this.loadCategory()
|
|
||||||
this.loadList(true)
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
switchType(t) {
|
|
||||||
if (this.serviceType === t) return
|
|
||||||
this.serviceType = t
|
|
||||||
this.currentCate = 0
|
|
||||||
this.loadCategory()
|
|
||||||
this.loadList(true)
|
|
||||||
},
|
|
||||||
selectCate(id) {
|
|
||||||
this.currentCate = id
|
|
||||||
this.loadList(true)
|
|
||||||
},
|
|
||||||
loadCategory() {
|
|
||||||
request(apiArr.categoryList, 'POST', { service_type: this.serviceType }, {}, false).then(res => {
|
|
||||||
this.categoryList = res.rows || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
loadList(reset) {
|
|
||||||
if (reset) {
|
|
||||||
this.pageNum = 1
|
|
||||||
this.hasMore = true
|
|
||||||
this.serviceList = []
|
|
||||||
}
|
|
||||||
if (!this.hasMore) return
|
|
||||||
request(apiArr.serviceList, 'POST', {
|
|
||||||
service_type: this.serviceType,
|
|
||||||
category_id: this.currentCate,
|
|
||||||
page_num: this.pageNum,
|
|
||||||
page_size: this.pageSize
|
|
||||||
}, {}, false).then(res => {
|
|
||||||
const rows = res.rows || []
|
|
||||||
this.serviceList = this.serviceList.concat(rows)
|
|
||||||
this.hasMore = rows.length === this.pageSize
|
|
||||||
this.pageNum++
|
|
||||||
})
|
|
||||||
},
|
|
||||||
loadMore() {
|
|
||||||
this.loadList(false)
|
|
||||||
},
|
|
||||||
toDetail(item) {
|
|
||||||
NavgateTo('/packages/homeService/detail/index?id=' + item.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hs-page { display: flex; flex-direction: column; height: 100vh; background: #f5f5f5; }
|
|
||||||
.hs-tabs { display: flex; background: #fff; }
|
|
||||||
.hs-tab { flex: 1; text-align: center; padding: 26rpx 0; font-size: 28rpx; color: #666; }
|
|
||||||
.hs-tab.active { color: #FF370B; font-weight: 600; border-bottom: 4rpx solid #FF370B; }
|
|
||||||
.hs-body { flex: 1; display: flex; overflow: hidden; }
|
|
||||||
.hs-cate { width: 180rpx; background: #fafafa; height: 100%; }
|
|
||||||
.hs-cate-item { padding: 28rpx 16rpx; font-size: 26rpx; color: #555; text-align: center; }
|
|
||||||
.hs-cate-item.active { background: #fff; color: #FF370B; font-weight: 600; }
|
|
||||||
.hs-list { flex: 1; padding: 20rpx; box-sizing: border-box; }
|
|
||||||
.hs-card { display: flex; background: #fff; border-radius: 12rpx; padding: 16rpx; margin-bottom: 16rpx; }
|
|
||||||
.hs-card-pic { width: 200rpx; height: 200rpx; border-radius: 8rpx; flex-shrink: 0; background: #f0f0f0; }
|
|
||||||
.hs-card-info { flex: 1; margin-left: 18rpx; display: flex; flex-direction: column; min-width: 0; }
|
|
||||||
.hs-card-name { font-size: 30rpx; color: #222; font-weight: 600; }
|
|
||||||
.hs-card-desc { font-size: 24rpx; color: #999; margin-top: 12rpx; flex: 1; }
|
|
||||||
.hs-card-foot { display: flex; align-items: center; justify-content: space-between; }
|
|
||||||
.hs-card-tag { font-size: 20rpx; color: #FF370B; border: 1rpx solid #FFD9CD; border-radius: 6rpx; padding: 2rpx 10rpx; }
|
|
||||||
.hs-card-btn { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 24rpx; padding: 8rpx 28rpx; border-radius: 30rpx; }
|
|
||||||
.hs-empty { text-align: center; color: #999; font-size: 26rpx; padding: 80rpx 0; }
|
|
||||||
</style>
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hsc-page">
|
|
||||||
<view class="hsc-list">
|
|
||||||
<view class="hsc-card" v-for="c in contracts" :key="c.id" @tap="toDetail(c)">
|
|
||||||
<view class="hsc-head">
|
|
||||||
<text class="hsc-no">{{ c.contract_no }}</text>
|
|
||||||
<text class="hsc-status" :class="'st' + c.status">{{ statusText(c.status) }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hsc-body">
|
|
||||||
<view class="hsc-name">{{ c.contract_name }}</view>
|
|
||||||
<view class="hsc-row">月薪:<text class="hsc-amount">¥{{ c.month_amount }}</text></view>
|
|
||||||
<view class="hsc-row">结算:{{ c.settle_mode === 1 ? '平台月账单' : '线下自付' }}</view>
|
|
||||||
<view class="hsc-row">合同期:{{ fmtDate(c.start_date) }} ~ {{ fmtDate(c.end_date) }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="contracts.length === 0" class="hsc-empty">暂无家政合同</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, NavgateTo } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return { contracts: [] }
|
|
||||||
},
|
|
||||||
onShow() {
|
|
||||||
this.loadContracts()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadContracts() {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.contractList, 'POST', { user_id: userId, page_num: 1, page_size: 50 }, {}, false).then(res => {
|
|
||||||
this.contracts = res.rows || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
statusText(s) {
|
|
||||||
const map = { 1: '待签署', 2: '生效中', 3: '已到期', 4: '已解除', 5: '线下结算' }
|
|
||||||
return map[s] || ''
|
|
||||||
},
|
|
||||||
fmtDate(v) {
|
|
||||||
return v ? String(v).slice(0, 10) : ''
|
|
||||||
},
|
|
||||||
toDetail(c) {
|
|
||||||
NavgateTo('/packages/homeService/contractDetail/index?id=' + c.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hsc-page { background: #f5f5f5; min-height: 100vh; padding: 20rpx; }
|
|
||||||
.hsc-card { background: #fff; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; }
|
|
||||||
.hsc-head { display: flex; justify-content: space-between; align-items: center; border-bottom: 1rpx solid #f2f2f2; padding-bottom: 16rpx; }
|
|
||||||
.hsc-no { font-size: 26rpx; color: #888; }
|
|
||||||
.hsc-status { font-size: 26rpx; color: #FF370B; }
|
|
||||||
.hsc-status.st2 { color: #07c160; }
|
|
||||||
.hsc-status.st3, .hsc-status.st4 { color: #999; }
|
|
||||||
.hsc-body { padding-top: 16rpx; }
|
|
||||||
.hsc-name { font-size: 30rpx; color: #222; font-weight: 600; margin-bottom: 12rpx; }
|
|
||||||
.hsc-row { font-size: 26rpx; color: #555; margin-top: 8rpx; }
|
|
||||||
.hsc-amount { color: #FF370B; font-weight: 600; }
|
|
||||||
.hsc-empty { text-align: center; color: #999; font-size: 28rpx; padding-top: 120rpx; }
|
|
||||||
</style>
|
|
||||||
@ -1,95 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hmb-page">
|
|
||||||
<view class="hmb-list">
|
|
||||||
<view class="hmb-card" v-for="b in bills" :key="b.id">
|
|
||||||
<view class="hmb-head">
|
|
||||||
<text class="hmb-no">{{ b.bill_no }}</text>
|
|
||||||
<text class="hmb-status" :class="b.pay_status === 1 ? 'status-warn' : b.pay_status === 2 ? 'status-ok' : ''">{{ statusText(b.pay_status) }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hmb-body" @tap="toContract(b)">
|
|
||||||
<image class="hmb-pic" :src="picUrl + (b.service_pic || '')" mode="aspectFill" />
|
|
||||||
<view class="hmb-info">
|
|
||||||
<view class="hmb-name">{{ b.service_name }}</view>
|
|
||||||
<view class="hmb-month">{{ b.bill_month }} 月度账单</view>
|
|
||||||
<view class="hmb-amount">¥{{ b.amount }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="hmb-foot">
|
|
||||||
<view class="hmb-link" @tap.stop="toContract(b)">查看合同 ›</view>
|
|
||||||
<view class="hmb-pay" v-if="b.pay_status === 1" @tap.stop="payBill(b)">去支付</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="bills.length === 0" class="hmb-empty">暂无待支付月账单</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl, NavgateTo } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return { picUrl, bills: [] }
|
|
||||||
},
|
|
||||||
onShow() {
|
|
||||||
this.loadBills()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadBills() {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.userMonthlyBillList, 'POST', { user_id: userId, page_num: 1, page_size: 50 }, {}, false).then(res => {
|
|
||||||
this.bills = res.rows || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
statusText(payStatus) {
|
|
||||||
return payStatus === 1 ? '待支付' : payStatus === 2 ? '已支付' : payStatus === 3 ? '已退款' : ''
|
|
||||||
},
|
|
||||||
toContract(b) {
|
|
||||||
NavgateTo('/packages/homeService/contractDetail/index?id=' + b.contract_id)
|
|
||||||
},
|
|
||||||
payBill(b) {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.userMonthlyBillPreOrder, 'POST', { bill_id: b.id, user_id: userId, trans_type: '71' }).then(pay => {
|
|
||||||
uni.requestPayment({
|
|
||||||
provider: 'wxpay',
|
|
||||||
timeStamp: pay.timeStamp,
|
|
||||||
nonceStr: pay.nonceStr,
|
|
||||||
package: pay.package,
|
|
||||||
signType: pay.signType || 'RSA',
|
|
||||||
paySign: pay.paySign,
|
|
||||||
success: () => {
|
|
||||||
request(apiArr.userMonthlyBillTradeQuery, 'POST', { bill_id: b.id }, {}, false).finally(() => {
|
|
||||||
uni.showToast({ title: '支付成功', icon: 'none' })
|
|
||||||
this.loadBills()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
fail: () => { uni.showToast({ title: '支付已取消', icon: 'none' }) }
|
|
||||||
})
|
|
||||||
}).catch(err => {
|
|
||||||
uni.showToast({ title: err.errMsg || '发起支付失败', icon: 'none' })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hmb-page { background: #f5f5f5; min-height: 100vh; padding: 20rpx; box-sizing: border-box; }
|
|
||||||
.hmb-list {}
|
|
||||||
.hmb-card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 18rpx; border-left: 6rpx solid #FF370B; }
|
|
||||||
.hmb-head { display: flex; justify-content: space-between; align-items: center; font-size: 24rpx; color: #999; margin-bottom: 16rpx; }
|
|
||||||
.hmb-status { font-size: 26rpx; }
|
|
||||||
.status-warn { color: #FF9800; }
|
|
||||||
.status-ok { color: #4CAF50; }
|
|
||||||
.hmb-body { display: flex; }
|
|
||||||
.hmb-pic { width: 150rpx; height: 150rpx; border-radius: 8rpx; background: #f0f0f0; flex-shrink: 0; }
|
|
||||||
.hmb-info { flex: 1; margin-left: 18rpx; display: flex; flex-direction: column; }
|
|
||||||
.hmb-name { font-size: 30rpx; color: #222; font-weight: 600; }
|
|
||||||
.hmb-month { font-size: 24rpx; color: #666; margin-top: 8rpx; }
|
|
||||||
.hmb-amount { font-size: 32rpx; color: #FF370B; font-weight: 600; margin-top: auto; }
|
|
||||||
.hmb-foot { display: flex; justify-content: space-between; align-items: center; margin-top: 16rpx; }
|
|
||||||
.hmb-link { font-size: 24rpx; color: #666; }
|
|
||||||
.hmb-pay { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 26rpx; padding: 12rpx 40rpx; border-radius: 40rpx; margin-left: auto; }
|
|
||||||
.hmb-empty { text-align: center; color: #999; font-size: 26rpx; padding: 80rpx 0; }
|
|
||||||
</style>
|
|
||||||
@ -1,108 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hsm-page">
|
|
||||||
<view class="hsm-list">
|
|
||||||
<view class="hsm-card" v-for="o in orders" :key="o.id">
|
|
||||||
<view class="hsm-head">
|
|
||||||
<text class="hsm-no">{{ o.order_no }}</text>
|
|
||||||
<text class="hsm-status">{{ statusText(o) }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hsm-body" @tap="toDetail(o)">
|
|
||||||
<image class="hsm-pic" :src="picUrl + (o.service_pic || '')" mode="aspectFill" />
|
|
||||||
<view class="hsm-info">
|
|
||||||
<view class="hsm-name">{{ o.service_name }}</view>
|
|
||||||
<view class="hsm-kind">{{ kindText(o.order_kind) }}</view>
|
|
||||||
<view class="hsm-amount">¥{{ o.amount }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="hsm-foot" v-if="o.pay_status === 1 && o.status !== 5 && o.status !== 4">
|
|
||||||
<view class="hsm-cancel" @tap="cancelOrder(o)">取消订单</view>
|
|
||||||
<view class="hsm-pay" @tap="payOrder(o)">去支付</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="orders.length === 0" class="hsm-empty">暂无服务订单</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl, NavgateTo } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return { picUrl, orders: [] }
|
|
||||||
},
|
|
||||||
onShow() {
|
|
||||||
this.loadOrders()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
loadOrders() {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.orderList, 'POST', { user_id: userId, page_num: 1, page_size: 50 }, {}, false).then(res => {
|
|
||||||
this.orders = res.rows || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
kindText(k) {
|
|
||||||
return k === 1 ? '定金/上门费' : k === 2 ? '补差/尾款' : k === 3 ? '月账单' : ''
|
|
||||||
},
|
|
||||||
statusText(o) {
|
|
||||||
if (o.status === 5) return '已取消'
|
|
||||||
if (o.status === 4) return '已完成'
|
|
||||||
if (o.pay_status === 1) return '待支付'
|
|
||||||
const map = { 1: '待上门', 2: '服务中', 3: '待补款' }
|
|
||||||
return map[o.status] || ''
|
|
||||||
},
|
|
||||||
toDetail(o) {
|
|
||||||
NavgateTo('/packages/homeService/orderDetail/index?id=' + o.id)
|
|
||||||
},
|
|
||||||
cancelOrder(o) {
|
|
||||||
uni.showModal({
|
|
||||||
title: '提示',
|
|
||||||
content: '确定取消该订单吗?',
|
|
||||||
success: (r) => {
|
|
||||||
if (!r.confirm) return
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.orderCancel, 'POST', { id: o.id, user_id: Number(userId) || 0 }).then(() => {
|
|
||||||
uni.showToast({ title: '已取消', icon: 'none' })
|
|
||||||
this.loadOrders()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
payOrder(o) {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.preorder, 'POST', { order_id: o.id, user_id: userId, trans_type: '71' }).then(pay => {
|
|
||||||
uni.requestPayment({
|
|
||||||
provider: 'wxpay',
|
|
||||||
timeStamp: pay.timeStamp,
|
|
||||||
nonceStr: pay.nonceStr,
|
|
||||||
package: pay.package,
|
|
||||||
signType: pay.signType || 'RSA',
|
|
||||||
paySign: pay.paySign,
|
|
||||||
success: () => {
|
|
||||||
request(apiArr.tradeQuery, 'POST', { order_id: o.id }, {}, false).finally(() => this.loadOrders())
|
|
||||||
},
|
|
||||||
fail: () => { uni.showToast({ title: '支付已取消', icon: 'none' }) }
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hsm-page { background: #f5f5f5; min-height: 100vh; padding: 20rpx; box-sizing: border-box; }
|
|
||||||
.hsm-card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 18rpx; }
|
|
||||||
.hsm-head { display: flex; justify-content: space-between; align-items: center; font-size: 24rpx; color: #999; margin-bottom: 16rpx; }
|
|
||||||
.hsm-status { color: #FF370B; }
|
|
||||||
.hsm-body { display: flex; }
|
|
||||||
.hsm-pic { width: 150rpx; height: 150rpx; border-radius: 8rpx; background: #f0f0f0; flex-shrink: 0; }
|
|
||||||
.hsm-info { flex: 1; margin-left: 18rpx; display: flex; flex-direction: column; }
|
|
||||||
.hsm-name { font-size: 30rpx; color: #222; font-weight: 600; }
|
|
||||||
.hsm-kind { font-size: 24rpx; color: #999; margin-top: 10rpx; flex: 1; }
|
|
||||||
.hsm-amount { font-size: 32rpx; color: #FF370B; font-weight: 600; }
|
|
||||||
.hsm-foot { display: flex; justify-content: flex-end; align-items: center; margin-top: 16rpx; }
|
|
||||||
.hsm-cancel { border: 1rpx solid #ccc; color: #666; font-size: 26rpx; padding: 11rpx 36rpx; border-radius: 40rpx; margin-right: 20rpx; }
|
|
||||||
.hsm-pay { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 26rpx; padding: 12rpx 40rpx; border-radius: 40rpx; }
|
|
||||||
.hsm-empty { text-align: center; color: #999; font-size: 26rpx; padding: 80rpx 0; }
|
|
||||||
</style>
|
|
||||||
@ -1,221 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hso-page">
|
|
||||||
<view class="hso-card">
|
|
||||||
<view class="hso-svc">{{ params.service_name }}</view>
|
|
||||||
<view class="hso-deposit">定金 ¥{{ params.deposit }}</view>
|
|
||||||
</view>
|
|
||||||
<view class="hso-form">
|
|
||||||
<view class="hso-row">
|
|
||||||
<text class="hso-label">联系人</text>
|
|
||||||
<input class="hso-input" v-model="contactName" placeholder="请输入联系人" />
|
|
||||||
</view>
|
|
||||||
<view class="hso-row">
|
|
||||||
<text class="hso-label">联系电话</text>
|
|
||||||
<input class="hso-input" type="number" v-model="contactPhone" placeholder="请输入联系电话" maxlength="11" />
|
|
||||||
</view>
|
|
||||||
<view class="hso-row">
|
|
||||||
<text class="hso-label">小区地址</text>
|
|
||||||
<input class="hso-input" v-model="serviceAddress" placeholder="请选择或输入小区地址" />
|
|
||||||
<text class="hso-map-btn" @tap="chooseLocation">地图选点</text>
|
|
||||||
</view>
|
|
||||||
<view class="hso-row">
|
|
||||||
<text class="hso-label">门牌号</text>
|
|
||||||
<input class="hso-input" v-model="houseNumber" placeholder="如:1栋1单元103室" />
|
|
||||||
</view>
|
|
||||||
<view class="hso-row" @tap="showDate = true">
|
|
||||||
<text class="hso-label">上门时间</text>
|
|
||||||
<text class="hso-input" :class="{ ph: !serviceTime }">{{ serviceTime || '请选择上门时间' }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hso-row hso-row--col">
|
|
||||||
<text class="hso-label">备注</text>
|
|
||||||
<textarea class="hso-textarea" v-model="remark" placeholder="选填" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="hso-bottom">
|
|
||||||
<view class="hso-bottom-price">定金 <text>¥{{ params.deposit }}</text></view>
|
|
||||||
<view class="hso-bottom-btn" @tap="submit">提交并支付</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<u-datetime-picker :show="showDate" :value="dateValue" mode="datetime" @confirm="onDate" @cancel="showDate = false" @close="showDate = false" />
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, NavgateTo, isPhone } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
import { apiArr as commApi } from '@/api/community'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
params: {},
|
|
||||||
contactName: '',
|
|
||||||
contactPhone: '',
|
|
||||||
serviceAddress: '',
|
|
||||||
houseNumber: '',
|
|
||||||
serviceTime: '',
|
|
||||||
dateValue: Date.now(),
|
|
||||||
remark: '',
|
|
||||||
showDate: false,
|
|
||||||
submitting: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
if (options.params) {
|
|
||||||
try { this.params = JSON.parse(decodeURIComponent(options.params)) } catch (e) { this.params = {} }
|
|
||||||
}
|
|
||||||
// 先用本地缓存兜底(秒显),再异步拉后台房产数据覆盖为准确值
|
|
||||||
this.fillFromStorage()
|
|
||||||
this.loadBoundHouse()
|
|
||||||
// 默认上门时间:当前时间 3 小时之后的整点
|
|
||||||
this.initDefaultTime()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
// 本地缓存兜底:小区地址(详细地址在前 + 小区名)、门牌号
|
|
||||||
fillFromStorage() {
|
|
||||||
const addr = uni.getStorageSync('currentCommunityAddr')
|
|
||||||
const comm = uni.getStorageSync('changeCommData')
|
|
||||||
const commName = (comm && comm.name) ? comm.name : ''
|
|
||||||
if (addr) {
|
|
||||||
this.serviceAddress = (addr + ' ' + commName).trim()
|
|
||||||
} else if (commName) {
|
|
||||||
this.serviceAddress = commName
|
|
||||||
}
|
|
||||||
const roomNo = uni.getStorageSync('currentRoomNo')
|
|
||||||
if (roomNo) this.houseNumber = roomNo
|
|
||||||
},
|
|
||||||
// 拉取后台已绑定房产:用真实小区地址 + room_name 填充地址与门牌
|
|
||||||
loadBoundHouse() {
|
|
||||||
const loc = uni.getStorageSync('location') || {}
|
|
||||||
const comm = uni.getStorageSync('changeCommData')
|
|
||||||
request(commApi.commInfo, 'POST', {
|
|
||||||
user_id: uni.getStorageSync('userId'),
|
|
||||||
longitude: loc.lng,
|
|
||||||
latitude: loc.lat,
|
|
||||||
page_num: 1,
|
|
||||||
page_size: 20
|
|
||||||
}, { silent: false }).then(res => {
|
|
||||||
const rows = (res && res.rows) ? res.rows : []
|
|
||||||
if (!rows.length) return
|
|
||||||
// 优先匹配当前选中的小区,否则取第一个
|
|
||||||
let target = null
|
|
||||||
if (comm && comm.id) target = rows.find(r => r.community_id === comm.id)
|
|
||||||
if (!target) target = rows[0]
|
|
||||||
const commName = target.name || ''
|
|
||||||
if (target.addr) {
|
|
||||||
this.serviceAddress = (target.addr + ' ' + commName).trim()
|
|
||||||
} else if (commName) {
|
|
||||||
this.serviceAddress = commName
|
|
||||||
}
|
|
||||||
const owner = (target.room_owner_list && target.room_owner_list.length) ? target.room_owner_list[0] : null
|
|
||||||
if (owner && owner.room_name) this.houseNumber = owner.room_name
|
|
||||||
}).catch(() => {})
|
|
||||||
},
|
|
||||||
// 默认上门时间 = 当前时间 + 3 小时,并向上取整到整点
|
|
||||||
initDefaultTime() {
|
|
||||||
const d = new Date()
|
|
||||||
d.setHours(d.getHours() + 3)
|
|
||||||
// 有分/秒/毫秒则进位到下一个整点
|
|
||||||
if (d.getMinutes() > 0 || d.getSeconds() > 0 || d.getMilliseconds() > 0) {
|
|
||||||
d.setHours(d.getHours() + 1)
|
|
||||||
}
|
|
||||||
d.setMinutes(0, 0, 0)
|
|
||||||
this.dateValue = d.getTime()
|
|
||||||
this.serviceTime = this.formatTime(d)
|
|
||||||
},
|
|
||||||
formatTime(d) {
|
|
||||||
const p = n => String(n).padStart(2, '0')
|
|
||||||
return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}`
|
|
||||||
},
|
|
||||||
// 地图选点:选择后回填地址(详细地址在前,小区/点位名称在后)
|
|
||||||
chooseLocation() {
|
|
||||||
const loc = uni.getStorageSync('location') || {}
|
|
||||||
uni.chooseLocation({
|
|
||||||
latitude: loc.lat,
|
|
||||||
longitude: loc.lng,
|
|
||||||
success: (res) => {
|
|
||||||
const detail = res.name ? (res.address + ' ' + res.name) : res.address
|
|
||||||
this.serviceAddress = (detail || '').trim()
|
|
||||||
},
|
|
||||||
fail: (err) => {
|
|
||||||
if (err && err.errMsg && err.errMsg.indexOf('cancel') === -1) {
|
|
||||||
uni.showToast({ title: '地图选点失败,请检查定位权限', icon: 'none' })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
onDate(e) {
|
|
||||||
const d = new Date(e.value)
|
|
||||||
this.dateValue = d.getTime()
|
|
||||||
this.serviceTime = this.formatTime(d)
|
|
||||||
this.showDate = false
|
|
||||||
},
|
|
||||||
submit() {
|
|
||||||
if (!this.contactName) { uni.showToast({ title: '请输入联系人', icon: 'none' }); return }
|
|
||||||
if (!isPhone(this.contactPhone)) { uni.showToast({ title: '联系电话格式不正确', icon: 'none' }); return }
|
|
||||||
if (!this.serviceAddress) { uni.showToast({ title: '请选择或输入小区地址', icon: 'none' }); return }
|
|
||||||
if (!this.houseNumber) { uni.showToast({ title: '请输入门牌号', icon: 'none' }); return }
|
|
||||||
if (this.submitting) return
|
|
||||||
this.submitting = true
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
const fullAddress = (this.serviceAddress + ' ' + this.houseNumber).trim()
|
|
||||||
request(apiArr.orderCreate, 'POST', {
|
|
||||||
user_id: userId,
|
|
||||||
service_info_id: this.params.service_info_id,
|
|
||||||
sku_id: this.params.sku_id,
|
|
||||||
employee_id: this.params.employee_id,
|
|
||||||
service_address: fullAddress,
|
|
||||||
contact_name: this.contactName,
|
|
||||||
contact_phone: this.contactPhone,
|
|
||||||
service_time: this.serviceTime,
|
|
||||||
remark: this.remark
|
|
||||||
}).then(res => {
|
|
||||||
this.payOrder(res.id, userId)
|
|
||||||
}).catch(() => { this.submitting = false })
|
|
||||||
},
|
|
||||||
payOrder(orderId, userId) {
|
|
||||||
request(apiArr.preorder, 'POST', { order_id: orderId, user_id: userId, trans_type: '71' }).then(pay => {
|
|
||||||
uni.requestPayment({
|
|
||||||
provider: 'wxpay',
|
|
||||||
timeStamp: pay.timeStamp,
|
|
||||||
nonceStr: pay.nonceStr,
|
|
||||||
package: pay.package,
|
|
||||||
signType: pay.signType || 'RSA',
|
|
||||||
paySign: pay.paySign,
|
|
||||||
success: () => {
|
|
||||||
// 支付成功后查单回写
|
|
||||||
request(apiArr.tradeQuery, 'POST', { order_id: orderId }, {}, false).finally(() => {
|
|
||||||
uni.redirectTo({ url: '/packages/homeService/myOrders/index' })
|
|
||||||
})
|
|
||||||
},
|
|
||||||
fail: () => {
|
|
||||||
this.submitting = false
|
|
||||||
uni.showToast({ title: '支付已取消', icon: 'none' })
|
|
||||||
uni.redirectTo({ url: '/packages/homeService/myOrders/index' })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}).catch(() => { this.submitting = false })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hso-page { background: #f5f5f5; min-height: 100vh; padding-bottom: 130rpx; }
|
|
||||||
.hso-card { background: #fff; padding: 28rpx 24rpx; display: flex; align-items: center; justify-content: space-between; }
|
|
||||||
.hso-svc { font-size: 30rpx; color: #222; font-weight: 600; }
|
|
||||||
.hso-deposit { font-size: 30rpx; color: #FF370B; font-weight: 600; }
|
|
||||||
.hso-form { background: #fff; margin-top: 16rpx; padding: 0 24rpx; }
|
|
||||||
.hso-row { display: flex; align-items: center; padding: 26rpx 0; border-bottom: 1rpx solid #f2f2f2; }
|
|
||||||
.hso-row--col { flex-direction: column; align-items: flex-start; }
|
|
||||||
.hso-label { width: 160rpx; font-size: 28rpx; color: #333; flex-shrink: 0; }
|
|
||||||
.hso-input { flex: 1; font-size: 28rpx; color: #222; }
|
|
||||||
.hso-input.ph { color: #b7b7b7; }
|
|
||||||
.hso-map-btn { flex-shrink: 0; margin-left: 16rpx; font-size: 26rpx; color: #FF370B; padding: 6rpx 16rpx; border: 1rpx solid #FF370B; border-radius: 28rpx; }
|
|
||||||
.hso-textarea { width: 100%; height: 120rpx; font-size: 28rpx; margin-top: 12rpx; }
|
|
||||||
.hso-bottom { position: fixed; left: 0; right: 0; bottom: 0; background: #fff; display: flex; align-items: center; padding: 16rpx 24rpx calc(16rpx + env(safe-area-inset-bottom)); box-shadow: 0 -4rpx 20rpx rgba(0,0,0,0.04); }
|
|
||||||
.hso-bottom-price { flex: 1; font-size: 26rpx; color: #333; }
|
|
||||||
.hso-bottom-price text { color: #FF370B; font-size: 36rpx; font-weight: 600; }
|
|
||||||
.hso-bottom-btn { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 30rpx; padding: 20rpx 60rpx; border-radius: 44rpx; }
|
|
||||||
</style>
|
|
||||||
@ -1,66 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hsod-page" v-if="order.id">
|
|
||||||
<view class="hsod-status">{{ statusText }}</view>
|
|
||||||
<view class="hsod-card">
|
|
||||||
<image class="hsod-pic" :src="picUrl + (order.service_pic || '')" mode="aspectFill" />
|
|
||||||
<view class="hsod-info">
|
|
||||||
<view class="hsod-name">{{ order.service_name }}</view>
|
|
||||||
<view class="hsod-kind">{{ kindText(order.order_kind) }}</view>
|
|
||||||
<view class="hsod-amount">¥{{ order.amount }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view class="hsod-block">
|
|
||||||
<view class="hsod-row"><text>订单号</text><text>{{ order.order_no }}</text></view>
|
|
||||||
<view class="hsod-row"><text>联系人</text><text>{{ order.contact_name }}</text></view>
|
|
||||||
<view class="hsod-row"><text>联系电话</text><text>{{ order.contact_phone }}</text></view>
|
|
||||||
<view class="hsod-row"><text>服务地址</text><text>{{ order.service_address }}</text></view>
|
|
||||||
<view class="hsod-row" v-if="order.service_time"><text>上门时间</text><text>{{ order.service_time }}</text></view>
|
|
||||||
<view class="hsod-row" v-if="order.remark"><text>备注</text><text>{{ order.remark }}</text></view>
|
|
||||||
<view class="hsod-row"><text>支付状态</text><text>{{ order.pay_status === 2 ? '已支付' : '待支付' }}</text></view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request, picUrl } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return { picUrl, order: {} }
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
request(apiArr.orderInfo, 'POST', { id: Number(options.id) }, {}, false).then(res => {
|
|
||||||
this.order = res || {}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
statusText() {
|
|
||||||
const o = this.order
|
|
||||||
if (o.pay_status === 1) return '待支付'
|
|
||||||
const map = { 1: '待上门', 2: '服务中', 3: '待补款', 4: '已完成', 5: '已取消' }
|
|
||||||
return map[o.status] || ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
kindText(k) {
|
|
||||||
return k === 1 ? '定金/上门费' : k === 2 ? '补差/尾款' : k === 3 ? '月账单' : ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hsod-page { background: #f5f5f5; min-height: 100vh; }
|
|
||||||
.hsod-status { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 34rpx; font-weight: 600; padding: 40rpx 24rpx; }
|
|
||||||
.hsod-card { background: #fff; display: flex; padding: 24rpx; margin-top: 16rpx; }
|
|
||||||
.hsod-pic { width: 150rpx; height: 150rpx; border-radius: 8rpx; background: #f0f0f0; flex-shrink: 0; }
|
|
||||||
.hsod-info { flex: 1; margin-left: 18rpx; display: flex; flex-direction: column; }
|
|
||||||
.hsod-name { font-size: 30rpx; color: #222; font-weight: 600; }
|
|
||||||
.hsod-kind { font-size: 24rpx; color: #999; margin-top: 10rpx; flex: 1; }
|
|
||||||
.hsod-amount { font-size: 32rpx; color: #FF370B; font-weight: 600; }
|
|
||||||
.hsod-block { background: #fff; margin-top: 16rpx; padding: 8rpx 24rpx; }
|
|
||||||
.hsod-row { display: flex; justify-content: space-between; font-size: 26rpx; color: #333; padding: 22rpx 0; border-bottom: 1rpx solid #f5f5f5; }
|
|
||||||
.hsod-row text:first-child { color: #999; }
|
|
||||||
.hsod-row:last-child { border-bottom: none; }
|
|
||||||
</style>
|
|
||||||
@ -1,307 +0,0 @@
|
|||||||
<template>
|
|
||||||
<view class="hsw-page">
|
|
||||||
<!-- 顶部Tab:全部/待上门/服务中/已完成/月账单 -->
|
|
||||||
<view class="hsw-tabs">
|
|
||||||
<view
|
|
||||||
class="hsw-tab"
|
|
||||||
:class="{ active: statusTab === item.v }"
|
|
||||||
v-for="item in orderTabs"
|
|
||||||
:key="item.v"
|
|
||||||
@tap="switchStatus(item.v)"
|
|
||||||
>{{ item.t }}</view>
|
|
||||||
</view>
|
|
||||||
<!-- 月账单子Tab -->
|
|
||||||
<view class="hsw-tabs hsw-tabs-bill" v-if="showMonthlyBill">
|
|
||||||
<view
|
|
||||||
class="hsw-tab"
|
|
||||||
:class="{ active: billTab === item.v }"
|
|
||||||
v-for="item in billTabs"
|
|
||||||
:key="item.v"
|
|
||||||
@tap="switchBillTab(item.v)"
|
|
||||||
>{{ item.t }}</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 列表区域 -->
|
|
||||||
<scroll-view class="hsw-list" scroll-y>
|
|
||||||
<!-- 普通服务单(非月账单模式) -->
|
|
||||||
<block v-if="!showMonthlyBill">
|
|
||||||
<view class="hsw-card" v-for="o in orders" :key="o.id">
|
|
||||||
<view class="hsw-head">
|
|
||||||
<text class="hsw-no">{{ o.order_no }}</text>
|
|
||||||
<text class="hsw-kind">{{ kindText(o.order_kind) }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hsw-row"><text>服务</text><text>{{ o.service_name }}</text></view>
|
|
||||||
<view class="hsw-row"><text>客户</text><text>{{ o.contact_name }} {{ o.contact_phone }}</text></view>
|
|
||||||
<view class="hsw-row"><text>地址</text><text>{{ o.service_address }}</text></view>
|
|
||||||
<view class="hsw-row"><text>金额</text><text class="hsw-amount">¥{{ o.amount }}</text></view>
|
|
||||||
<view class="hsw-foot">
|
|
||||||
<view class="hsw-btn ghost" v-if="o.status === 1" @tap="updateStatus(o, 2)">开始服务</view>
|
|
||||||
<view class="hsw-btn" v-if="o.status === 2 && o.order_kind === 1" @tap="openExtra(o)">代客补差</view>
|
|
||||||
<view class="hsw-btn ghost" v-if="o.status === 2" @tap="updateStatus(o, 4)">完成服务</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="orders.length === 0" class="hsw-empty">暂无服务单</view>
|
|
||||||
</block>
|
|
||||||
<!-- 月账单列表(师傅可见所有状态) -->
|
|
||||||
<block v-else>
|
|
||||||
<view class="hsw-card hsw-bill-card" v-for="b in bills" :key="b.id">
|
|
||||||
<view class="hsw-head">
|
|
||||||
<text class="hsw-no">{{ b.bill_no }}</text>
|
|
||||||
<text class="hsw-kind" :class="b.push_status === 0 ? 'status-warn' : b.push_status === 1 ? 'status-info' : b.push_status === 2 ? 'status-ok' : 'status-cancel'">{{ pushStatusText(b.push_status) }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="hsw-row"><text>服务</text><text>{{ b.service_name }}</text></view>
|
|
||||||
<view class="hsw-row"><text>客户</text><text>{{ b.contact_name }} {{ b.contact_phone }}</text></view>
|
|
||||||
<view class="hsw-row"><text>地址</text><text>{{ b.service_address }}</text></view>
|
|
||||||
<view class="hsw-row"><text>账单月份</text><text>{{ b.bill_month }}</text></view>
|
|
||||||
<view class="hsw-row"><text>金额</text><text class="hsw-amount">¥{{ b.amount }}</text></view>
|
|
||||||
<view class="hsw-foot">
|
|
||||||
<view class="hsw-btn" v-if="b.push_status === 0" @tap="openPush(b)">推送至用户支付</view>
|
|
||||||
<view class="hsw-btn ghost" v-if="b.push_status === 0" @tap="openReject(b)">拒绝</view>
|
|
||||||
<view class="hsw-btn ghost" v-if="b.push_status === 1">已推送,待用户支付</view>
|
|
||||||
<view class="hsw-btn ghost" v-if="b.push_status === 2">用户已支付</view>
|
|
||||||
<view class="hsw-btn ghost" v-if="b.push_status === 3">已拒绝{{ b.remark ? ':' + b.remark : '' }}</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="bills.length === 0" class="hsw-empty">暂无月账单</view>
|
|
||||||
</block>
|
|
||||||
</scroll-view>
|
|
||||||
|
|
||||||
<!-- 代客补差弹层 -->
|
|
||||||
<view class="hsw-mask" v-if="showExtra" @tap.self="showExtra = false">
|
|
||||||
<view class="hsw-dialog">
|
|
||||||
<view class="hsw-dialog-tit">代客生成补差单</view>
|
|
||||||
<input class="hsw-dialog-input" type="digit" v-model="extraAmount" placeholder="请输入补差金额" />
|
|
||||||
<input class="hsw-dialog-input" v-model="extraRemark" placeholder="备注(选填)" />
|
|
||||||
<view class="hsw-dialog-btns">
|
|
||||||
<view class="hsw-dialog-btn cancel" @tap="showExtra = false">取消</view>
|
|
||||||
<view class="hsw-dialog-btn ok" @tap="submitExtra">确定</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 推送月账单弹层 -->
|
|
||||||
<view class="hsw-mask" v-if="showPush" @tap.self="showPush = false">
|
|
||||||
<view class="hsw-dialog">
|
|
||||||
<view class="hsw-dialog-tit">推送月账单</view>
|
|
||||||
<view class="hsw-dialog-info">确认推送至用户端?用户支付后该账单生效。</view>
|
|
||||||
<view class="hsw-dialog-btns">
|
|
||||||
<view class="hsw-dialog-btn cancel" @tap="showPush = false">取消</view>
|
|
||||||
<view class="hsw-dialog-btn ok" @tap="submitPush">确认推送</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 拒绝月账单弹层 -->
|
|
||||||
<view class="hsw-mask" v-if="showReject" @tap.self="showReject = false">
|
|
||||||
<view class="hsw-dialog">
|
|
||||||
<view class="hsw-dialog-tit">拒绝月账单</view>
|
|
||||||
<input class="hsw-dialog-input" v-model="rejectRemark" placeholder="请输入拒绝原因(选填)" />
|
|
||||||
<view class="hsw-dialog-btns">
|
|
||||||
<view class="hsw-dialog-btn cancel" @tap="showReject = false">取消</view>
|
|
||||||
<view class="hsw-dialog-btn ok" @tap="submitReject">确认拒绝</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { request } from '@/utils'
|
|
||||||
import { apiArr } from '@/api/homeService'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
employeeId: 0,
|
|
||||||
statusTab: 0,
|
|
||||||
orderTabs: [
|
|
||||||
{ v: 0, t: '全部' },
|
|
||||||
{ v: 1, t: '待上门' },
|
|
||||||
{ v: 2, t: '服务中' },
|
|
||||||
{ v: 4, t: '已完成' },
|
|
||||||
{ v: -1, t: '月账单' }
|
|
||||||
],
|
|
||||||
showMonthlyBill: false,
|
|
||||||
billTab: 0,
|
|
||||||
billTabs: [
|
|
||||||
{ v: 0, t: '全部' },
|
|
||||||
{ v: 1, t: '待推送' },
|
|
||||||
{ v: 2, t: '已推送' }
|
|
||||||
],
|
|
||||||
orders: [],
|
|
||||||
bills: [],
|
|
||||||
showExtra: false,
|
|
||||||
extraOrder: null,
|
|
||||||
extraAmount: '',
|
|
||||||
extraRemark: '',
|
|
||||||
showPush: false,
|
|
||||||
showReject: false,
|
|
||||||
pushBill: null,
|
|
||||||
rejectBill: null,
|
|
||||||
rejectRemark: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad(options) {
|
|
||||||
this.employeeId = Number(options.employeeId || uni.getStorageSync('serviceEmployeeId') || 0)
|
|
||||||
if (!this.employeeId) {
|
|
||||||
const userId = uni.getStorageSync('userId')
|
|
||||||
request(apiArr.workerMyInfo, 'POST', { user_id: userId }, {}, false).then(res => {
|
|
||||||
if (res && res.is_worker && res.employee_id) {
|
|
||||||
this.employeeId = res.employee_id
|
|
||||||
uni.setStorageSync('serviceEmployeeId', res.employee_id)
|
|
||||||
this.loadOrders()
|
|
||||||
} else {
|
|
||||||
uni.showModal({ title: '提示', content: '您还不是服务师傅,请联系商家添加', showCancel: false })
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onShow() {
|
|
||||||
if (this.employeeId) {
|
|
||||||
if (this.showMonthlyBill) {
|
|
||||||
this.loadBills()
|
|
||||||
} else {
|
|
||||||
this.loadOrders()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
switchStatus(v) {
|
|
||||||
if (v === -1) {
|
|
||||||
this.showMonthlyBill = true
|
|
||||||
this.billTab = 0
|
|
||||||
this.loadBills()
|
|
||||||
} else {
|
|
||||||
this.showMonthlyBill = false
|
|
||||||
this.statusTab = v
|
|
||||||
this.loadOrders()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
switchBillTab(v) {
|
|
||||||
this.billTab = v
|
|
||||||
this.loadBills()
|
|
||||||
},
|
|
||||||
loadOrders() {
|
|
||||||
request(apiArr.workerOrderList, 'POST', {
|
|
||||||
employee_id: this.employeeId,
|
|
||||||
status: this.statusTab,
|
|
||||||
page_num: 1,
|
|
||||||
page_size: 50
|
|
||||||
}, {}, false).then(res => {
|
|
||||||
this.orders = res.rows || []
|
|
||||||
})
|
|
||||||
},
|
|
||||||
loadBills() {
|
|
||||||
request(apiArr.workerMonthlyBillList, 'POST', {
|
|
||||||
employee_id: this.employeeId,
|
|
||||||
user_id: Number(uni.getStorageSync('userId')) || 0,
|
|
||||||
page_num: 1,
|
|
||||||
page_size: 50
|
|
||||||
}, {}, false).then(res => {
|
|
||||||
let rows = res.rows || []
|
|
||||||
if (this.billTab === 1) rows = rows.filter(b => b.push_status === 0)
|
|
||||||
if (this.billTab === 2) rows = rows.filter(b => b.push_status === 1 || b.push_status === 2)
|
|
||||||
this.bills = rows
|
|
||||||
})
|
|
||||||
},
|
|
||||||
kindText(k) {
|
|
||||||
return k === 1 ? '定金/上门费' : k === 2 ? '补差/尾款' : k === 3 ? '月账单' : ''
|
|
||||||
},
|
|
||||||
pushStatusText(s) {
|
|
||||||
return s === 0 ? '待推送' : s === 1 ? '已推送待支付' : s === 2 ? '已支付' : s === 3 ? '已拒绝' : ''
|
|
||||||
},
|
|
||||||
updateStatus(o, status) {
|
|
||||||
request(apiArr.workerOrderStatus, 'POST', { order_id: o.id, status }).then(() => {
|
|
||||||
uni.showToast({ title: '操作成功', icon: 'none' })
|
|
||||||
this.loadOrders()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
openExtra(o) {
|
|
||||||
this.extraOrder = o
|
|
||||||
this.extraAmount = ''
|
|
||||||
this.extraRemark = ''
|
|
||||||
this.showExtra = true
|
|
||||||
},
|
|
||||||
submitExtra() {
|
|
||||||
const amt = Number(this.extraAmount)
|
|
||||||
if (!amt || amt <= 0) { uni.showToast({ title: '请输入补差金额', icon: 'none' }); return }
|
|
||||||
request(apiArr.workerExtraOrder, 'POST', {
|
|
||||||
order_id: this.extraOrder.id,
|
|
||||||
amount: amt,
|
|
||||||
remark: this.extraRemark
|
|
||||||
}).then(() => {
|
|
||||||
this.showExtra = false
|
|
||||||
uni.showToast({ title: '已生成补差单,待客户支付', icon: 'none' })
|
|
||||||
this.loadOrders()
|
|
||||||
})
|
|
||||||
},
|
|
||||||
openPush(b) {
|
|
||||||
this.pushBill = b
|
|
||||||
this.showPush = true
|
|
||||||
},
|
|
||||||
submitPush() {
|
|
||||||
request(apiArr.workerPushBill, 'POST', {
|
|
||||||
bill_id: this.pushBill.id,
|
|
||||||
action: 1
|
|
||||||
}).then(() => {
|
|
||||||
this.showPush = false
|
|
||||||
uni.showToast({ title: '已推送,用户可支付', icon: 'none' })
|
|
||||||
this.loadBills()
|
|
||||||
}).catch(err => {
|
|
||||||
uni.showToast({ title: err.errMsg || '操作失败', icon: 'none' })
|
|
||||||
})
|
|
||||||
},
|
|
||||||
openReject(b) {
|
|
||||||
this.rejectBill = b
|
|
||||||
this.rejectRemark = ''
|
|
||||||
this.showReject = true
|
|
||||||
},
|
|
||||||
submitReject() {
|
|
||||||
request(apiArr.workerPushBill, 'POST', {
|
|
||||||
bill_id: this.rejectBill.id,
|
|
||||||
action: 3,
|
|
||||||
remark: this.rejectRemark
|
|
||||||
}).then(() => {
|
|
||||||
this.showReject = false
|
|
||||||
uni.showToast({ title: '已拒绝', icon: 'none' })
|
|
||||||
this.loadBills()
|
|
||||||
}).catch(err => {
|
|
||||||
uni.showToast({ title: err.errMsg || '操作失败', icon: 'none' })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.hsw-page { display: flex; flex-direction: column; height: 100vh; background: #f5f5f5; }
|
|
||||||
.hsw-tabs { display: flex; background: #fff; }
|
|
||||||
.hsw-tab { flex: 1; text-align: center; padding: 24rpx 0; font-size: 26rpx; color: #666; }
|
|
||||||
.hsw-tab.active { color: #FF370B; font-weight: 600; border-bottom: 4rpx solid #FF370B; }
|
|
||||||
.hsw-tabs-bill { border-top: 1rpx solid #f0f0f0; }
|
|
||||||
.hsw-list { flex: 1; padding: 20rpx; box-sizing: border-box; }
|
|
||||||
.hsw-card { background: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 18rpx; }
|
|
||||||
.hsw-bill-card { border-left: 6rpx solid #FF370B; }
|
|
||||||
.hsw-head { display: flex; justify-content: space-between; font-size: 24rpx; color: #999; margin-bottom: 14rpx; }
|
|
||||||
.hsw-kind { color: #FF370B; }
|
|
||||||
.status-warn { color: #FF9800; }
|
|
||||||
.status-info { color: #2196F3; }
|
|
||||||
.status-ok { color: #4CAF50; }
|
|
||||||
.status-cancel { color: #999; }
|
|
||||||
.hsw-row { display: flex; justify-content: space-between; font-size: 26rpx; color: #333; padding: 8rpx 0; }
|
|
||||||
.hsw-row text:first-child { color: #999; }
|
|
||||||
.hsw-amount { color: #FF370B; font-weight: 600; }
|
|
||||||
.hsw-foot { display: flex; justify-content: flex-end; gap: 16rpx; margin-top: 16rpx; }
|
|
||||||
.hsw-btn { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; font-size: 26rpx; padding: 12rpx 36rpx; border-radius: 40rpx; }
|
|
||||||
.hsw-btn.ghost { background: #fff; color: #FF370B; border: 1rpx solid #FF370B; }
|
|
||||||
.hsw-empty { text-align: center; color: #999; font-size: 26rpx; padding: 80rpx 0; }
|
|
||||||
.hsw-mask { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 999; }
|
|
||||||
.hsw-dialog { width: 600rpx; background: #fff; border-radius: 16rpx; padding: 32rpx; }
|
|
||||||
.hsw-dialog-tit { font-size: 30rpx; font-weight: 600; text-align: center; margin-bottom: 24rpx; }
|
|
||||||
.hsw-dialog-info { font-size: 26rpx; color: #666; text-align: center; margin-bottom: 24rpx; }
|
|
||||||
.hsw-dialog-input { border: 1rpx solid #eee; border-radius: 8rpx; height: 80rpx; padding: 0 20rpx; font-size: 28rpx; margin-bottom: 18rpx; }
|
|
||||||
.hsw-dialog-btns { display: flex; gap: 20rpx; margin-top: 10rpx; }
|
|
||||||
.hsw-dialog-btn { flex: 1; text-align: center; padding: 18rpx 0; border-radius: 44rpx; font-size: 28rpx; }
|
|
||||||
.hsw-dialog-btn.cancel { background: #f2f2f2; color: #666; }
|
|
||||||
.hsw-dialog-btn.ok { background: linear-gradient(91deg, #FF7658, #FF370B); color: #fff; }
|
|
||||||
</style>
|
|
||||||
@ -1,362 +0,0 @@
|
|||||||
/* 全局样式重置 */
|
|
||||||
* {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 商品详情页容器 */
|
|
||||||
.detail-container {
|
|
||||||
width: 100%;
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
padding-bottom: 100rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 轮播图容器 */
|
|
||||||
.swiper-container {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 600rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.swiper-image {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
}
|
|
||||||
|
|
||||||
.swiper-indicator {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 20rpx;
|
|
||||||
right: 20rpx;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
color: #fff;
|
|
||||||
padding: 10rpx 20rpx;
|
|
||||||
border-radius: 20rpx;
|
|
||||||
font-size: 24rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 商品信息 */
|
|
||||||
.product-info {
|
|
||||||
padding: 30rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-price {
|
|
||||||
display: flex;
|
|
||||||
align-items: baseline;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.price-number {
|
|
||||||
font-size: 48rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ff4d4f;
|
|
||||||
margin-right: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.price-unit {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #ff4d4f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-name {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
line-height: 48rpx;
|
|
||||||
margin-bottom: 15rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.exchange-info {
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 商品详情 */
|
|
||||||
.product-details {
|
|
||||||
padding: 30rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
padding-bottom: 20rpx;
|
|
||||||
border-bottom: 1rpx solid #e8e8e8;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.line {
|
|
||||||
flex: 1;
|
|
||||||
height: 1rpx;
|
|
||||||
background-color: #000000;
|
|
||||||
margin: 0 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-content {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.detail-image {
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 底部操作栏 */
|
|
||||||
.bottom-bar {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 150rpx;
|
|
||||||
background-color: #fff;
|
|
||||||
border-top: 1rpx solid #e8e8e8;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
padding: 0 30rpx;
|
|
||||||
z-index: 99;
|
|
||||||
}
|
|
||||||
|
|
||||||
.points-info {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
margin-right: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.points-label {
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.points-number {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ff6262;
|
|
||||||
}
|
|
||||||
|
|
||||||
.insufficient-points {
|
|
||||||
width: 60%;
|
|
||||||
height: 70rpx;
|
|
||||||
line-height: 70rpx;
|
|
||||||
background-color: #f0f0f0;
|
|
||||||
color: #999;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 35rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
margin-left: 10%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.exchange-btn {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 70rpx;
|
|
||||||
line-height: 70rpx;
|
|
||||||
background-color: #ff4d4f;
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 25rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
border: none;
|
|
||||||
position: absolute;
|
|
||||||
right: 100rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 规格选择弹窗 */
|
|
||||||
.spec-popup {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgba(0, 0, 0, 0.5);
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
align-items: flex-end;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-content {
|
|
||||||
width: 100%;
|
|
||||||
background-color: #fff;
|
|
||||||
border-radius: 30rpx 30rpx 0 0;
|
|
||||||
padding: 30rpx;
|
|
||||||
max-height: 80vh;
|
|
||||||
overflow-y: auto;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-header {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-price {
|
|
||||||
display: flex;
|
|
||||||
align-items: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-price-number {
|
|
||||||
font-size: 48rpx;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ff4d4f;
|
|
||||||
margin-right: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-price-unit {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #ff4d4f;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-selected {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-btn {
|
|
||||||
font-size: 48rpx;
|
|
||||||
color: #999;
|
|
||||||
width: 50rpx;
|
|
||||||
height: 50rpx;
|
|
||||||
line-height: 50rpx;
|
|
||||||
text-align: center;
|
|
||||||
position: absolute;
|
|
||||||
top: 30rpx;
|
|
||||||
right: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-image {
|
|
||||||
width: 150rpx;
|
|
||||||
height: 150rpx;
|
|
||||||
margin-right: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-image-item {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: cover;
|
|
||||||
border-radius: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-section {
|
|
||||||
margin-bottom: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-title {
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-options {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-option {
|
|
||||||
padding: 20rpx 30rpx;
|
|
||||||
border: 1rpx solid #e8e8e8;
|
|
||||||
border-radius: 10rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333;
|
|
||||||
background-color: #fafafa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spec-option.active {
|
|
||||||
border-color: #ff4d4f;
|
|
||||||
color: #ff4d4f;
|
|
||||||
background-color: #fff2f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-section {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
margin: 50rpx 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-title {
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #333;
|
|
||||||
margin-right: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-control {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-btn {
|
|
||||||
width: 60rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
line-height: 60rpx;
|
|
||||||
text-align: center;
|
|
||||||
border: 1rpx solid #e8e8e8;
|
|
||||||
background-color: #fafafa;
|
|
||||||
font-size: 32rpx;
|
|
||||||
color: #333;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-btn:disabled {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quantity-input {
|
|
||||||
width: 80rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
line-height: 60rpx;
|
|
||||||
text-align: center;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333;
|
|
||||||
border-top: 1rpx solid #e8e8e8;
|
|
||||||
border-bottom: 1rpx solid #e8e8e8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.popup-footer {
|
|
||||||
margin: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.confirm-btn {
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
line-height: 80rpx;
|
|
||||||
background-color: #ff4d4f;
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 40rpx;
|
|
||||||
font-size: 32rpx;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 适配不同屏幕尺寸 */
|
|
||||||
@media screen and (max-width: 375px) {
|
|
||||||
|
|
||||||
.price-number,
|
|
||||||
.spec-price-number {
|
|
||||||
font-size: 40rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.product-name {
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.exchange-btn,
|
|
||||||
.confirm-btn {
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user