|
|
@@ -10,7 +10,7 @@
|
|
|
<span class="basic-title-text">线索登记</span>
|
|
|
</div>
|
|
|
<div class="basic-title-right">
|
|
|
- <a-button type="primary" @click="reset">重置</a-button>
|
|
|
+ <!-- <a-button type="primary" @click="reset">重置</a-button>-->
|
|
|
<a-button type="primary" @click="submit">提交</a-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -25,27 +25,14 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="16">
|
|
|
- <a-form-item label="线索名称">
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="线索名称" name="clueName">
|
|
|
<a-input
|
|
|
v-model:value="formState.clueName"
|
|
|
placeholder="请输入线索名称"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
-
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
- <a-col :span="24">
|
|
|
- <a-form-item label="项目名称" name="projectName">
|
|
|
- <a-input
|
|
|
- v-model:value="formState.projectName"
|
|
|
- placeholder="自动生成(甲方-分厂-几期-机组-工程属性)"
|
|
|
- />
|
|
|
- </a-form-item>
|
|
|
- </a-col>
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
<a-form-item label="线索来源" name="clueSource">
|
|
|
<a-select
|
|
|
@@ -56,6 +43,8 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
+ </a-row>
|
|
|
+ <a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
<a-form-item :label="dynamicField.label" :name="dynamicField.name">
|
|
|
<a-select
|
|
|
@@ -85,6 +74,14 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="项目名称" name="projectName">
|
|
|
+ <a-input
|
|
|
+ v-model:value="formState.projectName"
|
|
|
+ placeholder="自动生成(甲方-分厂-几期-机组-工程属性)"
|
|
|
+ />
|
|
|
+ </a-form-item>
|
|
|
+ </a-col>
|
|
|
<a-col :span="8">
|
|
|
<a-form-item label="工程属性" name="engineeringAttribute">
|
|
|
<a-select
|
|
|
@@ -97,7 +94,7 @@
|
|
|
</a-row>
|
|
|
<a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="地区" name="countryRegion">
|
|
|
+ <a-form-item label="地区">
|
|
|
<a-cascader
|
|
|
v-model:value="formState.countryRegion"
|
|
|
:options="regionOptions"
|
|
|
@@ -106,11 +103,13 @@
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="省市区" name="province">
|
|
|
- <a-cascader
|
|
|
+ <a-form-item label="省市区">
|
|
|
+ <AreaCascader
|
|
|
+ type="province_city_district"
|
|
|
+ style="width: 100%"
|
|
|
v-model:value="formState.province"
|
|
|
- :options="regionOptions"
|
|
|
- placeholder="请选择"
|
|
|
+ placeholder="请选择省市区"
|
|
|
+ @change="changeArea"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
@@ -124,7 +123,7 @@
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
<a-row :gutter="16">
|
|
|
- <a-col :span="12">
|
|
|
+ <a-col :span="6">
|
|
|
<a-form-item label="业主单位">
|
|
|
<div class="flex-container">
|
|
|
<a-select
|
|
|
@@ -145,7 +144,7 @@
|
|
|
</div>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="12">
|
|
|
+ <a-col :span="6">
|
|
|
<a-form-item label="设计单位">
|
|
|
<div class="flex-container">
|
|
|
<a-select
|
|
|
@@ -165,9 +164,7 @@
|
|
|
</div>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
- <a-col :span="12">
|
|
|
+ <a-col :span="6">
|
|
|
<a-form-item label="总承包单位">
|
|
|
<div class="flex-container">
|
|
|
<a-select
|
|
|
@@ -187,7 +184,7 @@
|
|
|
</div>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="12">
|
|
|
+ <a-col :span="6">
|
|
|
<a-form-item label="招标代理单位">
|
|
|
<div class="flex-container">
|
|
|
<a-select
|
|
|
@@ -209,9 +206,13 @@
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
+ <!-- <a-row :gutter="16">-->
|
|
|
+ <!-- -->
|
|
|
+ <!-- -->
|
|
|
+ <!-- </a-row>-->
|
|
|
<a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="是否联合体" name="complex">
|
|
|
+ <a-form-item label="是否联合体">
|
|
|
<a-select
|
|
|
v-model:value="formState.complex"
|
|
|
placeholder="请选择"
|
|
|
@@ -219,18 +220,16 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="16">
|
|
|
- <a-form-item label="联合体情况" name="complexDescription">
|
|
|
+ <a-col :span="8">
|
|
|
+ <a-form-item label="联合体情况">
|
|
|
<a-input
|
|
|
v-model:value="formState.complexDescription"
|
|
|
placeholder="请输入"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="项目所属行业" name="projectBelongIndustry">
|
|
|
+ <a-form-item label="项目所属行业">
|
|
|
<a-select
|
|
|
v-model:value="formState.projectBelongIndustry"
|
|
|
placeholder="请选择"
|
|
|
@@ -238,29 +237,25 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="8">
|
|
|
- <a-form-item label="业务类型" name="businessType">
|
|
|
+ </a-row>
|
|
|
+ <a-row :gutter="16">
|
|
|
+
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="业务类型">
|
|
|
<a-select
|
|
|
v-model:value="formState.businessType"
|
|
|
placeholder="请选择"
|
|
|
- :options="ownerUnitOptions4"
|
|
|
+ :optinos="ownerUnitOptions4"
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="8">
|
|
|
- <a-form-item label="招标平台" name="tenderPlatform">
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="招标平台">
|
|
|
<a-input v-model:value="formState.tenderPlatform" placeholder="请输入"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
- <a-col :span="8">
|
|
|
- <a-form-item label="项目总概算" name="projectBudget">
|
|
|
- <a-input v-model:value="formState.projectBudget" placeholder="自动生成(各标段概算之和)"/>
|
|
|
- </a-form-item>
|
|
|
- </a-col>
|
|
|
- <a-col :span="8">
|
|
|
- <a-form-item label="项目资金来源" name="projectMoneySource">
|
|
|
+ <a-col :span="6">
|
|
|
+ <a-form-item label="项目资金来源">
|
|
|
<a-select
|
|
|
v-model:value="formState.projectMoneySource"
|
|
|
placeholder="请选择"
|
|
|
@@ -268,29 +263,36 @@
|
|
|
/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- <a-col :span="8">
|
|
|
+ <a-col :span="6">
|
|
|
<a-form-item label="分厂/几期/机组" name="factory">
|
|
|
<a-input v-model:value="formState.factory" placeholder="请输入"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
+ <!-- <a-row :gutter="16">-->
|
|
|
+ <!-- <a-col :span="8">-->
|
|
|
+ <!-- <a-form-item label="项目总概算">-->
|
|
|
+ <!-- <a-input v-model:value="formState.projectBudget" placeholder="自动生成(各标段概算之和)"/>-->
|
|
|
+ <!-- </a-form-item>-->
|
|
|
+ <!-- </a-col>-->
|
|
|
+ <!-- -->
|
|
|
+ <!-- -->
|
|
|
+ <!-- </a-row>-->
|
|
|
<a-row :gutter="16">
|
|
|
<a-col :span="24">
|
|
|
- <a-form-item label="项目背景" name="projectBackground" class="smart-query-form-item">
|
|
|
+ <a-form-item label="项目背景" class="smart-query-form-item">
|
|
|
<a-input v-model:value="formState.projectBackground" placeholder="请输入"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
</a-row>
|
|
|
<a-row :gutter="16">
|
|
|
- <a-col :span="24">
|
|
|
- <a-form-item label="项目阶段" name="projectStage" class="smart-query-form-item">
|
|
|
+ <a-col :span="16">
|
|
|
+ <a-form-item label="项目阶段" class="smart-query-form-item">
|
|
|
<a-input v-model:value="formState.projectStage" placeholder="请输入"/>
|
|
|
</a-form-item>
|
|
|
</a-col>
|
|
|
- </a-row>
|
|
|
- <a-row :gutter="16">
|
|
|
<a-col :span="8">
|
|
|
- <a-form-item label="归属营销人员" class="smart-query-form-item">
|
|
|
+ <a-form-item label="归属营销人员" name="belongMarketer" class="smart-query-form-item">
|
|
|
<a-select
|
|
|
v-model:value="formState.belongMarketer"
|
|
|
placeholder="请选择"
|
|
|
@@ -324,29 +326,16 @@
|
|
|
>
|
|
|
<a-form layout="vertical">
|
|
|
<a-form-item label="营销经理">
|
|
|
- <a-input v-model:value="formStates.manager" />
|
|
|
+ <a-input v-model:value="formStates.manager"/>
|
|
|
</a-form-item>
|
|
|
<a-form-item label="营销团队">
|
|
|
- <a-input v-model:value="formStates.team" />
|
|
|
+ <a-input v-model:value="formStates.team"/>
|
|
|
</a-form-item>
|
|
|
<a-form-item label="支持说明">
|
|
|
- <a-textarea v-model:value="formStates.description" />
|
|
|
+ <a-textarea v-model:value="formStates.description"/>
|
|
|
</a-form-item>
|
|
|
</a-form>
|
|
|
</a-modal>
|
|
|
- <!-- <bs-table></bs-table>-->
|
|
|
- <!-- <a-table-->
|
|
|
- <!-- :columns="teamColumns"-->
|
|
|
- <!-- :data-source="teamData"-->
|
|
|
- <!-- :pagination="false"-->
|
|
|
- <!-- bordered-->
|
|
|
- <!-- >-->
|
|
|
- <!-- <template #bodyCell="{ column, record }">-->
|
|
|
- <!-- <template v-if="column.key === 'action'">-->
|
|
|
- <!-- <a-button type="link" danger @click="removeTeam(record.key)">删除</a-button>-->
|
|
|
- <!-- </template>-->
|
|
|
- <!-- </template>-->
|
|
|
- <!-- </a-table>-->
|
|
|
</div>
|
|
|
</div>
|
|
|
<div>
|
|
|
@@ -385,15 +374,19 @@
|
|
|
</template>
|
|
|
<script setup lang="jsx">
|
|
|
import {reactive, ref, computed} from 'vue';
|
|
|
+
|
|
|
const visible = ref(false);
|
|
|
import {
|
|
|
PlusOutlined,
|
|
|
InboxOutlined,
|
|
|
} from '@ant-design/icons-vue';
|
|
|
import {useRouter} from 'vue-router';
|
|
|
-import {message} from 'ant-design-vue';
|
|
|
+import {message, Modal} from 'ant-design-vue';
|
|
|
import _ from 'lodash';
|
|
|
import BsTable, {useBsTable} from '/@/components/BsUi/Table/index.js';
|
|
|
+import useBsDict from "/@/utils/dict.js";
|
|
|
+import {clientManageApi} from '/@/api/market-manage/clue-management/index.js';
|
|
|
+import AreaCascader from "/@/components/framework/area-cascader/index.vue";
|
|
|
|
|
|
const stepFormRef = ref(null);
|
|
|
const router = useRouter();
|
|
|
@@ -435,13 +428,19 @@ const formState = reactive({
|
|
|
isBiddingAgentPartyA: undefined,
|
|
|
serviceProvider: undefined,
|
|
|
region: undefined,
|
|
|
- teamDTOList: []
|
|
|
+ teams: []
|
|
|
|
|
|
});
|
|
|
|
|
|
// --------------------- 校验规则 ---------------------
|
|
|
const formRules = {
|
|
|
- // customerName: [{ required: true, message: '请输入客户名称', trigger: 'change' }],
|
|
|
+ projectType: [{required: true, message: '请选择项目类型', trigger: 'change'}],
|
|
|
+ clueName: [{required: true, message: '请输入线索名称', trigger: 'change'}],
|
|
|
+ clueSource: [{required: true, message: '请选择线索来源', trigger: 'change'}],
|
|
|
+ projectName: [{required: true, message: '请输入项目名称', trigger: 'change'}],
|
|
|
+ engineeringAttribute: [{required: true, message: '请选择工程属性', trigger: 'change'}],
|
|
|
+ belongMarketer: [{required: true, message: '请选择归属营销人员', trigger: 'change'}],
|
|
|
+ factory: [{required: true, message: '请输入分厂/几期/机组', trigger: 'change'}],
|
|
|
};
|
|
|
const {
|
|
|
tableOptions,
|
|
|
@@ -452,7 +451,7 @@ const {
|
|
|
// url:''
|
|
|
gridOptions: {
|
|
|
loading: false,
|
|
|
- displayToolbar:'123',
|
|
|
+ displayToolbar: '123',
|
|
|
data: [],
|
|
|
columns: [
|
|
|
{
|
|
|
@@ -514,6 +513,10 @@ const showModal = () => {
|
|
|
visible.value = true;
|
|
|
};
|
|
|
|
|
|
+function changeArea(value, selectedOptions) {
|
|
|
+ formState.province = value;
|
|
|
+}
|
|
|
+
|
|
|
// 确认添加
|
|
|
const handleOk = () => {
|
|
|
const currentData = getValue('gridOptions.data') || [];
|
|
|
@@ -526,7 +529,6 @@ const handleOk = () => {
|
|
|
};
|
|
|
|
|
|
setValue('gridOptions.data', [...currentData, newRow]);
|
|
|
- console.log(setValue('gridOptions.data', [...currentData, newRow]))
|
|
|
resetForm();
|
|
|
visible.value = false;
|
|
|
};
|
|
|
@@ -648,34 +650,54 @@ function changeAttachment(fileList) {
|
|
|
// ----------------------- 步骤相关 ---------------------------
|
|
|
|
|
|
const submit = () => {
|
|
|
- router.push('/market-manage/external-manage/clue-management/clue-list');
|
|
|
- // stepFormRef.value
|
|
|
- // .validateFields()
|
|
|
- // .then((values) => {
|
|
|
- // Modal.confirm({
|
|
|
- // title: '提示',
|
|
|
- // content: '确定要提交吗?',
|
|
|
- // okText: '确认',
|
|
|
- // onOk() {
|
|
|
- // postFormData();
|
|
|
- // },
|
|
|
- // cancelText: '取消',
|
|
|
- // onCancel() {
|
|
|
- // },
|
|
|
- // });
|
|
|
- // })
|
|
|
- // .catch((error) => {
|
|
|
- // console.log('step1_error', error);
|
|
|
- // });
|
|
|
+ stepFormRef.value
|
|
|
+ .validateFields()
|
|
|
+ .then((values) => {
|
|
|
+ Modal.confirm({
|
|
|
+ title: '提示',
|
|
|
+ content: '确定要提交吗?',
|
|
|
+ okText: '确认',
|
|
|
+ onOk() {
|
|
|
+ // console.log('form', form);
|
|
|
+ postFileData();
|
|
|
+
|
|
|
+ },
|
|
|
+ cancelText: '取消',
|
|
|
+ onCancel() {
|
|
|
+ },
|
|
|
+ });
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.log('step1_error', error);
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
-const postFormData = () => {
|
|
|
- // customerApi.CustomerAddition(formModel).then((res) => {
|
|
|
- // message.success('提交成功');
|
|
|
- // router.push({path: '/teamwork/customer-manage/customer-list'});
|
|
|
- // });
|
|
|
+// 提交
|
|
|
+const postFileData = () => {
|
|
|
+ let params = {
|
|
|
+ ...formState,
|
|
|
+ teams: getValue('gridOptions.data')
|
|
|
+ }
|
|
|
+ clientManageApi.inteListAdd(params).then((res) => {
|
|
|
+ message.success('提交成功');
|
|
|
+ // router.push({
|
|
|
+ // path: '', query: {
|
|
|
+ // refresh: true, // 触发刷新的标记
|
|
|
+ // projectName: '新建项目', // 实际查询参数
|
|
|
+ // status: 2
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ router.push({
|
|
|
+ path: '/market-manage/external-manage/clue-management/clue-list',
|
|
|
+ query: {
|
|
|
+ refresh: true,
|
|
|
+ status: 2
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ })
|
|
|
};
|
|
|
-//------------------------地区-------------------------------------
|
|
|
|
|
|
|
|
|
// 文件上传
|
|
|
@@ -700,10 +722,7 @@ const clueSourceOptions = ref([
|
|
|
{value: 'marketActivity', label: '市场活动'},
|
|
|
{value: 'referral', label: '转介绍'}
|
|
|
]);
|
|
|
-const serviceProviderOptions = ref([
|
|
|
- {value: 'provider1', label: '项目类'},
|
|
|
- {value: 'provider2', label: '贸易类'},
|
|
|
-]);
|
|
|
+const serviceProviderOptions = useBsDict.getDictList('BLINK_MARKET_PROJECT_TYPE');
|
|
|
|
|
|
// 活动选项
|
|
|
const activityOptions = ref([
|
|
|
@@ -714,22 +733,10 @@ const ownerUnitOptions = ref([
|
|
|
{value: 'owner1', label: '国内客户'},
|
|
|
{value: 'owner2', label: '国外客户'},
|
|
|
]);
|
|
|
-const ownerUnitOptions1 = ref([
|
|
|
- {value: 'owner1', label: '新建'},
|
|
|
- {value: 'owner2', label: '旧改'},
|
|
|
-]);
|
|
|
-const ownerUnitOptions3 = ref([
|
|
|
- {value: 'owner1', label: '客户提供'},
|
|
|
-]);
|
|
|
-const ownerUnitOptions4 = ref([
|
|
|
- {value: 'owner1', label: '业务一部'},
|
|
|
- {value: 'owner2', label: '业务二部'},
|
|
|
- {value: 'owner3', label: '业务三部'},
|
|
|
-]);
|
|
|
-const ownerUnitOptions5 = ref([
|
|
|
- {value: 'owner1', label: '政府机构'},
|
|
|
- {value: 'owner2', label: '民营企业'},
|
|
|
-]);
|
|
|
+const ownerUnitOptions1 = useBsDict.getDictList('BLINK_MARKET_PROJECT_ENGINEERING_TYPE');
|
|
|
+const ownerUnitOptions3 = useBsDict.getDictList('BLINK_MARKET_PROJECT_FINANCE_SOURCE');
|
|
|
+const ownerUnitOptions4 = useBsDict.getDictList('BLINK_CUSTOMER_FILE_TYPE');
|
|
|
+const ownerUnitOptions5 = useBsDict.getDictList('BLINK_MARKET_PROJECT_INDUSTRY');
|
|
|
|
|
|
const regionOptions = ref([
|
|
|
{
|