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

2 years ago
<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: "未认证",
2 years ago
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 { //编辑保存
2 years ago
if(val==0 || val==6) {
var str = "是否确定提交保存?";
} else {
2 years ago
var str = "企业信息已通过审核,是否确认重新提交审核?";
}
2 years ago
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>