gaoluyang
3 天以前 879249b34397ba1dc2be1ff1c7afd158d35ec340
src/views/salesManagement/opportunityManagement/index.vue
@@ -38,7 +38,7 @@
        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 }">
@@ -50,12 +50,13 @@
            </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>
@@ -113,7 +114,7 @@
    <el-dialog
      v-model="dialogFormVisible"
      :title="operationType === 'add' ? '新建商机' : operationType === 'edit' ? '编辑商机' : operationType === 'addOperation' ? '添加商机' : '商机详情'"
      width="600px"
      width="1000px"
      @close="closeDialog"
    >
      <el-form
@@ -135,12 +136,25 @@
        </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>
@@ -165,7 +179,6 @@
            type="textarea"
            :rows="3"
            placeholder="请输入客户描述"
            maxlength="500"
            show-word-limit
          />
        </el-form-item>
@@ -265,12 +278,12 @@
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'
@@ -309,6 +322,7 @@
  id: undefined,
  status: undefined,
  province: '',
   city: '',
  customerName: '',
  businessSource: '',
  description: '',
@@ -366,43 +380,9 @@
  { 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) => { 
@@ -516,8 +496,16 @@
  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
   })
}
// 添加操作
@@ -596,8 +584,43 @@
    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') // 设置录入时间为当天
  })
@@ -619,6 +642,10 @@
        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
@@ -628,6 +655,8 @@
        successMessage = '新建成功'
        submitData = {
          ...form,
          province: provinceName, // 传name而不是id
          city: cityName, // 传name而不是id
          tempFileIds: tempFileIds,
          type: 9  // 商机管理的类型标识
        }
@@ -649,6 +678,8 @@
        successMessage = '修改成功'
        submitData = {
          ...form,
          province: provinceName, // 传name而不是id
          city: cityName, // 传name而不是id
          tempFileIds: tempFileIds,
          type: 9  // 商机管理的类型标识
        }