This commit is contained in:
liyanhong 2024-11-26 15:27:53 +08:00
parent d5d06e8ef4
commit 42c9d7d236
33 changed files with 15419 additions and 5231 deletions

View File

@ -5,6 +5,9 @@
</style>
<script>
export default {
globalData: {
baidu_sdk_url: 'http://192.168.0.155:7301/api/',
},
onLaunch: function() {
//
const phone = uni.getStorageSync('phone');

View File

@ -0,0 +1,111 @@
<template>
<view>
<uni-forms ref="baseForm" >
<uni-forms-item label="城市" required>
<picker class="addRess" @change="bindPickerChange" @columnchange="pluginclass" :value="pickVal" :range="cityArr"
range-key="AreaName" mode="multiSelector">
<view v-if="pickVal2.length==0">请选择</view>
<view v-else class="uni-input">
<text>{{cityArr[0][pickVal2[0]].AreaName}}</text>
<text>{{cityArr[1][pickVal2[1]].AreaName}}</text>
<text>{{cityArr[2][pickVal2[2]].AreaName}}</text>
</view>
</picker>
</uni-forms-item>
</uni-forms>
</view>
</template>
<script>
export default {
data() {
return {
pickVal: [0, 0, 0], //
pickVal2:[], // 线
cityArr: [], //
}
},
mounted() {
//
this.loadProvinces()
},
methods: {
loadProvinces() { //
uni.request({
url: 'http://test-api.tiananhub.com/api/province/GetListProvince',
method: 'get',
success: async (res) => {
let {
data
} = res.data
console.log(data)
this.cityArr[0] = data
this.loadCities(data[0].AreaId)
this.$forceUpdate()
},
fail: async (res) => {}
})
},
//
loadCities(AreaId) {
uni.request({
url: 'http://test-api.tiananhub.com/api/province/GetListCity',
data: {
AreaId
},
method: 'get',
success: async (res) => {
let {
data
} = res.data
this.cityArr[1] = data
this.loadAreas(data[0].AreaId)
this.$forceUpdate()
},
fail: async (res) => {}
})
},
//
loadAreas(AreaId) {
uni.request({
url: 'http://test-api.tiananhub.com/api/province/GetListCity',
data: {
AreaId
},
method: 'get',
success: async (res) => {
let {
data
} = res.data
this.cityArr[2] = data
this.$forceUpdate()
},
fail: async (res) => {}
})
},
//
bindPickerChange(data) {
this.pickVal=data.target.value;
this.pickVal2=data.target.value;
//
},
//
pluginclass(e) {
console.log('修改的列为:' + e.detail.column + ',值为:' + e.detail.value)
if (e.detail.column == 0) {
this.loadCities(this.cityArr[0][e.detail.value].AreaId);
}
if (e.detail.column == 1) {
this.loadAreas(this.cityArr[1][e.detail.value].AreaId);
}
}
}
}
</script>
<style lang="scss" scoped>
.addRess{
line-height: 80rpx;
}
</style>

19
package.json Normal file
View File

@ -0,0 +1,19 @@
{
"id": "xlh-picker",
"name": "APP、小程序城市选择器、三级联动、二级联动",
"displayName": "APP、小程序城市选择器、三级联动、二级联动",
"version": "1.0.0",
"description": "适于用于各端的城市选择器、地址选择器、三级联动耳机联动",
"keywords": [
"picker",
"选择器",
"城市",
"三级联动"
],
"dcloudext": {
"category": [
"前端组件",
"通用组件"
]
}
}

View File

@ -18,6 +18,39 @@
}
}
},
{ //
"path": "pages/index/sign",
"style": {
"navigationBarTitleText": " ",
"navigationBarTextStyle":"black",
"navigationBarBackgroundColor":"#ffffff",
"app-plus": {
"bounce": "none" //
}
}
},
{ //
"path": "pages/index/sel-bank/sel-bank",
"style": {
"navigationBarTitleText": " ",
"navigationBarTextStyle":"black",
"navigationBarBackgroundColor":"#ffffff",
"app-plus": {
"bounce": "none" //
}
}
},
{ //
"path": "pages/index/sel-city/sel-city",
"style": {
"navigationBarTitleText": " ",
"navigationBarTextStyle":"black",
"navigationBarBackgroundColor":"#ffffff",
"app-plus": {
"bounce": "none" //
}
}
},
//
{
"path": "pages/login/index",
@ -45,6 +78,16 @@
"app-plus": {
"bounce": "none" //
}
}
},
{
"path": "pages/mine/auth",
"style": {
"navigationBarTitleText": "实名认证",
"app-plus": {
"bounce": "none" //
}
}
}

View File

@ -63,6 +63,9 @@
<script>
import umask from "./u-mask/u-mask.vue"
import pickerColor from "./pickerColor.vue"
import {
uploadImg
} from '@/utils/api.js'
export default {
components: {
umask,
@ -495,23 +498,32 @@
success: function(res1) {
if (that.action) {
uni.showLoading()
uni.uploadFile({
url: that.action, //post
filePath: res1.tempFilePath,
name: "file",
header: that.header,
success: (uploadFileRes) => {
uni.hideLoading()
that.showImg = res1.tempFilePath
that.$emit('signToUrl',
uploadFileRes)
that.signModShow = false
that.clear()
},
fail: (error) => {
uni.hideLoading()
}
});
uploadImg({file:res1.tempFilePath}).then(res => {
uni.hideLoading()
that.showImg = res1.tempFilePath
that.$emit('signToUrl',res)
that.signModShow = false
that.clear()
}).catch(err=>{
uni.hideLoading()
})
// uni.uploadFile({
// url: that.action, //post
// filePath: res1.tempFilePath,
// name: "file",
// header: that.header,
// success: (uploadFileRes) => {
// uni.hideLoading()
// that.showImg = res1.tempFilePath
// that.$emit('signToUrl',
// uploadFileRes)
// that.signModShow = false
// that.clear()
// },
// fail: (error) => {
// uni.hideLoading()
// }
// });
} else {
that.showImg = res1.tempFilePath
that.$emit('signToUrl', {
@ -575,7 +587,6 @@
</script>
<style lang="scss">
.imgBox {
width: 140px;
height: 80px;

View File

@ -2,196 +2,344 @@
export default {
//商户类型
shop_type:()=>{
return [
{name:'小微',label:'2'},
{name:'个体',label:'3'},
{name:'企业',label:'4'},
{name:'社会组织',label:'5'},
{name:'事业单位',label:'6'},
{name:'政府机关',label:'7'}
shop_type: () => {
return [{
name: '小微',
label: '2'
},
{
name: '个体',
label: '3'
},
{
name: '企业',
label: '4'
},
// {
// name: '社会组织',
// label: '5'
// },
// {
// name: '事业单位',
// label: '6'
// },
// {
// name: '政府机关',
// label: '7'
// }
]
},
//证件类型
crpCertType:()=>{
return [
{name:'身份证',value:'00'},
{name:'国外护照',value:'06'},
{name:'港澳通行证',value:'07'},
{name:'台胞通行证',value:'08'},
crpCertType: () => {
return [{
name: '身份证',
value: '00'
},
{
name: '国外护照',
value: '06'
},
{
name: '港澳通行证',
value: '07'
},
{
name: '台胞通行证',
value: '08'
},
]
},
//结算账户类
stlAccType:()=>{
return [
{name:'对私',value:'11'},
{name:'对公',value:'21'},
{name:'对公存折',value:'23'},
{name:'单位结算卡',value:'24'},
]
},
//营业执照证件类型
busCertType:()=>{
return [
{name:'社会统一信用代码',value:'19'},
{name:'事业单位法人证书',value:'z2'},
{name:'其他证明文件',value:'z4'},
{name:'民办非企业单位登记证书',value:'z5'},
{name:'基金会法人登记证书',value:'z6'},
]
},
//到账类型
busOpenTypes:()=>{
return [
{name:'T+1',value:'00',checked: true},
{name:'D+1',value:'20',checked: false},
{name:'实时到账',value:'01',checked: false},
]
},
//实名认证状态对应的信息
authResMsg:()=>{
return {
APPLYMENT_STATE_WAITTING_FOR_AUDIT:'审核中请耐心等待1~2个工作日微信支付将会完成审核',
APPLYMENT_STATE_EDITTING:'编辑中,可能提交申请发生了错误导致,可用同一个业务申请编号重新提交',
APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT:'待确认联系信息,请扫描小程序码确认联系信息',
APPLYMENT_STATE_WAITTING_FOR_CONFIRM_LEGALPERSON:'待账户验证,请扫描小程序码在小程序端完成账户验证',
APPLYMENT_STATE_PASSED:'审核通过,请扫描小程序码在小程序端完成授权流程',
APPLYMENT_STATE_REJECTED:'审核驳回,请按照驳回原因修改申请资料,重新提交申请',
APPLYMENT_STATE_FREEZED:'已冻结,可能是该主体已完成过入驻,请查看驳回原因,并通知驳回原因中指定的联系人扫描小程序码在小程序端完成授权流程',
APPLYMENT_STATE_CANCELED:'已作废,表示申请单已被撤销,无需再对其进行操作',
AUDITING:'审核中',
LEGAL_CONFIRM:'待法人确认',
CONTACT_CONFIRM:'待确认联系信息',
AUDIT_REJECT:'审核失败',
AUDIT_PASS:'审核通过',
CANCELED:'已撤回',
AUDIT_FREEZE:'已冻结',
stlAccType: (value, isConditionTrue) => {
switch (value) {
case "2":
case "3":
return [{
name: '对私',
value: '11'
}];
case "4":
return isConditionTrue ? [{
name: '对公',
value: '21'
}] : [{
name: '对私',
value: '11'
}];
default:
return [{
name: '对私',
value: '11'
},
{
name: '对公',
value: '21'
},
{
name: '对公存折',
value: '23'
},
{
name: '单位结算卡',
value: '24'
}
];
}
},
params:()=>{
//营业执照证件类型
busCertType: (value) => {
switch (value) {
case '3':
return [{
name: '社会统一信用代码',
label: '19'
}];
case '4':
return [{
name: '社会统一信用代码',
label: '19'
}];
case '5':
return [{
name: '事业单位法人证书',
label: 'z2'
}];
case '6':
return [{
name: '事业单位法人证书',
label: 'z2'
}, {
name: '其他证明文件',
label: 'z4'
}];
case '7':
return [{
name: '民办非企业单位登记证书',
label: 'z5'
}, {
name: '基金会法人登记证书',
label: 'z6'
}, {
name: '其他证明文件',
label: 'z4'
}];
default:
return [{
name: '请先选择商户类型',
label: null
}];
}
},
//到账类型
busOpenTypes: () => {
return [{
name: 'T+1',
value: '00',
checked: true
},
{
name: 'D+1',
value: '20',
checked: false
},
{
name: '实时到账',
value: '01',
checked: false
},
]
},
//实名认证状态对应的信息
authResMsg: () => {
return {
"channelName": "银盛",
"channelType": "ys",
"merch_rate": "0.25",
"custInfo": {
"mercName": "青岛兼程教育科技有限公司",
"mercShortName": "兼程教育",
"shop_type": "4",
"mccStr": "其他学校和教育服务",
"mccCd": "8299",
"contactMail": "1282495619@qq.com",
"cusMgrNm": "高月翔",
"cusMgrID": "143",
"notifyUrl": "",
"agtMercId": "8014520000032X1"
},
"crpInfo": {
"crpCertNo": "370213198305255227",
"crpCertType": "00",
"crpCertTypeStr": "身份证",
"certBgn": "20100526",
"certExpire": "20300526",
"crpNm": "王璇",
"crpPhone": "17854209856",
"crpSex": "女"
},
"stlAccInfo": {
"isUncrpSett": "Y",
"stlAccNm": "王璇",
"stlAccNo": "6217680603877809",
"bankSubCode": "302452000017",
"bankSubStr": "中信银行股份有限公司青岛山东路支行",
"stlAccType": "11",
"stlAccTypeStr": "对私",
"bankMobile": "13963939520",
"openCertNo": "370213198305255227",
"standByStlAccNo": "232542093211",
"standByStlAccNm": "青岛兼程教育科技有限公司",
"standByStlAccType": "21",
"standByStlAccTypeStr": "对公",
"standByBankSubStr": "中国银行股份有限公司青岛京口路支行",
"standByBankSubCode": "104452003139",
"standByBankProvince": "4500",
"standByBankCity": "4520"
},
"busInfo": {
"busNo": "91370213MA3T8KUG9F",
"busNm": "青岛兼程教育科技有限公司",
"busCertBgn": "20200609",
"busCertExpire": "29991231",
"busCertDateStr": "2020-06-09---",
"busProviceCode": "4500",
"busCityCode": "4520",
"busAreaCode": "4529",
"busAdrStr": "山东省青岛市李沧区",
"busCertType": "19",
"busAddr": "山东省青岛市李沧区京口路111号A2022",
"busCertTypeStr": "社会统一信用代码"
},
"imgPaths": {
"A002": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436598200_image.png",
"A006": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436576201_image5.png",
"A007": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436582704_image5.png",
"A008": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436588816_image5.png",
"A001": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436672752_image3.png",
"A004": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436726512_微信图片_20240612150538.jpg",
"A005": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436734112_微信图片_20240612150526.jpg",
"A003": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725437019447_image2.png",
"A0041":"/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/微信图片_20240905101853.jpg"
},
"signInfo": {
"busOpenType": "00",
"contractType": "2",
"isSendConMsg": "3",
"notifyUrl": "",
"codeScanT1Fee": {
"wxPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"aliPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"bank1debitPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200",
"rateTop": "60000"
},
"bank1creditPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"bank2debitPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200",
"rateTop": "60000"
},
"bank2creditPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
}
},
"codeScanD0Fee": {
"rateType": "0"
},
"d1Fee": {
"rateType": "0"
}
},
"payDeviceNo": "LDNS3022890N637808",
"appChannelType": "1",
"agreement": true
}
}
APPLYMENT_STATE_WAITTING_FOR_AUDIT: '审核中请耐心等待1~2个工作日微信支付将会完成审核',
APPLYMENT_STATE_EDITTING: '编辑中,可能提交申请发生了错误导致,可用同一个业务申请编号重新提交',
APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT: '待确认联系信息,请扫描小程序码确认联系信息',
APPLYMENT_STATE_WAITTING_FOR_CONFIRM_LEGALPERSON: '待账户验证,请扫描小程序码在小程序端完成账户验证',
APPLYMENT_STATE_PASSED: '审核通过,请扫描小程序码在小程序端完成授权流程',
APPLYMENT_STATE_REJECTED: '审核驳回,请按照驳回原因修改申请资料,重新提交申请',
APPLYMENT_STATE_FREEZED: '已冻结,可能是该主体已完成过入驻,请查看驳回原因,并通知驳回原因中指定的联系人扫描小程序码在小程序端完成授权流程',
APPLYMENT_STATE_CANCELED: '已作废,表示申请单已被撤销,无需再对其进行操作',
AUDITING: '审核中',
LEGAL_CONFIRM: '待法人确认',
CONTACT_CONFIRM: '待确认联系信息',
AUDIT_REJECT: '审核失败',
AUDIT_PASS: '审核通过',
CANCELED: '已撤回',
AUDIT_FREEZE: '已冻结',
}
},
params: () => {
return {
"channelName": "银盛",
"channelType": "ys",
"merch_rate": "0.25",
"custInfo": {
"mercName": "青岛兼程教育科技有限公司",
"mercShortName": "兼程教育",
"shop_type": "4",
"mccStr": "其他学校和教育服务",
"mccCd": "8299",
"contactMail": "1282495619@qq.com",
"cusMgrNm": "高月翔",
"cusMgrID": "143",
"notifyUrl": "",
"agtMercId": "8014520000032X1"
},
"crpInfo": {
"crpCertNo": "370213198305255227",
"crpCertType": "00",
"crpCertTypeStr": "身份证",
"certBgn": "20100526",
"certExpire": "20300526",
"crpNm": "王璇",
"crpPhone": "17854209856",
"crpSex": "女"
},
"stlAccInfo": {
"isUncrpSett": "Y",
"stlAccNm": "王璇",
"stlAccNo": "6217680603877809",
"bankSubCode": "302452000017",
"bankSubStr": "中信银行股份有限公司青岛山东路支行",
"stlAccType": "11",
"stlAccTypeStr": "对私",
"bankMobile": "13963939520",
"openCertNo": "370213198305255227",
"standByStlAccNo": "232542093211",
"standByStlAccNm": "青岛兼程教育科技有限公司",
"standByStlAccType": "21",
"standByStlAccTypeStr": "对公",
"standByBankSubStr": "中国银行股份有限公司青岛京口路支行",
"standByBankSubCode": "104452003139",
"standByBankProvince": "4500",
"standByBankCity": "4520"
},
"busInfo": {
"busNo": "91370213MA3T8KUG9F",
"busNm": "青岛兼程教育科技有限公司",
"busCertBgn": "20200609",
"busCertExpire": "29991231",
"busCertDateStr": "2020-06-09---",
"busProviceCode": "4500",
"busCityCode": "4520",
"busAreaCode": "4529",
"busAdrStr": "山东省青岛市李沧区",
"busCertType": "19",
"busAddr": "山东省青岛市李沧区京口路111号A2022",
"busCertTypeStr": "社会统一信用代码"
},
"imgPaths": {
"A002": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436598200_image.png",
"A006": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436576201_image5.png",
"A007": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436582704_image5.png",
"A008": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436588816_image5.png",
"A001": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436672752_image3.png",
"A004": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436726512_微信图片_20240612150538.jpg",
"A005": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725436734112_微信图片_20240612150526.jpg",
"A003": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/1725437019447_image2.png",
"A0041": "/www/wwwroot/bin/go/baidu_sdk/static/img/20240904/微信图片_20240905101853.jpg"
},
"signInfo": {
"busOpenType": "00",
"contractType": "2",
"isSendConMsg": "3",
"notifyUrl": "",
"codeScanT1Fee": {
"wxPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"aliPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"bank1debitPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200",
"rateTop": "60000"
},
"bank1creditPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
},
"bank2debitPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200",
"rateTop": "60000"
},
"bank2creditPayFee": {
"rateType": "0",
"rateFee": "25",
"rateBottom": "200"
}
},
"codeScanD0Fee": {
"rateType": "0"
},
"d1Fee": {
"rateType": "0"
}
},
"payDeviceNo": "LDNS3022890N637808",
"appChannelType": "1",
"agreement": true
}
},
// gjson.New(g.Map{
//         "busInfo": g.Map{
//             "busAddr":        "山东省青岛市李沧区虎山路38号",
//             "busAreaCode":    "4529",
//             "busCertBgn":     "20200609",
//             "busCertExpire":  "29991231",
//             "busCertType":    "19",
//             "busCityCode":    "4520",
//             "busNm":          "青岛兼程教育科技有限公司",
//             "busNo":          "91370213MA3T8KUG9F",
//             "busProviceCode": "4500",
//         },
//         "crpInfo": g.Map{
//             "certBgn":     "20100526",
//             "certExpire":  "20300526",
//             "crpCertNo":   "370213198305255227",
//             "crpCertType": "00",
//             "crpNm":       "王璇",
//             "crpPhone":    "17854209856",
//         },
//         "custInfo": g.Map{
//             "contactMail":   "1282495619@qq.com",
//             "cusMgrNm":      "王璇",
//             "mccCd":         "8299",
//             "mercName":      "青岛兼程教育科技有限公司",
//             "mercShortName": "兼程教育",
//             "mercType":      "4",
//         },
//         "stlAccInfo": g.Map{
//             "bankMobile":          "13963939520",
//             "bankSubCode":         "302452000017",
//             "isUncrpSett":         "Y",
//             "openCertNo":          "370213198305255227",
//             "stlAccNm":            "王璇",
//             "stlAccNo":            "6217680603877809",
//             "stlAccType":          "11",
//             "standByStlAccType":   "21",
//             "standByStlAccNo":     "232542093211",
//             "standByStlAccNm":     "青岛兼程教育科技有限公司",
//             "standByBankSubCode":  "104452003139",
//             "standByBankProvince": "4500",
//             "standByBankCity":     "4520",
//         },
//     })
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
<template>
<view>
<view class="titelc">
<u-row gutter="10" justify="space-between">
<u-col span="3">
<view class="d-layout bg-purple" @click="toSelCity">
<u-icon name="map"></u-icon><text style="margin-left: 20rpx;">{{selectCity.cityNm}}</text>
</view>
</u-col>
<u-col span="9">
<view class="d-layout bg-purple-light">
<u-search placeholder="输入银行名" v-model="searchName" :show-action="false" shape="shape"
@search="queryBank"></u-search>
</view>
</u-col>
</u-row>
</view>
<u-gap height="5" bg-color="#C6C6C6"></u-gap>
<u-row gutter="10" justify="space-between" v-if="bankList.length">
<u-cell-group>
<u-cell v-for="(item,index) in bankList" :title="item.bankName" :arrow="false"
@click="selectBank(item)"></u-cell>
</u-cell-group>
</u-row>
<view class="" v-if='!bankList.length&&selectCity.cityNm=="请选择"' style="padding:250px 20px 20px"
@click="toSelCity">
<u-button type="primary" :plain="true" text="请先点击查看开户城市"></u-button>
</view>
</view>
</template>
<script>
import {
bank_code
} from '@/utils/api.js'
export default {
data() {
return {
showCityPick: false,
pickerShow: false,
selectCity: {
cityNm: "请选择",
},
curCity: null,
searchName: "",
params: {
province: true,
city: true,
area: false
},
bankList: []
}
},
methods: {
toSelCity() {
var that = this
this.$u.route('pages/index/sel-city/sel-city')
uni.$once("queryAreas", function(data) {
if (JSON.stringify(data) !== "{}") {
that.selectCity = data
}
})
},
queryBank() {
bank_code({
city_code: this.selectCity.city_code,
open_bank_name: this.searchName
}).then(res => {
if (res.code !== 200) {
this.$u.toast(res.msg)
return
}
this.bankList = res.data
})
},
selectBank(data) {
// data["city_code"] = this.curCity.cityCd
const bankdata = {
...data,
stand_by_bank_province: this.selectCity.stand_by_bank_province,
stand_by_bank_city: this.selectCity.stand_by_bank_city
}
uni.$emit("querBank", bankdata)
this.$u.route({
type: 'navigateBack',
})
},
}
}
</script>
<style scoped lang="scss">
.titelc {
height: 80rpx;
margin-right: 30rpx;
padding-bottom: 100rpx;
}
.d-layout {
height: 80rpx;
text-align: center;
display: flex;
align-items: center;
text-align: center;
}
.list-cell {
display: flex;
box-sizing: border-box;
width: 100%;
padding: 10px 24rpx;
overflow: hidden;
color: #323233;
font-size: 14px;
line-height: 24px;
background-color: #fff;
}
</style>

View File

@ -0,0 +1,180 @@
<template>
<view>
<view class="test">
<u-sticky>
<view class="headerc">
<view class="searchc">
<u-search placeholder="输入地区市名" v-model="serachV" :show-action="false" shape="shape"
@search="searchCity"></u-search>
</view>
<u-gap height="5" bg-color="#C6C6C6"></u-gap>
<view class="gpsc" v-if="currentList.length">
<view class="gpsc-str">{{currentSelStr}}</view>
<view class="gpsc-btn">
<u-button :ripple="true" :plain="true" type="primary" text="确认"
:custom-style="{width:'100rpx',height:'60rpx',fontSize:'26rpx'}" @click="confirm">
</u-button>
</view>
<view class="gpsc-btns"></view>
</view>
</view>
</u-sticky>
</view>
<view class="hisC">
<u-cell-group>
<u-cell v-for="(item,index) in currentList" :title="item.cityNm" @click="select(item)">
</u-cell>
</u-cell-group>
</view>
</view>
</template>
<script>
import Vue from 'vue'
import {
areas
} from '@/utils/api.js'
export default {
data() {
return {
currentList: [],
currentSelStr: "请选择",
currentSel: {},
serachV: "",
areaCode: '', //code
stand_by_bank_province:'',//
stand_by_bank_city:'',//
}
},
onLoad() {},
watch: {
'currentSel': {
handler: function(n, o) {
this.currentSelStr = (this.currentSel.provice?.cityNm || '') + (this.currentSel.city?.cityNm ||
'') + (this.currentSel.area?.cityNm || '')
},
deep: true
}
},
methods: {
selCity(city_name, area_level) {
areas({
city_name,
area_level
}).then(res => {
if (res.code !== 200) {
this.$u.toast(res.msg)
return
}
this.currentList = res.data
})
},
select(v) {
this.currentSelStr = v.cityNm
this.areaCode = v.cityCd
this.stand_by_bank_province=v.parentCityCd
this.stand_by_bank_city=v.cityCd
// const keys = {
// "1":"provice",
// "2":"city",
// "3":"area"
// }
// if(v.areaLevel !== '3'){
// this.selCity(v.cityNm,v.cityCd)
// //
// let isHasParent = (typeof v.parentCityCd !== 'undefined')
// //
// Vue.set(this.currentSel,keys[v.areaLevel],v)
// if (isHasParent){
// areas({
// cityCd:v.parentCityCd
// }).then(res=>{
// let d = res.data[0]
// Vue.set(this.currentSel,keys[d.areaLevel],d)
// })
// }
// }else{
// this.currentSel.area = v
// areas({
// cityCd:v.parentCityCd
// }).then(res=>{
// let d = res.data[0]
// Vue.set(this.currentSel,keys[d.areaLevel],d)
// if (typeof d.parentCityCd !== 'undefined'){
// areas({
// cityCd:d.parentCityCd
// }).then(res=>{
// let e = res.data[0]
// Vue.set(this.currentSel,keys[e.areaLevel],e)
// })
// }
// })
// }
},
searchCity() {
this.selCity(this.serachV, "2")
},
confirm() {
const a = {
cityNm: this.currentSelStr,
city_code: this.areaCode,
stand_by_bank_province:this.stand_by_bank_province,
stand_by_bank_city:this.stand_by_bank_city
}
uni.$emit("queryAreas", a)
this.$u.route({
type: 'navigateBack',
})
}
}
}
</script>
<style lang="scss">
.headerc {
padding-top: 20rpx;
padding-bottom: 20rpx;
background: #ffffff;
}
.searchc {
height: 80rpx;
margin-left: 30rpx;
margin-right: 30rpx;
margin-bottom: 20rpx;
line-height: 80rpx;
text-align: center;
}
.gpsc {
height: 80rpx;
line-height: 80rpx;
padding-left: 30rpx;
background-color: aliceblue;
margin-top: 20rpx;
.gpsc-str {
float: left;
}
.gpsc-btn {
float: right;
margin-right: 50rpx;
margin-top: 10rpx;
}
}
.hisC {
padding-right: 30rpx;
}
.test {
background-color: red;
}
</style>

25
pages/index/sign.vue Normal file
View File

@ -0,0 +1,25 @@
<template>
<view>
<web-view :src="ysSignPage"></web-view>
</view>
</template>
<script>
import { test } from '@/utils/api.js'
export default {
data() {
return {
ysSignPage:''
}
},
onLoad(options) {
this.ysSignPage = options.sigUrl
console.log(this.ysSignPage);
}
}
</script>
<style>
</style>

View File

@ -25,6 +25,9 @@
</template>
<script>
import {
login
} from '@/utils/api.js'
export default {
data() {
return {
@ -53,10 +56,28 @@
return
}
if (this.$u.test.mobile(this.tel)) {
uni.setStorageSync('phone', this.tel);
uni.switchTab({
url: '/pages/index/index'
});
login({
phone: this.tel,
password: this.password
}).then(res => {
if (res.data != null) {
uni.setStorageSync('phone', this.tel);
uni.setStorageSync('userInfo',res.data)
uni.switchTab({
url: '/pages/index/index'
});
} else{
uni.showToast({
title:res.msg,
duration: 2000,
icon: 'none'
})
// uni.switchTab({
// url: '/pages/index/index'
// });
}
})
}
},
//

585
pages/mine/auth.vue Normal file
View File

@ -0,0 +1,585 @@
<template>
<view>
<view class="wrap" v-if="merchInfo.state==30">
<u-form ref="uForm">
<u-form-item label-position="left" label="商户名称" label-width="190">
<u-input v-model="authInfo.storeName" disabled type="text"></u-input>
</u-form-item>
<u-form-item label-position="left" v-if="authInfo.mercType!=2" label="联系人类型" label-width="190">
<u-radio-group shape="square" v-model="authInfo.merContactType" size='30' iconSize='26'>
<u-radio v-for="(item, index) in merContactTypeList" :key="index" :name="item.name">
{{item.label}}
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item label-position="left" v-if="authInfo.mercType==2" label="是否有门店" label-width="190">
<u-radio-group shape="square" v-model="authInfo.managementType" size='30' iconSize='26'>
<u-radio v-for="(item, index) in shopList" :key="index" :name="item.name">
{{item.label}}
</u-radio>
</u-radio-group>
</u-form-item>
<u-form-item label-position="left" label="联系人证件号" label-width="190">
<u-input v-model="authInfo.contactCorpId" type="text"></u-input>
</u-form-item>
<u-form-item label-position="left" label="联系人手机号" label-width="190">
<u-input v-model="authInfo.contactsTel" type="text"></u-input>
</u-form-item>
<u-form-item label="身份证开始日期" v-if="isCardShow" prop="idcard_back" labelWidth="290">
<view class="" @click="id_start_date=true">
<u--input v-model="authInfo.contIdValidDateBegin" disabled placeholder='请选择开始日期'
:placeholder-style="placeholderStyle" />
</view>
<u-popup :show="id_start_date" @close="closeTimeID">
<pdd-date-picker @closeTimeS='closeTimeID' ref="pDataSelect" @change="handleChangeDateID" />
</u-popup>
</u-form-item>
<u-form-item v-if="isCardShow" label="身份证是否永久有效" label-width="290" prop="isWitch">
<u-switch v-model="authInfo.isWitch" size='40'></u-switch>
</u-form-item>
<u-form-item label="身份证结束日期" v-if="isCardShow&&!authInfo.isWitch" prop="idcard_backend"
labelWidth="290">
<view class="" @click="id_end_date=true">
<u--input v-model="authInfo.contIdValidDateEnd" disabled placeholder='请选择结束日期'
:placeholder-style="placeholderStyle" />
</view>
<u-popup :show="id_end_date" @close="closeTimeIDEND">
<pdd-date-picker @closeTimeS='closeTimeIDEND' ref="pDataSelect"
@change="handleChangeDateIDEND" />
</u-popup>
</u-form-item>
<u-form-item label-position="left" label="联系人证件证面照片" label-width="190" v-if="isCardShow">
<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" width="160"
height="160" :maxCount="1"></u-upload>
</u-form-item>
<u-form-item label-position="left" label=" 联系人证件反面照片" label-width="190" v-if="isCardShow">
<u-upload :fileList="fileList2" @afterRead="afterRead" @delete="deletePic" name="2" width="160"
height="160" :maxCount="1"></u-upload>
</u-form-item>
</u-form>
<u-button type="success" v-if="iswxcome" :disabled="wxIsAuth" class="subBtn"
@click="toAuth(0)">提交微信实名认证</u-button>
<u-button type="primary" v-if="isalicome" :disabled="aliIsAuth" class="subBtn"
@click="toAuth(1)">提交支付宝实名认证</u-button>
</view>
<view class="authRe" v-else-if="merchInfo.state==31">
<u-subsection :list="subList" :current="curNm" :animation="true" @change="sectionChange"
fontSize='26'></u-subsection>
<view class="" v-if="!isState">
<view>
<view class="tips">{{tip}}</view>
<view class="imgBox">
<image :src="'data:image/png;base64,'+bara" class="codeImg" v-if="!curNm"></image>
<image :src="bara" class="codeImg" v-if="curNm"></image>
</view>
</view>
<u-button type="success" class="reBtn" @click="getAuthStatus">重新获取实名认证申请状态</u-button>
<u-button type="primary" class="reBtn" @click="getStatus(1)">获取实名认证结果</u-button>
</view>
<view class="" v-else>
<u-form v-if="!curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="250">
<u--input v-model="success" disabled type="text"
:placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-form v-if="curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="220">
<u--input v-model="success" disabled type="text"
:placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-button type="success" class="reBtn" @click="getStatus">重新获取实名认证结果</u-button>
<u-button type="error" v-if="(isAuthwx&&!curNm)||(isAuthali&&curNm)" class="reBtn"
@click="deleteAuth">撤销实名认证</u-button>
<u-button type="primary" v-else class="reBtn" @click="toAuthAgin">重新发起实名认证</u-button>
</view>
</view>
<view class="wrap" v-if="merchInfo.state==32">
<u-subsection :list="subList" :current="curNm" :animation="true" @change="sectionChangeStatus"
fontSize='26'></u-subsection>
<u-form v-if="!curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="250">
<u--input v-model="success" disabled type="text" :placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-form v-if="curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="220">
<u--input v-model="success" disabled type="text" :placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-button type="primary" class="reBtn" @click="toAuthAgin">重新发起实名认证</u-button>
</view>
<view class="wrap" v-if="merchInfo.state==40">
<u-subsection :list="subList" :current="curNm" :animation="true" @change="sectionChangeStatus"
fontSize='26'></u-subsection>
<u-form v-if="!curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="250">
<u--input v-model="success" disabled type="text" :placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-form v-if="curNm" ref="uForm">
<u-form-item label-position="left" label="实名认证结果:" prop="idcard_backend" labelWidth="220">
<u--input v-model="success" disabled type="text" :placeholder-style="placeholderStyle"></u--input>
</u-form-item>
</u-form>
<u-button type="success" class="reBtn" @click="getStatus">重新获取实名认证结果</u-button>
<u-button type="error" v-if="(isAuthwx&&!curNm)||(isAuthali&&curNm)" class="reBtn"
@click="deleteAuth">撤销实名认证</u-button>
<u-button type="primary" v-else class="reBtn" @click="toAuthAgin">重新发起实名认证</u-button>
</view>
</view>
</template>
<script>
import {
wx_real_name,
ali_real_name,
uploadImg,
wx_real_name_status,
ali_real_name_detail,
wx_real_name_cancel,
ali_real_name_cancel,
wx_auth_status,
ali_auth_status
} from '@/utils/api.js'
import {
toBase64
} from '@/utils/imgtobase.js'
import ysDict from '@/pages/index/dictDatas.js'
import pddDatePicker from '@/uni_modules/pdd-date-picker/components/pdd-date-picker/pdd-date-picker.vue'
export default {
components: {
pddDatePicker
},
data() {
return {
isState: false, //31
success: '实名认证成功',
error: '实名认证失败',
isAuthwx: false, //wx
isAuthali: false, //ali
id_start_date: false,
id_end_date: false,
placeholderStyle: 'font-size:22rpx;color:#c0c4cc;',
params: null,
merchInfo: {
mercType: '',
},
authInfo: {
merContactType: '65'
},
bara: "",
tip: "",
ysDict: null,
subList: [{
name: '微信'
},
{
name: '支付宝'
},
],
curNm: 0,
reBtnIsShow: false,
merContactTypeList: [{
name: '65',
label: '经营者/法人'
}],
isCardShow: false,
post_url: '',
idcard_front: {
'type': 'idcard',
'id_card_side': 'front'
}, //
idcard_back: {
'type': 'idcard',
'id_card_side': 'back'
}, //
isAgin: false,
wxIsAuth: false,
aliIsAuth: false,
shopList: [{
name: '00',
label: '是'
},
{
name: '01',
label: '否'
},
],
fileList1: [], //
fileList2: [], //
account_id: '', //
iswxcome: true,
isalicome: true,
}
},
onLoad(options) {
var option = JSON.parse(options.val)
// option.state =40
this.ysDict = ysDict
this.post_url = getApp().globalData.baidu_sdk_url
this.merchInfo = {
...this.merchInfo,
...option
}
this.params = option
if (parseInt(option.state) != '30' && parseInt(option.state) != '40' && parseInt(option.state) != '32') {
this.getAuthStatus()
} else {
this.initAuthInfo(option)
}
if (parseInt(option.state) == '40' || parseInt(option.state) == '32') {
this.getStatus()
}
},
watch: {
//
'authInfo.merContactType': {
handler: function(n, o) {
this.isCardShow = !this.isCardShow
},
},
'merchInfo.mercType': {
handler: function(n, o) {
if (n === '2') { //
this.merContactTypeList = [{
name: '65',
label: '经营者/法人'
}]
} else {
this.merContactTypeList = [{
name: '65',
label: '经营者/法人'
}, {
name: '66',
label: '经办人'
}]
}
},
immediate: true
},
},
methods: {
//
initAuthInfo(params) {
console.log(params)
this.account_id = params.account_id
this.authInfo = {
ysMercId: JSON.parse(params.extend).merc_id, //"
mercId: JSON.parse(params.extend).merc_id, //"
contactCorpId: '', //
contactsTel: "", //
merContactType: '65', //6566"
mercType: params.shop_type, //2 34
managementType: '00', //00-01-/便()"
storeName: params.shop_name, //()
idTypeCd: '00', //
idFrontImg: '', //(66)
idBackImg: '', //(66)"
contIdValidDateBegin: '', //yyyy-MM-dd(66)
contIdValidDateEnd: '', //yyyy-MM-dd(66)2999-12-31"
isWitch: true, //
}
},
closeTimeID() {
this.id_start_date = false
},
handleChangeDateID(date) {
this.authInfo.contIdValidDateBegin = date
this.closeTimeID()
},
closeTimeIDEND() {
this.id_end_date = false
},
handleChangeDateIDEND(date) {
this.authInfo.contIdValidDateEnd = date
this.closeTimeIDEND()
},
//
toAuth(type) {
if (this.authInfo.mercType == 2 && this.authInfo.merContactType == '66') {
this.authInfo.idFrontImg = this.fileList1[0].url
this.authInfo.idBackImg = this.fileList2[0].url
if (this.authInfo.isWitch) {
this.authInfo.contIdValidDateEnd = '2999-12-31'
}
}
var authApi = type == 0 ? wx_real_name : ali_real_name
uni.showLoading({
title: '正在提交实名认证',
mask: true
})
var _this = this
console.log(this.authInfo);
const data = {
account_id: this.account_id,
info: JSON.stringify(this.authInfo)
}
authApi(data).then(res => {
if (res.code !== 200) {
uni.hideLoading()
_this.$u.toast(res.msg)
return
} else {
_this.$u.toast((type == 0 ? "微信" : "支付宝") + "实名认证已提交,等待审核")
if (type == 0) {
this.wxIsAuth = true
} else {
this.aliIsAuth = true
}
this.$refs.uForm.resetFields()
setTimeout(function() {
if (!this.wxIsAuth || !this.aliIsAuth) {
uni.navigateBack()
}
})
}
})
},
//
toAuthAgin() {
this.merchInfo.state = 30
if (!this.curNm) {
this.iswxcome = true;
this.isalicome = false;
} else {
this.iswxcome = false;
this.isalicome = true;
}
this.initAuthInfo(this.params)
},
//
sectionChange(index) {
this.bara = ""
this.curNm = index;
if (index)
this.authInfo.contactCorpId = '';
this.authInfo.contactsTel = ''
if(!this.isState){
this.getAuthStatus();
}else{
this.getStatus()
}
},
//
sectionChangeStatus(index) {
this.bara = ""
this.curNm = index;
if (index)
this.authInfo.contactCorpId = '';
this.authInfo.contactsTel = ''
this.getStatus();
},
//
deleteAuth() {
var getApi = this.curNm === 0 ? wx_real_name_cancel : ali_real_name_cancel
var params = {
apply_no: this.curNm === 0 ? JSON.parse(this.merchInfo.extend).wx_apply_no : JSON.parse(this
.merchInfo.extend).ali_apply_no,
//type===0?this.merchInfo.wxAuthNo:this.merchInfo.aliAuthNo
}
if (this.curNm === 1) {
params["merc_id"] = JSON.parse(this.merchInfo.extend).merc_id
}
getApi(params).then(r => {
if (r.code !== 200) {
this.$u.toast(r.msg)
return
} else {
this.$u.toast('撤销成功')
uni.navigateBack()
}
})
},
//()
getStatus(n) {
var getApi = this.curNm === 0 ? wx_auth_status : ali_auth_status
var params = {
merc_id: JSON.parse(this.merchInfo.extend).merc_id,
account_id: this.merchInfo.account_id
}
getApi(params).then(r => {
if (n) {
this.isState = true
}
if (r.code !== 200) {
this.$u.toast(r.msg)
return
} else {
if (!this.curNm) {
//
if (r.data.authStateX == 'AUTHORIZE_STATE_AUTHORIZED') {
this.success = '实名认证成功'
this.isAuthwx = true
} else {
this.success = '实名认证失败'
this.isAuthwx = false
this.getAuthStatus()
}
} else {
//
if (r.data.authState == '1') {
this.success = '实名认证成功'
this.isAuthali = true
} else {
this.success = '实名认证失败'
this.isAuthali = false
this.getAuthStatus()
}
}
this.$u.toast(r.msg)
}
})
},
//
getAuthStatus() {
var _this = this
// uni.showLoading({
// title: '',
// mask: true
// })
var getApi = this.curNm === 0 ? wx_real_name_status : ali_real_name_detail
var params = {
apply_no: this.curNm === 0 ? JSON.parse(this.merchInfo.extend).wx_apply_no : JSON.parse(this
.merchInfo.extend).ali_apply_no,
//type===0?this.merchInfo.wxAuthNo:this.merchInfo.aliAuthNo
}
console.log(params)
if (typeof params.apply_no === 'undefined' || params.apply_no === null) {
uni.hideLoading()
this.tip = "请先完成实名认证"
this.authText = "发起实名认证"
return
} else {
this.authText = "重新发起实名认证"
}
//
if (this.curNm === 1) {
params["merc_id"] = JSON.parse(this.merchInfo.extend).merc_id
}
getApi(params).then(r => {
console.log(r)
uni.hideLoading()
if (r.code !== 200) {
_this.tip = r.msg
return
}
_this.bara = r.data.qrcodeData
let key = r.data.applyState
if (['APPLYMENT_STATE_REJECTED',
'APPLYMENT_STATE_FREEZED',
'APPLYMENT_STATE_CANCELED',
'APPLYMENT_STATE_WAITTING_FOR_CONFIRM_CONTACT',
'AUDITING',
'CONTACT_CONFIRM',
'AUDIT_REJECT',
'AUDIT_FREEZE'
].includes(key)) {
_this.reBtnIsShow = true
}
let authMsg = this.ysDict.authResMsg()
if (['APPLYMENT_STATE_REJECTED', 'AUDIT_REJECT'].includes(key)) {
_this.tip = "审核被驳回:" + (this.curNm === 0 ? r.data.rejectReason : r.data.channelNote)
} else {
_this.tip = authMsg[key]
}
console.log(_this.tip);
})
},
afterRead(e) {
console.log(e);
const file = e.file;
const maxSize = 2 * 1024 * 1024; // 2MB
if (file.size > maxSize) {
uni.showToast({
title: '文件大小不能超过 2MB。',
duration: 2000,
icon: 'none'
});
return; //
}
// base64
toBase64(e.file.url).then(result => {
let myVariable = result
let license = {
file: 'data:image/png;base64,' + myVariable
}
this.uploadFilePromise(license, e)
})
.catch(error => {
console.error('There was an error!', error);
});
},
uploadFilePromise(img, e) {
uploadImg(img).then((res) => {
this[`fileList${e.name}`].push({
url: res.data.url
})
})
},
//
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
}
}
</script>
<style lang="scss">
.codeImg {
height: 300rpx;
width: 300rpx;
}
.wrap {
padding: 30rpx;
.u-size-default {
padding: 0rpx
}
.signature .inputs .explain {
width: 200rpx;
}
}
.authRe {
padding: 30rpx;
.u-size-default {
padding: 0rpx
}
}
.subBtn {
margin-top: 30rpx;
}
.reBtn {
margin-top: 30rpx;
width: 90%;
}
.tips {
font-size: 25rpx;
margin: 20rpx 0 0 13%;
}
.imgBox {
display: flex;
justify-content: center;
}
</style>

View File

@ -1,29 +1,45 @@
<template>
<view class="">
<u-subsection :list="list" fontSize='30' :current="current" @change="sectionChange"></u-subsection>
<scroll-view :scroll-y="true" upper-threshold='100'>
<view class="main">
<!-- <u-subsection :list="list" fontSize='30' :current="current" @change="sectionChange"></u-subsection> -->
<scroll-view :scroll-y="true" upper-threshold='100' @scrolltolower="loadMore">
<view class="main" v-if="content.length">
<block v-for="(item, index) in content" :key="index">
<view class="list u-padding-10">
<u-row gutter="16">
<u-col span="4">
<image class="img" :src="item.img"></image>
<image class="img" :src="JSON.parse(item.upward_img).A006"></image>
</u-col>
<u-col span="8">
<u-row align="center" class="center">
<u-col>
<view class="title">
{{ item.title }}
{{ item.license_name }}
</view>
</u-col>
<u-col>
<view class="date">
进件日期 {{ item.date }}
进件日期 {{ item.account_date }}
</view>
</u-col>
<u-col>
<view class="status">
进件状态<span :style="'color:'+item.color+';'">{{item.status}}</span>
<view class="status" style="display: flex; justify-content: space-between;">
<view class="">
进件状态<span :style="'color:'+item.color+';'">{{item.state==10?'资料上送':
item.state==11?'审核中':item.state==12?'审核失败'
:item.state==20?'待签约':item.state==21?'签约中':
item.state==22?'签约失败':item.state==30?'待实名认证':item.state==31?'实名认证中':
item.state==32?'实名认证失败':'已完成'}}</span>
</view>
<text @click="sign(item)" v-if="item.state==10"
style="color:#11a5e8;">资料确认</text>
<text @click="toSign(item)" v-if="item.state==20"
style="color:#11a5e8;">申请签约</text>
<text @click="realName(item)"
v-if="item.state==30||item.state==31||item.state==32"
style="color:#11a5e8;">实名认证</text>
<text @click="realName(item)" v-if="item.state==40"
style="color:#11a5e8;">实名认证结果</text>
<!-- toSign -->
</view>
</u-col>
</u-row>
@ -32,93 +48,131 @@
</view>
</block>
</view>
<view class="" v-else style="margin-top: 200px; margin-left: 40%;">
暂无数据
</view>
</scroll-view>
</view>
</template>
<script>
import {
audit_info,
sign_to_ys,
account_list
} from '@/utils/api.js'
export default {
data() {
return { // 123
list: ['审核中', '已审核', '已驳回'],
return { // 123456
// list: ['', '', ''],
current: 0,
content: [{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-12-18/af4d4fff602033f59678d149faafcafe_20231218123312.jpg',
date: '2021年12月20日',
color: '#01BEFF',
title: '兔喜喜便利店',
status: "进件中",
channel: "邮储"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-07-04/b7919f8c7136c847f915eaf8140b182b_20230704090103.jpg',
date: '2021年12月20日',
color: '#01BEFF',
title: '李沧区孙鹏海产品店',
status: "进件中",
channel: "邮储"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-07-04/9c7e5cdd3ec31191817a082365dcd786_20230704081852.jpg',
date: '2021年12月20日',
color: 'blue',
title: '李沧区润香斋食品店',
status: "审核中",
channel: "邮储"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-06-05/4ca1fa6d68de8d807b827a7e25fe7be6_20230605163954.jpg',
date: '2021年12月20日',
color: 'green',
title: '小微商户王子健',
status: "已完成",
channel: "邮储"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-05-30/9f82f990684d3e7f22ab4fe4f13a0123_20230530162735.jpg',
date: '2021年12月20日',
color: 'orange',
title: '李沧区背包熊餐饮店',
status: "审核中",
channel: "微信"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-05-23/01e15bfc4b896317dca7e419605a3fcb_20230523151303.jpg',
date: '2021年12月20日',
color: 'purplered',
title: '李沧区丽语胜面食店',
status: "已驳回",
channel: "微信"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-05-23/8774d84e2ad0528d97236633a93c1f01_20230523135332.jpg',
date: '2021年12月20日',
color: 'purple',
title: '小微商户鲍贵枝',
status: "待账户验证",
channel: "微信"
},
{
img: 'https://yuledui.oss-cn-qingdao.aliyuncs.com/oss/uploads/2023-05-17/b8c9c87ad06dc2392cd893f4637b783f_20230517114243.jpg',
date: '2021年12月20日',
color: 'brown',
title: '李沧区君乐唯蔬菜行',
status: "待签约",
channel: "微信"
}
],
content: [],
isSig: false,
page: 1,
size: 10
}
},
onShow() {
this.page = 1; //
this.size = 10; //
this.content = []; //
this.getlist()
},
loadMore() {
this.page += 1; //
this.getlist(); //
},
methods: {
//
getlist() {
const data = {
promoter_id: uni.getStorageSync('userInfo').promoter_id || '',
page: this.page,
size: this.size
}
account_list(data).then(res => {
if (res.data == null) {
//
console.log('没有更多数据');
} else {
//
if (res.data.count < this.size) {
//
this.content = this.content.concat(res.data.data); //
console.log('已加载所有数据');
} else {
this.content = this.content.concat(res.data.data); //
}
}
console.log(this.content);
})
},
sectionChange(index) {
this.current = index;
},
//
sign(val) {
//
audit_info({
audit_flag: "Y",
sys_flow_id: val.sys_flow_id,
account_id: val.account_id
}).then(r => {
if (r.code !== 200) {
uni.hideLoading()
this.$u.toast(r.msg)
return
} else {
val.cust_id = r.data.cust_id
this.toSign(val)
}
})
},
//
toSign(val) {
if (!val.cust_id) {
val.cust_id = JSON.parse(val.extend).cust_id
}
let _this = this
const a = JSON.parse(val.rates)
const params = {
cust_id: val.cust_id,
account_id: val.account_id,
// cust_id:'2024111535691955',
...a
}
sign_to_ys(params).then(result => {
if (result.code !== 200) {
_this.$u.toast(result.msg)
return
} else {
_this.sigUrl = result.data.sign_url
uni.showToast({
title: "签约申请成功"
})
_this.isSig = true
this.$u.route({
url: '/pages/index/sign?sigUrl=' + this.sigUrl,
})
}
})
},
//
realName(val) {
this.$u.route({
url: '/pages/mine/auth?val=' + JSON.stringify(val),
})
}
}
}
</script>
<style scoped lang="scss">
page {
background: #f8f8f8 !important;
}
.center {
align-items: center;
justify-content: flex-start;
@ -126,14 +180,16 @@
flex-direction: column !important;
margin-left: 25rpx;
}
/deep/.u-subsection--button{
/deep/.u-subsection--button {
position: fixed;
z-index: 11;
}
.main {
background-color: #F4F4F4;
padding-top: 60rpx;
font-size: 26rpx;
// background-color: #F4F4F4;
// padding-top: 60rpx;
// font-size: 26rpx;
}
.main .list {
@ -159,5 +215,8 @@
overflow: hidden;
text-overflow: ellipsis;
line-height: 55rpx !important;
display: flex;
align-items: center;
font-size: 26rpx;
}
</style>

View File

@ -5,7 +5,7 @@
<u-avatar :src="pic" size="140"></u-avatar>
</view>
<view class="u-flex-1">
<view class="u-font-18 u-p-b-20">昵称</view>
<view class="u-font-18 u-p-b-20">{{userInfo.name}}</view>
<view class="u-font-14 u-tips-color">{{tel}}</view>
</view>
</view>
@ -35,12 +35,13 @@
<u-popup :show="isMima" mode="center" @close="close">
<u--input placeholder="请输入原密码" border="surround" type='password' v-model="oldMima" @change="change2"></u--input>
<u--input placeholder="请输入新密码" border="surround" type='password' v-model="newMima" @change="change3"></u--input>
<u-button type="primary" text="确定" @click="changeVal"></u-button>
<u-button type="primary" text="确定" @click="changeValmima"></u-button>
</u-popup>
</view>
</template>
<script>
import {edit} from '@/utils/api.js'
export default {
data() {
return {
@ -50,17 +51,42 @@
isMima: false, //
value: '',
oldMima:'',
newMima:''
newMima:'',
userInfo:'',
}
},
onLoad() {
this.tel = uni.getStorageSync('phone')
this.userInfo = uni.getStorageSync('userInfo');
},
methods: {
changeValmima(){
if(uni.getStorageSync('userInfo').password==this.oldMima){
this.changeVal()
}else{
this.$u.toast("原密码输入错误,请重新输入")
}
},
//
changeVal() {
this.close()
const data={
promoter_id:uni.getStorageSync('userInfo').promoter_id||'',
...(this.value ? { name: this.value } : {}), //
...(this.newMima ? { password: this.newMima } : {}) //
}
edit(data).then(res=>{
if(res.code==200){
if(this.value!=''){
this.userInfo.name=this.value
}
if(this.newMima!=''){
this.userInfo.password=this.newMima
}
uni.setStorageSync('userInfo',this.userInfo)
this.$u.toast(res.msg)
this.close()
}
})
},
change(e) {
this.value = e

BIN
static/gongzhang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
static/legal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

View File

@ -0,0 +1,2 @@
## 1.0.02023-10-11
> 初版

View File

@ -0,0 +1,210 @@
<template>
<view>
<uni-popup ref="popup" type="bottom" :mask-click="false">
<view class="picker_root">
<view class="picker_header">
<text class="left_text" @click="close" :style="{ color: leftTextColor }">{{ leftText }}</text>
<text class="title">{{ title }}</text>
<text class="right_text" @click="affirm" :style="{ color: rightTextColor }">{{ rightText }}</text>
</view>
<template v-if="years.length > 0">
<view class="picker_main">
<picker-view :indicator-style="indicatorStyle" :value="value" @change="bindChange"
class="picker_view">
<picker-view-column>
<view class="picker_item" v-for="(item, index) in years" :key="index">{{ item }}</view>
</picker-view-column>
<picker-view-column>
<view class="picker_item" v-for="(item, index) in months" :key="index">{{ item }}
</view>
</picker-view-column>
<picker-view-column>
<view class="picker_item" v-for="(item, index) in days" :key="index">{{ item }}</view>
</picker-view-column>
</picker-view>
</view>
</template>
</view>
</uni-popup>
</view>
</template>
<script>
export default {
name: 'pddDatePicker',
props: {
title: {
type: String,
default: '请选择日期',
},
limit: {
type: Number,
default: 50,
},
leftText: {
type: String,
default: '取消',
},
leftTextColor: {
type: String,
default: '#4E5969',
},
rightText: {
type: String,
default: '确认',
},
rightTextColor: {
type: String,
default: '#1677FF',
},
startYear: {
type: Number,
default: 1970,
},
defaultDate: {
type: Array,
default: () => [], // 使
},
},
data() {
//
const nowDate = new Date()
const nowYear = nowDate.getFullYear()
//
const years = []
const year = nowYear
for (let i = this.startYear; i <= nowYear + this.limit; i++) {
years.push(i)
}
//
const months = []
const month = nowDate.getMonth() + 1
for (let i = 1; i <= 12; i++) {
months.push(i)
}
//
const days = []
const day = nowDate.getDate()
for (let i = 1; i <= 31; i++) {
days.push(i)
}
//
let defaultDate = []
if (this.defaultDate.length === 0) {
defaultDate = [nowYear - this.startYear, month - 1, day - 1]
}
return {
years,
year,
months,
month,
days,
day,
value: defaultDate,
indicatorStyle: `height: ${Math.round(uni.getSystemInfoSync().screenWidth / (750 / 80))}px;`,
}
},
methods: {
/**
* @description 打开
*/
open() {
this.$refs.popup.open()
},
/**
* @description 关闭
*/
close() {
// this.$refs.popup.close()
this.$emit('closeTimeS')
this.$emit('closeTimeE')
},
/**
* @description 确认
*/
affirm() {
const month = this.month < 10 ? '0' + this.month : this.month
const day = this.day < 10 ? '0' + this.day : this.day
const date = `${this.year}-${month}-${day}`
this.$emit('change', date)
// this.$refs.popup.close()
},
/**
* @description 日期变化回调
*/
bindChange(e) {
const value = e.detail.value
//
this.year = this.years[value[0]]
//
this.month = this.months[value[1]]
//
const date = new Date(this.year, this.month, 0)
const leng = date.getDate()
const arr = []
for (let i = 1; i <= leng; i++) {
arr.push(i)
}
this.days = arr
this.day = this.days[value[2]]
},
},
}
</script>
<style scoped>
view {
box-sizing: border-box;
}
.picker_root {
width: 100%;
height: 680rpx;
background-color: #ffffff;
border-top-left-radius: 24rpx;
border-top-right-radius: 24rpx;
position: relative;
}
.picker_main {
width: 100%;
height: auto;
position: absolute;
left: 0;
bottom: 0;
}
.picker_view {
width: 100%;
height: 584rpx;
}
.picker_item {
line-height: 80rpx;
text-align: center;
}
.picker_header {
width: 100%;
height: 96rpx;
padding: 0rpx 44rpx;
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 2rpx solid #f2f3f5;
}
.title {
color: #1d2129;
font-size: 32rpx;
font-weight: bold;
}
.left_text {
font-size: 32rpx;
}
.right_text {
font-size: 32rpx;
}
</style>

View File

View File

@ -0,0 +1,84 @@
{
"id": "pdd-date-picker",
"displayName": "pdd-date-picker【年月日选择器】",
"version": "1.0.0",
"description": "这是一个轻量的年月日选择器,简单易用,可自己定制化改造。",
"keywords": [
"pdd-date-picker",
"日期选择器",
"鹏多多",
"年月日选择器"
],
"repository": "",
"engines": {
"HBuilderX": "^3.4.17"
},
"dcloudext": {
"type": "component-vue",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "u"
},
"App": {
"app-vue": "u",
"app-nvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "y",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}

View File

@ -0,0 +1,68 @@
# pdd-date-picker
这是一个轻量的年月日选择器,简单易用,可自己定制化改造。支持的功能如下:
1. 年月日选择
2. 自定义标题
3. 自定义按钮文案
4. 自定义按钮文案颜色
5. 自定义开始年份
6. 自定义默认日期
7. 插件代码清晰不满意可以自己DIY
# 参数
| 参数 | 类型 | 默认值 | 说明 |
| --- | --- | --- | --- |
| title | String | '请选择日期' | 标题 |
| limit | Number | 50 | 年份上限 |
| leftText | String | 取消 | 左侧文字 |
| leftTextColor | String | #4E5969 | 左侧文字颜色 |
| rightText | String | 确认 | 右侧文字 |
| rightTextColor | String | #1677FF | 右侧文字颜色 |
| startYear | Number | 1970 | 开始年份 |
| defaultDate | Array<Number> | 1970 | 默认日期,分别对应年月日的索引,比如:[0,0,0] 对应1970-01-01 |
# 示例
```html
<template>
<view class="content">
<button type="default" @click="open">打开选择器</button>
<text>当前选择时间是:{{ dateValue }}</text>
<!-- 日期选择器 -->
<pdd-date-picker ref="pDataSelect" @change="handleChangeDate" :title="title" />
</view>
</template>
<script>
import pddDatePicker from '../../components/pdd-date-picker/index.vue'
export default {
components: {
pddDatePicker
},
data() {
return {
title: '自定义标题',
dateValue: ''
}
},
methods: {
/**
* @description 打开选择框
*/
open() {
this.$refs.pDataSelect.open()
},
/**
* @description 日期改变回调
*/
handleChangeDate(date) {
console.log(date)
this.dateValue = date
}
}
}
</script>
```

View File

@ -1,8 +1,8 @@
var isReady=false;var onReadyCallbacks=[];
var isServiceReady=false;var onServiceReadyCallbacks=[];
var __uniConfig = {"pages":["pages/index/index","pages/login/index","pages/mine/index","pages/mine/history"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"进件","navigationBarBackgroundColor":"f8f8f8","backgroundColor":"#f8f8f8"},"tabBar":{"color":"#000000","selectedColor":"#000000","borderStyle":"black","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","iconPath":"static/images/tabbar/plus.png","selectedIconPath":"static/images/tabbar/plus-fill.png","text":"进件"},{"pagePath":"pages/mine/index","iconPath":"static/images/tabbar/home.png","selectedIconPath":"static/images/tabbar/home-fill.png","text":"我的"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"余乐兑-进件人","compilerVersion":"4.29","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":" ","navigationBarTextStyle":"black","navigationBarBackgroundColor":"#ffffff","bounce":"none"}},{"path":"/pages/login/index","meta":{},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/mine/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/mine/history","meta":{},"window":{"navigationBarTitleText":"进件历史","bounce":"none"}}];
var __uniConfig = {"pages":["pages/index/index","pages/index/sign","pages/index/sel-bank/sel-bank","pages/index/sel-city/sel-city","pages/login/index","pages/mine/index","pages/mine/history"],"window":{"navigationBarTextStyle":"black","navigationBarTitleText":"进件","navigationBarBackgroundColor":"#f8f8f8","backgroundColor":"#f8f8f8"},"tabBar":{"color":"#000000","selectedColor":"#000000","borderStyle":"black","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","iconPath":"static/images/tabbar/plus.png","selectedIconPath":"static/images/tabbar/plus-fill.png","text":"进件"},{"pagePath":"pages/mine/index","iconPath":"static/images/tabbar/home.png","selectedIconPath":"static/images/tabbar/home-fill.png","text":"我的"}]},"darkmode":false,"nvueCompiler":"uni-app","nvueStyleCompiler":"uni-app","renderer":"auto","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":false},"appname":"余乐兑-进件人","compilerVersion":"4.29","entryPagePath":"pages/index/index","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000}};
var __uniRoutes = [{"path":"/pages/index/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationBarTitleText":" ","navigationBarTextStyle":"black","navigationBarBackgroundColor":"#ffffff","bounce":"none"}},{"path":"/pages/index/sign","meta":{},"window":{"navigationBarTitleText":" ","navigationBarTextStyle":"black","navigationBarBackgroundColor":"#ffffff","bounce":"none"}},{"path":"/pages/index/sel-bank/sel-bank","meta":{},"window":{"navigationBarTitleText":" ","navigationBarTextStyle":"black","navigationBarBackgroundColor":"#ffffff","bounce":"none"}},{"path":"/pages/index/sel-city/sel-city","meta":{},"window":{"navigationBarTitleText":" ","navigationBarTextStyle":"black","navigationBarBackgroundColor":"#ffffff","bounce":"none"}},{"path":"/pages/login/index","meta":{},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/mine/index","meta":{"isQuit":true,"isTabBar":true},"window":{"navigationStyle":"custom","bounce":"none"}},{"path":"/pages/mine/history","meta":{},"window":{"navigationBarTitleText":"进件历史","bounce":"none"}}];
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
service.register("uni-app-config",{create(a,b,c){if(!__uniConfig.viewport){var d=b.weex.config.env.scale,e=b.weex.config.env.deviceWidth,f=Math.ceil(e/d);Object.assign(__uniConfig,{viewport:f,defaultFontSize:Math.round(f/20)})}return{instance:{__uniConfig:__uniConfig,__uniRoutes:__uniRoutes,global:void 0,window:void 0,document:void 0,frames:void 0,self:void 0,location:void 0,navigator:void 0,localStorage:void 0,history:void 0,Caches:void 0,screen:void 0,alert:void 0,confirm:void 0,prompt:void 0,fetch:void 0,XMLHttpRequest:void 0,WebSocket:void 0,webkit:void 0,print:void 0}}}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BD09826","name":"余乐兑-进件人","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"f8f8f8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#000000","selectedColor":"#000000","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","iconPath":"static/images/tabbar/plus.png","selectedIconPath":"static/images/tabbar/plus-fill.png","text":"进件"},{"pagePath":"pages/mine/index","iconPath":"static/images/tabbar/home.png","selectedIconPath":"static/images/tabbar/home-fill.png","text":"我的"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__BD09826","name":"余乐兑-进件人","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"dark","background":"#f8f8f8"},"usingComponents":true,"nvueStyleCompiler":"uni-app","compilerVersion":3,"distribute":{"google":{"permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]},"apple":{},"plugins":{"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}}},"uniStatistics":{"enable":false},"allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"4.29","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#000000","selectedColor":"#000000","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#ffffff","list":[{"pagePath":"pages/index/index","iconPath":"static/images/tabbar/plus.png","selectedIconPath":"static/images/tabbar/plus-fill.png","text":"进件"},{"pagePath":"pages/mine/index","iconPath":"static/images/tabbar/home.png","selectedIconPath":"static/images/tabbar/home-fill.png","text":"我的"}],"height":"50px","child":["lauchwebview"],"selected":0},"launch_path":"__uniappview.html"}}

View File

@ -1,146 +1,90 @@
import request from "@/utils/request.js"
//注册
export const register = (params) => {
return request('/api/register',"POST",params)
}
//验证账户是否存在
export const spread_validator = (params) => {
return request('/api/register',"POST",params)
}
//登录
export const login = (params) => {
return request('/api/login',"POST",params)
return request('/api/promoter/login',"POST",params)
}
//图片上传
export const uploadImg = (params) => {
return request('/api/public/upload',"POST",params)
}
//获取行业类型
export const queryMccCd = (params) => {
return request('/api/public/industry',"GET",params)
}
//新增进件
export const add_account = (params) => {
return request('/api/promoter/add_account',"POST",params)
}
//获取所属区域
export const areas = (params) => {
return request('/api/public/areas',"POST",params)
}
//开户支行
export const bank_code = (params) => {
return request('/api/public/bank_code',"GET",params)
}
//进件图片上送
export const upload_imgs = (params) => {
return request('/api/promoter/upload_imgs',"POST",params)
}
//进件资料确认
export const audit_info = (params) => {
return request('/api/promoter/audit_info',"POST",params)
}
//进行签约
export const sign_to_ys = (params) => {
return request('/api/promoter/sign',"POST",params)
}
//进件历史
export const account_list = (params) => {
return request('/api/promoter/account_list',"POST",params)
}
//平台协议
export const sel_agreement = () => {
return request('/api/public/sel_agreement',"GET")
}
//修改推广人
export const edit = (params) => {
return request('/api/promoter/edit',"POST",params)
}
//存协议
export const sign_agreement = (params) => {
return request('/api/public/sign_agreement',"POST",params)
}
//微信实名认证
export const wx_real_name = (params) => {
return request('/api/promoter/wx_real_name',"POST",params)
}
//撤销商户微信实名认证
export const wx_real_name_cancel = (params) => {
return request('/api/promoter/wx_real_name_cancel',"POST",params)
}
// 获取实名认证申请状态
export const wx_real_name_status = (params) => {
return request('/api/promoter/wx_real_name_status',"POST",params)
}
// 获取实名认证申请单明细信息
export const wx_real_name_detail = (params) => {
return request('/api/promoter/wx_real_name_detail',"POST",params)
}
// 获取商家授权状态(查询商户是否已完成实名认证)
export const wx_auth_status = (params) => {
return request('/api/promoter/wx_auth_status',"POST",params)
}
//获取验证码
export const smscode = (params) => {
return request('/api/smscode',"POST",params)
// 支付宝实名认证
export const ali_real_name = (params) => {
return request('/api/promoter/ali_real_name',"POST",params)
}
//获取菜单
export const busType = (params) => {
return request('/api/get_types',"POST",params)
// 撤销支付宝实名认证申请
export const ali_real_name_cancel = (params) => {
return request('/api/promoter/ali_real_name_cancel',"POST",params)
}
//协议获取
export const get_agreement = (params) => {
return request('/api/get_agreement',"POST",params)
// 支付宝获取实名认证申请单明细信息
export const ali_real_name_detail = (params) => {
return request('/api/promoter/ali_real_name_detail',"POST",params)
}
//生成pdf
export const get_pdf = (params) => {
return request('/api/get_pdf',"POST",params,'https://baidu.angyakeji.com')
}
//获取所属行业类型
export const queryMcc =(params) => {
return request('/ys/queryMccCd?mercType='+params.merchType,"Get",params,'http://192.168.0.142:8081/api')
}
//获取开户支行
export const queryBankCode = (params) => {
return request('/ys/queryBank?cityCode=' + params.cityCode +'&openBankName=' + params.openBankName,"GET",params,'http://192.168.0.142:8081/api')
}
//获取地区
export const queryAreas= (params) => {
return request('/ys/queryAreas',"POST",params,'http://192.168.0.142:8081/api')
}
//ys上送资料
export const uploadInfoToYs= (params) => {
return request('/ys/apply/uploadInfo',"POST",params,'http://192.168.0.142:8081/api')
}
//ys修改资料
export const modifyInfoToYs= (params) => {
return request('/ys/apply/modifyInfo',"POST",params,'http://192.168.0.142:8081/api')
}
//ys上传图片
export const uploadImgsToYs= (params) => {
return request('/ys/apply/uploadImgs',"POST",params,'http://192.168.0.142:8081/api')
}
//ys确认资料
export const auditInfoToYs= (params) => {
return request('/ys/apply/auditInfo',"POST",params,'http://192.168.0.142:8081/api')
}
//ys签约申请
export const signToYs= (params) => {
return request('/ys/apply/sign',"POST",params,'http://192.168.0.142:8081/api')
}
//ys重新发送签约地址
export const signToAgin= (params) => {
return request('/ys/apply/sendSignAgin',"POST",params,'http://192.168.0.142:8081/api')
}
//查询签约状态
export const queryAuthInfo= (params) => {
return request('/ys/apply/queryAuthInfo',"POST",params,'http://192.168.0.142:8081/api')
}
//ys发送微信实名认证
export const toAuthWx= (params) => {
return request('/ys/auth/wxpay/submitAuthMessages',"POST",params,'http://192.168.0.142:8081/api')
}
//ys查询微信实名认证状态
export const getAuthMessagesStatusWX= (params) => {
return request('/ys/auth/wxpay/getAuthMessagesStatus',"POST",params,'http://192.168.0.142:8081/api')
}
//ys获取微信实名认证申请单明细信息
export const getAuthMessagesInfo= (params) => {
return request('/ys/auth/wxpay/getAuthMessagesInfo',"POST",params,'http://192.168.0.142:8081/api')
}
//ys获取微信商家授权状态查询商户是否已完成实名认证
export const getAuthStateWX= (params) => {
return request('/ys/auth/wxpay/getAuthState',"POST",params,'http://192.168.0.142:8081/api')
}
//撤销微信实名认证
export const cancelAuthMessagesWx= (params) => {
return request('/ys/auth/wxpay/cancelAuthMessages',"POST",params,'http://192.168.0.142:8081/api')
}
//ys发送支付宝实名认证
export const toAuthAli= (params) => {
return request('/ys/auth/alipay/submitAuthMessages',"POST",params,'http://192.168.0.142:8081/api')
}
//ys查询微支付宝名认证状态
export const getAuthMessagesStatusALI= (params) => {
return request('/ys/auth/alipay/getAuthMessagesStatus',"POST",params,'http://192.168.0.142:8081/api')
}
//ys获取支付宝商家授权状态查询商户是否已完成实名认证
export const getAuthStateALi= (params) => {
return request('/ys/auth/alipay/getAuthState',"POST",params,'http://192.168.0.142:8081/api')
}
//撤销支付宝实名认证
export const cancelAuthMessagesALi= (params) => {
return request('/ys/auth/alipay/cancelAuthMessages',"POST",params,'http://192.168.0.142:8081/api')
}
//获取名下银盛进件商家
export const merchListForSpread =(params) => {
return request('/ys/merch/merchListForSpread?spreadId='+params.spreadId,"Get",params,'http://192.168.0.142:8081/api')
}
//获取实名认证信息
export const getMercAuthInfo =(params) => {
return request('/ys/merch/getMercAuthInfo?mercId='+params.mercId,"Get",params,'http://192.168.0.142:8081/api')
}
// 支付宝获取商家授权状态(查询商户是否已完成实名认证)
export const ali_auth_status = (params) => {
return request('/api/promoter/ali_auth_status',"POST",params)
}

View File

@ -1,20 +1,43 @@
//图片转base64
export function getBase64Image(src) {
return new Promise(resolve => {
let xhr = new XMLHttpRequest();
xhr.open('get', src, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (this.status == 200) {
let blob = this.response;
let oFileReader = new FileReader();
oFileReader.onload = function(e) {
const base64 = e.target.result;
resolve(base64);
};
oFileReader.readAsDataURL(blob);
/**
* @description 本地图片转base64方法兼容APPH5小程序
* @param {number} path 图片本地路径
* @returns Promise对象
*/
const toBase64 = (path) => {
return new Promise((resolve, reject) => {
// #ifdef APP-PLUS
plus.io.resolveLocalFileSystemURL(path, (entry) => {
entry.file((file) => {
let fileReader = new plus.io.FileReader()
fileReader.readAsDataURL(file)
fileReader.onloadend = (evt) => {
let base64 = evt.target.result.split(",")[1]
resolve(base64)
}
})
})
// // #endif
// #ifdef H5
uni.request({
url: path,
responseType: 'arraybuffer',
success: (res) => {
resolve(uni.arrayBufferToBase64(res.data))
}
})
// #endif
// #ifdef MP-WEIXIN
uni.getFileSystemManager().readFile({
filePath: path,
encoding: 'base64',
success: (res) => {
resolve(res.data)
}
};
xhr.send();
});
})
// #endif
})
}
export {
toBase64
}

View File

@ -1,26 +0,0 @@
const whiteList = [
'/api/login',
'/api/smscode',
'/api/spread_validator',
'/api/register'
]
const config = {
invoke(args){
},
returnValue(data){
console.log(data)
},
success(){
console.log("成功回调拦截")
},
fail(e){
console.log(e)
Vue.prototype.$u.toast("接口异常")
},
complete(){
console.log("完成回调拦截")
}
}
uni.addInterceptor("request",config)

View File

@ -1,19 +0,0 @@
const microApps = [
{
name: 'vue-one',
entry: 'http://localhost:5501',
activeRule: '/vue-one2'
},
]
const apps = microApps.map(item => {
return {
...item,
container: '#subapp-viewport', // 子应用挂载的div
props: {
routerBase: item.activeRule, // 下发基础路由
}
}
})
export default apps

View File

@ -1,23 +1,17 @@
const BaseUrl = 'http://spread.angyakeji.com'
export default ((url, method = 'POST', data = {},domain=BaseUrl) => {
// // #ifdef APP || APP-PLUS
// const BaseUrl = domain
// var _url = url.split('/api')
// url = _url.length > 1 ? '/api' + _url.slice(1).join('/api') : '';
// // #endif
// // #ifdef H5 || WEB
// const BaseUrl = ""
// // #endif
export default ((url, method, data = {}) => {
var BaseUrl = ''
BaseUrl = "http://192.168.0.155:7301"
return new Promise((resolve, reject) => {
// url.request请求
let api = domain + url
let header = {
"Content-Type": "application/json",
}
let api = BaseUrl + url
uni.request({
url:api,
url: api,
method,
data,
header,
success: (res) => {
// console.log(res)
resolve(res.data)
},
fail: (erro) => {

View File

@ -1,7 +0,0 @@
export default {
isDate: str => {
var date = new Date(str);
// 如果传入的字符串不是有效的日期,则获取的时间戳为 NaN
return !isNaN(date.getTime());
}
}

11
vue.config.js Normal file
View File

@ -0,0 +1,11 @@
// module.exports = {
// devServer: {
// proxy: {
// '/api': {
// target: 'http://192.168.0.155:7301',
// changeOrigin: true,
// pathRewrite: { '^/api': '' },
// },
// },
// },
// };