
template
<el-table-column slot="procure_data" label="采购资料" fixed="right" width="100">
<template slot-scope="scope">
<el-popover trigger="click" :ref="`popover-${scope.row.apply_code}`" @show="open_Shehe(scope.row)" placement="bottom">
<div v-for="(item, index) in procure_Arr" :key="item.value" style="display: flex; align-items: center; justify-content: space-between; height: 50px; width: 150px">
<span :class="[
//这里是控制已上传和未上传的状态显示(绿色圆圈)
item.apply_order_url
? 'activeClass' //activeClass这个类名是绿色圆圈(已上传)
: item.contract_url
? 'activeClass'
: item.invoice_url
? 'activeClass'
: item.customers_url
? 'activeClass'
: 'weishangchuan', //weishangchuan这个类名是灰色圆圈(未上传)
]"
></span>
<span @click="downloadUrl(item)" style="cursor: pointer"
:class="{
//fontColo、fontColo1、fontColo2、fontColo3类名的样式都是同一个,样式为蓝色字体加下划线、如果已经上传,则判断url是否存在,存在就显示这个样式,不存在说明没有上传就不显示。
fontColo: item.apply_order_url,
fontColo1: item.contract_url,
fontColo2: item.invoice_url,
fontColo3: item.customers_url
}">{{ item.label }}</span>
<el-upload
ref="upload"
action="#"
:show-file-list="false"
:before-upload="
(res) => {
return beforeImgUpload(res, index);
}"
accept=".doc,.docx,.png,.jpeg,.xls,.xlsx,.pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document"
>
<svg-icon @click="UploadApplication(item, scope.row, $event)" icon-class="shangchuan_1" style="transform: scale(1.5); color: dodgerblue" />
</el-upload>
</div>
<div slot="reference" style="display: flex; justify-content: space-between">
<span style="color: red; cursor: pointer">{{ scope.row.procure_data }}</span>
</div>
</el-popover>
</template>
</el-table-column>
data
inputProcurement_Information: {
apply_code: "",
apply_order_url: "",
contract_url: "",
invoice_url: "",
customers_url: "",
id: "",
},
procure_Arr: [
{
value: "0",
label: "申请单",
apply_order_url: "",
},
{
value: "1",
label: "采购合同",
contract_url: "",
},
{
value: "2",
label: "发票",
invoice_url: "",
},
{
value: "3",
label: "客户资料",
customers_url: "",
},
],
procure_apply_code:""
methods
async open_Shehe(row) {
this.inputProcurement_Information.apply_code = row.apply_code;
const res = await getProcureUrl({ apply_code: row.apply_code });
console.log("获取最新资料列表", res);
if (res.status === 200) {
this.procure_Arr[0].apply_order_url = res.data[0]?.apply_order_url;
this.procure_Arr[1].contract_url = res.data[0]?.contract_url;
this.procure_Arr[2].invoice_url = res.data[0]?.invoice_url;
this.procure_Arr[3].customers_url = res.data[0]?.customers_url;
} else {
this.procure_Arr = [
{
value: "0",
label: "xxxxxx资料",
apply_order_url: "",
},
{
value: "1",
label: "xxxxxx资料",
contract_url: "",
},
{
value: "2",
label: "xxxxx资料",
invoice_url: "",
},
{
value: "3",
label: "xxxx资料",
customers_url: "",
},
];
}
},
UploadApplication(item, row) {
this.procure_apply_code = row.apply_code;
},
async beforeImgUpload(file, index) {
let formData = new FormData();
formData.append("image", file);
formData.append("apply_code", this.procure_apply_code);
const res = await procureDevice(formData, this.onProcess);
console.log(res.data[0].url);
if (!res.data[0].url) return this.$message.error(res.data[0].msg);
switch (index) {
case 0:
this.inputProcurement_Information.apply_order_url = res.data[0].url;
break;
case 1:
this.inputProcurement_Information.contract_url = res.data[0].url;
break;
case 2:
this.inputProcurement_Information.invoice_url = res.data[0].url;
break;
case 3:
this.inputProcurement_Information.customers_url = res.data[0].url;
break;
default:
break;
}
this.procureUrl();
if (res.status !== 200) {
this.$message.error("发布失败!");
}
},
async procureUrl() {
const res = await procureUrl(this.inputProcurement_Information);
console.log("录入", res);
if (res.status === 200) {
this.init();
this.$message.success("成功");
}
},
api
export const procureDevice = (data, callback1) => {
return request({
url: "ApplyPurch/procureDevice",
method: "post",
data,
headers: {
"Content-Type": "multipart/form-data",
},
onUploadProgress: function (progressEvent) {
if (progressEvent.lengthComputable) {
callback1(progressEvent);
}
},
})
}