Compare commits

...

2 Commits

Author SHA1 Message Date
qijq
c2c3580652 update 2025-05-10 12:24:07 +08:00
qijq
f0869c3ba8 update 2025-05-10 06:04:40 +08:00
11 changed files with 309 additions and 1215 deletions

View File

@ -97,7 +97,6 @@ export function GetAuditStatus(params = {}) {
.then((res) => {
if (res && res.status == 200) {
uni.setStorageSync('approvalStatus', res.data.approval_status);
uni.setStorageSync('approvalStatusInfo', res.data);
}
resolve(res);
})
@ -124,7 +123,6 @@ export function GetAuditInfo(params) {
.then((res) => {
if (res && res.status == 200) {
uni.setStorageSync('approvalStatus', res.data.approval_status);
uni.setStorageSync('approvalStatusInfo', res.data);
}
resolve(res);
})

View File

@ -2,7 +2,7 @@
<view class="checkAudit-container">
<u-navbar :autoBack="true" :safeAreaInsetTop="true" title="商户入驻申请">
<template slot="right">
<view class="btn-login-out" @click="LoginOut">退出登录</view>
<view class="btn-login-out" @click="loginOut">退出登录</view>
</template>
</u-navbar>
<favorite-loading
@ -113,7 +113,7 @@ import {
} from "../../api/audit";
import { GetAccountDashboard } from "../../api/user";
import { UploadFilePromise } from "../../api/upload";
import { mapState, mapActions } from "vuex";
import { mapState } from "vuex";
import favoriteLoading from "@/components/favorite-loading/favorite-loading.vue";
export default {
name: "checkAudit",
@ -161,7 +161,6 @@ export default {
...mapState("user", ["userInfo"]),
},
methods: {
...mapActions("user", ["LoginOut"]),
async getAuditInfo() {
var params = {};
@ -200,10 +199,12 @@ export default {
if (
this.auditInfo.approval_status == 1 &&
this.auditInfo.signed_status == 2
this.auditInfo.signed_status == 2 &&
this.auditInfo.store_status == 1
) {
let result = await GetAccountDashboard();
if (result && result.status == 200) {
debugger;
uni.setStorageSync("accountDashboard", result.data);
uni.setStorageSync("auditInfo", res.data);
uni.switchTab({
@ -363,6 +364,9 @@ export default {
this.form.bank_name = e.value[0].bank_name;
this.showActionSheet = false;
},
loginOut() {
this.$store.dispatch("user/LoginOut");
},
},
};
</script>

View File

@ -12,7 +12,7 @@
title="填写店铺信息第1步 / 共3步"
>
<template slot="right">
<view class="btn-login-out" @click="LoginOut">退出登录</view>
<view class="btn-login-out" @click="loginOut">退出登录</view>
</template>
</u-navbar>
<u-form :model="form" class="form" ref="uForm" label-width="70">
@ -114,7 +114,6 @@
</view>
</template>
<script>
import { mapActions } from "vuex";
import { UploadFilePromise } from "../../api/upload";
export default {
data() {
@ -194,7 +193,6 @@ export default {
this.$refs["uForm"].setRules(this.rules);
},
methods: {
...mapActions("user", ["LoginOut"]),
async afterRead1(e) {
const item = e.file;
const imgUrl = item.url;
@ -314,6 +312,9 @@ export default {
}
});
},
loginOut() {
this.$store.dispatch("user/LoginOut");
},
},
};
</script>

View File

@ -1,92 +1,210 @@
<template>
<view class="shop-2-container">
<u-navbar :autoBack="true" :safeAreaInsetTop="true" title="填写店铺信息第2步 / 共3步">
<u-navbar
:autoBack="true"
:safeAreaInsetTop="true"
title="填写店铺信息第2步 / 共3步"
>
<template slot="right">
<view class="btn-login-out" @click="LoginOut">退出登录</view>
<view class="btn-login-out" @click="loginOut">退出登录</view>
</template>
</u-navbar>
<view class="shop-2-content">
<u-subsection class="subsection" :list="list" :current="active" @change="handleSubsection"></u-subsection>
<u-subsection
class="subsection"
:list="list"
:current="active"
@change="handleSubsection"
></u-subsection>
<view class="up-block" v-show="active == 0">
<view class="up-title"> 营业执照 <text class="color_red">必传项</text> </view>
<u-upload :class="fileList.length == 0 ? 'shop2-2-upload' : ''" class="shop2-2-upload"
@afterRead="afterRead($event, 'businessLicense')" @delete="deletePic($event, 'businessLicense')" accept="image"
uploadIcon="" :fileList="fileList" :max-count="1" width="125" height="88"></u-upload>
<view class="up-title">
营业执照 <text class="color_red">必传项</text>
</view>
<u-upload
:class="fileList.length == 0 ? 'shop2-2-upload' : ''"
class="shop2-2-upload"
@afterRead="afterRead($event, 'businessLicense')"
@delete="deletePic($event, 'businessLicense')"
accept="image"
uploadIcon=""
:fileList="fileList"
:max-count="1"
width="125"
height="88"
></u-upload>
</view>
<view class="up-block up-block-3" v-show="active == 0">
<view class="up-title">
法人身份证正反面{{ fileList3.length + fileList4.length }} /2 <text class="color_red">必传项</text>
法人身份证正反面{{ fileList3.length + fileList4.length }} /2
<text class="color_red">必传项</text>
</view>
<view class="up-block-3-content">
<u-upload :class="fileList3.length == 0 ? 'shop2-4-upload' : ''" @afterRead="afterRead($event, 'idFront')"
@delete="deletePic($event, 'idFront')" accept="image" :fileList="fileList3" :max-count="1" width="180"
height="110" uploadIcon=""></u-upload>
<u-upload :class="fileList4.length == 0 ? 'shop2-5-upload' : ''" @afterRead="afterRead($event, 'idReverse')"
@delete="deletePic($event, 'idReverse')" accept="image" :fileList="fileList4" :max-count="1" width="180"
height="110" uploadIcon=""></u-upload>
<u-upload
:class="fileList3.length == 0 ? 'shop2-4-upload' : ''"
@afterRead="afterRead($event, 'idFront')"
@delete="deletePic($event, 'idFront')"
accept="image"
:fileList="fileList3"
:max-count="1"
width="180"
height="110"
uploadIcon=""
></u-upload>
<u-upload
:class="fileList4.length == 0 ? 'shop2-5-upload' : ''"
@afterRead="afterRead($event, 'idReverse')"
@delete="deletePic($event, 'idReverse')"
accept="image"
:fileList="fileList4"
:max-count="1"
width="180"
height="110"
uploadIcon=""
></u-upload>
</view>
</view>
<view class="up-block up-block-2" v-show="active == 0">
<view class="up-title">
许可证(最大上传{{ fileList2.length }}/5)
<u-icon style="display: inline-block; margin: 0 8rpx" @click="handlePopup" name="question-circle" size="12"
color="aaaaaa">
<u-icon
style="display: inline-block; margin: 0 8rpx"
@click="handlePopup"
name="question-circle"
size="12"
color="aaaaaa"
>
</u-icon>
可传项
</view>
<u-upload :class="fileList2.length == 0 ? 'shop2-3-upload' : ''" @afterRead="afterRead($event, 'licenseNumber')"
@delete="deletePic($event, 'licenseNumber')" accept="image"
:uploadIcon="fileList2.length == 0 ? '' : 'camera-fill'" :fileList="fileList2" :max-count="5" width="125"
height="88"></u-upload>
<u-upload
:class="fileList2.length == 0 ? 'shop2-3-upload' : ''"
@afterRead="afterRead($event, 'licenseNumber')"
@delete="deletePic($event, 'licenseNumber')"
accept="image"
:uploadIcon="fileList2.length == 0 ? '' : 'camera-fill'"
:fileList="fileList2"
:max-count="5"
width="125"
height="88"
></u-upload>
</view>
<!--个人-->
<view class="up-block up-block-3" v-show="active == 1">
<view class="up-title">
法人身份证正反面{{ fileList5.length + fileList6.length }} /2<text class="color_red">必传项</text>
法人身份证正反面{{ fileList5.length + fileList6.length }} /2<text
class="color_red"
>必传项</text
>
</view>
<view class="up-block-3-content">
<u-upload :class="fileList5.length == 0 ? 'shop2-4-upload' : ''" @afterRead="afterRead($event, 'personIdFront')"
@delete="deletePic($event, 'personIdFront')" accept="image" :fileList="fileList5" :max-count="1" width="180"
height="110" :upload-text="''" uploadIcon=""></u-upload>
<u-upload :class="fileList6.length == 0 ? 'shop2-5-upload' : ''"
@afterRead="afterRead($event, 'personIdReverse')" @delete="deletePic($event, 'personIdReverse')"
accept="image" :fileList="fileList6" :max-count="1" width="180" height="110" :upload-text="''"
uploadIcon=""></u-upload>
<u-upload
:class="fileList5.length == 0 ? 'shop2-4-upload' : ''"
@afterRead="afterRead($event, 'personIdFront')"
@delete="deletePic($event, 'personIdFront')"
accept="image"
:fileList="fileList5"
:max-count="1"
width="180"
height="110"
:upload-text="''"
uploadIcon=""
></u-upload>
<u-upload
:class="fileList6.length == 0 ? 'shop2-5-upload' : ''"
@afterRead="afterRead($event, 'personIdReverse')"
@delete="deletePic($event, 'personIdReverse')"
accept="image"
:fileList="fileList6"
:max-count="1"
width="180"
height="110"
:upload-text="''"
uploadIcon=""
></u-upload>
</view>
</view>
<view class="up-block up-block-2" v-show="active == 0">
<u-form :model="form" class="form" ref="uForm" label-width="120">
<u-form-item label="许可证类型" prop="license_type" @click="showPicker = true">
<u-input style="pointer-events: none" class="form-input" v-model="form.license_type" placeholder="请选择许可证类型"
readonly />
<u-icon style="display: inline-block; margin-left: 8rpx" name="arrow-down" size="12" color="#aaaaaa"></u-icon>
<u-form-item
label="许可证类型"
prop="license_type"
@click="showPicker = true"
>
<u-input
style="pointer-events: none"
class="form-input"
v-model="form.license_type"
placeholder="请选择许可证类型"
readonly
/>
<u-icon
style="display: inline-block; margin-left: 8rpx"
name="arrow-down"
size="12"
color="#aaaaaa"
></u-icon>
</u-form-item>
<u-form-item label="公司名称" prop="biz_license_company" required>
<u-input class="form-input" v-model="form.biz_license_company" placeholder="请输入公司名称" />
<u-input
class="form-input"
v-model="form.biz_license_company"
placeholder="请输入公司名称"
/>
</u-form-item>
<u-form-item label="法人姓名" prop="legal_person_name" required>
<u-input class="form-input" v-model="form.legal_person_name" placeholder="请输入法人姓名" />
<u-input
class="form-input"
v-model="form.legal_person_name"
placeholder="请输入法人姓名"
/>
</u-form-item>
<u-form-item label="法人手机号" prop="legal_person_mobile" required>
<u-input class="form-input" v-model="form.legal_person_mobile" maxlength="11" placeholder="请输入法人手机号" />
<u-input
class="form-input"
v-model="form.legal_person_mobile"
maxlength="11"
placeholder="请输入法人手机号"
/>
</u-form-item>
<u-form-item label="法人身份证号码" prop="legal_person_id_number" required>
<u-input class="form-input" maxlength="18" v-model="form.legal_person_id_number" placeholder="请输入法人身份证号码" />
<u-form-item
label="法人身份证号码"
prop="legal_person_id_number"
required
>
<u-input
class="form-input"
maxlength="18"
v-model="form.legal_person_id_number"
placeholder="请输入法人身份证号码"
/>
</u-form-item>
<u-form-item label="营业执照编号" prop="biz_license_number">
<u-input class="form-input" v-model="form.biz_license_number" placeholder="请输入营业执照编号" />
<u-input
class="form-input"
v-model="form.biz_license_number"
placeholder="请输入营业执照编号"
/>
</u-form-item>
<u-form-item label="许可证编号" prop="license_number">
<u-input class="form-input" v-model="form.license_number" placeholder="请输入许可证编号" />
<u-input
class="form-input"
v-model="form.license_number"
placeholder="请输入许可证编号"
/>
</u-form-item>
</u-form>
</view>
<view class="up-block up-block-2" v-show="active == 1">
<u-form :model="form2" class="form" ref="uForm2" label-width="100">
<u-form-item label="身份证号码" prop="individual_id_number" required>
<u-input class="form-input" maxlength="18" v-model="form2.individual_id_number" placeholder="请输入身份证号码" />
<u-input
class="form-input"
maxlength="18"
v-model="form2.individual_id_number"
placeholder="请输入身份证号码"
/>
</u-form-item>
</u-form>
</view>
@ -94,11 +212,21 @@
<view class="btn-content">
<u-button class="btn-next" @click="handleNext">下一步</u-button>
</view>
<u-popup class="shop2-popup" :mask="true" @close="closePopup" :show="showPopup" :closeable="true" mode="bottom"
:mask-close-able="true" :safe-area-inset-bottom="true">
<u-popup
class="shop2-popup"
:mask="true"
@close="closePopup"
:show="showPopup"
:closeable="true"
mode="bottom"
:mask-close-able="true"
:safe-area-inset-bottom="true"
>
<view class="popup-content">
<view class="popup-title">可上传证件类型</view>
<view class="popup-tips">请根据您的主营品类上传真实有效的许可证能够提高入驻通过的效率目前支持的许可证如下</view>
<view class="popup-tips"
>请根据您的主营品类上传真实有效的许可证能够提高入驻通过的效率目前支持的许可证如下</view
>
<view class="popuo-prove-item">
<view class="item-title">许可证</view>
<view class="item-content">
@ -117,18 +245,31 @@
支持各种小证,因各地监管规则不一,请联系客服获取其他小证支持情况的详细
</view>
</view>
<u-button class="btn-queren" @click="showPopup = false">我知道了</u-button>
<u-button class="btn-queren" @click="showPopup = false"
>我知道了</u-button
>
</view>
</u-popup>
<u-picker :show="showPicker" :columns="columns" :safe-area-inset-bottom="true" :default-selector="[0]"
:keyName="'name'" @cancel="handleCancel" @confirm="handleConfirm"></u-picker>
<u-picker
:show="showPicker"
:columns="columns"
:safe-area-inset-bottom="true"
:default-selector="[0]"
:keyName="'name'"
@cancel="handleCancel"
@confirm="handleConfirm"
></u-picker>
<u-toast ref="uToast" />
</view>
</template>
<script>
import { mapActions } from "vuex";
import { UploadFilePromise, batchNoApi, imgOcrResultApi } from "../../api/upload";
import {
UploadFilePromise,
batchNoApi,
imgOcrResultApi,
} from "../../api/upload";
const orcImgTypeConf = {
FR_ID_CARD_FRONT: "FR_ID_CARD_FRONT",
@ -136,8 +277,8 @@ const orcImgTypeConf = {
ID_CARD_FRONT: "ID_CARD_FRONT",
ID_CARD_BEHIND: "ID_CARD_BEHIND",
BUSINESS_LICENCE: "BUSINESS_LICENCE",
BANK_CARD: "BANK_CARD"
}
BANK_CARD: "BANK_CARD",
};
export default {
data() {
@ -242,7 +383,7 @@ export default {
trigger: ["blur"],
},
],
orcTimeout:null
orcTimeout: null,
},
rules2: {
individual_id_number: [
@ -270,34 +411,33 @@ export default {
this.$refs["uForm2"].setRules(this.rules2);
},
methods: {
...mapActions("user", ["LoginOut"]),
getOcrText(filePath, file, type) {
return new Promise(async (resolve, reject) => {
const batchNoRes = await batchNoApi(filePath, file, type)
const batchNo = batchNoRes.batchNo
const batchNoRes = await batchNoApi(filePath, file, type);
const batchNo = batchNoRes.batchNo;
const formData = new FormData();
let formDataStr = '';
let formDataStr = "";
formData.append('batchNo', batchNo)
formData.append('imgType', type)
formData.append("batchNo", batchNo);
formData.append("imgType", type);
clearTimeout(this.orcTimeout)
clearTimeout(this.orcTimeout);
this.orcTimeout = setTimeout(async () => {
formData.forEach((value, key) => {
if (formDataStr !== '') {
formDataStr += '&';
if (formDataStr !== "") {
formDataStr += "&";
}
formDataStr += encodeURIComponent(key) + '=' + encodeURIComponent(value);
formDataStr +=
encodeURIComponent(key) + "=" + encodeURIComponent(value);
});
const imgOcrRes = await imgOcrResultApi(formDataStr)
clearTimeout(this.orcTimeout)
resolve(imgOcrRes?.data)
const imgOcrRes = await imgOcrResultApi(formDataStr);
clearTimeout(this.orcTimeout);
resolve(imgOcrRes?.data);
}, 1000);
})
});
},
//
async afterRead(e, type) {
@ -308,7 +448,6 @@ export default {
url: imgUrl,
};
switch (type) {
case "businessLicense":
this.fileList.push(group);
@ -361,17 +500,25 @@ export default {
switch (type) {
case "businessLicense":
var ocr = await this.getOcrText(imgUrl, item, orcImgTypeConf.BUSINESS_LICENCE);
this.form.biz_license_company = ocr.bizLicenseCompanyName
this.form.legal_person_name = ocr.bizLicenseOwnerName
var ocr = await this.getOcrText(
imgUrl,
item,
orcImgTypeConf.BUSINESS_LICENCE
);
this.form.biz_license_company = ocr.bizLicenseCompanyName;
this.form.legal_person_name = ocr.bizLicenseOwnerName;
console.log("BUSINESS_LICENCE", ocr);
break;
case "licenseNumber":
break;
case "idFront":
var ocr = await this.getOcrText(imgUrl, item, orcImgTypeConf.ID_CARD_FRONT);
this.form.legal_person_name = ocr.name
this.form.legal_person_id_number = ocr.idNumber
var ocr = await this.getOcrText(
imgUrl,
item,
orcImgTypeConf.ID_CARD_FRONT
);
this.form.legal_person_name = ocr.name;
this.form.legal_person_id_number = ocr.idNumber;
console.log("ID_CARD_FRONT", ocr);
break;
}
@ -520,6 +667,9 @@ export default {
this.showPicker = false;
},
loginOut() {
this.$store.dispatch("user/LoginOut");
},
},
};
</script>

View File

@ -6,7 +6,7 @@
title="填写店铺信息第3步 / 共3步"
>
<template slot="right">
<view class="btn-login-out" @click="LoginOut">退出登录</view>
<view class="btn-login-out" @click="loginOut">退出登录</view>
</template>
</u-navbar>
<u-form :model="form" ref="uForm" label-width="90">
@ -78,7 +78,7 @@
<script>
import { GetBankList, GetMerchApply, GetRestartMerchApply } from "@/api/audit";
import lzcPicker from "@/components/lzc-picker/lzc-picker.vue";
import { mapState, mapActions } from "vuex";
import { mapState } from "vuex";
export default {
components: {
lzcPicker,
@ -139,7 +139,6 @@ export default {
this.getBankList();
},
methods: {
...mapActions("user", ["LoginOut"]),
async getBankList() {
let res = await GetBankList();
if (res && res.status == 200) {
@ -193,6 +192,9 @@ export default {
handleCancel(item) {
this.form.bank_name = item.bank_name;
},
loginOut() {
this.$store.dispatch("user/LoginOut");
},
},
};
</script>

View File

@ -30,7 +30,7 @@ export default {
...mapState("user", ["userInfo"]),
},
onShow() {
if (this.userInfo) {
if (this.userInfo && Object.keys(this.userInfo).length > 0) {
var _userinfo = JSON.parse(JSON.stringify(this.userInfo));
var mobile = "";

View File

@ -176,7 +176,7 @@ export default {
...mapState("user", ["userInfo"]),
},
onShow() {
if (this.userInfo) {
if (this.userInfo && Object.keys(this.userInfo).length > 0) {
var _userinfo = JSON.parse(JSON.stringify(this.userInfo));
var mobile = "";

View File

@ -65,7 +65,6 @@
<script>
import { mapState } from "vuex";
import { OutLogin } from "../../api/user";
export default {
data() {
return {};
@ -100,41 +99,7 @@ export default {
});
},
outLogin() {
uni.showModal({
title: "退出登录",
content: `您是否要退出登录?`,
success: async (res) => {
if (res.confirm) {
let res = await OutLogin();
if (res && res.status == 200) {
uni.removeStorageSync("ukey");
uni.removeStorageSync("uid");
uni.removeStorageSync("accountDashboard");
uni.removeStorageSync("approvalStatus");
uni.removeStorageSync("approvalStatusInfo");
uni.removeStorageSync("auditInfo");
uni.removeStorageSync("contractDownloadUrl");
uni.removeStorageSync("pdfjs.history");
uni.removeStorageSync("userInfo");
this.$store.state.user.ukey = "";
this.$store.state.user.uid = "";
this.$store.state.user.auditStatusInfo = {
approval_invalid_col: [],
approval_status: -4,
approval_remark: "",
id: 0,
};
setTimeout(() => {
uni.redirectTo({
url: "/pages/index/index",
});
}, 100);
}
} else if (res.cancel) {
}
},
});
this.$store.dispatch("user/LoginOut");
},
},
};

File diff suppressed because it is too large Load Diff

View File

@ -25,7 +25,7 @@
<view class="order-list">
<view class="order-item">
<view class="order-title">今日销售额</view>
<view class="order-item-num">{{ orderSalesAmoutInfo.endVal }}</view>
<view class="order-item-num">{{ orderSalesAmoutInfo.today }}</view>
<view class="order-bottom"
>昨日
{{
@ -42,7 +42,7 @@
</view>
<view class="order-item order-item-1">
<view class="order-title">订单量</view>
<view class="order-item-num">{{ orderNumInfo.endVal }}</view>
<view class="order-item-num">{{ orderNumInfo.today }}</view>
<view class="order-bottom"
>昨日{{
orderNumInfo.daym2m && orderNumInfo.daym2m > 0 ? "+" : "-"
@ -56,7 +56,7 @@
</view>
<view class="order-item order-item-2">
<view class="order-title">退货单数</view>
<view class="order-item-num">{{ orderReturnNumInfo.endVal }}</view>
<view class="order-item-num">{{ orderReturnNumInfo.today }}</view>
<view class="order-bottom"
>昨日{{
orderReturnNumInfo.daym2m && orderReturnNumInfo.daym2m > 0
@ -220,7 +220,7 @@ export default {
.order-item {
margin-right: 40rpx;
padding: 12rpx;
min-width: 23%;
min-width: 26%;
border-radius: 12rpx;
background: #41e6f9;
color: #fff;

View File

@ -1,13 +1,11 @@
import { GetLogin, GetAccountLogin } from '../../api/login';
import { OutLogin } from '../../api/user';
import { OutLogin, GetAccountDashboard } from '../../api/user';
import { GetAuditStatus, GetAuditInfo } from '../../api/audit';
// import $cookies from '../../utils/vue-cookies'
const defaultState = () => {
return {
userInfo: uni.getStorageSync('userInfo') || {
user_mobile: '',
},
userInfo: uni.getStorageSync('userInfo') || {},
uid: uni.getStorageSync('uid') || '',
ukey: uni.getStorageSync('ukey') || '',
auditStatusInfo: uni.getStorageSync('auditStatusInfo') || {
@ -30,14 +28,16 @@ const mutations = {
state.auditStatusInfo = auditStatusInfo;
},
LOGIN_OUT(state) {
state.ukey = '';
state.userInfo = '';
state.uid = '';
state.ukey = '';
state.auditStatusInfo = {
approval_invalid_col: [],
approval_status: -4,
approval_remark: '',
id: 0,
};
state.approvalStatus = '';
},
};
@ -106,8 +106,8 @@ const actions = {
uni.removeStorageSync('uid');
uni.removeStorageSync('accountDashboard');
uni.removeStorageSync('approvalStatus');
uni.removeStorageSync('approvalStatusInfo');
uni.removeStorageSync('auditInfo');
uni.removeStorageSync('auditId');
uni.removeStorageSync('contractDownloadUrl');
uni.removeStorageSync('pdfjs.history');
uni.removeStorageSync('userInfo');
@ -161,6 +161,7 @@ const actions = {
result.data.contract_download_url
);
uni.setStorageSync('auditId', result.data.id);
uni.setStorageSync('auditInfo', result.data);
uni.switchTab({
url: '/pages/order/order',