16 changed files with 378 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