You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udi-spms-vue/src/views/supplier/company/basicCompany.vue

686 lines
25 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<el-form
:model="inputQuery"
:rules="rules"
ref="inputQuery"
label-width="100px"
>
<el-card class="el-card">
<div>
<span>
本企业信息审核状态
<el-tag :type="(inputQuery.auditStatus) | statusFilterType">
{{ checkFlag[inputQuery.auditStatus] }}
</el-tag>
</span>
</div>
<div style="float:right ;margin-top: -20px">
<el-button
type="primary"
size="mini"
icon="search"
v-if="inputQuery.auditStatus == 0"
@click="onModifySubmit(0)"
>草稿保存
</el-button
>
<el-button
type="primary"
size="mini"
icon="search"
v-if="inputQuery.auditStatus == 0|| inputQuery.auditStatus == 6"
@click="onModifySubmit(6)"
>提交审核
</el-button
>
<el-button
type="primary"
size="mini"
icon="search"
v-if="inputQuery.auditStatus == 3|| inputQuery.auditStatus == 1|| inputQuery.auditStatus == 2"
@click="onModifySubmit(3)"
>提交审核
</el-button
>
</div>
<el-row :gutter="20" class="el-row" type="flex" style="margin-top: 25px">
<el-col :span="10" class="el-col">
<el-form-item label="企业名称:" label-width="150px" prop="companyName">
<el-input
size="small"
splaceholder="请输入内容"
v-model="inputQuery.companyName"
></el-input>
</el-form-item>
</el-col>
<el-col :span="10" class="el-col">
<el-form-item label="统一社会信用代码:" label-width="150px" prop="creditNum">
<el-input
size="small"
splaceholder="请输入内容"
v-model="inputQuery.creditNum"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex" style="margin-top: 0px">
<el-col :span="10" class="el-col">
<el-form-item label="企业类别:" label-width="150px" prop="classes">
<el-select
size="small"
v-model="inputQuery.classes"
placeholder="企业类别"
style="width: 100%;"
>
<el-option v-if="classesDisplay" label="医院" value="1"></el-option>
<el-option label="经营企业" value="2"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="10" class="el-col">
<el-form-item label="所属地区:" label-width="150px" prop="area">
<el-cascader
size="small"
:options="options"
v-model="selectedOptions"
placeholder="请选择所属地区"
style="width: 100%"
@change="handleChange"
>
</el-cascader>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex" style="margin-top: 0px">
<el-col :span="10" class="el-col">
<el-form-item label="联系人:" label-width="150px" prop="contacts">
<el-input
size="small"
placeholder="请输入内容"
v-model="inputQuery.contacts"
@blur="inputQuery.contacts=$event.target.value.trim()"
></el-input>
</el-form-item>
</el-col>
<el-col :span="10" class="el-col">
<el-form-item label="详细地址:" label-width="150px" prop="detailAddr">
<el-input
size="small"
placeholder="请输入内容"
v-model="inputQuery.detailAddr"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="el-row" type="flex" style="margin-top: 0px">
<el-col :span="10" class="el-col">
<el-form-item label="联系电话:" label-width="150px" prop="mobile">
<el-input
size="small"
placeholder="请输入内容"
v-model="inputQuery.mobile"
></el-input>
</el-form-item>
</el-col>
<el-col :span="10" class="el-col">
<el-form-item label="邮箱:" label-width="150px" prop="email">
<el-input
size="small"
placeholder="请输入内容"
v-model="inputQuery.email"
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" v-show="inputQuery.auditStatus==2" class="el-row" type="flex" style="margin-top: 0px">
<el-col :span="10" class="el-col">
<el-form-item label="驳回意见:" label-width="150px" prop="mobile">
<el-input size="small" v-model="inputQuery.auditComment" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
</el-card>
<el-card>
<div style="float: right;text-align: right;margin-bottom: 8px;">
<el-button type="primary" size="mini" icon="search" @click="selectCert"
style="text-align:right"
>选入资质证书
</el-button
>
<el-button type="primary" size="mini" icon="search" @click="addCert()"
style="text-align:right"
>添加资质证书
</el-button
>
</div>
<el-table v-loading="certLoading" :data="certList" style="width: 100%" border highlight-current-row>
<el-table-column type="index" label="序号" width="50"></el-table-column>
<el-table-column label="证书名称" prop="name"></el-table-column>
<el-table-column label="证书编号" prop="code"></el-table-column>
<el-table-column label="有效期" prop="vailDate"></el-table-column>
<el-table-column label="失效期" prop="expireDate"></el-table-column>
<el-table-column label="审核状态" prop="auditStatus" width="120">
<template slot-scope="scope">
<el-tag :type="(scope.row.auditStatus) | statusFilterType">
{{ checkFlag[scope.row.auditStatus] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="状态" prop="status" width="120">
<template slot-scope="scope">
<el-tag :type="(scope.row.status) | statusType">
{{ statusFlag[scope.row.status] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column>
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-button type="text" size="small" @click.native="addCert(scope.row)">编辑</el-button>
<el-button type="text" size="small" @click.native="toViewCompanyCert(scope.row)">预览</el-button>
<el-button type="text" size="small"
v-if="scope.row.auditStatus == 0 || scope.row.auditStatus == 2|| scope.row.auditStatus == 6" @click.native="deleteCompanyCert(scope.row)">删除</el-button>
<el-button type="text" size="small" v-if="scope.row.auditStatus == 2" @click.native="explainCompanyCert(scope.row)">说明</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="certTotal>0"
:total="certTotal"
:limit.sync="certQuery.limit"
:page.sync="certQuery.page"
@pagination="certHandleCurrentChange"
></pagination>
</el-card>
<el-dialog
:title="formMap[formName]"
:visible.sync="addCertVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="70%"
v-if="addCertVisible"
append-to-body
@close='closeLocalDialog'
>
<companyAddCert
:closeDialog="closeLocalDialog"
:inputQuery="inputQuery"
:addType="addType"
:editTye="editTye"
></companyAddCert>
</el-dialog>
<el-dialog
title="选入资质证书"
:visible.sync="selectCertVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="70%"
v-if="selectCertVisible"
append-to-body
@close='closeLocalDialog'
>
<supCertSetSelectDialog
:certType="certType"
:closeDialog="closeLocalDialog"
></supCertSetSelectDialog>
</el-dialog>
<!-- <el-dialog
:title="拒绝原因"
:visible.sync="explainCertVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="40%"
v-if="explainCertVisible"
append-to-body
@close='closeLocalDialog'
>
<el-form-item label="拒绝原因:"><el-input v-model="explainMsg" placeholder="请输入内容"></el-input></el-form-item>
</el-dialog> -->
</el-form>
</div>
</template>
<script>
import {modifyCompany, addCompany, getSubCompany} from "@/api/supplier/supCompany";
import store from "@/store/index";
import { regionDataPlus, CodeToText, } from "element-china-area-data";
import {filterCompanyCert, deleteCompanyCert, updateCompanyCert} from "@/api/purchase/companyCert";
import companyAddCert from "@/views/purchase/cert/supCertAddDialog";
import supCertSetSelectDialog from "@/views/purchase/cert/supCertSetSelectDialog";
import draggable from "vuedraggable";
import {getCompany} from "@/api/supplier/company";
export default {
name: "supCompanyEdit",
data() {
return {
BASE_URL: process.env.VUE_APP_BASE_API,
inputQuery: {},
headers: {},
classesDisplay: false,
selectedOptions: [],
options: regionDataPlus,
rules: {
companyName: [
{
required: true,
message: "请输入企业名称",
trigger: "blur"
}
],
creditNum: [
{
required: true,
message: "请输入统一社会信用代码",
trigger: "blur"
}
],
classes: [
{
required: true,
message: "请选择企业类别",
trigger: "change"
}
],
area: [
{
required: true,
message: "请选择所属地区",
trigger: "change"
}
],
detailAddr: [
{
required: true,
message: "请输入详细地址",
trigger: "change"
}
],
contacts: [
{
required: true,
message: "请输入联系人",
trigger: "change"
}
],
mobile: [
{
required: true,
message: "请输入联系电话",
trigger: "change"
}
],
email: [
{
required: true,
message: "请输入邮箱",
trigger: "change"
}
],
updateCause: [
{
required: true,
message: "请输入变更原因",
trigger: "change"
}
],
},
uploadUrl: "",
fileUrl: "",
certFileUrl: "",
url: 'http://127.0.0.1:9996/udiwms/image/register/file/getImage?type=image1&name=t11111.jpg',
certQuery: {
type: 1,
page: 1,
limit: 20
},
certList: [],
certTotal: 0,
certLoading: false,
addCertVisible: false,
certType: 1,
salesmanQuery: {
name: "",
page: 1,
limit: 20
},
salesmanList: [],
salesmanTotal: 0,
salesmanLoading: false,
addSalesmanVisible: false,
certTypeMap: {
1: '身份证'
},
selectLocalVisible: false,
productQuery: {
ylqxzcrbarmc: "",
cpmctymc: "",
ggxh: "",
page: 1,
limit: 20
},
productList: [],
productTotal: 0,
productLoading: false,
uuid: null,
companyApplyUpdateVisible: false,
explainCertVisible:false,
explainMsg:'',
companyEditDisabled: true,
companyEditButtonStr: "编辑",
addType: "1", //证书类型1:供应商2.生产企业3.产品品种
editTye: 1,
checkFlag: {
0: "未认证",
1: "已通过",
2: "已拒绝",
3: "变更未审核",
6: "未审核",
},
statusFlag: {
0: "有效",
1: "失效",
},
formName: 1,
formMap: {
1: "新增本企业资质证书",
2: "编辑本企业资质证书",
},
selectCertVisible: false,
};
},
created() {
this.getCompanyInfo();
this.headers = {
ADMIN_ID: store.getters.adminId,
ADMIN_TOKEN: store.getters.token,
};
},
components: {
draggable, companyAddCert, supCertSetSelectDialog
},
methods: {
getCompanyInfo() {
let query = {
customerId: this.$store.getters.customerId
}
getCompany(query)
.then((response) => {
this.inputQuery = response.data;
if(this.inputQuery.auditStatus ==null){
this.inputQuery.auditStatus=0;
}
this.getCompanyCertList();
this.selectedOptions = this.inputQuery.areaCode.split(",");
})
.catch(() => {
});
},
onModifySubmit(val) {
var status= this.inputQuery.auditStatus;
if (this.editType == 0) { //新增保存
this.$refs["inputQuery"].validate(valid => {
if (valid) {
this.$confirm("是否确定提交保存?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
this.inputQuery.auditStatus = val;
addCompany(this.inputQuery).then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeDialog();
} else {
this.$message.error(response.message);
this.inputQuery.auditStatus=status;
}
});
}).catch(() => {
});
} else {
return false;
}
});
} else { //编辑保存
if(val==0 || val==6) {
var str = "是否确定提交保存?";
} else {
var str = "企业信息已通过审核,是否确认重新提交审核?";
}
this.$refs["inputQuery"].validate(valid => {
if (valid) {
this.$confirm(str, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
this.inputQuery.auditStatus = val;
modifyCompany(this.inputQuery).then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeDialog();
} else {
this.$message.error(response.message);
this.inputQuery.auditStatus=status;
}
});
}).catch(() => {
});
} else {
return false;
}
});
}
},
onAuditSubmit() {
},
disableCert(row, status) {
row.status = status;
updateCompanyCert(row).then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("更新成功!");
this.getCompanyCertList();
} else {
this.$message.error(response.message);
}
});
},
cancelDialog() {
this.closeDialog();
},
closeLocalDialog() {
this.addCertVisible = false;
this.selectCertVisible = false;
this.getCompanyCertList();
},
handleChange(value) {
this.inputQuery.area =
CodeToText[value[0]] + CodeToText[value[1]] + CodeToText[value[2]];
this.inputQuery.areaCode = value.toString();
},
addCert(row) {
if (this.$isNotBlank(row)) {
this.formName = 2
this.inputQuery.formData = row;
this.editTye = 2;
} else {
this.formName = 1;
this.inputQuery.formData={};
this.editTye = 1;
}
this.addCertVisible = true;
},
selectCert() {
this.selectCertVisible = true;
},
toViewCompanyCert(row) {
this.certFileUrl = this.BASE_URL + "/udiwms/image/register/file/getImage?type=image2&name=";
window.open(this.certFileUrl + row.filePath);
},
certHandleCurrentChange(val) {
this.certQuery.page = val.page;
this.getCompanyCertList();
},
getCompanyCertList() {
this.certLoading = true;
this.certQuery.customerId = this.inputQuery.customerId;
filterCompanyCert(this.certQuery)
.then((response) => {
this.certLoading = false;
this.certList = response.data.list || [];
this.certTotal=response.data.total;
})
.catch(() => {
this.certLoading = false;
this.certList = [];
});
},
explainCompanyCert(row) {
this.$confirm(row.auditComment, "拒绝原因", {
confirmButtonText: "确定",
type: "warning",
showCancelButton: false,
}).then(() => {
});
},
deleteCompanyCert(row) {
this.$confirm("是否删除?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.certLoading = true;
let tquery = {
id: row.id,
filePath: row.filePath,
};
deleteCompanyCert(tquery)
.then((response) => {
this.certLoading = false;
if (response.code === 20000) {
this.getCompanyCertList();
this.$message({
type: "success",
message: "删除成功!",
});
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.certLoading = false;
});
}).catch(() => {
});
},
},
filters: {
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "success",
2: "danger",
3: "warning",
6: "warning",
};
return statusMap[status];
},
statusType(status) {
const statusMap = {
0: "success",
1: "danger",
};
return statusMap[status];
},
},
};
</script>
<style>
.itemTag {
float: left;
text-align: left;
margin-top: 10px;
width: 120px;
}
.text {
width: 100%;
font-size: 13px;
font-family: "Microsoft YaHei";
}
.el-card {
margin-right: 20px;
margin-top: 15px;
/*transition: all .5s;*/
}
.el-row {
display: flex;
flex-wrap: wrap;
}
.el-col {
border-radius: 4px;
flex-wrap: wrap;
}
</style>