| | |
| | | height="calc(100vh - 18.5em)" |
| | | stripe |
| | | > |
| | | <el-table-column align="center" type="selection" width="55" /> |
| | | <el-table-column align="center" type="selection" width="55" fixed="left"/> |
| | | <el-table-column align="center" label="序号" type="index" width="60" /> |
| | | <el-table-column label="状态" prop="status" width="120"> |
| | | <template #default="{ row }"> |
| | |
| | | </el-tag> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column label="省份" prop="province" show-overflow-tooltip width="120" /> |
| | | <el-table-column label="省份" prop="province" show-overflow-tooltip /> |
| | | <el-table-column label="市" prop="city" show-overflow-tooltip/> |
| | | <el-table-column label="客户名称" prop="customerName" show-overflow-tooltip /> |
| | | <el-table-column label="商机来源" prop="businessSource" show-overflow-tooltip /> |
| | | <!-- <el-table-column label="客户描述" prop="description" show-overflow-tooltip min-width="200" /> --> |
| | | <el-table-column label="录入人" prop="entryPerson" show-overflow-tooltip /> |
| | | <el-table-column label="更新日期" prop="updateTime"> |
| | | <el-table-column label="录入人" prop="entryPerson" show-overflow-tooltip width="120" /> |
| | | <el-table-column label="更新日期" prop="updateTime" width="120"> |
| | | <template #default="{ row }"> |
| | | {{ formatDate(row.updateTime) }} |
| | | </template> |
| | |
| | | <el-dialog |
| | | v-model="dialogFormVisible" |
| | | :title="operationType === 'add' ? '新建商机' : operationType === 'edit' ? '编辑商机' : operationType === 'addOperation' ? '添加商机' : '商机详情'" |
| | | width="600px" |
| | | width="1000px" |
| | | @close="closeDialog" |
| | | > |
| | | <el-form |
| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="省份" prop="province"> |
| | | <el-select v-model="form.province" filterable placeholder="请选择省份" style="width: 100%" :disabled="operationType === 'detail' || operationType === 'addOperation'"> |
| | | <el-select v-model="form.province" filterable placeholder="请选择省份" |
| | | @change="getCityListChange" |
| | | style="width: 100%" :disabled="operationType === 'detail' || operationType === 'addOperation'"> |
| | | <el-option |
| | | v-for="item in provinceOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="市" prop="city"> |
| | | <el-select v-model="form.city" filterable placeholder="请选择市" |
| | | style="width: 100%" :disabled="operationType === 'detail' || operationType === 'addOperation'"> |
| | | <el-option |
| | | v-for="item in cityOptions" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | |
| | | type="textarea" |
| | | :rows="3" |
| | | placeholder="请输入客户描述" |
| | | maxlength="500" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | |
| | | import useUserStore from '@/store/modules/user' |
| | | import dayjs from 'dayjs' |
| | | import { getToken } from '@/utils/auth' |
| | | import { |
| | | opportunityListPage, |
| | | addOpportunity, |
| | | updateOpportunity, |
| | | delOpportunity, |
| | | addDescription |
| | | import { |
| | | opportunityListPage, |
| | | addOpportunity, |
| | | updateOpportunity, |
| | | delOpportunity, |
| | | addDescription, getProvinceList, getCityList |
| | | } from '@/api/salesManagement/opportunityManagement.js' |
| | | import { userListNoPage } from '@/api/system/user.js' |
| | | import {customerList, getSalesLedgerWithProducts} from '@/api/salesManagement/salesLedger.js' |
| | |
| | | id: undefined, |
| | | status: undefined, |
| | | province: '', |
| | | city: '', |
| | | customerName: '', |
| | | businessSource: '', |
| | | description: '', |
| | |
| | | { value: '项目验收', label: '项目验收' } |
| | | ] |
| | | |
| | | // 省份选项(示例) |
| | | const provinceOptions = [ |
| | | { value: '北京市', label: '北京市' }, |
| | | { value: '天津市', label: '天津市' }, |
| | | { value: '河北省', label: '河北省' }, |
| | | { value: '山西省', label: '山西省' }, |
| | | { value: '内蒙古自治区', label: '内蒙古自治区' }, |
| | | { value: '辽宁省', label: '辽宁省' }, |
| | | { value: '吉林省', label: '吉林省' }, |
| | | { value: '黑龙江省', label: '黑龙江省' }, |
| | | { value: '上海市', label: '上海市' }, |
| | | { value: '江苏省', label: '江苏省' }, |
| | | { value: '浙江省', label: '浙江省' }, |
| | | { value: '安徽省', label: '安徽省' }, |
| | | { value: '福建省', label: '福建省' }, |
| | | { value: '江西省', label: '江西省' }, |
| | | { value: '山东省', label: '山东省' }, |
| | | { value: '河南省', label: '河南省' }, |
| | | { value: '湖北省', label: '湖北省' }, |
| | | { value: '湖南省', label: '湖南省' }, |
| | | { value: '广东省', label: '广东省' }, |
| | | { value: '广西壮族自治区', label: '广西壮族自治区' }, |
| | | { value: '海南省', label: '海南省' }, |
| | | { value: '重庆市', label: '重庆市' }, |
| | | { value: '四川省', label: '四川省' }, |
| | | { value: '贵州省', label: '贵州省' }, |
| | | { value: '云南省', label: '云南省' }, |
| | | { value: '西藏自治区', label: '西藏自治区' }, |
| | | { value: '陕西省', label: '陕西省' }, |
| | | { value: '甘肃省', label: '甘肃省' }, |
| | | { value: '青海省', label: '青海省' }, |
| | | { value: '宁夏回族自治区', label: '宁夏回族自治区' }, |
| | | { value: '新疆维吾尔自治区', label: '新疆维吾尔自治区' }, |
| | | { value: '台湾省', label: '台湾省' }, |
| | | { value: '香港特别行政区', label: '香港特别行政区' }, |
| | | { value: '澳门特别行政区', label: '澳门特别行政区' } |
| | | ] |
| | | // 省份选项 |
| | | const provinceOptions = ref([]) |
| | | const cityOptions = ref([]) |
| | | |
| | | // 获取状态标签类型 |
| | | const getStatusTagType = (status) => { |
| | |
| | | customerList().then((res) => { |
| | | customerOption.value = res |
| | | }) |
| | | getProvinceList().then(res => { |
| | | provinceOptions.value = res.data |
| | | }) |
| | | |
| | | dialogFormVisible.value = true |
| | | } |
| | | const getCityListChange = (id) => { |
| | | getCityList({provinceId: id}).then(res => { |
| | | cityOptions.value = res.data |
| | | }) |
| | | } |
| | | |
| | | // 添加操作 |
| | |
| | | customerOption.value = res |
| | | }) |
| | | |
| | | // 加载省份列表 |
| | | await getProvinceList().then(res => { |
| | | provinceOptions.value = res.data |
| | | }) |
| | | |
| | | // 如果后端返回的是name,需要转换为id |
| | | let provinceId = row.province |
| | | let cityId = row.city |
| | | |
| | | // 如果province是name字符串,查找对应的id |
| | | if (row.province && typeof row.province === 'string' && !/^\d+$/.test(row.province)) { |
| | | const provinceOption = provinceOptions.value.find(item => item.name === row.province) |
| | | if (provinceOption) { |
| | | provinceId = provinceOption.id |
| | | // 加载对应的城市列表 |
| | | await getCityList({ provinceId: provinceId }).then(res => { |
| | | cityOptions.value = res.data |
| | | // 如果city是name字符串,查找对应的id |
| | | if (row.city && typeof row.city === 'string' && !/^\d+$/.test(row.city)) { |
| | | const cityOption = cityOptions.value.find(item => item.name === row.city) |
| | | if (cityOption) { |
| | | cityId = cityOption.id |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } else if (row.province) { |
| | | // 如果province是id,直接加载城市列表 |
| | | await getCityList({ id: row.province }).then(res => { |
| | | cityOptions.value = res.data |
| | | }) |
| | | } |
| | | |
| | | // 使用当前账号和当天日期作为默认值 |
| | | Object.assign(form, row, { |
| | | province: provinceId, // 使用转换后的id |
| | | city: cityId, // 使用转换后的id |
| | | entryPerson: userStore.nickName, // 设置录入人为当前账号 |
| | | entryDate: dayjs().format('YYYY-MM-DD') // 设置录入时间为当天 |
| | | }) |
| | |
| | | tempFileIds = fileList.value.map(item => item.tempId) |
| | | } |
| | | |
| | | // 将省份和市的id转换为name |
| | | const provinceName = form.province ? provinceOptions.value.find(item => item.id === form.province)?.name || form.province : '' |
| | | const cityName = form.city ? cityOptions.value.find(item => item.id === form.city)?.name || form.city : '' |
| | | |
| | | let api |
| | | let successMessage |
| | | let submitData |
| | |
| | | successMessage = '新建成功' |
| | | submitData = { |
| | | ...form, |
| | | province: provinceName, // 传name而不是id |
| | | city: cityName, // 传name而不是id |
| | | tempFileIds: tempFileIds, |
| | | type: 9 // 商机管理的类型标识 |
| | | } |
| | |
| | | successMessage = '修改成功' |
| | | submitData = { |
| | | ...form, |
| | | province: provinceName, // 传name而不是id |
| | | city: cityName, // 传name而不是id |
| | | tempFileIds: tempFileIds, |
| | | type: 9 // 商机管理的类型标识 |
| | | } |