修改实施采购途径
This commit is contained in:
@@ -26,120 +26,113 @@
|
|||||||
<el-divider content-position="left">
|
<el-divider content-position="left">
|
||||||
<span class="section-title">基础信息</span>
|
<span class="section-title">基础信息</span>
|
||||||
</el-divider>
|
</el-divider>
|
||||||
<el-text v-if="!isEditMode && !isViewMode" type="info" size="small" class="mb12" style="display: block">
|
<el-text v-if="!isEditMode && !isViewMode" type="info" size="small" class="mb12" style="display: block"> 暂存时,基础信息必填 </el-text>
|
||||||
暂存时,基础信息必填
|
|
||||||
</el-text>
|
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="8" class="mb12">
|
<el-col :span="8" class="mb12">
|
||||||
<el-form-item label="采购项目名称" prop="projectName">
|
<el-form-item label="采购项目名称" prop="projectName">
|
||||||
<el-input
|
<el-input v-model="dataForm.projectName" placeholder="请输入采购项目名称" clearable :disabled="flowFieldDisabled('projectName')" />
|
||||||
v-model="dataForm.projectName"
|
</el-form-item>
|
||||||
placeholder="请输入采购项目名称"
|
</el-col>
|
||||||
clearable
|
<el-col :span="8" class="mb12">
|
||||||
:disabled="flowFieldDisabled('projectName')"
|
<el-form-item label="填报日期" prop="applyDate">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dataForm.applyDate"
|
||||||
|
type="date"
|
||||||
|
placeholder="请选择填报日期"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('applyDate')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8" class="mb12">
|
||||||
|
<el-form-item label="资金来源" prop="fundSource">
|
||||||
|
<el-select
|
||||||
|
v-model="dataForm.fundSource"
|
||||||
|
placeholder="请选择资金来源"
|
||||||
|
clearable
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('fundSource')"
|
||||||
|
>
|
||||||
|
<el-option v-for="item in fundSourceList" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8" class="mb12">
|
||||||
|
<el-form-item label="预算金额" prop="budget">
|
||||||
|
<div class="budget-yuan-wrap">
|
||||||
|
<el-input-number
|
||||||
|
v-model="dataForm.budget"
|
||||||
|
:min="0.01"
|
||||||
|
:precision="2"
|
||||||
|
placeholder="请输入金额"
|
||||||
|
:controls="false"
|
||||||
|
style="width: 100%"
|
||||||
|
:disabled="flowFieldDisabled('budget')"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
<span class="budget-unit">元</span>
|
||||||
</el-col>
|
</div>
|
||||||
<el-col :span="8" class="mb12">
|
</el-form-item>
|
||||||
<el-form-item label="填报日期" prop="applyDate">
|
</el-col>
|
||||||
<el-date-picker
|
<el-col :span="8" class="mb12">
|
||||||
v-model="dataForm.applyDate"
|
<el-form-item label="是否集采" prop="isCentralized">
|
||||||
type="date"
|
<el-select
|
||||||
placeholder="请选择填报日期"
|
v-model="dataForm.isCentralized"
|
||||||
format="YYYY-MM-DD"
|
placeholder="请选择是否集采"
|
||||||
value-format="YYYY-MM-DD"
|
clearable
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:disabled="flowFieldDisabled('applyDate')"
|
:disabled="flowFieldDisabled('isCentralized')"
|
||||||
/>
|
>
|
||||||
</el-form-item>
|
<el-option v-for="item in isCentralizedList" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-col>
|
</el-select>
|
||||||
<el-col :span="8" class="mb12">
|
</el-form-item>
|
||||||
<el-form-item label="资金来源" prop="fundSource">
|
</el-col>
|
||||||
<el-select
|
<el-col :span="8" class="mb12">
|
||||||
v-model="dataForm.fundSource"
|
<el-form-item label="是否特殊情况" prop="isSpecial">
|
||||||
placeholder="请选择资金来源"
|
<el-select
|
||||||
clearable
|
v-model="dataForm.isSpecial"
|
||||||
style="width: 100%"
|
placeholder="请选择是否特殊情况"
|
||||||
:disabled="flowFieldDisabled('fundSource')"
|
clearable
|
||||||
>
|
style="width: 100%"
|
||||||
<el-option v-for="item in fundSourceList" :key="item.value" :label="item.label" :value="item.value" />
|
:disabled="flowFieldDisabled('isSpecial')"
|
||||||
</el-select>
|
>
|
||||||
</el-form-item>
|
<el-option v-for="item in isSpecialList" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-col>
|
</el-select>
|
||||||
<el-col :span="8" class="mb12">
|
</el-form-item>
|
||||||
<el-form-item label="预算金额" prop="budget">
|
</el-col>
|
||||||
<div class="budget-yuan-wrap">
|
<el-col :span="8" class="mb12">
|
||||||
<el-input-number
|
<el-form-item label="是否有资产" prop="hasAssets">
|
||||||
v-model="dataForm.budget"
|
<el-radio-group v-model="dataForm.hasAssets" :disabled="flowFieldDisabled('hasAssets')">
|
||||||
:min="0.01"
|
<el-radio label="1">有</el-radio>
|
||||||
:precision="2"
|
<el-radio label="0">无</el-radio>
|
||||||
placeholder="请输入金额"
|
</el-radio-group>
|
||||||
:controls="false"
|
</el-form-item>
|
||||||
style="width: 100%"
|
</el-col>
|
||||||
:disabled="flowFieldDisabled('budget')"
|
<el-col :span="24" class="mb12">
|
||||||
/>
|
<el-form-item label="品目编码" prop="categoryCode">
|
||||||
<span class="budget-unit">元</span>
|
<el-cascader
|
||||||
</div>
|
v-model="categoryCodePath"
|
||||||
</el-form-item>
|
:options="categoryTreeData"
|
||||||
</el-col>
|
:props="{ value: 'code', label: 'name', children: 'children', checkStrictly: false }"
|
||||||
<el-col :span="8" class="mb12">
|
placeholder="请选择品目编码(仅最后一级)"
|
||||||
<el-form-item label="是否集采" prop="isCentralized">
|
clearable
|
||||||
<el-select
|
filterable
|
||||||
v-model="dataForm.isCentralized"
|
:show-all-levels="true"
|
||||||
placeholder="请选择是否集采"
|
style="width: 100%"
|
||||||
clearable
|
:disabled="flowFieldDisabled('categoryCode')"
|
||||||
style="width: 100%"
|
@change="handleCategoryChange"
|
||||||
:disabled="flowFieldDisabled('isCentralized')"
|
/>
|
||||||
>
|
<!-- 显示品目编码层级关系 -->
|
||||||
<el-option v-for="item in isCentralizedList" :key="item.value" :label="item.label" :value="item.value" />
|
<el-text v-if="categoryCodeHierarchy" type="info" size="small" style="margin-top: 4px; display: block">
|
||||||
</el-select>
|
品目编码层级:{{ categoryCodeHierarchy }}
|
||||||
</el-form-item>
|
</el-text>
|
||||||
</el-col>
|
<el-text v-if="isSpecialServiceCategory && dataForm.categoryCode" type="warning" size="small" style="margin-top: 4px">
|
||||||
<el-col :span="8" class="mb12">
|
当前选择品目为服务商城品目
|
||||||
<el-form-item label="是否特殊情况" prop="isSpecial">
|
</el-text>
|
||||||
<el-select
|
</el-form-item>
|
||||||
v-model="dataForm.isSpecial"
|
</el-col>
|
||||||
placeholder="请选择是否特殊情况"
|
</el-row>
|
||||||
clearable
|
|
||||||
style="width: 100%"
|
|
||||||
:disabled="flowFieldDisabled('isSpecial')"
|
|
||||||
>
|
|
||||||
<el-option v-for="item in isSpecialList" :key="item.value" :label="item.label" :value="item.value" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8" class="mb12">
|
|
||||||
<el-form-item label="是否有资产" prop="hasAssets">
|
|
||||||
<el-radio-group v-model="dataForm.hasAssets" :disabled="flowFieldDisabled('hasAssets')">
|
|
||||||
<el-radio label="1">有</el-radio>
|
|
||||||
<el-radio label="0">无</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24" class="mb12">
|
|
||||||
<el-form-item label="品目编码" prop="categoryCode">
|
|
||||||
<el-cascader
|
|
||||||
v-model="categoryCodePath"
|
|
||||||
:options="categoryTreeData"
|
|
||||||
:props="{ value: 'code', label: 'name', children: 'children', checkStrictly: false }"
|
|
||||||
placeholder="请选择品目编码(仅最后一级)"
|
|
||||||
clearable
|
|
||||||
filterable
|
|
||||||
:show-all-levels="true"
|
|
||||||
style="width: 100%"
|
|
||||||
:disabled="flowFieldDisabled('categoryCode')"
|
|
||||||
@change="handleCategoryChange"
|
|
||||||
/>
|
|
||||||
<!-- 显示品目编码层级关系 -->
|
|
||||||
<el-text v-if="categoryCodeHierarchy" type="info" size="small" style="margin-top: 4px; display: block">
|
|
||||||
品目编码层级:{{ categoryCodeHierarchy }}
|
|
||||||
</el-text>
|
|
||||||
<el-text v-if="isSpecialServiceCategory && dataForm.categoryCode" type="warning" size="small" style="margin-top: 4px">
|
|
||||||
当前选择品目为服务商城品目
|
|
||||||
</el-text>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
|
|
||||||
<!-- 采购详情(新增时需先填是否特殊情况、是否集采、预算金额后才显示) -->
|
<!-- 采购详情(新增时需先填是否特殊情况、是否集采、预算金额后才显示) -->
|
||||||
<div>
|
<div>
|
||||||
@@ -203,7 +196,13 @@
|
|||||||
:disabled="isPurchaseTypeDisabled"
|
:disabled="isPurchaseTypeDisabled"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-option v-for="item in purchaseTypeDeptOptions" :key="item.value" :label="item.label" :value="item.value" :disabled="item.disabled" />
|
<el-option
|
||||||
|
v-for="item in purchaseTypeDeptOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"
|
||||||
|
:disabled="item.disabled"
|
||||||
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -399,16 +398,16 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="16">
|
<el-row :gutter="16">
|
||||||
<el-col :span="8" class="mb12">
|
<el-col :span="8" class="mb12">
|
||||||
<el-form-item label="实施采购途径" prop="implementChannel" :required="isImplementChannelRequired">
|
<el-form-item label="实施采购途径" prop="implementType" :required="isImplementTypeRequired">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="dataForm.implementChannel"
|
v-model="dataForm.implementType"
|
||||||
placeholder="请选择实施采购途径"
|
placeholder="请选择实施采购途径"
|
||||||
clearable
|
clearable
|
||||||
:disabled="schoolUnifiedPurchaseFormDisabled"
|
:disabled="schoolUnifiedPurchaseFormDisabled"
|
||||||
@change="handleImplementChannelChange"
|
@change="handleImplementTypeChange"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
>
|
>
|
||||||
<el-option v-for="item in implementChannelList" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in implementTypeList" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -987,7 +986,6 @@ const dataForm = reactive({
|
|||||||
isSpecial: '',
|
isSpecial: '',
|
||||||
hasAssets: '0',
|
hasAssets: '0',
|
||||||
purchaseMode: '',
|
purchaseMode: '',
|
||||||
implementChannel: '', // 实施采购途径:框架协议、网上商城
|
|
||||||
purchaseType: '',
|
purchaseType: '',
|
||||||
purchaseTypeUnion: '',
|
purchaseTypeUnion: '',
|
||||||
purchaseChannel: '',
|
purchaseChannel: '',
|
||||||
@@ -1058,8 +1056,10 @@ const isSpecialList = ref<any[]>([]);
|
|||||||
const purchaseTypeDeptList = ref<any[]>([]);
|
const purchaseTypeDeptList = ref<any[]>([]);
|
||||||
/** 部门采购方式字典(委托采购中心采购时使用) */
|
/** 部门采购方式字典(委托采购中心采购时使用) */
|
||||||
const purchaseTypeDeptDelegationList = ref<any[]>([]);
|
const purchaseTypeDeptDelegationList = ref<any[]>([]);
|
||||||
/** 实施采购途径选项:框架协议、网上商城 */
|
/** 实施采购途径选项:1:自行组织采购 2:委托代理采购 5:框架协议 8:网上商城 */
|
||||||
const implementChannelList = ref<any[]>([
|
const implementTypeList = ref<any[]>([
|
||||||
|
{ value: '1', label: '自行组织采购' },
|
||||||
|
{ value: '2', label: '委托代理采购' },
|
||||||
{ value: '5', label: '框架协议' },
|
{ value: '5', label: '框架协议' },
|
||||||
{ value: '8', label: '网上商城' },
|
{ value: '8', label: '网上商城' },
|
||||||
]);
|
]);
|
||||||
@@ -1229,7 +1229,7 @@ const isPurchaseTypeUnionRequired = computed(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 学校统一采购 - 实施采购途径是否必填
|
// 学校统一采购 - 实施采购途径是否必填
|
||||||
const isImplementChannelRequired = computed(() => {
|
const isImplementTypeRequired = computed(() => {
|
||||||
// 审核阶段:采购中心必填
|
// 审核阶段:采购中心必填
|
||||||
if (isFlowEmbed.value && isPurchaseCenter.value) {
|
if (isFlowEmbed.value && isPurchaseCenter.value) {
|
||||||
return true;
|
return true;
|
||||||
@@ -1407,19 +1407,24 @@ const calcEntrustCenterType = (): 'service_online' | 'other' | '' => {
|
|||||||
return 'other';
|
return 'other';
|
||||||
};
|
};
|
||||||
|
|
||||||
// 实施采购途径变化时,自动设置采购方式
|
// 实施采购途径变化时,根据选择自动设置采购方式
|
||||||
// 框架协议 → 采购方式自动选择"框架协议"
|
// 5:框架协议 → 采购方式自动选择"框架协议"
|
||||||
// 网上商城 → 采购方式自动选择"网上商城"
|
// 8:网上商城 → 采购方式自动选择"网上商城"
|
||||||
const handleImplementChannelChange = (value: string) => {
|
// 1:自行组织采购、2:委托代理采购 → 清空采购方式,由用户手动选择
|
||||||
|
const handleImplementTypeChange = (value: string) => {
|
||||||
if (!value) {
|
if (!value) {
|
||||||
// 清空实施采购途径时,清空采购方式
|
// 清空实施采购途径时,清空采购方式
|
||||||
dataForm.purchaseType = '';
|
dataForm.purchaseType = '';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据实施采购途径自动设置采购方式
|
// 仅当选择框架协议(5)或网上商城(8)时,自动设置采购方式
|
||||||
// value 与 PurchaseTypeEnum 编码一致:5=框架协议,8=网上商城
|
if (value === '5' || value === '8') {
|
||||||
dataForm.purchaseType = value;
|
dataForm.purchaseType = value;
|
||||||
|
} else {
|
||||||
|
// 其他选项清空采购方式,由用户手动选择
|
||||||
|
dataForm.purchaseType = '';
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 监听采购途径变化,清理所有与采购方式相关的材料字段,同时如果已选择品目则重新计算entrustCenterType
|
// 监听采购途径变化,清理所有与采购方式相关的材料字段,同时如果已选择品目则重新计算entrustCenterType
|
||||||
@@ -1769,7 +1774,7 @@ const dataRules = reactive({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
// 学校统一采购 + 采购中心审核:实施采购途径必填
|
// 学校统一采购 + 采购中心审核:实施采购途径必填
|
||||||
implementChannel: [
|
implementType: [
|
||||||
{
|
{
|
||||||
validator: (_rule: any, value: string, callback: (e?: Error) => void) => {
|
validator: (_rule: any, value: string, callback: (e?: Error) => void) => {
|
||||||
if (!isDeptPurchase.value && isFlowEmbed.value && isPurchaseCenter.value) {
|
if (!isDeptPurchase.value && isFlowEmbed.value && isPurchaseCenter.value) {
|
||||||
@@ -1900,8 +1905,7 @@ async function loadDetail(applyId: string | number) {
|
|||||||
budget: detail.budget != null ? Number(detail.budget) : null,
|
budget: detail.budget != null ? Number(detail.budget) : null,
|
||||||
isCentralized: detail.isCentralized != null ? String(detail.isCentralized) : '',
|
isCentralized: detail.isCentralized != null ? String(detail.isCentralized) : '',
|
||||||
isSpecial: detail.isSpecial != null ? String(detail.isSpecial) : '',
|
isSpecial: detail.isSpecial != null ? String(detail.isSpecial) : '',
|
||||||
purchaseMode: detail.purchaseMode != null ? String(detail.purchaseMode) : '',
|
purchaseMode: detail.purchaseMode != null ? String(detail.purchaseMode) : '',
|
||||||
implementChannel: detail.implementChannel != null ? String(detail.implementChannel) : '',
|
|
||||||
purchaseType:
|
purchaseType:
|
||||||
detail.purchaseType === DEPT_PURCHASE_TYPE.ENTRUST_CENTER
|
detail.purchaseType === DEPT_PURCHASE_TYPE.ENTRUST_CENTER
|
||||||
? ''
|
? ''
|
||||||
|
|||||||
Reference in New Issue
Block a user