You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
268 lines
8.5 KiB
268 lines
8.5 KiB
<template>
|
|
<view class="v-pages">
|
|
<view class="v-form v-container">
|
|
<uni-forms :modelValue="formData" ref="formRef" :label-width="80" :rules="formRules">
|
|
<view class="v-form-item">
|
|
<uni-forms-item label="企业名称" name="companyName">
|
|
<input v-model="formData.companyName" placeholder="请输入企业名称" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="办公地址" name="companyAddress">
|
|
<input v-model="formData.companyAddress" placeholder="请输入办公地址" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="负责人" name="companyLeader">
|
|
<input v-model="formData.companyLeader" placeholder="请输入负责人" class="m-form-small" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="联系电话" name="companyPhone">
|
|
<input v-model="formData.companyPhone" placeholder="请输入联系电话" class="m-form-small" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="主体类型" name="companyType">
|
|
<picker @change="CompanyTypeChange" v-model="formData.companyType" mode='selector'
|
|
:value="CurrentCompanyType" :range="CompanyTypePickerList">
|
|
<view class="uni-input" v-if="CompanyTypePickerList[CurrentCompanyType]">
|
|
{{CompanyTypePickerList[CurrentCompanyType]}}
|
|
</view>
|
|
<view v-else class="placeholder">请选择主体类型</view>
|
|
<uni-icons type="down" size="14" class="v-icon"></uni-icons>
|
|
</picker>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="所属行业" name="companyIndustry">
|
|
<picker @change="CompanyIndustryChange" v-model="formData.companyIndustry" mode='selector'
|
|
:value="CurrentCompanyIndustry" :range="CompanyIndustryPickerList">
|
|
<view class="uni-input" v-if="CompanyIndustryPickerList[CurrentCompanyIndustry]">
|
|
{{CompanyIndustryPickerList[CurrentCompanyIndustry]}}
|
|
</view>
|
|
<view v-else class="placeholder">请选择所属行业</view>
|
|
<uni-icons type="down" size="14" class="v-icon"></uni-icons>
|
|
</picker>
|
|
</uni-forms-item>
|
|
<uni-forms-item label="社会信用代码" :labelWidth='140' name="companyCode">
|
|
<input v-model="formData.companyCode" placeholder="请输入社会信用代码" />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="营业执照" name="companyLicense">
|
|
<htz-image-upload v-model="imgList" :action="baseUrls" :chooseNum="1" :compress="false"
|
|
:headers="headers" :max="1" :quality="80" :remove="true" :sourceType="['album', 'camera']"
|
|
class="m-img-upload" mediaType="image" @imgDelete="ceshiImgDelete"
|
|
@uploadFail="ceshiUploadFail" @uploadSuccess="ceshiUploadSuccess"></htz-image-upload>
|
|
<uni-easyinput v-model="formData.companyLicense" class="not-show" placeholder=" " />
|
|
</uni-forms-item>
|
|
<uni-forms-item label="证书" name="companyCertificate">
|
|
<image class="v-base-img" :src="formData.companyCertificate" v-if="formData.companyCertificate">
|
|
</image>
|
|
<htz-image-upload v-else v-model="imgList1" :action="baseUrls" :chooseNum="1" :compress="false"
|
|
:headers="headers" :max="1" :quality="80" :remove="true" :sourceType="['album', 'camera']"
|
|
class="m-img-upload" mediaType="image" @imgDelete="ceshiImgDelete"
|
|
@uploadFail="ceshiUploadFail" @uploadSuccess="ceshiUploadSuccess1"></htz-image-upload>
|
|
<uni-easyinput v-model="formData.companyCertificate" class="not-show" placeholder=" " />
|
|
</uni-forms-item>
|
|
</view>
|
|
</uni-forms>
|
|
<!-- 页面 提交 -->
|
|
<view class="sticky fixedBottom"><button class="v-primary-btn large" @click="submitForm()">保存</button>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import * as CompanyApi from '@/api/traceability/company'
|
|
|
|
import {
|
|
getAccessToken
|
|
} from '@/utils/auth';
|
|
import config from '@/config';
|
|
import htzImageUpload from '@/components/htz-image-upload/htz-image-upload.vue';
|
|
|
|
import {
|
|
getDictDatas,
|
|
DICT_TYPE
|
|
} from '@/utils/dict';
|
|
export default {
|
|
components: {
|
|
htzImageUpload
|
|
},
|
|
data() {
|
|
return {
|
|
imgList: [],
|
|
imgList1: [],
|
|
baseUrls: config.baseUrl + config.baseApi + '/infra/file/upload',
|
|
headers: {
|
|
Authorization: 'Bearer ' + getAccessToken()
|
|
}, // 设置上传的请求头部
|
|
|
|
CurrentCompanyType: undefined,
|
|
CompanyTypeList: [], //企业类型列表
|
|
CompanyTypePickerList: [], //企业类型选择列表
|
|
|
|
CurrentCompanyIndustry: undefined,
|
|
CompanyIndustryList: [], //所属行业列表
|
|
CompanyIndustryPickerList: [], //所属行业选择列表
|
|
|
|
formData: {
|
|
companyId: undefined,
|
|
companyName: undefined,
|
|
companyAddress: undefined,
|
|
companyLeader: undefined,
|
|
companyPhone: undefined,
|
|
companyType: undefined,
|
|
companyIndustry: undefined,
|
|
companyCode: undefined,
|
|
companyLicense: undefined,
|
|
companyCertificate: undefined
|
|
}, // 表单校验
|
|
formRules: {
|
|
companyName: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请输入企业名称'
|
|
}]
|
|
},
|
|
companyLeader: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请输入负责人'
|
|
}]
|
|
},
|
|
companyAddress: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请输入办公地址'
|
|
}]
|
|
},
|
|
companyPhone: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请输入联系电话'
|
|
}]
|
|
},
|
|
companyType: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请选择主体类型'
|
|
}]
|
|
},
|
|
companyIndustry: {
|
|
rules: [{
|
|
required: true,
|
|
errorMessage: '请选择所属行业'
|
|
}]
|
|
},
|
|
},
|
|
queryParams: {
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
total: null
|
|
}
|
|
}
|
|
},
|
|
onLoad: function() {
|
|
this.getListData()
|
|
},
|
|
onReady() {
|
|
// 设置自定义表单校验规则,必须在节点渲染完毕后执行
|
|
this.$refs.formRef.setRules(this.formRules)
|
|
},
|
|
methods: {
|
|
// 获取产品数据
|
|
async getListData() {
|
|
try {
|
|
this.getCompanyIndustry()
|
|
this.getCompanyType()
|
|
const res = await CompanyApi.getCompanyPage(this.queryParams)
|
|
this.formData = res.data.list[0]
|
|
console.log(this.formData)
|
|
this.queryParams.total = res.data.total;
|
|
this.CurrentCompanyType = this.CompanyTypeList.findIndex(item => Number(item.value) ===
|
|
Number(this.formData.companyType))
|
|
this.CurrentCompanyIndustry = this.CompanyIndustryList.findIndex(item => Number(item
|
|
.value) === Number(this.formData.companyIndustry))
|
|
} finally {}
|
|
},
|
|
|
|
/** 提交按钮 */
|
|
async submitForm() {
|
|
// 校验主表
|
|
try {
|
|
this.formData.companyType = this.CompanyTypeList[this.currenCustomerType].value
|
|
this.formData.companyIndustry = this.CompanyIndustryList[this.CurrentCompanyIndustry].value
|
|
await this.$refs['formRef'].validate()
|
|
const data = this.formData
|
|
await CompanyApi.updateCompany(data)
|
|
uni.showToast({
|
|
title: `保存成功`,
|
|
icon: 'success',
|
|
duration: 2000,
|
|
complete: function() {
|
|
setTimeout(function() {
|
|
uni.redirectTo({
|
|
url: '/pages/mine/index'
|
|
});
|
|
}, 2000);
|
|
}
|
|
})
|
|
} catch (err) {
|
|
console.log("验证未通过",err)
|
|
} finally {}
|
|
},
|
|
|
|
|
|
// 获取所属行业
|
|
getCompanyIndustry() {
|
|
//所属行业 数据字典查询
|
|
let arr = this.getDictDatas(DICT_TYPE.PRODUCTS_INDUSTRY);
|
|
this.CompanyIndustryList = arr
|
|
this.CompanyIndustryPickerList = arr.map((item) => {
|
|
return item.label
|
|
});
|
|
},
|
|
|
|
// 选择所属行业
|
|
CompanyIndustryChange(e) {
|
|
this.CurrentCompanyIndustry = e.detail.value
|
|
},
|
|
|
|
// 获取企业类型
|
|
getCompanyType() {
|
|
//企业种类 数据字典查询
|
|
let arr = this.getDictDatas(DICT_TYPE.COMPANY_ENTITY_TYPE);
|
|
this.CompanyTypeList = arr
|
|
this.CompanyTypePickerList = arr.map((item) => {
|
|
return item.label
|
|
});
|
|
},
|
|
|
|
// 选择企业类型
|
|
CompanyTypeChange(e) {
|
|
this.CurrentCompanyType = e.detail.value
|
|
},
|
|
|
|
ceshiUploadSuccess(res) {
|
|
//上传成功
|
|
var _res = JSON.parse(res.data);
|
|
console.log('_res', _res);
|
|
if (_res.code == 0) {
|
|
this.imgList.push(_res.data);
|
|
this.formData.companyLicense = _res.data;
|
|
}
|
|
},
|
|
ceshiUploadSuccess1(res) {
|
|
//上传成功
|
|
var _res = JSON.parse(res.data);
|
|
console.log('_res', _res);
|
|
if (_res.code == 0) {
|
|
this.imgList1.push(_res.data);
|
|
this.formData.companyCertificate = _res.data;
|
|
}
|
|
},
|
|
ceshiImgDelete(e, num) {
|
|
console.log('ceshiImgDelete', e);
|
|
},
|
|
ceshiUploadFail(err) {
|
|
//上传失败
|
|
console.log('err', err);
|
|
},
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
</style>
|
|
|