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-cpt-vue/src/views/purchase/company/supCompanyAduditDialog.vue

865 lines
25 KiB
Vue

<template>
<div>
<el-form
:model="inputQuery"
:rules="rules"
ref="inputQuery"
label-width="100px"
>
<el-card class="el-card" style="margin-top: -25px">
<div style="display: flex;">
<el-button v-if="editType==2" type="primary" size="mini" icon="search" @click="onPassSubmit"></el-button>
<el-button v-if="editType==2" type="primary" size="mini" @click="onRejectSubmit"></el-button>
<el-button v-if="editType==1 && auditType!=1" type="primary" size="mini" icon="search"
@click="printSupCertAll">打印
</el-button>
</div>
<el-row :gutter="20" class="el-row" type="flex" style="margin-top: 20px">
<el-col :span="10" class="el-col">
<el-form-item label="企业名称:" label-width="150px" prop="companyName">
<el-input
size="small"
splaceholder="请输入内容"
disabled
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="请输入内容" disabled
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" disabled
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" disabled
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="请输入内容" disabled
v-model="inputQuery.contacts"
></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="请输入内容" disabled
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="请输入内容" disabled
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="请输入内容" disabled
v-model="inputQuery.email"
></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="roleId">
<el-select v-model="inputQuery.roleId" placeholder="请选择角色" style="width: 90%" clearable>
<el-option
v-for="item in roleList"
:key="item.roleId"
:label="item.roleName"
:value="item.roleId">
<span style="float: left">{{ item.roleName }}</span>
</el-option>
</el-select>
</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="addCert"-->
<!-- style="text-align:right"-->
<!-- >添加电子档-->
<!-- </el-button-->
<!-- >-->
</div>
<el-table v-loading="certLoading" :data="certList" ref="certTable" style="width: 100%" border
highlight-current-row>
<el-table-column type="selection" width="55"></el-table-column>
<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" width="180" show-overflow-tooltip></el-table-column>
<el-table-column label="生效期" prop="validDate"></el-table-column>
<el-table-column label="失效期" prop="expireDate"></el-table-column>
<el-table-column label="证书状态" prop="checkStatus">
<template slot-scope="scope">
{{ supStatus[scope.row.checkStatus] }}
</template>
</el-table-column>
<el-table-column label="确认状态" prop="status" width="120">
<template slot-scope="scope">
<el-tag :type="(scope.row.status) | statusFilterType">
{{ checkFlag[scope.row.status] }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="备注" prop="remark"></el-table-column>
<!-- <el-table-column label="确认说明" prop="auditComment" show-overflow-tooltip></el-table-column>-->
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="editType==1 && auditType!=1" type="text" size="small"
@click.native="printSupCert(scope.row)">打印
</el-button>
<el-button type="text" size="small" v-if="editType==2" @click.native="auditCert(scope.row)"></el-button>
<el-button type="text" size="small" v-if="scope.row.auditStatus==1" @click.native="revoke(scope.row)">
撤回
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-size="certQuery.limit"
@current-change="certHandleCurrentChange"
layout="prev, pager, next"
:total="certTotal"
>
</el-pagination>
</el-card>
</el-form>
<el-dialog width="60%" :visible.sync="certAuditVisible" append-to-body title="配送企业资质证书确认">
<el-form :model="currentAudit" label-width="120px">
<el-row>
<el-col :span="11">
<el-form-item label="证书名称:" prop="name">
<el-input v-model="currentAudit.name" auto-complete="off"
disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="证书编号:" prop="code">
<el-input v-model="currentAudit.code" auto-complete="off"
disabled
></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="生效期:" prop="validDate">
<el-date-picker
v-model="currentAudit.validDate"
type="date"
disabled
value-format="yyyy-MM-dd"
style="width: 100%"
placeholder="请选择生效期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="失效期:" prop="expireDate">
<el-date-picker
v-model="currentAudit.expireDate"
type="date"
disabled
value-format="yyyy-MM-dd"
style="width: 100%"
placeholder="请选择失效期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="证书状态:" prop="checkStatus">
<el-select v-model="currentAudit.checkStatus" :disabled="isOpen!=1" style="width: 100%">
<el-option label="失效" :value=0></el-option>
<el-option label="有效" :value=1></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label="确认状态:" prop="status">
<el-select v-model="status" :disabled="isOpen==1" style="width: 100%">
<el-option label="符合" :value="1"></el-option>
<el-option label="不符合" :value="2"></el-option>
<el-option label="未确认" :value="6"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="11">
<el-form-item label="证书文件:">
<el-button type="primary" size="mini" @click.native="showImgViewer(currentAudit)">证书预览</el-button>
<el-image-viewer v-if="imgViewerVisible" style="z-index:9999" :on-close="closeImgViewer"
:url-list="imgList"/>
</el-form-item>
</el-col>
</el-row>
<el-row style="margin-top: 12px">
<el-col :span="22">
<el-form-item label="结果说明:">
<el-input type="textarea" :disabled="isOpen==1" v-model="currentAudit.auditComment" autocomplete="off"
autosize></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirm"></el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
modifyCompany,
auditCompany,
printSupCert,
verifyTemplateFile,
getRoId,
previewImage
} from '../../../api/purchase/supCompany'
import {
provinceAndCityData,
regionData,
provinceAndCityDataPlus,
regionDataPlus,
CodeToText,
TextToCode,
} from "element-china-area-data";
import {filterCompanyCert, deleteCompanyCert, auditSupCert, revokeSupCert} from "../../../api/purchase/companyCert";
import draggable from "vuedraggable";
import {customerlist} from '@/api/system/role'
import store from '@/store'
import ElImageViewer from "element-ui/packages/image/src/image-viewer"
export default {
name: "supCompanyEdit",
props: {
closeDialog: {
type: Function,
required: true,
},
inputQuery: {
type: Object,
required: true,
},
editType: {//1查询页面2:审核页面,
type: Object,
required: true,
},
auditType: {
type: Object,
required: true
}
},
data() {
return {
BASE_URL: process.env.VUE_APP_BASE_API,
headers: {},
imgViewerVisible: false,
imgList: [],
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: {
page: 1,
limit: 20
},
certList: [],
roleList: [],
certTotal: 0,
certLoading: false,
addCertVisible: false,
salesmanQuery: {
name: "",
page: 1,
limit: 20
},
salesmanList: [],
salesmanTotal: 0,
salesmanLoading: false,
addSalesmanVisible: false,
certTypeMap: {
1: '身份证'
},
status: null,
selectLocalVisible: false,
productQuery: {
ylqxzcrbarmc: "",
cpmctymc: "",
ggxh: "",
page: 1,
limit: 20
},
productList: [],
productTotal: 0,
productLoading: false,
uuid: null,
companyApplyUpdateVisible: false,
isOpen: false,
companyEditDisabled: true,
companyEditButtonStr: "编辑",
checkFlag: {
0: "草稿",
1: "已确认",
2: "已拒绝",
3: "变更未确认",
6: "未确认",
},
checkSupFlage: {
0: "草稿",
1: "已审核",
2: "已拒绝",
3: "变更未审核",
6: "未审核",
},
supStatus: {
1: "有效",
0: "失效",
},
certAuditVisible: false,
currentAudit: {},
};
},
created() {
this.getRoIds();
this.getCompanyCertList();
this.customerlist();
this.selectedOptions = this.inputQuery.areaCode.split(",");
},
components: {
draggable,
ElImageViewer
},
methods: {
onPassSubmit(val) {
this.inputQuery.auditStatus = 1;
this.$confirm("是否审核通过?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.loading = true;
auditCompany(this.inputQuery).then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeDialog();
} else {
this.$message.error(response.message);
}
});
}).catch(() => {
});
},
onRejectSubmit() {
this.$prompt('请输入结果说明', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({value}) => {
this.inputQuery.auditComment = value;
this.inputQuery.auditStatus = 2;
auditCompany(this.inputQuery).then(response => {
this.loading = false;
if (response.code === 20000) {
this.$message.success("提交成功");
this.closeDialog();
} else {
this.$message.error(response.message);
}
});
}).catch(() => {
});
}
,
isAssetTypeAnImage(ext) {
return [
'png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'psd', 'svg', 'tiff'].indexOf(ext.toLowerCase()) !== -1;
},
showImgViewer(row) {
this.certFileUrl = this.BASE_URL + "/udiwms/image/register/file/getImage?type=image2&name=";
this.imgList = [];
previewImage({imageUrl: row.filePath, certFileUrl: this.certFileUrl}).then(response => {
if (response.code === 20000) {
this.imgList = response.data;
}
});
this.imgViewerVisible = true;
const m = (e) => {
e.preventDefault()
};
document.body.style.overflow = 'hidden';
document.addEventListener("touchmove", m, false); // 禁止页面滑动
},
closeImgViewer() {
this.imgViewerVisible = false;
const m = (e) => {
e.preventDefault()
};
document.body.style.overflow = 'auto';
document.removeEventListener("touchmove", m, true);
},
cancelDialog() {
this.closeDialog();
}
,
closeLocalDialog() {
this.addCertVisible = false;
this.getCompanyCertList();
}
,
handleChange(value) {
this.inputQuery.area =
CodeToText[value[0]] + CodeToText[value[1]] + CodeToText[value[2]];
this.inputQuery.areaCode = value.toString();
}
,
addCert(index, row) {
this.inputQuery.id = '';
if (this.$isNotBlank(row) && this.$isNotBlank(row.id)) {
this.inputQuery.id = row.id;
this.inputQuery.formData = row;
}
this.addCertVisible = true;
}
,
toViewCompanyCert(row) {
this.certFileUrl = this.BASE_URL + "/udiwms/image/register/file/getImage?type=image2&name=";
window.open(this.certFileUrl + row.filePath);
},
auditCert(row) {
this.certAuditVisible = true;
this.currentAudit = row;
this.isOpen = this.currentAudit.auditStatus;
this.status = this.currentAudit.auditStatus;
},
passAuditCert() {
this.currentAudit.auditStatus = 1;
this.auditSupCert(this.currentAudit);
},
rejectAuditCert() {
this.currentAudit.auditStatus = 2;
this.auditSupCert(this.currentAudit);
},
notAuditCert() {
this.currentAudit.auditStatus = 6;
this.auditSupCert(this.currentAudit);
},
auditSupCert(inputQuery) {
auditSupCert(inputQuery).then(response => {
this.loading = false;
if (response.code === 20000) {
this.getCompanyCertList();
this.certAuditVisible = false;
} else {
this.$message.error(response.message);
}
});
},
rejectInfo(row) {
this.$confirm(row.auditComment, "审核备注", {
confirmButtonText: "确定",
type: "warning",
showCancelButton: false,
})
.then(() => {
});
},
certHandleCurrentChange(val) {
this.certQuery.page = val;
this.getCompanyCertList();
}
,
getRoIds() {
let params = {companyId: this.inputQuery.id}
getRoId(params).then((res) => {
this.inputQuery.roleId = res.data.roleId;
})
},
getCompanyCertList() {
this.certLoading = true;
this.certQuery.customerId = this.inputQuery.customerId;
this.certQuery.type = 1;
// this.certQuery.auditStatus = 25;
this.certQuery.businessId=this.inputQuery.id;
filterCompanyCert(this.certQuery)
.then((response) => {
this.certLoading = false;
this.certList = response.data.list || [];
this.certTotal = response.data.total
})
.catch(() => {
this.certLoading = false;
this.certList = [];
});
}
,
printSupCert(row) {
var selectIds = [row.id];
let query = {id: 1};
this.loading = true;
verifyTemplateFile(query).then((res) => {
if (res.code === 20000) {
let printParams = {
templateId: res.data,
ids: selectIds,
customerId: row.customerId
};
printSupCert(printParams).then((response) => {
//将pdf文件转换为url。
const binaryData = [];
binaryData.push(response);
//获取blob链接。
let url = window.URL.createObjectURL(
new Blob(binaryData, {type: "application/pdf"})
);
this.loading = false;
window.open(url);//打开新标签页预览pdf。
})
} else {
this.loading = false;
this.$message.error(res.message);
}
}).catch((error) => {
this.loading = false;
this.$message.error(error.message);
})
},
printSupCertAll() {
var certLists = this.$refs.certTable.selection;
var selectIds = [];
certLists.forEach(item => {
selectIds.push(item.id);
})
if (selectIds.length == 0) {
this.$message.error("请先选择打印的证书!");
return
}
let query = {id: 1};
this.loading = true;
verifyTemplateFile(query).then((res) => {
if (res.code === 20000) {
let printParams = {
templateId: res.data,
ids: selectIds,
customerId: this.inputQuery.customerId
};
printSupCert(printParams).then((response) => {
//将pdf文件转换为url。
const binaryData = [];
binaryData.push(response);
//获取blob链接。
let url = window.URL.createObjectURL(
new Blob(binaryData, {type: "application/pdf"})
);
this.loading = false;
window.open(url);//打开新标签页预览pdf。
})
} else {
this.loading = false;
this.$message.error(res.message);
}
}).catch((error) => {
this.loading = false;
this.$message.error(error.message);
})
},
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(() => {
});
}
,
customerlist() {
customerlist().then((response) => {
if (response.code === 20000) {
this.roleList = response.data;
}
})
.catch(() => {
this.roleList = null;
});
},
confirm() {
if (this.status == null) {
this.$message.error("请选择确认状态");
return;
}
if (this.status == 1) {
this.passAuditCert();
} else if (this.status == 2) {
this.rejectAuditCert();
} else if (this.status == 6) {
this.notAuditCert();
}
},
revoke(inputQuery) {
this.$confirm("是否确定撤回证书状态至未确认?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
this.certLoading = true;
inputQuery.auditStatus = 6
revokeSupCert(inputQuery)
.then((response) => {
this.certLoading = false;
if (response.code === 20000) {
this.getCompanyCertList();
} else {
this.$message.error(response.message);
}
})
.catch(() => {
this.certLoading = false;
});
}).catch(() => {
});
},
cancel() {
this.certAuditVisible = false;
},
},
filters: {
statusFilterType(status) {
const statusMap = {
0: "warning",
1: "success",
2: "danger",
6: "warning",
};
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>