小程序端
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.
 
 
 
 
 

283 lines
8.7 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"
: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"
: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">
<htz-image-upload 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="ceshiImgDelete1"
@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("lai",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))
if (this.formData.companyLicense == "") {
this.imgList = []
} else {
this.imgList[0] = this.formData.companyLicense
}
if (this.formData.companyCertificate == "") {
this.imgList1 = []
} else {
this.imgList1[0] = this.formData.companyCertificate
}
} finally {}
},
/** 提交按钮 */
async submitForm() {
// 校验主表
try {
console.log(this.formData)
await this.$refs['formRef'].validate()
const data = this.formData
await CompanyApi.updateCompany(data)
uni.showToast({
title: `保存成功`,
icon: 'success',
duration: 2000,
complete: function() {
uni.redirectTo({
url: '/pages/mine/index'
});
}
})
} 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
this.formData.companyIndustry = this.CompanyIndustryList[this.CurrentCompanyIndustry].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
this.formData.companyType = this.CompanyTypeList[this.CurrentCompanyType].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) {
this.imgList = []
this.formData.companyCertificate = ""
console.log('ceshiImgDelete', e);
},
ceshiImgDelete1(e, num) {
this.imgList1 = []
this.formData.companyCertificate = ""
console.log('ceshiImgDelete', e);
},
ceshiUploadFail(err) {
//上传失败
console.log('err', err);
},
}
}
</script>
<style>
</style>