parent
							
								
									98c046ecd7
								
							
						
					
					
						commit
						73f4521bc7
					
				| 
						 | 
				
			
			@ -10,6 +10,7 @@
 | 
			
		|||
      <el-form-item label="商机名称" prop="name">
 | 
			
		||||
        <el-input v-model="formData.name" placeholder="请输入商机名称" />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <!-- TODO 芋艿:客户列表的组件 -->
 | 
			
		||||
      <el-form-item label="客户名称" prop="customerName">
 | 
			
		||||
        <el-popover
 | 
			
		||||
          placement="bottom"
 | 
			
		||||
| 
						 | 
				
			
			@ -78,12 +79,7 @@
 | 
			
		|||
        </el-select>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item label="商机状态" prop="statusId">
 | 
			
		||||
        <el-select
 | 
			
		||||
          v-model="formData.statusId"
 | 
			
		||||
          placeholder="请选择商机状态"
 | 
			
		||||
          clearable
 | 
			
		||||
          size="small"
 | 
			
		||||
        >
 | 
			
		||||
        <el-select v-model="formData.statusId" placeholder="请选择商机状态" clearable size="small">
 | 
			
		||||
          <el-option
 | 
			
		||||
            v-for="item in businessStatusList"
 | 
			
		||||
            :key="item.id"
 | 
			
		||||
| 
						 | 
				
			
			@ -122,9 +118,9 @@
 | 
			
		|||
<script setup lang="ts">
 | 
			
		||||
import * as BusinessApi from '@/api/crm/business'
 | 
			
		||||
import * as BusinessStatusTypeApi from '@/api/crm/businessStatusType'
 | 
			
		||||
import * as CustomerApi from "@/api/crm/customer";
 | 
			
		||||
import * as CustomerApi from '@/api/crm/customer'
 | 
			
		||||
import { DICT_TYPE } from '@/utils/dict'
 | 
			
		||||
import {ElTable} from "element-plus";
 | 
			
		||||
import { ElTable } from 'element-plus'
 | 
			
		||||
 | 
			
		||||
const { t } = useI18n() // 国际化
 | 
			
		||||
const message = useMessage() // 消息弹窗
 | 
			
		||||
| 
						 | 
				
			
			@ -233,10 +229,12 @@ const resetForm = () => {
 | 
			
		|||
  }
 | 
			
		||||
  formRef.value?.resetFields()
 | 
			
		||||
}
 | 
			
		||||
const changeBusinessStatusType = async (id) => {
 | 
			
		||||
  // 加载商机状态列表
 | 
			
		||||
  businessStatusList.value = await BusinessStatusTypeApi.getBusinessStatusListByTypeId(id)
 | 
			
		||||
 | 
			
		||||
/** 加载商机状态列表 */
 | 
			
		||||
const changeBusinessStatusType = async (typeId: number) => {
 | 
			
		||||
  businessStatusList.value = await BusinessStatusTypeApi.getBusinessStatusListByTypeId(typeId)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const queryParams = reactive({
 | 
			
		||||
  pageNo: 1,
 | 
			
		||||
  pageSize: 10,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,22 +23,12 @@
 | 
			
		|||
      </el-form-item>
 | 
			
		||||
      <el-form-item label="状态设置" prop="statusList">
 | 
			
		||||
        <el-table border style="width: 100%" :data="formData.statusList">
 | 
			
		||||
          <el-table-column
 | 
			
		||||
             align="center"
 | 
			
		||||
             label="状态"
 | 
			
		||||
             width="120"
 | 
			
		||||
             prop="star"
 | 
			
		||||
          >
 | 
			
		||||
          <el-table-column align="center" label="状态" width="120" prop="star">
 | 
			
		||||
            <template #default="scope">
 | 
			
		||||
              <el-text>状态{{scope.$index+1}}</el-text>
 | 
			
		||||
              <el-text>状态{{ scope.$index + 1 }}</el-text>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column
 | 
			
		||||
            align="center"
 | 
			
		||||
            label="状态名称"
 | 
			
		||||
            width="120"
 | 
			
		||||
            prop="name"
 | 
			
		||||
          >
 | 
			
		||||
          <el-table-column align="center" label="状态名称" width="120" prop="name">
 | 
			
		||||
            <template #default="{ row }">
 | 
			
		||||
              <el-input v-model="row.name" placeholder="请输入状态名称" />
 | 
			
		||||
            </template>
 | 
			
		||||
| 
						 | 
				
			
			@ -50,10 +40,13 @@
 | 
			
		|||
          </el-table-column>
 | 
			
		||||
          <el-table-column label="操作" align="center">
 | 
			
		||||
            <template #default="scope">
 | 
			
		||||
              <el-button link type="primary" @click="addStatusArea(scope.$index)">
 | 
			
		||||
                添加
 | 
			
		||||
              </el-button>
 | 
			
		||||
              <el-button link type="danger" @click="deleteStatusArea(scope.$index)" v-show="scope.$index>0">
 | 
			
		||||
              <el-button link type="primary" @click="addStatusArea(scope.$index)"> 添加 </el-button>
 | 
			
		||||
              <el-button
 | 
			
		||||
                link
 | 
			
		||||
                type="danger"
 | 
			
		||||
                @click="deleteStatusArea(scope.$index)"
 | 
			
		||||
                v-show="scope.$index > 0"
 | 
			
		||||
              >
 | 
			
		||||
                删除
 | 
			
		||||
              </el-button>
 | 
			
		||||
            </template>
 | 
			
		||||
| 
						 | 
				
			
			@ -69,8 +62,8 @@
 | 
			
		|||
</template>
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import * as BusinessStatusTypeApi from '@/api/crm/businessStatusType'
 | 
			
		||||
import {defaultProps, handleTree} from "@/utils/tree";
 | 
			
		||||
import * as DeptApi from "@/api/system/dept";
 | 
			
		||||
import { defaultProps, handleTree } from '@/utils/tree'
 | 
			
		||||
import * as DeptApi from '@/api/system/dept'
 | 
			
		||||
 | 
			
		||||
const { t } = useI18n() // 国际化
 | 
			
		||||
const message = useMessage() // 消息弹窗
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +79,7 @@ const formData = ref({
 | 
			
		|||
  statusList: []
 | 
			
		||||
})
 | 
			
		||||
const formRules = reactive({
 | 
			
		||||
  name: [{ required: true, message: '状态类型名不能为空', trigger: 'blur' }],
 | 
			
		||||
  name: [{ required: true, message: '状态类型名不能为空', trigger: 'blur' }]
 | 
			
		||||
})
 | 
			
		||||
const formRef = ref() // 表单 Ref
 | 
			
		||||
const deptList = ref<Tree[]>([]) // 树形结构
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +87,7 @@ const treeRef = ref() // 菜单树组件 Ref
 | 
			
		|||
const checkStrictly = ref(true) // 是否严格模式,即父子不关联
 | 
			
		||||
 | 
			
		||||
/** 打开弹窗 */
 | 
			
		||||
const open = async (type: string,  id?: number) => {
 | 
			
		||||
const open = async (type: string, id?: number) => {
 | 
			
		||||
  dialogVisible.value = true
 | 
			
		||||
  dialogTitle.value = t('action.' + type)
 | 
			
		||||
  formType.value = type
 | 
			
		||||
| 
						 | 
				
			
			@ -105,7 +98,7 @@ const open = async (type: string,  id?: number) => {
 | 
			
		|||
    try {
 | 
			
		||||
      formData.value = await BusinessStatusTypeApi.getBusinessStatusType(id)
 | 
			
		||||
      treeRef.value.setCheckedKeys(formData.value.deptIds)
 | 
			
		||||
      if(formData.value.statusList.length == 0) {
 | 
			
		||||
      if (formData.value.statusList.length == 0) {
 | 
			
		||||
        addStatusArea(0)
 | 
			
		||||
      }
 | 
			
		||||
    } finally {
 | 
			
		||||
| 
						 | 
				
			
			@ -116,7 +109,6 @@ const open = async (type: string,  id?: number) => {
 | 
			
		|||
  }
 | 
			
		||||
  // 加载部门树
 | 
			
		||||
  deptList.value = handleTree(await DeptApi.getSimpleDeptList())
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -157,16 +149,18 @@ const resetForm = () => {
 | 
			
		|||
  treeRef.value?.setCheckedNodes([])
 | 
			
		||||
  formRef.value?.resetFields()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 添加状态 */
 | 
			
		||||
const addStatusArea = (index) => {
 | 
			
		||||
const addStatusArea = () => {
 | 
			
		||||
  const data = formData.value
 | 
			
		||||
  data.statusList.push({
 | 
			
		||||
    name: '',
 | 
			
		||||
    percent: ''
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 删除状态 */
 | 
			
		||||
const deleteStatusArea = (index) => {
 | 
			
		||||
const deleteStatusArea = (index: number) => {
 | 
			
		||||
  const data = formData.value
 | 
			
		||||
  data.statusList.splice(index, 1)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue