This commit is contained in:
qijq 2025-05-10 12:24:07 +08:00
commit c2c3580652
4 changed files with 303 additions and 1235 deletions

View File

@ -10,6 +10,9 @@
* @seehttps://mall.gpxscs.cn/mobile/shop/oss/upload
*/
import http from '../utils/http'
import config from '../config/config'
export function UploadFilePromise(filePath, formData) {
let ukey = uni.getStorageSync('ukey');
return new Promise((resolve, reject) => {
@ -30,3 +33,37 @@ export function UploadFilePromise(filePath, formData) {
});
});
}
export function batchNoApi (filePath, file, type){
return new Promise((resolve, reject) => {
uni.uploadFile({
url:'https://mall.gpxscs.cn/mobile/shop/lakala/tk/uploadOcrImg',
method: "POST",
filePath,
name:'upfile',
formData: {
imgType: type,
},
success: (res) =>{
if(res?.data){
resolve(JSON.parse(res?.data)?.data)
}
},
fail: (res) =>{
reject(res)
}
})
})
}
export function imgOcrResultApi (data){
return http({
url:'/shop/lakala/tk/imgOcrResult',
method:'POST',
headers: {
'content-type': 'application/x-www-form-urlencoded',
},
data,
})
}

View File

@ -16,105 +16,11 @@
:current="active"
@change="handleSubsection"
></u-subsection>
<view
class="up-block up-block-2"
v-show="active == 0"
style="margin-top: 0"
>
<u-form :model="form" class="form" ref="uForm" label-width="100">
<u-form-item
label="许可证类型"
required
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="license_number" required>
<u-input
class="form-input"
v-model="form.license_number"
placeholder="请输入许可证编号"
/>
</u-form-item>
<u-form-item label="营业执照编号" prop="biz_license_number" required>
<u-input
class="form-input"
v-model="form.biz_license_number"
placeholder="请输入营业执照编号"
/>
</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-form-item>
<u-form-item label="法人姓名" prop="legal_person_name" required>
<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-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>
</u-form>
</view>
<view
class="up-block up-block-2"
v-show="active == 1"
style="margin-top: 0"
>
<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-form-item>
</u-form>
</view>
<view class="up-block" v-if="active == 0">
<view class="up-title"> 营业执照 点击上传 </view>
<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"
@ -128,34 +34,10 @@
height="88"
></u-upload>
</view>
<view class="up-block up-block-2" v-if="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>
点击上传
</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>
</view>
<view class="up-block up-block-3" v-if="active == 0">
<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>
</view>
<view class="up-block-3-content">
<u-upload
@ -182,10 +64,38 @@
></u-upload>
</view>
</view>
<!--个人-->
<view class="up-block up-block-3" v-if="active == 1">
<view class="up-block up-block-2" v-show="active == 0">
<view class="up-title">
法人身份证正反面{{ fileList5.length + fileList6.length }} /2
许可证(最大上传{{ fileList2.length }}/5)
<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>
</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
>
</view>
<view class="up-block-3-content">
<u-upload
@ -214,6 +124,90 @@
></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>
<u-form-item label="公司名称" prop="biz_license_company" required>
<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-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-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>
<u-form-item label="营业执照编号" prop="biz_license_number">
<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-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-form-item>
</u-form>
</view>
</view>
<view class="btn-content">
<u-button class="btn-next" @click="handleNext">下一步</u-button>
@ -270,7 +264,22 @@
</template>
<script>
import { UploadFilePromise } from "../../api/upload";
import { mapActions } from "vuex";
import {
UploadFilePromise,
batchNoApi,
imgOcrResultApi,
} from "../../api/upload";
const orcImgTypeConf = {
FR_ID_CARD_FRONT: "FR_ID_CARD_FRONT",
FR_ID_CARD_BEHIND: "FR_ID_CARD_BEHIND",
ID_CARD_FRONT: "ID_CARD_FRONT",
ID_CARD_BEHIND: "ID_CARD_BEHIND",
BUSINESS_LICENCE: "BUSINESS_LICENCE",
BANK_CARD: "BANK_CARD",
};
export default {
data() {
return {
@ -286,8 +295,6 @@ export default {
},
],
form: {
license_type: "", //
license_number: "", //
license_image: "", //
biz_license_number: "", //
biz_license_company: "", //
@ -332,19 +339,9 @@ export default {
trigger: ["blur"],
message: "请选择您的许可证类型",
},
license_number: {
required: true,
message: "请输入许可证编号",
trigger: ["change", "blur"],
},
biz_license_number: {
required: true,
message: "请输入营业执照编号",
trigger: ["change", "blur"],
},
biz_license_company: {
required: true,
message: "请输入营业执照公司名或真实的公司名",
message: "请输入公司名称",
trigger: ["blur"],
},
legal_person_name: {
@ -386,6 +383,7 @@ export default {
trigger: ["blur"],
},
],
orcTimeout: null,
},
rules2: {
individual_id_number: [
@ -413,6 +411,34 @@ export default {
this.$refs["uForm2"].setRules(this.rules2);
},
methods: {
getOcrText(filePath, file, type) {
return new Promise(async (resolve, reject) => {
const batchNoRes = await batchNoApi(filePath, file, type);
const batchNo = batchNoRes.batchNo;
const formData = new FormData();
let formDataStr = "";
formData.append("batchNo", batchNo);
formData.append("imgType", type);
clearTimeout(this.orcTimeout);
this.orcTimeout = setTimeout(async () => {
formData.forEach((value, key) => {
if (formDataStr !== "") {
formDataStr += "&";
}
formDataStr +=
encodeURIComponent(key) + "=" + encodeURIComponent(value);
});
const imgOcrRes = await imgOcrResultApi(formDataStr);
clearTimeout(this.orcTimeout);
resolve(imgOcrRes?.data);
}, 1000);
});
},
//
async afterRead(e, type) {
const item = e.file;
@ -444,6 +470,7 @@ export default {
}
let res = await UploadFilePromise(imgUrl);
if (res && res.status == 200) {
switch (type) {
case "businessLicense":
@ -470,6 +497,31 @@ export default {
break;
}
}
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;
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;
console.log("ID_CARD_FRONT", ocr);
break;
}
},
deletePic(e, type) {
switch (type) {
@ -498,12 +550,12 @@ export default {
},
handleSubsection(e) {
this.active = e;
this.fileList = [];
this.fileList2 = [];
this.fileList3 = [];
this.fileList4 = [];
this.fileList5 = [];
this.fileList6 = [];
// this.fileList = [];
// this.fileList2 = [];
// this.fileList3 = [];
// this.fileList4 = [];
// this.fileList5 = [];
// this.fileList6 = [];
},
handlePopup() {
this.showPopup = true;
@ -638,6 +690,7 @@ export default {
.up-block {
background: #fff;
padding: 24rpx;
margin-bottom: 20rpx;
.up-title {
font-weight: bold;
@ -678,7 +731,8 @@ export default {
}
.up-block-2 {
margin: 20rpx 0;
// margin: 20rpx 0;
padding: 24rpx 24rpx 24rpx 32rpx;
}
.up-block-3-content {
@ -748,5 +802,9 @@ export default {
font-size: 28rpx;
color: #4b71ff;
}
.color_red {
color: red;
}
}
</style>

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;