问题处理
parent
4d78cc06f2
commit
990223ec34
|
|
@ -18,75 +18,78 @@
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.name"
|
||||||
:value="item.id" />
|
:value="item.id" />
|
||||||
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
import { ref, watch, nextTick, onMounted, onBeforeUnmount } from 'vue'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
|
||||||
defineOptions({ name: 'SelectCustomer' })
|
defineOptions({ name: 'SelectCustomer' })
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
disabled: propTypes.number.def(undefined),
|
disabled: propTypes.number.def(undefined),
|
||||||
modelValue: propTypes.number.def(undefined),
|
modelValue: propTypes.number.def(undefined),
|
||||||
placeholder: {
|
placeholder: {
|
||||||
type:String,
|
type: String,
|
||||||
default: '请选择'
|
default: '请选择'
|
||||||
},
|
},
|
||||||
customerList: propTypes.object.def([]), //所有数据
|
customerList: propTypes.object.def([]), // 所有数据
|
||||||
})
|
})
|
||||||
const options = ref([]) //显示的数据
|
|
||||||
const selectValue = ref( '')
|
const options = ref([]) // 显示的数据
|
||||||
|
const selectValue = ref('')
|
||||||
|
const loading = ref(false)
|
||||||
|
const allFilterEvents = ref([])
|
||||||
|
|
||||||
watch(() => props.modelValue, (val) => {
|
watch(() => props.modelValue, (val) => {
|
||||||
selectValue.value = val
|
selectValue.value = val
|
||||||
let arr = options.value.filter( v=> v.id === val)
|
let arr = options.value.filter(v => v.id === val)
|
||||||
if (!arr.length) {
|
if (!arr.length) {
|
||||||
let selectItem = props.customerList.filter( v=> v.id === val)
|
let selectItem = props.customerList.filter(v => v.id === val)
|
||||||
options.value = [...options.value, ...selectItem]
|
options.value = [...options.value, ...selectItem]
|
||||||
}
|
}
|
||||||
}, {
|
}, { immediate: true })
|
||||||
immediate: true,
|
|
||||||
});
|
|
||||||
watch(() => props.customerList, (val) => {
|
watch(() => props.customerList, (val) => {
|
||||||
options.value = val.slice(0, 10)
|
options.value = val.slice(0, 10)
|
||||||
}, {
|
}, { deep: true })
|
||||||
deep: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
let pageNo = ref(1)
|
let pageNo = ref(1)
|
||||||
let pageSize = ref(10)
|
let pageSize = ref(10)
|
||||||
const loading = ref(false);
|
|
||||||
const allFilterEvents = reactive([]);
|
|
||||||
const vElSelectLoadmore = {
|
const vElSelectLoadmore = {
|
||||||
beforeMount(el, binding) {
|
beforeMount(el, binding) {
|
||||||
const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
let selectDom = null;
|
||||||
const loadMores = function() {
|
nextTick(() => {
|
||||||
const isBase = this.scrollHeight - this.scrollTop <= this.clientHeight + 20;
|
selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
||||||
if (isBase) {
|
if (selectDom) {
|
||||||
binding.value && binding.value();
|
const loadMores = function () {
|
||||||
|
if (this.scrollHeight - this.scrollTop <= this.clientHeight + 20) {
|
||||||
|
binding.value && binding.value();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
el.selectLoadMore = loadMores;
|
||||||
|
selectDom.addEventListener('scroll', loadMores.bind(selectDom));
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
el.selectDomInfo = selectDom;
|
|
||||||
el.selectLoadMore = loadMores;
|
|
||||||
selectDom?.addEventListener('scroll', loadMores.bind(selectDom));
|
|
||||||
},
|
},
|
||||||
beforeUnmount(el) {
|
beforeUnmount(el) {
|
||||||
if (el.selectLoadMore) {
|
if (el.selectLoadMore) {
|
||||||
el.selectDomInfo.removeEventListener('scroll', el.selectLoadMore);
|
const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap');
|
||||||
delete el.selectDomInfo;
|
if (selectDom) {
|
||||||
|
selectDom.removeEventListener('scroll', el.selectLoadMore);
|
||||||
|
}
|
||||||
delete el.selectLoadMore;
|
delete el.selectLoadMore;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
watch(() => allFilterEvents, () => {
|
watch(allFilterEvents, () => {
|
||||||
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
let startIndex = pageNo.value * pageSize.value - pageSize.value;
|
||||||
let endIndex = pageNo.value * pageSize.value;
|
let endIndex = pageNo.value * pageSize.value;
|
||||||
options.value = allFilterEvents.slice(startIndex, endIndex);
|
options.value = allFilterEvents.value.slice(startIndex, endIndex);
|
||||||
}, {
|
}, { immediate: true, deep: true })
|
||||||
immediate: true,
|
|
||||||
deep: true
|
|
||||||
});
|
|
||||||
|
|
||||||
const loadmore = () => {
|
const loadmore = () => {
|
||||||
if (props.customerList.length <= options.value.length) return;
|
if (props.customerList.length <= options.value.length) return;
|
||||||
|
|
@ -101,31 +104,31 @@ const loadmore = () => {
|
||||||
];
|
];
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
const filterOptions = (query = '') => {
|
const filterOptions = (query = '') => {
|
||||||
pageNo.value = 1;
|
pageNo.value = 1;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
if (query === '') {
|
if (query === '') {
|
||||||
allFilterEvents.splice(0, allFilterEvents.length, ...props.customerList);
|
allFilterEvents.value = [...props.customerList];
|
||||||
} else {
|
} else {
|
||||||
allFilterEvents.splice(0, allFilterEvents.length, ...props.customerList.filter(item => item.name.includes(query)));
|
allFilterEvents.value = props.customerList.filter(item => item.name.includes(query));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
}
|
||||||
|
|
||||||
const handleVisibleChange = (visible) => {
|
const handleVisibleChange = (visible) => {
|
||||||
if (!visible) {
|
if (!visible) {
|
||||||
pageNo.value = 1;
|
pageNo.value = 1;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
allFilterEvents.splice(0, allFilterEvents.length, ...props.customerList);
|
allFilterEvents.value = [...props.customerList];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
const emit = defineEmits(['update:modelValue', 'change'])
|
const emit = defineEmits(['update:modelValue', 'change'])
|
||||||
const handleEventsChange = (val) => {
|
const handleEventsChange = (val) => {
|
||||||
emit('update:modelValue', val);
|
emit('update:modelValue', val);
|
||||||
emit('change', val);
|
emit('change', val);
|
||||||
};
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -217,6 +217,7 @@ export enum DICT_TYPE {
|
||||||
CRM_PRODUCT_INVOICE_ITEMS='crm_product_invoice_items',// 产品开票项目
|
CRM_PRODUCT_INVOICE_ITEMS='crm_product_invoice_items',// 产品开票项目
|
||||||
CRM_SERVICE_FEE_INVOICE='crm_service_fee_invoice',// 服务费票据
|
CRM_SERVICE_FEE_INVOICE='crm_service_fee_invoice',// 服务费票据
|
||||||
CRM_SERVICE_FEE_INVOICE_ITEMS='crm_service_fee_invoice_items',// 服务费开票项目
|
CRM_SERVICE_FEE_INVOICE_ITEMS='crm_service_fee_invoice_items',// 服务费开票项目
|
||||||
|
SALE_STAGE='sale_stage',// 销售阶段
|
||||||
|
|
||||||
CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型
|
CRM_PRODUCT_CATEGORY = "crm_product_category", //CRM 产品类型
|
||||||
CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型
|
CRM_PRODUCT_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型
|
||||||
|
|
|
||||||
|
|
@ -233,4 +233,7 @@ onMounted(async () => {
|
||||||
// 获取流程定义列表
|
// 获取流程定义列表
|
||||||
processDefinitionList.value = await DefinitionApi.getSimpleProcessDefinitionList()
|
processDefinitionList.value = await DefinitionApi.getSimpleProcessDefinitionList()
|
||||||
})
|
})
|
||||||
|
onActivated(()=>{
|
||||||
|
getList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,11 @@
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="商机名称" prop="name">
|
<el-form-item label="商机名称" prop="name">
|
||||||
<el-input v-model="formData.name" :disabled="type" clearable placeholder="请输入商机名称" />
|
<el-input v-model="formData.name" :disabled="type" clearable placeholder="请输入商机名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="线索拓展人" prop="ownerUserId">
|
<el-form-item label="线索拓展人" prop="ownerUserId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="商机状态组" prop="statusTypeId">
|
<el-form-item label="商机状态组" prop="statusTypeId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.statusTypeId"
|
v-model="formData.statusTypeId"
|
||||||
|
|
@ -102,7 +102,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="预计成交日期" prop="dealTime">
|
<el-form-item label="预计成交日期" prop="dealTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
|
@ -117,7 +117,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="销售阶段" prop="saleStage">
|
<el-form-item label="销售阶段" prop="saleStage">
|
||||||
<el-select v-model="formData.saleStage" :disabled="type" clearable placeholder="请选择销售阶段">
|
<el-select v-model="formData.saleStage" disabled clearable placeholder="请选择销售阶段">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions('sale_stage')"
|
v-for="dict in getIntDictOptions('sale_stage')"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -304,7 +304,7 @@ const formData = ref({
|
||||||
offlinePrice: 0,
|
offlinePrice: 0,
|
||||||
totalProductPrice: 0,
|
totalProductPrice: 0,
|
||||||
totalPrice: 0,
|
totalPrice: 0,
|
||||||
saleStage: undefined,
|
saleStage: 1,
|
||||||
paymentTerm: undefined,
|
paymentTerm: undefined,
|
||||||
creditMethod: undefined,
|
creditMethod: undefined,
|
||||||
creditCalcCycle: undefined,
|
creditCalcCycle: undefined,
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,25 @@
|
||||||
class="-mb-15px"
|
class="-mb-15px"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="商机名称" prop="name">
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
<el-input
|
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||||
v-model="queryParams.name"
|
<!-- <el-select
|
||||||
class="!w-240px"
|
v-model="queryParams.customerId"
|
||||||
clearable
|
class="!w-240px"
|
||||||
placeholder="请输入商机名称"
|
clearable
|
||||||
@keyup.enter="handleQuery"
|
lable-key="name"
|
||||||
/>
|
placeholder="请选择客户"
|
||||||
</el-form-item>
|
value-key="id"
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in customerList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id!"
|
||||||
|
/>
|
||||||
|
</el-select> -->
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery">
|
<el-button @click="handleQuery">
|
||||||
<Icon class="mr-5px" icon="ep:search" />
|
<Icon class="mr-5px" icon="ep:search" />
|
||||||
|
|
@ -118,10 +128,15 @@
|
||||||
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="商机状态组"
|
label="销售阶段"
|
||||||
prop="statusTypeName"
|
prop="saleStage"
|
||||||
width="140"
|
width="140"
|
||||||
/>
|
>
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.SALE_STAGE" :value="scope.row.saleStage" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
align="center"
|
align="center"
|
||||||
label="商机阶段"
|
label="商机阶段"
|
||||||
|
|
@ -168,6 +183,11 @@ import * as BusinessApi from '@/api/crm/business'
|
||||||
import BusinessForm from './BusinessForm.vue'
|
import BusinessForm from './BusinessForm.vue'
|
||||||
import { erpPriceTableColumnFormatter } from '@/utils'
|
import { erpPriceTableColumnFormatter } from '@/utils'
|
||||||
import { TabsPaneContext } from 'element-plus'
|
import { TabsPaneContext } from 'element-plus'
|
||||||
|
import SelectComponent from '@/components/SelectCustomer/src/index.vue'
|
||||||
|
import { DICT_TYPE } from '@/utils/dict'
|
||||||
|
import * as CustomerApi from '@/api/crm/customer'
|
||||||
|
|
||||||
|
const customerList = ref<CustomerApi.CustomerVO[]>([]) // 客户列表
|
||||||
|
|
||||||
defineOptions({ name: 'CrmBusiness' })
|
defineOptions({ name: 'CrmBusiness' })
|
||||||
|
|
||||||
|
|
@ -267,7 +287,8 @@ const handleExport = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
onMounted(() => {
|
onMounted( async () => {
|
||||||
|
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||||
getList()
|
getList()
|
||||||
})
|
})
|
||||||
onActivated(()=>{
|
onActivated(()=>{
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@
|
||||||
基础信息
|
基础信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="合同名称" prop="name">
|
<el-form-item label="合同名称" prop="name">
|
||||||
<el-input v-model="formData.name" placeholder="请输入合同名称" />
|
<el-input v-model="formData.name" placeholder="请输入合同名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="客户名称" prop="customerId">
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
|
|
@ -84,6 +84,18 @@
|
||||||
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!-- <el-col :span="8">
|
||||||
|
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||||
|
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in templateOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.name"
|
||||||
|
:value="dict.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||||
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
||||||
|
|
@ -102,10 +114,8 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="线上总金额" prop="onlinePrice">
|
<el-form-item label="基础服务费合计" prop="onlinePrice">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
v-model="formData.onlinePrice"
|
v-model="formData.onlinePrice"
|
||||||
|
|
@ -114,7 +124,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="线下总金额" prop="offlinePrice">
|
<el-form-item label="线下总金额" prop="offlinePrice">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
|
|
@ -123,9 +133,9 @@
|
||||||
:formatter="erpPriceInputFormatter"
|
:formatter="erpPriceInputFormatter"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="总金额" prop="price">
|
<el-form-item label="服务费收入合计" prop="price">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
placeholder=""
|
placeholder=""
|
||||||
|
|
@ -134,18 +144,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
|
||||||
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in templateOptions"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.name"
|
|
||||||
:value="dict.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|
@ -563,6 +562,7 @@ const formRules = reactive({
|
||||||
penaltyRate: [{ required: true, message: '违约金比例不能为空', trigger: 'blur' }],
|
penaltyRate: [{ required: true, message: '违约金比例不能为空', trigger: 'blur' }],
|
||||||
latePaymentRate: [{ required: true, message: '延期付款利率不能为空', trigger: 'blur' }],
|
latePaymentRate: [{ required: true, message: '延期付款利率不能为空', trigger: 'blur' }],
|
||||||
collUserId: [{ required: true, message: '协作人不能为空', trigger: 'blur' }],
|
collUserId: [{ required: true, message: '协作人不能为空', trigger: 'blur' }],
|
||||||
|
settleMethod: [{ required: true, message: '财务结算方式不能为空', trigger: 'change' }],
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
|
@ -821,7 +821,6 @@ const getContactOptions = computed(() =>
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
if(!props.changeType) {
|
if(!props.changeType) {
|
||||||
console.log('%csrc/views/crm/contract/ContractForm.vue:835 props.id', 'color: #007acc;', props.id);
|
|
||||||
formType.value = props.id || route.query.id
|
formType.value = props.id || route.query.id
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
@ -833,12 +832,12 @@ onMounted(async () => {
|
||||||
// 获得报价列表
|
// 获得报价列表
|
||||||
quotationList.value = await QuotationApi.getSelfSimpleQuotationList()
|
quotationList.value = await QuotationApi.getSelfSimpleQuotationList()
|
||||||
|
|
||||||
//票据
|
// //票据
|
||||||
const tempData = await BillTemplateApi.getBillTemplatePage({
|
// const tempData = await BillTemplateApi.getBillTemplatePage({
|
||||||
pageNo: 1,
|
// pageNo: 1,
|
||||||
pageSize: 1000,
|
// pageSize: 1000,
|
||||||
})
|
// })
|
||||||
templateOptions.value = tempData.list
|
// templateOptions.value = tempData.list
|
||||||
|
|
||||||
|
|
||||||
// 获得部门树
|
// 获得部门树
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@
|
||||||
基础信息
|
基础信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="合同名称" prop="name">
|
<el-form-item label="合同名称" prop="name">
|
||||||
<el-input v-model="formData.name" disabled placeholder="" />
|
<el-input v-model="formData.name" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="客户名称" prop="customerId">
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -98,6 +98,18 @@
|
||||||
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<!-- <el-col :span="8">
|
||||||
|
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
||||||
|
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in templateOptions"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.name"
|
||||||
|
:value="dict.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="第几次报价" prop="quotationTimes">
|
<el-form-item label="第几次报价" prop="quotationTimes">
|
||||||
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
<el-input v-model="formData.quotationTimes" disabled placeholder="" />
|
||||||
|
|
@ -115,22 +127,9 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="票据模板" prop="invoiceTemplateId">
|
|
||||||
<el-select v-model="formData.invoiceTemplateId" disabled placeholder="">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in templateOptions"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.name"
|
|
||||||
:value="dict.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="线上总金额" prop="onlinePrice">
|
<el-form-item label="基础服务费合计" prop="onlinePrice">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
v-model="formData.onlinePrice"
|
v-model="formData.onlinePrice"
|
||||||
|
|
@ -139,7 +138,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="线下总金额" prop="offlinePrice">
|
<el-form-item label="线下总金额" prop="offlinePrice">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
|
|
@ -148,9 +147,9 @@
|
||||||
:formatter="erpPriceInputFormatter"
|
:formatter="erpPriceInputFormatter"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="总金额" prop="price">
|
<el-form-item label="服务费收入合计" prop="price">
|
||||||
<el-input
|
<el-input
|
||||||
disabled
|
disabled
|
||||||
placeholder=""
|
placeholder=""
|
||||||
|
|
@ -847,11 +846,11 @@ onMounted(async () => {
|
||||||
quotationList.value = await QuotationApi.getSimpleQuotationList()
|
quotationList.value = await QuotationApi.getSimpleQuotationList()
|
||||||
|
|
||||||
//票据
|
//票据
|
||||||
const tempData = await BillTemplateApi.getBillTemplatePage({
|
// const tempData = await BillTemplateApi.getBillTemplatePage({
|
||||||
pageNo: 1,
|
// pageNo: 1,
|
||||||
pageSize: 1000,
|
// pageSize: 1000,
|
||||||
})
|
// })
|
||||||
templateOptions.value = tempData.list
|
// templateOptions.value = tempData.list
|
||||||
|
|
||||||
|
|
||||||
// 获得部门树
|
// 获得部门树
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="保险名称" prop="insuranceId">
|
<el-form-item label="保险名称" prop="insuranceId">
|
||||||
<el-select v-model="formData.insuranceId" class="w-1/1" placeholder="请选择保险名称">
|
<el-select v-model="formData.insuranceId" class="w-1/1" placeholder="请选择保险名称">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -82,6 +82,19 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-col> -->
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否有保险" prop="hasInsurance">
|
||||||
|
<el-radio-group v-model="formData.hasInsurance" :disabled="type">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in getStrDictOptions(DICT_TYPE.TECH_SUPPORT)"
|
||||||
|
:key="dict.value"
|
||||||
|
:value="dict.value == 2 ? 0 : 1"
|
||||||
|
>
|
||||||
|
{{ dict.label }}
|
||||||
|
</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
|
|
@ -99,8 +112,8 @@
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
|
||||||
import * as ProductApi from '@/api/crm/product'
|
import * as ProductApi from '@/api/crm/product'
|
||||||
|
import { getIntDictOptions, getStrDictOptions, DICT_TYPE, getBoolDictOptions } from '@/utils/dict';
|
||||||
|
|
||||||
defineOptions({ name: 'CrmProductForm' })
|
defineOptions({ name: 'CrmProductForm' })
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,11 @@
|
||||||
<el-input v-model="formData.regType" disabled clearable />
|
<el-input v-model="formData.regType" disabled clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="上市情况" prop="listingStatus">
|
<el-form-item label="上市情况" prop="listingStatus">
|
||||||
<el-input v-model="formData.listingStatus" disabled clearable />
|
<el-input v-model="formData.listingStatus" disabled clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="融资信息" prop="financingInfo">
|
<el-form-item label="融资信息" prop="financingInfo">
|
||||||
<el-input v-model="formData.financingInfo" disabled clearable />
|
<el-input v-model="formData.financingInfo" disabled clearable />
|
||||||
|
|
@ -105,11 +105,13 @@
|
||||||
<el-input v-model="formData.enterpriseType" clearable />
|
<el-input v-model="formData.enterpriseType" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="营业状态" prop="serviceStatus">
|
<el-form-item label="营业状态" prop="serviceStatus">
|
||||||
<el-input v-model="formData.serviceStatus" disabled clearable />
|
<el-input v-model="formData.serviceStatus" disabled clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="被告记录" prop="defendantRecord">
|
<el-form-item label="被告记录" prop="defendantRecord">
|
||||||
<el-radio-group v-model="formData.defendantRecord" disabled>
|
<el-radio-group v-model="formData.defendantRecord" disabled>
|
||||||
|
|
|
||||||
|
|
@ -75,11 +75,11 @@
|
||||||
<el-input v-model="formData.regType" placeholder="请输入公司类型" clearable />
|
<el-input v-model="formData.regType" placeholder="请输入公司类型" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="上市情况" prop="listingStatus">
|
<el-form-item label="上市情况" prop="listingStatus">
|
||||||
<el-input v-model="formData.listingStatus" placeholder="请输入上市情况" clearable />
|
<el-input v-model="formData.listingStatus" placeholder="请输入上市情况" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="融资信息" prop="financingInfo">
|
<el-form-item label="融资信息" prop="financingInfo">
|
||||||
<el-input v-model="formData.financingInfo" placeholder="请输入融资信息" clearable />
|
<el-input v-model="formData.financingInfo" placeholder="请输入融资信息" clearable />
|
||||||
|
|
@ -100,16 +100,18 @@
|
||||||
<el-input v-model="formData.startDate" placeholder="请输入成立日期" clearable />
|
<el-input v-model="formData.startDate" placeholder="请输入成立日期" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="企业类型" prop="enterpriseType">
|
<el-form-item label="企业类型" prop="enterpriseType">
|
||||||
<el-input v-model="formData.enterpriseType" clearable />
|
<el-input v-model="formData.enterpriseType" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="营业状态" prop="serviceStatus">
|
<el-form-item label="营业状态" prop="serviceStatus">
|
||||||
<el-input v-model="formData.serviceStatus" placeholder="请输入营业状态" clearable />
|
<el-input v-model="formData.serviceStatus" placeholder="请输入营业状态" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="被告记录" prop="defendantRecord">
|
<el-form-item label="被告记录" prop="defendantRecord">
|
||||||
<el-radio-group v-model="formData.defendantRecord">
|
<el-radio-group v-model="formData.defendantRecord">
|
||||||
|
|
@ -534,16 +536,17 @@ watch(
|
||||||
|
|
||||||
for (const product of newProducts) {
|
for (const product of newProducts) {
|
||||||
if (typeof product.basicServiceFee) {
|
if (typeof product.basicServiceFee) {
|
||||||
totalOnlinePrice += Number(product.basicServiceFee);
|
console.log('%csrc/views/crm/quotation/QuotationForm.vue:537 object', 'color: pink;', product.basicServiceFee);
|
||||||
|
totalOnlinePrice += Number(product.basicServiceFee || null);
|
||||||
}
|
}
|
||||||
if (typeof product.totalServiceFee) {
|
if (typeof product.totalServiceFee) {
|
||||||
totalOfflinePrice += Number(product.totalServiceFee);
|
totalOfflinePrice += Number(product.totalServiceFee || null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
formData.value.onlinePrice = totalOnlinePrice.toFixed(2)
|
formData.value.onlinePrice = totalOnlinePrice.toFixed(2) || ''
|
||||||
// formData.value.offlinePrice = (totalOfflinePrice + totalOnlinePrice).toFixed(2)
|
// formData.value.offlinePrice = (totalOfflinePrice + totalOnlinePrice).toFixed(2)
|
||||||
// let all = totalOnlinePrice + totalOfflinePrice + totalOnlinePrice
|
// let all = totalOnlinePrice + totalOfflinePrice + totalOnlinePrice
|
||||||
formData.value.totalPrice = totalOfflinePrice.toFixed(2)
|
formData.value.totalPrice = totalOfflinePrice.toFixed(2) || ''
|
||||||
},
|
},
|
||||||
{ deep: true }
|
{ deep: true }
|
||||||
);
|
);
|
||||||
|
|
@ -627,8 +630,8 @@ const onBusinessChange = async (businessId: string) => {
|
||||||
formData.value.creditCalcCycle = res.creditCalcCycle;
|
formData.value.creditCalcCycle = res.creditCalcCycle;
|
||||||
formData.value.deptId = res.deptId;
|
formData.value.deptId = res.deptId;
|
||||||
formData.value.offlinePrice = res.offlinePrice;
|
formData.value.offlinePrice = res.offlinePrice;
|
||||||
formData.value.onlinePrice = res.onlinePrice;
|
// formData.value.onlinePrice = res.onlinePrice || '';
|
||||||
formData.value.totalPrice = res.totalPrice;
|
// formData.value.totalPrice = res.totalPrice || '';
|
||||||
formData.value.creditAmount = res.creditAmount;
|
formData.value.creditAmount = res.creditAmount;
|
||||||
|
|
||||||
// 🔁 自动加载客户详情
|
// 🔁 自动加载客户详情
|
||||||
|
|
|
||||||
|
|
@ -9,16 +9,28 @@
|
||||||
>
|
>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24">
|
|
||||||
<ContentWrap style="border: none">
|
|
||||||
本人信息
|
|
||||||
</ContentWrap>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="本人姓名" prop="userId">
|
<el-form-item label="师徒类型" prop="mentorsType">
|
||||||
|
<el-select v-model="formData.mentorsType" placeholder="请选择师徒类型">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MENTORS_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row>
|
||||||
|
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="本人姓名" prop="acceptUserId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.userId"
|
v-model="formData.acceptUserId"
|
||||||
filterable
|
filterable
|
||||||
|
clearable
|
||||||
|
@change="changeUser"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in userOptions"
|
v-for="item in userOptions"
|
||||||
|
|
@ -31,64 +43,22 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="员工工号" prop="processInstanceId">
|
<el-form-item label="员工工号" prop="processInstanceId">
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
<el-input v-model="formData.acceptUserId" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="手机号" prop="auditStatus">
|
<el-form-item label="手机号" prop="">
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
<el-input v-model="formData.mobile" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="部门名称" prop="auditStatus">
|
<el-form-item label="部门名称" prop="">
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
<el-input v-model="formData.postName" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="岗位名称" prop="auditStatus">
|
<el-form-item label="岗位名称" prop="">
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
<el-input v-model="formData.deptName" disabled placeholder="" />
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<ContentWrap style="border: none">
|
|
||||||
师徒类型
|
|
||||||
</ContentWrap>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="24">
|
|
||||||
<el-form-item label="师徒类型" prop="mentorsType">
|
|
||||||
<el-select v-model="formData.mentorsType" placeholder="请选择师徒类型">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MENTORS_TYPE)"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="本人姓名" prop="userId">
|
|
||||||
<el-input v-model="formData.userId" placeholder="请输入员工档案ID" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="员工工号" prop="processInstanceId">
|
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="手机号" prop="auditStatus">
|
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="部门名称" prop="auditStatus">
|
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="岗位名称" prop="auditStatus">
|
|
||||||
<el-input v-model="formData.processInstanceId" disabled placeholder="" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
|
@ -96,30 +66,35 @@
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.effectiverDate"
|
v-model="formData.effectiverDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="x"
|
value-format="YYYY-MM-DD"
|
||||||
|
style="width:100%"
|
||||||
placeholder="选择申请日期"
|
placeholder="选择申请日期"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<div style="text-align: right">
|
||||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||||
</template>
|
</div>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { MentorsApplyApi, MentorsApplyVO } from '@/api/hrm/mentorsapply'
|
import { MentorsApplyApi, MentorsApplyVO } from '@/api/hrm/mentorsapply'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
import { useUserStore } from '@/store/modules/user'
|
||||||
|
|
||||||
/** 师徒申请 表单 */
|
/** 师徒申请 表单 */
|
||||||
defineOptions({ name: 'MentorsApplyForm' })
|
defineOptions({ name: 'MentorsApplyForm' })
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
const props = defineProps({
|
||||||
|
id: propTypes.number.def(undefined),
|
||||||
|
})
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
|
|
@ -135,9 +110,8 @@ const formData = ref({
|
||||||
effectiverDate: undefined
|
effectiverDate: undefined
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
userId: [{ required: true, message: '员工档案ID不能为空', trigger: 'blur' }],
|
|
||||||
auditStatus: [{ required: true, message: '审批状态不能为空', trigger: 'blur' }],
|
auditStatus: [{ required: true, message: '审批状态不能为空', trigger: 'blur' }],
|
||||||
mentorsType: [{ required: true, message: '师徒类型. 0拜师 1收徒不能为空', trigger: 'change' }],
|
mentorsType: [{ required: true, message: '师徒类型不能为空', trigger: 'change' }],
|
||||||
acceptUserId: [{ required: true, message: '接受员工Id不能为空', trigger: 'blur' }],
|
acceptUserId: [{ required: true, message: '接受员工Id不能为空', trigger: 'blur' }],
|
||||||
effectiverDate: [{ required: true, message: '生效日期不能为空', trigger: 'blur' }]
|
effectiverDate: [{ required: true, message: '生效日期不能为空', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
|
|
@ -170,7 +144,7 @@ const submitForm = async () => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as MentorsApplyVO
|
const data = formData.value as unknown as MentorsApplyVO
|
||||||
if (formType.value === 'create') {
|
if (!formType.value) {
|
||||||
await MentorsApplyApi.createMentorsApply(data)
|
await MentorsApplyApi.createMentorsApply(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -199,8 +173,26 @@ const resetForm = () => {
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const changeUser = (val) => {
|
||||||
|
let arr = userOptions.value.filter( v => v.id == val)
|
||||||
|
if (arr.length) {
|
||||||
|
formData.value.mobile = arr[0]['mobile']
|
||||||
|
formData.value.postName = arr[0]['postName']
|
||||||
|
formData.value.deptName = arr[0]['deptName']
|
||||||
|
formData.value.acceptUserId = arr[0]['id']
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** 初始化 **/
|
/** 初始化 **/
|
||||||
|
const route = useRoute();
|
||||||
onMounted(async() => {
|
onMounted(async() => {
|
||||||
|
formType.value = props.id || route.query.id;
|
||||||
|
|
||||||
|
if (formType.value) {
|
||||||
|
open(formType.value)
|
||||||
|
} else {
|
||||||
|
formData.value.userId = useUserStore().getUser.id
|
||||||
|
}
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,7 @@ const formRules = reactive<FormRules>({
|
||||||
],
|
],
|
||||||
mobile: [
|
mobile: [
|
||||||
{
|
{
|
||||||
|
required: true,
|
||||||
pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
|
pattern: /^(?:(?:\+|00)86)?1(?:3[\d]|4[5-79]|5[0-35-9]|6[5-7]|7[0-8]|8[\d]|9[189])\d{8}$/,
|
||||||
message: '请输入正确的手机号码',
|
message: '请输入正确的手机号码',
|
||||||
trigger: 'blur'
|
trigger: 'blur'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue