|
|
@@ -7,82 +7,70 @@
|
|
|
:destroy-on-close="true"
|
|
|
>
|
|
|
<div class="edit-form-container" v-loading="loading">
|
|
|
- <el-form :model="drawerForm" :rules="drawerRules" ref="drawerFormRef" label-width="140px" label-position="right">
|
|
|
+ <el-form :model="drawerForm" :rules="drawerRules" ref="drawerFormRef" label-width="140px" label-position="left">
|
|
|
<div class="form-section">
|
|
|
<div class="section-title">基本信息</div>
|
|
|
- <el-row :gutter="20">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="项目名称" prop="projectName">
|
|
|
+ <el-input v-model="drawerForm.projectName" placeholder="请输入项目名称" maxlength="200" show-word-limit />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="归属公司" prop="companyNo">
|
|
|
- <el-select v-model="drawerForm.companyNo" style="width:100%" placeholder="请选择" filterable>
|
|
|
+ <el-select v-model="drawerForm.companyNo" style="width:100%" placeholder="请选择" filterable disabled>
|
|
|
<el-option v-for="item in options.company" :key="item.companyCode" :label="item.companyName" :value="item.companyCode" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
+ <el-col :span="16">
|
|
|
<el-form-item label="客户名称" prop="customName">
|
|
|
- <el-select
|
|
|
- v-model="drawerForm.customName"
|
|
|
- style="width:100%"
|
|
|
- placeholder="搜索客户"
|
|
|
- filterable
|
|
|
- clearable
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in computedCustomerOptions"
|
|
|
- :key="item.id || item.customerNo"
|
|
|
- :label="item.customerName || item.customName"
|
|
|
- :value="item.customerName || item.customName"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-input :model-value="drawerForm.customName ? ((drawerForm.customNo || drawerForm.customerNo || drawerForm.id || '') + '、' + drawerForm.customName) : ''" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="项目级别" prop="projectLevel">
|
|
|
- <el-select v-model="drawerForm.projectLevel" style="width:100%" placeholder="请选择">
|
|
|
- <el-option v-for="item in options.level" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="行业" prop="industryName">
|
|
|
+ <el-input :model-value="displayIndustryName" placeholder="无" disabled style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="项目类型" prop="businessType">
|
|
|
- <el-select v-model="drawerForm.businessType" style="width:100%" placeholder="请选择">
|
|
|
- <el-option v-for="item in options.type" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="部门" prop="deptName">
|
|
|
+ <el-input :model-value="displayDeptName" placeholder="无" disabled style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="项目名称" prop="projectName">
|
|
|
- <el-input v-model="drawerForm.projectName" placeholder="请输入项目名称" maxlength="200" show-word-limit />
|
|
|
+ <el-form-item label="项目状态" prop="statusName">
|
|
|
+ <el-input :model-value="saleStatusOptions?.find(i => String(i.value) === String(drawerForm.projectStatus))?.label || (String(drawerForm.projectStatus) === '0' || String(drawerForm.projectStatus) === '1' ? '跟进中' : (drawerForm.statusName || drawerForm.projectStatus || '无'))" disabled style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="项目负责人" prop="leader">
|
|
|
- <el-select v-model="drawerForm.leader" style="width:100%" placeholder="请选择" filterable clearable>
|
|
|
- <el-option v-for="item in computedUserOptions" :key="item.userId || item.staffId" :label="(item.userName || item.staffCode ? '(' + (item.userName || item.staffCode) + ') ' : '') + (item.nickName || item.staffName)" :value="String(item.userId || item.staffId)" />
|
|
|
+ <el-form-item label="项目级别" prop="projectLevel">
|
|
|
+ <el-select v-model="drawerForm.projectLevel" style="width:100%" placeholder="请选择" clearable>
|
|
|
+ <el-option v-for="item in options.level" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="平台名称" prop="platformName">
|
|
|
- <el-input v-model="drawerForm.platformName" placeholder="请输入平台名称" maxlength="200" show-word-limit />
|
|
|
+ <el-form-item label="项目类型" prop="businessType">
|
|
|
+ <el-select v-model="drawerForm.businessType" style="width:100%" placeholder="请选择" clearable>
|
|
|
+ <el-option v-for="item in options.type" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="产品支持" prop="productSupport" label-for="productSupportSelect">
|
|
|
- <el-select id="productSupportSelect" v-model="drawerForm.productSupport" style="width:100%" placeholder="请选择" filterable clearable @change="handleProductSupportChange">
|
|
|
- <template v-if="computedProductSupportOptions && computedProductSupportOptions.length">
|
|
|
- <el-option v-for="item in computedProductSupportOptions" :key="item.userId || item.staffId" :label="(item.userName || item.staffCode ? '(' + (item.userName || item.staffCode) + ') ' : '') + (item.nickName || item.staffName)" :value="String(item.userId || item.staffId)" />
|
|
|
- </template>
|
|
|
- </el-select>
|
|
|
+ <el-form-item label="平台名称" prop="platformName">
|
|
|
+ <el-input v-model="drawerForm.platformName" placeholder="请输入平台名称" maxlength="200" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="16">
|
|
|
<el-form-item label="平台链接" prop="platformLink">
|
|
|
<el-input v-model="drawerForm.platformLink" placeholder="请输入平台链接" maxlength="500" />
|
|
|
</el-form-item>
|
|
|
@@ -92,31 +80,32 @@
|
|
|
|
|
|
<div class="form-section">
|
|
|
<div class="section-title">项目情况</div>
|
|
|
- <el-row :gutter="20">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="登记日期" prop="createTimeStr">
|
|
|
+ <el-input v-model="drawerForm.createTimeStr" placeholder="无" disabled style="width: 100%" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="金额" prop="amount">
|
|
|
- <el-input v-model="drawerForm.amount" placeholder="请输入金额" maxlength="15">
|
|
|
- <template #append>万</template>
|
|
|
- </el-input>
|
|
|
+ <el-form-item label="金额(万)" prop="amount">
|
|
|
+ <el-input-number v-model="drawerForm.amount" :precision="2" :step="1" :min="0" controls-position="right" style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="报名费" prop="entryFee">
|
|
|
- <el-input v-model="drawerForm.entryFee" placeholder="请输入报名费" maxlength="15" />
|
|
|
+ <el-input-number v-model="drawerForm.entryFee" :precision="2" :step="1" :min="0" controls-position="right" style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="投标保证金" prop="bidBond">
|
|
|
- <el-input v-model="drawerForm.bidBond" placeholder="请输入投标保证金" maxlength="15" />
|
|
|
+ <el-input-number v-model="drawerForm.bidBond" :precision="2" :step="1" :min="0" controls-position="right" style="width: 100%" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="赢单率" prop="winningRate">
|
|
|
- <el-input v-model="drawerForm.winningRate" placeholder="请输入赢单率" maxlength="6">
|
|
|
- <template #append>%</template>
|
|
|
- </el-input>
|
|
|
+ <el-form-item label="赢单率(%)" prop="winningRate">
|
|
|
+ <el-input v-model="drawerForm.winningRate" placeholder="请输入" type="number" maxlength="6" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
@@ -124,54 +113,61 @@
|
|
|
<el-date-picker v-model="drawerForm.signUpDeadline" type="date" value-format="YYYY-MM-DD" style="width:100%" placeholder="请选择" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="投标截止时间" prop="tenderDeadline">
|
|
|
<el-date-picker v-model="drawerForm.tenderDeadline" type="date" value-format="YYYY-MM-DD" style="width:100%" placeholder="请选择" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- </el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
- <el-form-item label="服务期" prop="standardPeriod">
|
|
|
- <el-input v-model="drawerForm.standardPeriod" placeholder="请输入服务期" maxlength="50">
|
|
|
- <template #append>年</template>
|
|
|
- </el-input>
|
|
|
+ <el-form-item label="标书汇编完成时间" prop="compilationTime">
|
|
|
+ <el-date-picker v-model="drawerForm.compilationTime" type="date" value-format="YYYY-MM-DD" style="width:100%" placeholder="请选择" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item label="服务期(年)" prop="standardPeriod">
|
|
|
+ <el-input v-model="drawerForm.standardPeriod" placeholder="请输入" maxlength="50" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="服务时间段" prop="serviceTime">
|
|
|
- <el-input v-model="drawerForm.serviceTime" placeholder="请输入服务时间段" maxlength="100" />
|
|
|
+ <el-input v-model="drawerForm.serviceTime" placeholder="请输入" maxlength="100" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="入围类型" prop="shortlistedType">
|
|
|
- <el-select v-model="drawerForm.shortlistedType" style="width:100%" placeholder="请选择">
|
|
|
+ <el-select v-model="drawerForm.shortlistedType" style="width:100%" placeholder="请选择" clearable>
|
|
|
<el-option v-for="item in options.shortlisted" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="16">
|
|
|
<el-form-item label="物资类目" prop="profession">
|
|
|
- <el-select v-model="drawerForm.profession" style="width:100%" placeholder="请选择">
|
|
|
+ <el-select v-model="drawerForm.profession" style="width:100%" placeholder="请选择" clearable multiple>
|
|
|
<el-option v-for="item in options.material" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="招标代理机构" prop="biddingAgency">
|
|
|
- <el-input v-model="drawerForm.biddingAgency" placeholder="请输入代理机构" maxlength="100" />
|
|
|
+ <el-input v-model="drawerForm.biddingAgency" placeholder="请输入" maxlength="100" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="代理联系方式" prop="agencyContact">
|
|
|
- <el-input v-model="drawerForm.agencyContact" placeholder="请输入联系方式" maxlength="50" />
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item label="代理机构联系方式" prop="agencyContact">
|
|
|
+ <el-input v-model="drawerForm.agencyContact" placeholder="请输入" maxlength="50" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="24">
|
|
|
+ <el-row :gutter="24">
|
|
|
+ <el-col :span="8">
|
|
|
<el-form-item label="标期类型" prop="bidPeriodType">
|
|
|
<el-radio-group v-model="drawerForm.bidPeriodType">
|
|
|
<el-radio :value="1">单项目入围</el-radio>
|
|
|
@@ -179,29 +175,26 @@
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
+ <el-col :span="8" v-if="drawerForm.bidPeriodType === 2">
|
|
|
+ <el-form-item label="预计下次投标时间" prop="nextBiddingTime">
|
|
|
+ <el-date-picker v-model="drawerForm.nextBiddingTime" type="date" value-format="YYYY-MM-DD" style="width:100%" placeholder="请选择" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8" v-if="drawerForm.bidPeriodType === 2">
|
|
|
+ <el-form-item label="提前提醒天数" prop="noticeAdvanceDays">
|
|
|
+ <el-input v-model="drawerForm.noticeAdvanceDays" placeholder="请输入" maxlength="5" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
</el-row>
|
|
|
- <template v-if="drawerForm.bidPeriodType === 2">
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="预计下次投标时间" prop="nextBiddingTime">
|
|
|
- <el-date-picker v-model="drawerForm.nextBiddingTime" type="date" value-format="YYYY-MM-DD" style="width:100%" placeholder="请选择" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <el-form-item label="提前提醒天数" prop="noticeAdvanceDays">
|
|
|
- <el-input v-model="drawerForm.noticeAdvanceDays" placeholder="请输入提醒天数" maxlength="5" />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </template>
|
|
|
- <el-row :gutter="20">
|
|
|
+
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="入围要求" prop="shortlistedRequirement">
|
|
|
<el-input v-model="drawerForm.shortlistedRequirement" type="textarea" :rows="3" placeholder="请输入入围要求" maxlength="500" show-word-limit />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-row :gutter="20">
|
|
|
+ <el-row :gutter="24">
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="项目描述" prop="projectDesc">
|
|
|
<el-input v-model="drawerForm.projectDesc" type="textarea" :rows="3" placeholder="请输入项目描述" maxlength="500" show-word-limit />
|
|
|
@@ -209,36 +202,6 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
-
|
|
|
- <div class="form-section">
|
|
|
- <div class="section-header">
|
|
|
- <div class="section-title">附件</div>
|
|
|
- <el-upload
|
|
|
- :action="uploadFileUrl"
|
|
|
- :headers="uploadHeaders"
|
|
|
- :on-success="handleUploadSuccess"
|
|
|
- :show-file-list="false"
|
|
|
- :before-upload="handleBeforeUpload"
|
|
|
- >
|
|
|
- <el-button type="primary" link><el-icon><Upload /></el-icon> 上传附件</el-button>
|
|
|
- </el-upload>
|
|
|
- </div>
|
|
|
- <el-table :data="drawerForm.fileList" border class="custom-table">
|
|
|
- <el-table-column label="文件名称" prop="fileName" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column label="文件类型" width="100" align="center">
|
|
|
- <template #default="scope">
|
|
|
- <el-tag size="small" type="info">{{ scope.row.fileName ? scope.row.fileName.split('.').pop().toUpperCase() : '' }}</el-tag>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column label="上传时间" prop="createTime" width="180" align="center" />
|
|
|
- <el-table-column label="操作" width="120" align="center">
|
|
|
- <template #default="scope">
|
|
|
- <el-button link type="primary" @click="handleDownload(scope.row)">下载</el-button>
|
|
|
- <el-button link type="danger" @click="handleFileDelete(scope.$index)">删除</el-button>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
<template #footer>
|
|
|
@@ -251,13 +214,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { ref, reactive, computed, watch, onMounted, getCurrentInstance } from 'vue';
|
|
|
+import { ref, reactive, computed, watch, onMounted, getCurrentInstance, toRefs } from 'vue';
|
|
|
import { getPlatformSelection, updatePlatformSelection } from '@/api/saleManage/platformSelection/index';
|
|
|
import { listCustomerInfo } from "@/api/customer/customerInfo/index";
|
|
|
import { getToken } from "@/utils/auth";
|
|
|
import { Upload } from '@element-plus/icons-vue';
|
|
|
|
|
|
const proxy = getCurrentInstance().proxy;
|
|
|
+const { J0001: saleStatusOptions } = toRefs(reactive(proxy.useDict('J0001')));
|
|
|
|
|
|
const props = defineProps({
|
|
|
modelValue: Boolean,
|
|
|
@@ -329,6 +293,41 @@ const computedProductSupportOptions = computed(() => {
|
|
|
return list;
|
|
|
});
|
|
|
|
|
|
+const flatten = (list) => {
|
|
|
+ let res = [];
|
|
|
+ list.forEach(i => {
|
|
|
+ res.push(i);
|
|
|
+ if (i.children) res = res.concat(flatten(i.children));
|
|
|
+ });
|
|
|
+ return res;
|
|
|
+};
|
|
|
+
|
|
|
+const displayIndustryName = computed(() => {
|
|
|
+ if (drawerForm.value.industryName && isNaN(Number(drawerForm.value.industryName))) return drawerForm.value.industryName;
|
|
|
+ if (drawerForm.value.industryCategoryName && isNaN(Number(drawerForm.value.industryCategoryName))) return drawerForm.value.industryCategoryName;
|
|
|
+ if (drawerForm.value.industry && isNaN(Number(drawerForm.value.industry))) return drawerForm.value.industry;
|
|
|
+
|
|
|
+ const professionId = drawerForm.value.profession || drawerForm.value.industry;
|
|
|
+ if (professionId && props.options.industryList) {
|
|
|
+ const flatList = flatten(props.options.industryList);
|
|
|
+ const found = flatList.find(i => String(i.id) === String(professionId))?.industryCategoryName || '';
|
|
|
+ if (found) return found;
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+});
|
|
|
+
|
|
|
+const displayDeptName = computed(() => {
|
|
|
+ const name = drawerForm.value.deptName || drawerForm.value.createDeptName || '';
|
|
|
+ if (name && isNaN(Number(name))) return name;
|
|
|
+
|
|
|
+ const deptId = drawerForm.value.deptNo || drawerForm.value.deptId;
|
|
|
+ if (deptId && props.options.dept) {
|
|
|
+ const found = flatten(props.options.dept).find(d => String(d.id) === String(deptId));
|
|
|
+ if (found) return found.label || found.deptName || '';
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+});
|
|
|
+
|
|
|
const remoteSearchCustomer = async (query) => {
|
|
|
customerLoading.value = true;
|
|
|
try {
|
|
|
@@ -443,7 +442,14 @@ const loadData = async () => {
|
|
|
leaderName: data.leaderName || data.staffName,
|
|
|
productSupport: data.productSupport ? String(data.productSupport) : '',
|
|
|
shortlistedRequirement: data.shortlistedRequirement || data.condition || data.requirement,
|
|
|
- finalizationType: data.finalizationType || data.shortlistedType
|
|
|
+ finalizationType: data.finalizationType || data.shortlistedType,
|
|
|
+ companyNo: data.companyNo ? String(data.companyNo) : '',
|
|
|
+ projectLevel: data.projectLevel ? String(data.projectLevel) : '',
|
|
|
+ businessType: data.businessType ? String(data.businessType) : '',
|
|
|
+ shortlistedType: data.shortlistedType ? String(data.shortlistedType) : '',
|
|
|
+ profession: data.profession ? String(data.profession).split(',') : [],
|
|
|
+ projectStatus: (data.projectStatus ?? data.status) != null ? String(data.projectStatus ?? data.status) : '',
|
|
|
+ createTimeStr: data.createTimeStr || proxy.parseTime(data.createTime, '{y}-{m}-{d}')
|
|
|
};
|
|
|
|
|
|
// 补全 productSupportName
|
|
|
@@ -497,7 +503,8 @@ const handleSubmit = async () => {
|
|
|
condition: drawerForm.value.shortlistedRequirement,
|
|
|
requirement: drawerForm.value.shortlistedRequirement,
|
|
|
fileNo: drawerForm.value.fileList.map(f => f.ossId).filter(Boolean).join(','),
|
|
|
- finalizationType: drawerForm.value.shortlistedType // 双向映射,兼容后端字段不统一
|
|
|
+ finalizationType: drawerForm.value.shortlistedType, // 双向映射,兼容后端字段不统一
|
|
|
+ profession: Array.isArray(drawerForm.value.profession) ? drawerForm.value.profession.join(',') : drawerForm.value.profession
|
|
|
};
|
|
|
await updatePlatformSelection(postData);
|
|
|
proxy.$modal.msgSuccess("修改成功");
|
|
|
@@ -511,8 +518,13 @@ const handleSubmit = async () => {
|
|
|
};
|
|
|
|
|
|
const handleDownload = (row) => {
|
|
|
- if (!row.fileUrl) return proxy.$modal.msgError("文件地址不存在");
|
|
|
- window.open(import.meta.env.VITE_APP_BASE_API + row.fileUrl, '_blank');
|
|
|
+ if (row.ossId) {
|
|
|
+ proxy.$download.oss(row.ossId);
|
|
|
+ } else if (row.fileUrl) {
|
|
|
+ window.open(row.fileUrl, '_blank');
|
|
|
+ } else {
|
|
|
+ proxy.$modal.msgError("下载地址不存在");
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
const handleUploadSuccess = (res, file) => {
|