Files
2026-10-08 18:14:56 +08:00

334 lines
12 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>
<el-card shadow="never">
<p class="text-main font-bold mb-20">加工商状态: {{
(isNaN(factoryStatus) || factoryStatus === -1) ? '未提交审核' : (factoryStatus === 0 ? '审核中' : (factoryStatus === 1 ? '审核通过' : `审核不通过:${refuseReason}`))
}}</p>
<p class="text-main font-bold mb-20" v-if="factoryStatus === 0">
温馨提示:审核中不能修改内容,如有数据变更审核通过后再次修改提交。
</p>
<el-form ref="form" :model="form" label-width="140px">
<el-divider>
<span class="text-50 text-main font-bold">工厂信息</span>
</el-divider>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="成立年限" required>
<el-input v-model="form.year" placeholder="请输入成立年限" type="number"
:readonly="factoryStatus === 0">
<template #append>年</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="近2年产值" required>
<el-input v-model="form.yearsIncome" placeholder="请输入近2年产值" type="number"
:readonly="factoryStatus === 0">
<template #append>万元</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" class="mt-20">
<el-col :span="12">
<el-form-item label="员工人数" required>
<el-input v-model="form.employeeNum" placeholder="请输入员工人数" type="number"
:readonly="factoryStatus === 0">
<template #append>人</template>
</el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="流水线数量" required>
<el-input v-model="form.flowNum" placeholder="请输入流水线数量" type="number"
:readonly="factoryStatus === 0">
<template #append>条</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="10" class="mt-20">
<el-col :span="12">
<el-form-item label="厂房归属" required>
<el-input v-model="form.blongTo" placeholder="请输入厂房归属" :readonly="factoryStatus === 0"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="厂房面积" required>
<el-input v-model="form.size" placeholder="请输入厂房面积" :readonly="factoryStatus === 0">
<template #append>平方米</template>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="所在地" required>
<el-cascader :options="options" :props="{label: 'name', value: 'code'}" v-model="addressRegion"
clearable :disabled="factoryStatus === 0"/>
</el-form-item>
<el-form-item label="主营类别" required>
<el-select multiple v-model="form.mainSpotCategory" style="width: 100%">
<el-option v-for="(item, index) in goodsCate" :key="index" :value="item.name">{{ item.name }}</el-option>
</el-select>
</el-form-item>
<el-form-item label="主营工艺和业务范围">
<el-input v-model="form.mainProcess" placeholder="请输入主营工艺和业务范围"
:readonly="factoryStatus === 0"/>
</el-form-item>
<el-form-item label="服务信息">
<el-input v-model="form.serviceInfo" placeholder="请输入服务信息" type="textarea"
:readonly="factoryStatus === 0"/>
</el-form-item>
<el-form-item label="视频">
<vk-data-upload v-model="form.video" list-type="text"
accept="video/*">
</vk-data-upload>
</el-form-item>
<el-divider>
<span class="text-50 text-main font-bold">设备信息</span>
</el-divider>
<el-row :gutter="10" class="p-20 bg-gray-light">
<el-col :span="3">
<p class="text-center">设备名称</p>
</el-col>
<el-col :span="3">
<p class="text-center">设备数量({{ deviceNum }}台)</p>
</el-col>
<el-col :span="3">
<p class="text-center">设备来源</p>
</el-col>
<el-col :span="3">
<p class="text-center">设备类型</p>
</el-col>
<el-col :span="3">
<p class="text-center">品牌</p>
</el-col>
<el-col :span="3">
<p class="text-center">型号</p>
</el-col>
<el-col :span="3">
<p class="text-center">投产年限</p>
</el-col>
<el-col :span="3">
<p class="text-center">特点描述</p>
</el-col>
</el-row>
<el-row :gutter="10" class="p-20 bg-gray-light pos-r" v-for="(item, index) in form.deviceList" :key="index">
<el-col :span="3">
<el-input v-model="form.deviceList[index].name" placeholder="设备名称"
:readonly="factoryStatus === 0"/>
</el-col>
<el-col :span="3">
<el-input v-model="form.deviceList[index].num" placeholder="设备数量" type="number"
:readonly="factoryStatus === 0"/>
</el-col>
<el-col :span="3">
<el-select v-model="form.deviceList[index].source" placeholder="请选择设备来源"
:disabled="factoryStatus === 0">
<el-option v-for="item in deviceSource" :key="item" :label="item" :value="item"/>
</el-select>
</el-col>
<el-col :span="3">
<el-select v-model="form.deviceList[index].type" placeholder="请选择设备类型"
:disabled="factoryStatus === 0">
<el-option v-for="item in deviceType" :key="item" :label="item" :value="item"/>
</el-select>
</el-col>
<el-col :span="3">
<el-input v-model="form.deviceList[index].brand" placeholder="品牌"
:readonly="factoryStatus === 0"/>
</el-col>
<el-col :span="3">
<el-input v-model="form.deviceList[index].model" placeholder="型号"
:readonly="factoryStatus === 0"/>
</el-col>
<el-col :span="3">
<el-input v-model="form.deviceList[index].year" placeholder="投产年限" type="number"
:readonly="factoryStatus === 0"/>
</el-col>
<el-col :span="3">
<el-input v-model="form.deviceList[index].desc" placeholder="特点描述"
:readonly="factoryStatus === 0"/>
</el-col>
<i class="el-icon-remove pointer text-main text-40 pos-a" style="right: -10px; top: 20px"
@click="remove(index)" v-if="factoryStatus !== 0"/>
</el-row>
<div class="mt-20 text-center">
<el-button type="text" @click.native="addDevice" v-if="factoryStatus !== 0">添加设备</el-button>
</div>
<el-divider>
<span class="text-50 text-main font-bold">工厂实景</span>
</el-divider>
<vk-data-upload v-model="form.album" :limit="userLevel.factoryPicNum"
:disabled="factoryStatus === 0"></vk-data-upload>
<div class="mt-20 text-center">
<el-button type="primary" @click.native="submit" v-if="factoryStatus !== 0">提交</el-button>
</div>
</el-form>
</el-card>
</template>
<script>
import provinces from "@/uni_modules/vk-uview-ui/libs/address/provinces.json";
import citys from "@/uni_modules/vk-uview-ui/libs/address/citys.json";
export default {
name: "factory",
data() {
return {
form: {
year: null,
yearsIncome: null,
employeeNum: null,
flowNum: null,
blongTo: null,
size: null,
addressRegion: {
province: null,
city: null,
},
mainProcess: null,
serviceInfo: null,
video: '',
deviceList: [],
album: [],
mainSpotCategory: [],
},
options: [],
addressRegion: [],
deviceSource: ['国产', '进口'],
deviceType: ['生产设备', '维护设备'],
userLevel: {
factoryPicNum: 0
},
factoryStatus: parseInt(vk.getVuex('$user.userInfo.factoryStatus')),
refuseReason: '',
goodsCate: []
}
},
methods: {
addDevice() {
this.form.deviceList.push({
name: null,
num: null,
source: null,
type: null,
brand: null,
model: null,
year: null,
desc: null
})
},
getGoodsCate() {
vk.callFunction({
url: 'client/process/category/pub/getList',
success: (res) => {
this.goodsCate = res.data
}
});
},
remove(index) {
this.form.deviceList.splice(index, 1)
},
async getUserLevelInfo() {
const res = await vk.callFunction({
url: "client/userLevel/kh/getInfoByUser",
})
if (res) {
if (!res.data) {
this.$message({
type: 'error',
message: '请先完成认证'
})
setTimeout(() => {
this.$emit('done', 'fadada')
}, 1000)
return
}
this.userLevel.factoryPicNum = res.factoryPicNum
}
},
async submit() {
if (!this.form.year) return this.$message.error('请输入投产年限')
if (!this.form.yearsIncome) return this.$message.error('请输入年收入')
if (!this.form.employeeNum) return this.$message.error('请选输入员工人数')
if (!this.form.flowNum) return this.$message.error('请输入流水线数量')
if (!this.form.blongTo) return this.$message.error('请输入厂房归属')
if (!this.form.size) return this.$message.error('请输入厂房面积')
if (this.addressRegion.length === 0) return this.$message.error('请选择所在地')
if (this.form.deviceList.length === 0) return this.$message.error('请添加设备信息')
if (this.form.mainSpotCategory.length === 0) return this.$message.error('请选择主营类别')
// if (this.form.album.length === 0) return this.$message.error('请上传工厂实景图')
const province = provinces.find(item => item.code === this.addressRegion[0])
const city = province.children.find(item => item.code === this.addressRegion[1])
const addressRegion = {
province: {
code: province.code,
name: province.name,
},
city: {
code: city.code,
name: city.name,
}
}
await vk.callFunction({
url: "client/factory/kh/addUpdate",
data: {
year: this.form.year,
yearsIncome: this.form.yearsIncome,
employeeNum: this.form.employeeNum,
flowNum: this.form.flowNum,
blongTo: this.form.blongTo,
size: this.form.size,
addressRegion,
mainProcess: this.form.mainProcess,
serviceInfo: this.form.serviceInfo,
deviceList: this.form.deviceList,
album: this.form.album,
video: this.form.video,
mainSpotCategory: this.form.mainSpotCategory,
}
})
this.$message.success('提交成功')
this.factoryStatus = 0
},
async getInfo() {
const res = await vk.callFunction({
url: "client/factory/kh/getInfo",
})
if (res) {
for (let key in this.form) this.form[key] = res[key]
this.addressRegion = [res.addressRegion.province.code, res.addressRegion.city.code]
if (res.status === 2) this.refuseReason = res.refuseReason
}
}
},
mounted() {
this.options = provinces.map(item => {
item.children = [];
return item
})
this.options.forEach((province, index) => {
citys[index].forEach(city => {
this.options[index].children.push(city)
})
})
this.getGoodsCate()
this.getUserLevelInfo()
vk.userCenter.getCurrentUserInfo({
success: (data) => {
const factoryStatus = parseInt(data.userInfo.factoryStatus)
this.factoryStatus = (isNaN(factoryStatus) || factoryStatus === -1) ? -1 : factoryStatus
if (this.factoryStatus > -1) this.getInfo()
}
})
},
computed: {
deviceNum() {
let num = 0
this.form.deviceList.forEach(item => {
if (item.num && !isNaN(parseInt(item.num))) num += parseInt(item.num)
})
return num
}
}
}
</script>