17 changed files with 379 additions and 212 deletions
@ -0,0 +1,112 @@ |
|||||
|
<template> |
||||
|
<el-dialog v-model="showDialog" title="业绩分配" |
||||
|
width="50%" class="diy-dialog-wrap" :destroy-on-close="true"> |
||||
|
|
||||
|
|
||||
|
<el-form :model="formData" label-width="120px" ref="formRef" :rules="formRules" class="page-form" |
||||
|
v-loading="loading"> |
||||
|
|
||||
|
<el-form-item label="分配人员" prop="shared_by"> |
||||
|
<el-select class="input-width" v-model="formData.shared_by" clearable placeholder="请选择分配人员"> |
||||
|
<el-option label="请选择" value=""></el-option> |
||||
|
<el-option v-for="(item, index) in consultantList" :key="index" :label="item.name" |
||||
|
:value="item.id" /> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
|
||||
|
|
||||
|
</el-form> |
||||
|
|
||||
|
|
||||
|
<!-- Footer --> |
||||
|
<template #footer> |
||||
|
<span class="dialog-footer"> |
||||
|
<el-button @click="showDialog = false">{{ t('cancel') }}</el-button> |
||||
|
<el-button type="primary" :loading="loading" @click="confirm(formRef)"> |
||||
|
{{ t('confirm') }} |
||||
|
</el-button> |
||||
|
</span> |
||||
|
</template> |
||||
|
</el-dialog> |
||||
|
</template> |
||||
|
|
||||
|
<script lang="ts" setup> |
||||
|
import { ref, reactive, computed, watch } from 'vue' |
||||
|
import { useDictionary } from '@/app/api/dict' |
||||
|
import { t } from '@/lang' |
||||
|
import type { FormInstance } from 'element-plus' |
||||
|
import { getWithPersonnelList,fpEdit } from '@/app/api/customer_resources' |
||||
|
|
||||
|
let showDialog = ref(false) |
||||
|
const loading = ref(false) |
||||
|
|
||||
|
|
||||
|
const initialFormData = { |
||||
|
shared_id:'', |
||||
|
shared_by: '', |
||||
|
} |
||||
|
const formData : Record<string, any> = reactive({ ...initialFormData }) |
||||
|
|
||||
|
const formRef = ref<FormInstance>() |
||||
|
|
||||
|
// 表单验证规则 |
||||
|
const formRules = computed(() => { |
||||
|
return { |
||||
|
shared_by: [ |
||||
|
{ required: true, message: "请选择分配人员", trigger: 'blur' }, |
||||
|
|
||||
|
] |
||||
|
} |
||||
|
}) |
||||
|
|
||||
|
const emit = defineEmits(['complete']) |
||||
|
|
||||
|
/** |
||||
|
* 确认 |
||||
|
* @param formEl |
||||
|
*/ |
||||
|
const confirm = async (formEl : FormInstance | undefined) => { |
||||
|
|
||||
|
if (loading.value || !formEl) return |
||||
|
|
||||
|
await formEl.validate(async (valid) => { |
||||
|
if (valid) { |
||||
|
loading.value = true |
||||
|
|
||||
|
let data = formData |
||||
|
|
||||
|
fpEdit(data).then(res => { |
||||
|
loading.value = false |
||||
|
showDialog.value = false |
||||
|
emit('complete') |
||||
|
}).catch(err => { |
||||
|
loading.value = false |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
const consultantList = ref([] as any[]) |
||||
|
const setConsultantList = async () => { |
||||
|
consultantList.value = await (await getWithPersonnelList({'role_id':2})).data |
||||
|
} |
||||
|
setConsultantList() |
||||
|
|
||||
|
|
||||
|
const setFormData = async (row : any = null) => { |
||||
|
Object.assign(formData, row) |
||||
|
loading.value = false |
||||
|
} |
||||
|
|
||||
|
defineExpose({ |
||||
|
showDialog, |
||||
|
setFormData |
||||
|
}) |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped></style> |
||||
|
<style lang="scss"> |
||||
|
.diy-dialog-wrap .el-form-item__label { |
||||
|
height: auto !important; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1 @@ |
|||||
|
12 |
||||
Loading…
Reference in new issue