web-africa-h5/pages/self-service/dealer-certification/apply.vue

904 lines
24 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="pb100">
<view class="agreement-box d-c d-c-c">
<view class="agreement-content">{{ $t('CK_KS_106') }}</view>
<button class="agreement-btn"
@click="dowloadPDF('https://hzs-in.oss-cn-beijing.aliyuncs.com/agreement.pdf',`${$t('CK_KS_105')}.pdf`)">{{ $t('CK_KS_105') }}</button>
</view>
<view class="form-title">{{ $t('CK_KS_27') }}</view>
<view class="form-group">
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('MN_T_1') }}
</view>
<view class="disabled-input">{{ memberCode }}</view>
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_14') }}
</view>
<view class="disabled-input">{{ memberName }}</view>
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_32') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.licenseName" :placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_33') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.creditCode" :placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_34') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.legalName" :placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_35') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.legalIdCard"
:placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-tips">
<text class="domation mr10">*</text>
{{ $t('CK_KS_36') }}
</view>
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_37') }}
</view>
<input class="form-input" disabled type="text" :value="getAddName('license')"
@click="showMulLinkageThreePicker('license')" />
<text class="icon iconfont icon-jiantou"></text>
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('S_C_27') }}
</view>
<textarea :disabled="type == 'detail'" auto-height class="form-textarea" v-model="form.licenseAddress"
placeholder="" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('S_C_86') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.storePerson"
:placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('w_0052') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.storePhone"
:placeholder="$t('S_C_70')" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('S_C_27') }}
</view>
<input class="form-input" disabled type="text" :value="getAddName('store')"
@click="showMulLinkageThreePicker('store')" :placeholder="$t('S_C_30')" />
<text class="icon iconfont icon-jiantou"></text>
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('S_C_27') }}
</view>
<textarea :disabled="type == 'detail'" auto-height class="form-textarea" v-model="form.storeAddress"
placeholder="" />
</view>
<picker :range="accountList" :value="bank_index" @change="bindPickerChange" range-key="bankName">
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_41') }}
</view>
<input class="form-input" disabled type="text"
:value="bank_index == -1 ? $t('CK_KS_38') : accountList[bank_index].bankName" placeholder="" />
<text class="icon iconfont icon-jiantou"></text>
</view>
</picker>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_42') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.bankAccount"
placeholder="" />
</view>
<view class="form-item">
<view class="form-label">
<text class="domation mr10">*</text>
{{ $t('CK_KS_43') }}
</view>
<input :disabled="type == 'detail'" class="form-input" type="text" v-model="form.bankBranch"
:placeholder="$t('S_C_70')" />
</view>
</view>
<view class="form-title">{{ $t('CK_KS_53') }}</view>
<view class="form-group">
<view class="form-upload">
<view class="form-upload-name">
<text class="domation mr10">*</text>
{{ $t('CK_KS_54') }}
</view>
<view class="form-upload-tips">{{ $t('CK_KS_55') }}</view>
<view class="d-s-c f-w">
<view>
<image @click="clearImage('legalCardFront',11)" v-if="form.legalCardFront" class="upload-add"
:src="form.legalCardFront || '/static/default.png'" mode=""></image>
<image @click="openUpload('legalCardFront', 11)" v-else class="upload-add"
src="/static/icon/upload-add.png" mode=""></image>
</view>
<view>
<image @click="clearImage('legalCardBack',12)" v-if="form.legalCardBack" class="upload-add"
:src="form.legalCardBack || '/static/default.png'" mode=""></image>
<image @click="openUpload('legalCardBack', 12)" v-else class="upload-add"
src="/static/icon/upload-add.png" mode=""></image>
</view>
</view>
<view class="form-upload-tips2">
<view>{{ $t('CK_KS_91') }}</view>
<view>{{ $t('CK_KS_49') }}</view>
<view>{{ $t('CK_KS_50') }}</view>
</view>
</view>
</view>
<view class="form-group">
<view class="form-upload">
<view class="form-upload-name">
<text class="domation mr10">*</text>
{{ $t('CK_KS_56') }}
</view>
<view class="form-upload-tips">{{ $t('CK_KS_45') }}</view>
<view class="d-s-c f-w">
<view>
<image @click="clearImage('license',13)" v-if="form.license" class="upload-add"
:src="form.license || '/static/default.png'" mode=""></image>
<image @click="openUpload('license', 13)" v-else class="upload-add"
src="/static/icon/upload-add.png" mode=""></image>
</view>
</view>
<view class="form-upload-tips2">
<view>{{ $t('CK_KS_91') }}</view>
<view>{{ $t('CK_KS_49') }}</view>
<view>
{{ $t('CK_KS_50') }}
</view>
</view>
</view>
</view>
<view class="form-group">
<view class="form-upload">
<view class="form-upload-name">
<text class="domation mr10">*</text>
{{ $t('CK_KS_107') }}
</view>
<view class="form-upload-tips">{{ $t('CK_KS_45') }}</view>
<view class="d-s-c f-w">
<view v-for="(item, index) in form.storeAgreementList" :key="index">
<image @click="clearImage('storeAgreementList',14, index)" class="upload-add"
:src="item || '/static/default.png'" mode="aspectFill"></image>
</view>
<view>
<image @click="openUpload('storeAgreementList', 14)" class="upload-add"
src="/static/icon/upload-add.png" mode=""></image>
</view>
</view>
<view class="form-upload-tips2">
<view>{{ $t('CK_KS_91') }}</view>
<view>{{ $t('CK_KS_49') }}</view>
<view>{{ $t('CK_KS_50') }}</view>
</view>
</view>
</view>
<button class="normal-sub-btn" style="margin-top: 37rpx;" v-if="type == 'apply'" @click="subFunc">{{ $t('CK_KS_72') }}</button>
<button class="normal-sub-btn" style="margin-top: 37rpx;" v-if="type == 'edit'" @click="subFunc">{{ $t('CK_KS_20') }}</button>
<mpvue-city-picker v-if="is_load" ref="mpvueCityPicker" :province="province"
:pickerValueDefault="cityPickerValueDefault" @onConfirm="onConfirm"></mpvue-city-picker>
<!--上传图片-->
<!-- storeType = 3经销商 fileType -->
<!-- fileType 1=门头展示2=店内视频3=产品视频10=标志11=法人正面12=法人反面13=营业执照14=协议21=门头展示122=门头展示223=体验区124=体验区225=会议室1, 26=会议室2, 27=产品展示1, 28=产品展示2, 29=休息室1, 30=休息室2 -->
<Upload :num="1" v-if="isUpload" storeType="3" :fileType="fileType" @getImgs="getImgsFunc"></Upload>
</view>
</template>
<script>
import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue';
import Upload from '@/components/upload/upload-maker.vue';
import utils from '@/common/utils.js';
export default {
components: {
mpvueCityPicker,
Upload
},
data() {
return {
/* apply detail edit */
type: 'apply',
memberCode: '',
memberName: '',
form: {
storeType: 3, //店铺类型1=创客空间2=超级工作室)
storeName: '', //名称
licenseName: '', //营业执照名称
creditCode: '', //统一社会信用代码
legalName: '', //法人姓名
legalIdCard: '', //法人身份证号
licenseProvince: 1, //营业执照省
licenseCity: 2, //营业执照市
licenseCounty: 3, //营业执照县
licenseAddress: '', //营业执照详细地址
storePerson: '', //联系人
storePhone: '', //联系方式
storeProvince: 1, //详细地址省
storeCity: 2, //详细地址市
storeCounty: 3, //详细地址县
storeAddress: '', //详细地址
pkBank: 1, //银行
bankAccount: '', //银行账号
bankBranch: '', //开启运行
storeSign: '', //标志
legalCardFront: '', //法人身份证正面
legalCardBack: '', //法人身份证反面
license: '', //营业执照
storeAgreementList: [] //店铺协议列表
// videoDoorhead: '', //门店门头视频
// videoStore: '', //门店店内视频
// videoProduct: '', //门店产品视频
// imageDoorhead1: '', //门店门头图片1
// imageDoorhead2: '', //门店门头图片2
// imageExperience1: '', //门店体验区图片1
// imageExperience2: '', //门店体验区图片2
// imageMeeting1: '', //门店会议室图片1
// imageMeeting2: '', //门店会议室图片2
// imageProduct1: '', //门店产品图片1
// imageProduct2: '', //门店产品图片2
// imageLounge1: '', //门店休息室图片1
// imageLounge2: '' //门店休息室图片2
},
isUpload: false,
upload_type: '',
bankloading: false,
is_load: false,
addressName: '',
licenseValue: [0, 0, 0],
storeValue: [0, 0, 0],
cityPickerValueDefault: [0, 0, 0],
province: [],
city: [],
area: [],
bank_index: -1,
accountList: [],
/*是否已发验证码*/
is_send: false,
/*发送按钮文本*/
send_btn_txt: '获取验证码',
/*当前秒数*/
second: 60,
fileType: 0
};
},
onLoad(e) {
this.type = e.type || 'detail';
},
mounted() {
this.getBankData();
this.getAreaData();
this.getData();
},
methods: {
// 获取省市区
getAreaData() {
let self = this;
self._get('system/api/area/tree', {}, function(res) {
self.province = res.data;
self.is_load = true;
});
},
/*三级联动选择*/
showMulLinkageThreePicker(name) {
this.addressName = name;
this.cityPickerValueDefault = this[name + 'Value'];
this.$refs.mpvueCityPicker.show();
},
/*确定选择的省市区*/
onConfirm(e) {
let self = this;
self.form[self.addressName + 'Province'] = e.cityCode[0];
self.form[self.addressName + 'City'] = e.cityCode[1];
self.form[self.addressName + 'County'] = e.cityCode[2];
},
getAddName: function(type) {
let self = this;
let pid = 0;
let cid = 0;
let aid = 0;
let defaultValue = [0, 0, 0];
pid = self.form[type + 'Province'];
cid = self.form[type + 'City'];
aid = self.form[type + 'County'];
defaultValue = self[type + 'Value'];
let address = self.getAddressName(pid, cid, aid, defaultValue);
return address;
},
/* 省市区回显 */
getAddressName(pid, cid, aid, piker) {
let self = this;
/* 省市区列表 */
if (!self.province) {
return;
}
let add = '';
let citydata = [];
let areadata = [];
self.province.forEach((item, index) => {
if (item['id'] == pid) {
add += item['name'];
citydata = item['children'];
piker[0] = index;
citydata.forEach((citem, cindex) => {
if (citem['id'] == cid) {
add += citem['name'];
areadata = citem['children'] ? citem['children'] : [];
piker[1] = cindex;
if (areadata) {
areadata.forEach((aitem, aindex) => {
if (aitem['id'] == aid) {
add += aitem['name'];
piker[2] = aindex;
return;
}
});
}
}
});
}
});
return add;
},
/*获取银行数据*/
getBankData() {
let self = this;
self.bankloading = true;
self._get('system/api/bank/list', {}, function(res) {
self.accountList = res.data;
self.bankloading = false;
uni.hideLoading();
});
},
bindPickerChange: function(e) {
if (this.type == 'detail') {
return;
}
this.bank_index = e.detail.value;
// console.log(this.bank_index);
this.account_info = this.accountList[this.bank_index];
this.form.pkBank = this.account_info.pkId;
},
getData() {
let self = this;
self._get(
'member/api/maker-space/detail', {
storeType: 3
},
res => {
self.memberCode = res.data.memberCode;
self.memberName = res.data.memberName;
utils.objForEach(self.form, (value, key) => {
if (res.data[key]) {
self.form[key] = res.data[key];
}
});
}
);
},
subFunc() {
let self = this;
if (this.type == 'detail') {
return;
}
let params = self.form;
let flag = false;
let values = [{
name: this.$t('CK_KS_79'),
value: 'licenseName',
callback: function(e) {
return e != '';
}
},
{
name: `${this.$t('S_C_70')}${this.$t('CK_KS_33')}`,
value: 'creditCode',
callback: function(e) {
return e != '';
}
},
{
name: `${this.$t('S_C_70')}${this.$t('CK_KS_34')}`,
value: 'legalName',
callback: function(e) {
return e != '';
}
},
{
name: `${this.$t('S_C_70')}${this.$t('CK_KS_35')}`,
value: 'legalIdCard',
callback: function(e) {
return e != '';
}
},
{
name: `${this.$t('S_C_70')}${this.$t('CK_KS_37')}`,
value: 'licenseProvince',
callback: function(e) {
return e > 0;
}
},
{
name: `${this.$t('S_C_70')}${this.$t('CK_KS_37')}`,
value: 'licenseAddress',
callback: function(e) {
return e != '';
}
},
{
name: `${this.$t('S_C_70')}${this.$t('S_C_86')}`,
value: 'storePerson',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('w_0053'),
value: 'storePhone',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('w_0070'),
value: 'storeProvince',
callback: function(e) {
return e > 0;
}
},
{
name: this.$t('w_0070'),
value: 'storeAddress',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('w_0270'),
value: 'pkBank',
callback: function(e) {
return e > 0;
}
},
{
name: this.$t('CK_KS_42'),
value: 'bankAccount',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('w_0272'),
value: 'bankBranch',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('w_0272'),
value: 'bankBranch',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('CK_KS_77'),
value: 'legalCardFront',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('CK_KS_78'),
value: 'legalCardBack',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('CK_KS_79'),
value: 'license',
callback: function(e) {
return e != '';
}
},
{
name: this.$t('CK_KS_109'),
value: 'storeAgreementList',
callback: function(e) {
return e.length > 0;
}
}
];
values.forEach((item, index) => {
if (!flag && !item.callback(params[item.value])) {
flag = item.name;
return;
}
});
if (flag) {
uni.showToast({
title: flag,
duration: 1000,
icon: 'none'
});
return false;
}
self._post('member/api/maker-space/submit', params, res => {
uni.showModal({
content: res.msg,
showCancel: false,
success() {
self.gotoPage('pages/self-service/dealer-certification/status');
}
});
});
},
/*获取上传的图片*/
getImgsFunc(e) {
let self = this;
self.isUpload = false;
if (e && typeof e != 'undefined') {
if (self.upload_type == 'storeAgreementList') {
self.form.storeAgreementList.push(e[0].url);
} else {
self.form[self.upload_type] = e[0].url;
}
}
},
/*打开上传图片*/
openUpload(type, fileType) {
if (this.type == 'detail') {
return;
}
this.upload_type = type;
this.fileType = fileType;
this.isUpload = true;
},
clearImage(name, fileType, n) {
let self = this;
if (self.type == 'detail') {
return;
}
let filePath = '';
if (n || n === 0) {
filePath = self.form[name][n];
} else {
filePath = self.form[name];
}
let url = 'member/api/maker-space/delete-file?storeType=3&fileType=' + fileType + '&filePath=' +
filePath;
self._delete(url, {}, res => {
if (n || n === 0) {
self.form[name].splice(n, 1);
} else {
self.form[name] = '';
}
})
},
dowloadPDF(e, name) {
let self = this;
uni.showLoading({
title: '下载中..'
});
uni.downloadFile({
url: e, //调接口返给的url
success: function(res) {
console.log(res);
if (res.statusCode == 200) {
var Path = res.tempFilePath; //调 uni.downloadFile成功之后会返给tempFilePath
uni.saveFile({
tempFilePath: Path,
success: function(result) {
var savedFilePath = result.savedFilePath;
self.fSetFileName(savedFilePath, name, e);
},
fail: err => {
uni.showToast({
title: '保存文件失败请重试',
icon: 'none'
});
uni.hideLoading();
}
});
} else {
uni.showToast({
title: '打开文件失败请重试',
icon: 'none'
});
}
uni.hideLoading();
},
fail: err => {
uni.hideLoading();
uni.showToast({
title: '加载失败请重试',
icon: 'none'
});
}
});
},
// 获取已下载列表
fGetSavedFileList() {
uni.getSavedFileList({
success: res => {
res.fileList.forEach(oData => {
let aRray = oData.filePath.split('/');
let sFileName = aRray[aRray.length - 1].split('.')[0];
if (parseFloat(sFileName).toString() == 'NaN') {
//这里是过滤掉文件名是时间戳的文件
console.log(res.fileList);
} else {
//这里是把时间戳的文件删掉
plus.io.resolveLocalFileSystemURL(oData.filePath, entry => {
//获取文件对象
entry.remove(
entry => {
console.log('Remove succeeded');
},
e => {
alert(e.message);
}
);
});
}
});
}
});
},
fSetFileName(sFilePath, sFileName, e) {
let self = this;
var sFileName = sFileName.split('/')[sFileName.split('/').length - 1]; //原来的文件名
var aFileUrl = sFilePath.split('/').splice(0, sFilePath.split('/').length - 1); //saveFile API保存的本地地址
var url = e; //请求地址
let dtask = plus.downloader.createDownload(
url, {
filename: '_downloads' + aFileUrl.join('/') + '/' + sFileName //利用保存路径,实现文件的重命名
},
(d, status) => {
if (status == 200) {
let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
self.fGetSavedFileList();
console.log('-----------------');
console.log(fileSaveUrl);
// uni.openDocument({
// filePath: escape(fileSaveUrl),
// fail: e => {
// console.log(JSON.stringify(e));
// console.log(escape(fileSaveUrl));
// console.log(e);
// uni.showToast({
// title: `打开失败`
// });
// }
// });
setTimeout(
() =>
uni.openDocument({
filePath: fileSaveUrl,
showMenu: false,
success: function() {
console.log('打开文档成功');
},
fail: function(e) {
console.log(e);
uni.showToast({
title: '暂不支持此类型',
duration: 2000,
icon: 'none'
});
}
}),
1000
);
} else {
//下载失败
plus.downloader.clear(); //清除下载任务
}
}
);
dtask.setRequestHeader('Authorization', 'Bearer ' + uni.getStorageSync('SET_TOKEN'));
dtask.start();
},
}
};
</script>
<style lang="scss">
.agreement-box {
width: 750rpx;
background: #ffffff;
padding: 28rpx 22rpx;
box-sizing: border-box;
margin-top: 2rpx;
margin-bottom: 20rpx;
.agreement-content {
font-size: 24rpx;
font-family: SourceHanSansCN;
font-weight: 400;
color: #999999;
line-height: 32rpx;
word-break: break-all;
margin-bottom: 32rpx;
}
.agreement-btn {
min-width: 320rpx;
height: 76rpx;
line-height: 1.5;
display: flex;
justify-content: center;
align-items: center;
padding: 0 20rpx;
box-sizing: border-box;
background: #282828;
border-radius: 38rpx;
color: #ffffff;
font-size: 24rpx;
}
}
.form-title {
width: 750rpx;
height: 106rpx;
background: #fb3024;
padding-left: 44rpx;
position: relative;
box-sizing: border-box;
font-size: 28rpx;
color: #ffffff;
line-height: 106rpx;
font-weight: bold;
z-index: 1;
}
.form-title::before {
content: '';
position: absolute;
top: 0;
bottom: 0;
margin: auto;
left: 25rpx;
width: 6rpx;
height: 24rpx;
background-color: #fb3024;
z-index: 1;
}
.form-group {
padding: 0 22rpx;
background: #ffffff;
.form-item {
min-height: 104rpx;
box-sizing: border-box;
padding: 15rpx 0;
line-height: 1.5;
display: flex;
justify-content: center;
align-items: center;
border-bottom: 1rpx solid #eee;
.icon-jiantou {
font-size: 32rpx;
color: 090000;
}
.form-tips {
font-size: 24rpx;
color: #999;
}
.form-label {
width: 255rpx;
flex-shrink: 0;
word-break: break-all;
margin-right: 20rpx;
}
.disabled-input {
width: 450rpx;
height: 78rpx;
padding: 0 18rpx;
line-height: 78rpx;
background: #eee;
font-size: 28rpx;
color: #333;
flex: 1;
}
.form-textarea {
width: 450rpx;
padding: 0 18rpx;
line-height: 1.5;
font-size: 28rpx;
color: #333;
flex: 1;
background: #fff;
}
.form-input {
width: 450rpx;
height: 78rpx;
padding: 0 18rpx;
line-height: 78rpx;
background: #fff;
font-size: 28rpx;
color: #333;
flex: 1;
}
.form-item:last-child {
border: none;
}
}
}
.form-upload {
padding: 30rpx 23rpx;
}
.form-upload-name {
font-size: 28rpx;
color: #333;
margin-bottom: 20rpx;
}
.form-upload-tips {
font-size: 24rpx;
color: #999;
margin-bottom: 20rpx;
}
.form-upload-tips2 {
font-size: 24rpx;
color: #fb3024;
line-height: 1.5;
}
.upload-add {
width: 142rpx;
height: 142rpx;
margin-right: 18rpx;
margin-bottom: 18rpx;
}
</style>