组件相关-hrm
parent
011739879b
commit
39e49121e2
|
|
@ -47,6 +47,20 @@ export const getBusinessForm = async (params) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存工作流的业务表单定义
|
||||||
|
export const saveBusinessForm = async (data) => {
|
||||||
|
return await request.put({
|
||||||
|
url: 'bpm/form-visible/update', data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取工作流的业务表单权限
|
||||||
|
export const getLimitForm = async (params) => {
|
||||||
|
return await request.get({
|
||||||
|
url: 'bpm/form-visible/getFormVisible', params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// 获得工作流的表单定义分页
|
// 获得工作流的表单定义分页
|
||||||
export const getFormPage = async (params) => {
|
export const getFormPage = async (params) => {
|
||||||
return await request.get({
|
return await request.get({
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,6 @@ let selectComId = ref('popper' + (Math.random().toFixed(5) * 100000))
|
||||||
const vElSelectLoadmore = {
|
const vElSelectLoadmore = {
|
||||||
mounted(el, binding) {
|
mounted(el, binding) {
|
||||||
selectRef.value = el
|
selectRef.value = el
|
||||||
console.log('%csrc/components/SelectCustomer/src/index.vue:63 el,444', 'color: #007acc;', el,444);
|
|
||||||
const scrollHandler = function() {
|
const scrollHandler = function() {
|
||||||
if (this.scrollHeight - this.scrollTop <= this.clientHeight + 20) {
|
if (this.scrollHeight - this.scrollTop <= this.clientHeight + 20) {
|
||||||
binding.value && binding.value()
|
binding.value && binding.value()
|
||||||
|
|
@ -71,10 +70,8 @@ const vElSelectLoadmore = {
|
||||||
}
|
}
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// console.log('%csrc/components/SelectCustomer/src/index.vue:75 selectComId.value', 'color: #007acc;', selectComId.value);
|
|
||||||
// const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap')
|
// const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap')
|
||||||
const selectDom = document.querySelector(`.${selectComId.value} .el-select-dropdown__wrap`)
|
const selectDom = document.querySelector(`.${selectComId.value} .el-select-dropdown__wrap`)
|
||||||
console.log('%csrc/components/SelectCustomer/src/index.vue:77 object', 'color: #007acc;', selectDom);
|
|
||||||
if (selectDom) {
|
if (selectDom) {
|
||||||
// 先移除可能存在的旧监听器
|
// 先移除可能存在的旧监听器
|
||||||
selectDom.removeEventListener('scroll', scrollHandler)
|
selectDom.removeEventListener('scroll', scrollHandler)
|
||||||
|
|
@ -86,7 +83,7 @@ const vElSelectLoadmore = {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// beforeUnmount(el) {
|
// beforeUnmount(el) {
|
||||||
// const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap')
|
// const selectDom = document.querySelector(`.${selectComId.value} .el-select-dropdown__wrap`)
|
||||||
// if (selectDom && el._scrollHandler) {
|
// if (selectDom && el._scrollHandler) {
|
||||||
// selectDom.removeEventListener('scroll', el._scrollHandler)
|
// selectDom.removeEventListener('scroll', el._scrollHandler)
|
||||||
// }
|
// }
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
<div class="divide-line"></div>
|
<div class="divide-line"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-tabs type="border-card" v-model="activeTabName">
|
<el-tabs type="border-card" v-model="activeTabName" @tab-click="tabClick">
|
||||||
<el-tab-pane label="抄送人" name="user">
|
<el-tab-pane label="抄送人" name="user">
|
||||||
<div>
|
<div>
|
||||||
<el-form ref="formRef" :model="configForm" label-position="top" :rules="formRules">
|
<el-form ref="formRef" :model="configForm" label-position="top" :rules="formRules">
|
||||||
|
|
@ -189,6 +189,55 @@
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="表单字段权限" name="businessFields" v-if="formType === 20">
|
||||||
|
<div class="field-setting-pane">
|
||||||
|
<div class="field-setting-desc">字段权限</div>
|
||||||
|
<div class="field-permit-title">
|
||||||
|
<div class="setting-title-label first-title"> 字段名称 </div>
|
||||||
|
<div class="other-titles">
|
||||||
|
<span class="setting-title-label cursor-pointer" @click="updatePermission('READ')">
|
||||||
|
只读
|
||||||
|
</span>
|
||||||
|
<span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')">
|
||||||
|
可编辑
|
||||||
|
</span>
|
||||||
|
<span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')">
|
||||||
|
隐藏
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="field-setting-item"
|
||||||
|
v-for="(item, index) in fieldsPermissionCustomize"
|
||||||
|
:key="index"
|
||||||
|
>
|
||||||
|
<div class="field-setting-item-label"> {{ item.title }} </div>
|
||||||
|
<el-radio-group class="field-setting-item-group" v-model="item.permission">
|
||||||
|
<div class="item-radio-wrap">
|
||||||
|
<el-radio
|
||||||
|
:label="1"
|
||||||
|
size="large"
|
||||||
|
><span></span
|
||||||
|
></el-radio>
|
||||||
|
</div>
|
||||||
|
<div class="item-radio-wrap">
|
||||||
|
<el-radio
|
||||||
|
size="large"
|
||||||
|
:label="2"
|
||||||
|
><span></span
|
||||||
|
></el-radio>
|
||||||
|
</div>
|
||||||
|
<div class="item-radio-wrap">
|
||||||
|
<el-radio
|
||||||
|
size="large"
|
||||||
|
:label="0"
|
||||||
|
><span></span
|
||||||
|
></el-radio>
|
||||||
|
</div>
|
||||||
|
</el-radio-group>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
<el-tab-pane label="表单字段权限" name="fields" v-if="formType === 10">
|
<el-tab-pane label="表单字段权限" name="fields" v-if="formType === 10">
|
||||||
<div class="field-setting-pane">
|
<div class="field-setting-pane">
|
||||||
<div class="field-setting-desc">字段权限</div>
|
<div class="field-setting-desc">字段权限</div>
|
||||||
|
|
@ -246,7 +295,8 @@
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" @click="saveConfig">确 定</el-button>
|
<el-button type="primary" v-if="formType === 20 && tabName === 'businessFields'" @click="saveCustomize">确 定</el-button>
|
||||||
|
<el-button type="primary" v-else @click="saveConfig">确 定</el-button>
|
||||||
<el-button @click="closeDrawer">取 消</el-button>
|
<el-button @click="closeDrawer">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -270,9 +320,14 @@ import {
|
||||||
CopyTaskFormType
|
CopyTaskFormType
|
||||||
} from '../node'
|
} from '../node'
|
||||||
import { defaultProps } from '@/utils/tree'
|
import { defaultProps } from '@/utils/tree'
|
||||||
|
import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'CopyTaskNodeConfig'
|
name: 'CopyTaskNodeConfig'
|
||||||
})
|
})
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const fieldsPermissionCustomize = ref([])
|
||||||
|
const tabName = ref('')
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
flowNode: {
|
flowNode: {
|
||||||
type: Object as () => SimpleFlowNode,
|
type: Object as () => SimpleFlowNode,
|
||||||
|
|
@ -348,6 +403,33 @@ const changeCandidateStrategy = () => {
|
||||||
configForm.value.deptLevel = 1
|
configForm.value.deptLevel = 1
|
||||||
configForm.value.formUser = ''
|
configForm.value.formUser = ''
|
||||||
}
|
}
|
||||||
|
const route = useRoute();
|
||||||
|
const tabClick = async (tab) => {
|
||||||
|
tabName.value = tab.props.name
|
||||||
|
if(tab.props.name === 'businessFields') {
|
||||||
|
const bpmnForm = (await getBusinessForm({
|
||||||
|
key: window.localStorage.getItem('businessKey'),
|
||||||
|
modelNodeId: props.flowNode.id
|
||||||
|
})) as unknown as FormVO
|
||||||
|
const newData = bpmnForm.fields.map( v => {
|
||||||
|
return JSON.parse(v)
|
||||||
|
})
|
||||||
|
fieldsPermissionCustomize.value = newData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const saveCustomize = async () => {
|
||||||
|
let newData = fieldsPermissionCustomize.value.map( v => {
|
||||||
|
return JSON.stringify(v)
|
||||||
|
})
|
||||||
|
let data = {
|
||||||
|
fields: newData,
|
||||||
|
formKey: window.localStorage.getItem('businessKey'),
|
||||||
|
modelNodeId: props.flowNode.id
|
||||||
|
}
|
||||||
|
await saveBusinessForm(data)
|
||||||
|
message.success(t('common.updateSuccess'))
|
||||||
|
settingVisible.value = false
|
||||||
|
}
|
||||||
// 保存配置
|
// 保存配置
|
||||||
const saveConfig = async () => {
|
const saveConfig = async () => {
|
||||||
activeTabName.value = 'user'
|
activeTabName.value = 'user'
|
||||||
|
|
|
||||||
|
|
@ -467,32 +467,29 @@
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="field-setting-item"
|
class="field-setting-item"
|
||||||
v-for="(item, index) in fieldsPermissionConfig"
|
v-for="(item, index) in fieldsPermissionCustomize"
|
||||||
:key="index"
|
:key="index"
|
||||||
>
|
>
|
||||||
<div class="field-setting-item-label"> {{ item.title }} </div>
|
<div class="field-setting-item-label"> {{ item.title }} </div>
|
||||||
<el-radio-group class="field-setting-item-group" v-model="item.permission">
|
<el-radio-group class="field-setting-item-group" v-model="item.permission">
|
||||||
<div class="item-radio-wrap">
|
<div class="item-radio-wrap">
|
||||||
<el-radio
|
<el-radio
|
||||||
:value="FieldPermissionType.READ"
|
:label="1"
|
||||||
size="large"
|
size="large"
|
||||||
:label="FieldPermissionType.READ"
|
|
||||||
><span></span
|
><span></span
|
||||||
></el-radio>
|
></el-radio>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-radio-wrap">
|
<div class="item-radio-wrap">
|
||||||
<el-radio
|
<el-radio
|
||||||
:value="FieldPermissionType.WRITE"
|
|
||||||
size="large"
|
size="large"
|
||||||
:label="FieldPermissionType.WRITE"
|
:label="2"
|
||||||
><span></span
|
><span></span
|
||||||
></el-radio>
|
></el-radio>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-radio-wrap">
|
<div class="item-radio-wrap">
|
||||||
<el-radio
|
<el-radio
|
||||||
:value="FieldPermissionType.NONE"
|
|
||||||
size="large"
|
size="large"
|
||||||
:label="FieldPermissionType.NONE"
|
:label="0"
|
||||||
><span></span
|
><span></span
|
||||||
></el-radio>
|
></el-radio>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -563,7 +560,8 @@
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<el-divider />
|
<el-divider />
|
||||||
<div>
|
<div>
|
||||||
<el-button type="primary" @click="saveConfig">确 定</el-button>
|
<el-button type="primary" v-if="formType === 20 && tabName === 'businessFields'" @click="saveCustomize">确 定</el-button>
|
||||||
|
<el-button type="primary" v-else @click="saveConfig">确 定</el-button>
|
||||||
<el-button @click="closeDrawer">取 消</el-button>
|
<el-button @click="closeDrawer">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -610,7 +608,7 @@ import { defaultProps } from '@/utils/tree'
|
||||||
import { cloneDeep } from 'lodash-es'
|
import { cloneDeep } from 'lodash-es'
|
||||||
import { convertTimeUnit, getApproveTypeText } from '../utils'
|
import { convertTimeUnit, getApproveTypeText } from '../utils'
|
||||||
import UserTaskListener from './components/UserTaskListener.vue'
|
import UserTaskListener from './components/UserTaskListener.vue'
|
||||||
import { getBusinessForm, FormVO } from '@/api/bpm/form'
|
import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form'
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'UserTaskNodeConfig'
|
name: 'UserTaskNodeConfig'
|
||||||
})
|
})
|
||||||
|
|
@ -620,6 +618,10 @@ const props = defineProps({
|
||||||
required: true
|
required: true
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const tabName = ref('')
|
||||||
|
const fieldsPermissionCustomize = ref([])
|
||||||
const emits = defineEmits<{
|
const emits = defineEmits<{
|
||||||
'find:returnTaskNodes': [nodeList: SimpleFlowNode[]]
|
'find:returnTaskNodes': [nodeList: SimpleFlowNode[]]
|
||||||
}>()
|
}>()
|
||||||
|
|
@ -1027,14 +1029,32 @@ const updatePermission = (type: string) => {
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const tabClick = async (tab) => {
|
const tabClick = async (tab) => {
|
||||||
|
tabName.value = tab.props.name
|
||||||
if(tab.props.name === 'businessFields') {
|
if(tab.props.name === 'businessFields') {
|
||||||
const bpmnForm = (await getBusinessForm({
|
const bpmnForm = (await getBusinessForm({
|
||||||
key: window.localStorage.getItem('businessKey'),
|
key: window.localStorage.getItem('businessKey'),
|
||||||
modelNodeId: props.flowNode.id
|
modelNodeId: props.flowNode.id
|
||||||
})) as unknown as FormVO
|
})) as unknown as FormVO
|
||||||
console.log('%csrc/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue:1035 object', 'color: #007acc;', bpmnForm);
|
const newData = bpmnForm.fields.map( v => {
|
||||||
|
return JSON.parse(v)
|
||||||
|
})
|
||||||
|
fieldsPermissionCustomize.value = newData
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const saveCustomize = async () => {
|
||||||
|
let newData = fieldsPermissionCustomize.value.map( v => {
|
||||||
|
return JSON.stringify(v)
|
||||||
|
})
|
||||||
|
let data = {
|
||||||
|
fields: newData,
|
||||||
|
formKey: window.localStorage.getItem('businessKey'),
|
||||||
|
modelNodeId: props.flowNode.id
|
||||||
|
}
|
||||||
|
await saveBusinessForm(data)
|
||||||
|
message.success(t('common.updateSuccess'))
|
||||||
|
settingVisible.value = false
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
@ -1119,4 +1139,7 @@ const tabClick = async (tab) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.business-title {
|
||||||
|
width: 220px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<el-row>
|
<el-row>
|
||||||
<!-- 动态渲染插槽内容 -->
|
<!-- 动态渲染插槽内容 -->
|
||||||
<template v-for="(field, index) in Object.keys(fields)" :key="index">
|
<template v-for="(field, index) in Object.keys(fields)" :key="index">
|
||||||
<template v-if="!fields[field]">
|
<template v-if="fields[field]">
|
||||||
<!-- 显示 -->
|
<!-- 显示 -->
|
||||||
<slot :name="field"></slot>
|
<slot :name="field"></slot>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<el-table :data="data" v-loading="loading" :stripe="stripe" :show-overflow-tooltip="showOverflowTooltip" style="width: 100%">
|
<el-table :data="data" v-loading="loading" :stripe="stripe" :show-overflow-tooltip="showOverflowTooltip" style="width: 100%">
|
||||||
<!-- 插槽内容 -->
|
<!-- 插槽内容 -->
|
||||||
<template v-for="(slotName, index) in Object.keys(fields)" :key="index">
|
<template v-for="(slotName, index) in Object.keys(fields)" :key="index">
|
||||||
<template v-if="!fields[slotName]">
|
<template v-if="fields[slotName]">
|
||||||
<slot :name="slotName" :scope="scope"></slot>
|
<slot :name="slotName" :scope="scope"></slot>
|
||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -978,6 +978,28 @@ const remainingRouter: AppRouteRecordRaw[] = [
|
||||||
},
|
},
|
||||||
component: () => import('@/views/hrm/mentorsapply/MentorsApplyForm.vue')
|
component: () => import('@/views/hrm/mentorsapply/MentorsApplyForm.vue')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'certificaterequest/CertificateRequestForm',
|
||||||
|
name: 'CertificateRequestAdd',
|
||||||
|
meta: {
|
||||||
|
title: '人事证明新增',
|
||||||
|
noCache: true,
|
||||||
|
hidden: true,
|
||||||
|
activeMenu: '/hrm/certificaterequest'
|
||||||
|
},
|
||||||
|
component: () => import('@/views/hrm/certificaterequest/CertificateRequestForm.vue')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'talentpool/TalentPoolForm',
|
||||||
|
name: 'TalentPoolAdd',
|
||||||
|
meta: {
|
||||||
|
title: '人才库管理新增',
|
||||||
|
noCache: true,
|
||||||
|
hidden: true,
|
||||||
|
activeMenu: '/hrm/talentpool'
|
||||||
|
},
|
||||||
|
component: () => import('@/views/hrm/talentpool/TalentPoolForm.vue')
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -218,6 +218,9 @@ export enum DICT_TYPE {
|
||||||
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',// 销售阶段
|
SALE_STAGE='sale_stage',// 销售阶段
|
||||||
|
TIME_TYPE='time_type',// 时间类型
|
||||||
|
CRM_PARTNER_TYPE = 'crm_partner_type',//合作类型
|
||||||
|
CRM_SERVICE_FEE_COLLECTION_METHOD = 'crm_service_fee_collection_method',//服务费收取方式
|
||||||
|
|
||||||
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 产品明细类型
|
||||||
|
|
@ -388,6 +391,8 @@ export enum DICT_TYPE {
|
||||||
HRM_PERFORMANCE_LEVEL = 'hrm_performance_level',
|
HRM_PERFORMANCE_LEVEL = 'hrm_performance_level',
|
||||||
// 考核类型
|
// 考核类型
|
||||||
HRM_ASSESS_TYPE = 'hrm_assess_type',
|
HRM_ASSESS_TYPE = 'hrm_assess_type',
|
||||||
|
//需求部门
|
||||||
|
HRM_EMAND_DEPARTMENT = 'hrm_emand_department'
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,10 @@ const getList = async () => {
|
||||||
const handleAudit = (row: any) => {
|
const handleAudit = (row: any) => {
|
||||||
const query = {
|
const query = {
|
||||||
id: row.processInstanceId,
|
id: row.processInstanceId,
|
||||||
activityId: undefined
|
activityId: undefined,
|
||||||
|
processDefinitionId: row.processInstanceId,
|
||||||
|
taskDefinitionKey: row.activityId,
|
||||||
|
isDetail: 1
|
||||||
}
|
}
|
||||||
if (row.activityId) {
|
if (row.activityId) {
|
||||||
query.activityId = row.activityId
|
query.activityId = row.activityId
|
||||||
|
|
|
||||||
|
|
@ -257,7 +257,10 @@ const handleAudit = (row: any) => {
|
||||||
name: 'BpmProcessInstanceDetail',
|
name: 'BpmProcessInstanceDetail',
|
||||||
query: {
|
query: {
|
||||||
id: row.processInstance.id,
|
id: row.processInstance.id,
|
||||||
taskId: row.id
|
taskId: row.id,
|
||||||
|
processDefinitionId: row.processInstance.processDefinitionId,
|
||||||
|
taskDefinitionKey: row.taskDefinitionKey,
|
||||||
|
isDetail: 1
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,9 @@ const handleAudit = (row: any) => {
|
||||||
name: 'BpmProcessInstanceDetail',
|
name: 'BpmProcessInstanceDetail',
|
||||||
query: {
|
query: {
|
||||||
id: row.processInstance.id,
|
id: row.processInstance.id,
|
||||||
taskId: row.id
|
taskId: row.id,
|
||||||
|
processDefinitionId: row.processInstance.processDefinitionId,
|
||||||
|
taskDefinitionKey: row.taskDefinitionKey
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,30 @@
|
||||||
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 :span="8">
|
||||||
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
|
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault || type" v-model="formData.customerId" />
|
||||||
|
<!-- <el-select
|
||||||
|
:disabled="formData.customerDefault || type"
|
||||||
|
v-model="formData.customerId"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
placeholder="请选择客户"
|
||||||
|
class="w-1/1"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in customerList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select> -->
|
||||||
|
</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">
|
||||||
|
|
@ -50,27 +70,26 @@
|
||||||
</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="maintenanceUserId">
|
||||||
<SelectComponent :customerList="customerList" :disabled="formData.customerDefault || type" v-model="formData.customerId" />
|
<el-select
|
||||||
<!-- <el-select
|
v-model="formData.maintenanceUserId"
|
||||||
:disabled="formData.customerDefault || type"
|
|
||||||
v-model="formData.customerId"
|
|
||||||
clearable
|
clearable
|
||||||
filterable
|
|
||||||
placeholder="请选择客户"
|
:disabled="formType || type"
|
||||||
|
:placeholder="formType ? '' : '请选择维护人'"
|
||||||
class="w-1/1"
|
class="w-1/1"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in customerList"
|
v-for="item in userOptions"
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.name"
|
:label="item.nickname"
|
||||||
:value="item.id"
|
:value="item.id"
|
||||||
/>
|
/>
|
||||||
</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="deptId">
|
<el-form-item label="归属部门" prop="deptId">
|
||||||
<el-tree-select
|
<el-tree-select
|
||||||
v-model="formData.deptId"
|
v-model="formData.deptId"
|
||||||
|
|
@ -84,8 +103,8 @@
|
||||||
:placeholder="type ? '' : '请选择归属部门'"
|
:placeholder="type ? '' : '请选择归属部门'"
|
||||||
/>
|
/>
|
||||||
</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 +121,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
|
||||||
|
|
@ -115,7 +134,7 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</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 clearable placeholder="请选择销售阶段">
|
<el-select v-model="formData.saleStage" disabled clearable placeholder="请选择销售阶段">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -126,7 +145,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="creditMethod">
|
<el-form-item label="授信方式" prop="creditMethod">
|
||||||
|
|
@ -142,7 +161,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="账期" prop="paymentTerm">
|
<el-form-item label="账期" prop="paymentTerm">
|
||||||
<el-select v-model="formData.paymentTerm" :disabled="type" @change="changePayment" clearable placeholder="请选择账期">
|
<el-select v-model="formData.paymentTerm" :disabled="type" clearable placeholder="请选择账期">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.PAYMENT_TERM)"
|
v-for="dict in getStrDictOptions(DICT_TYPE.PAYMENT_TERM)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -152,16 +171,9 @@
|
||||||
</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="creditCalcCycle">
|
<el-form-item label="授信计算周期" prop="creditCalcCycle">
|
||||||
<!-- <el-select v-model="formData.creditCalcCycle" placeholder="请选择授信计算周期">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in getIntDictOptions('credit_calc_cycle')"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
|
||||||
/>
|
|
||||||
</el-select> -->
|
|
||||||
<el-input v-model="formData.creditCalcCycle" disabled placeholder="" />
|
<el-input v-model="formData.creditCalcCycle" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -182,7 +194,7 @@
|
||||||
</el-radio>
|
</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目难度" prop="projectDifficultyId">
|
<el-form-item label="项目难度" prop="projectDifficultyId">
|
||||||
<el-select v-model="formData.projectDifficultyId" :disabled="type" clearable placeholder="请选择项目难度">
|
<el-select v-model="formData.projectDifficultyId" :disabled="type" clearable placeholder="请选择项目难度">
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="产品明细" align="center" prop="detailType" width="240">
|
<el-table-column label="产品明细" align="center" prop="detailType" width="240">
|
||||||
<template #default="{ row, $index }">
|
<template #default="scope">
|
||||||
<el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!" v-if="!disabled">
|
<!-- <el-form-item :prop="`${$index}.detailType`" :rules="formRules.detailType" class="mb-0px!" v-if="!disabled"> -->
|
||||||
<el-select v-model="row.detailType" placeholder="请选择状态" >
|
<!-- <el-select v-model="row.detailType" placeholder="请选择状态" >
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -28,8 +28,8 @@
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<dict-tag v-else :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="scope.row.detailType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="单位" align="center" min-width="80">
|
<el-table-column label="单位" align="center" min-width="80">
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,11 @@
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
|
:fields="formFields"
|
||||||
label-width="142px"
|
label-width="142px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
<template #cooperationType>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合作类型" prop="cooperationType">
|
<el-form-item label="合作类型" prop="cooperationType">
|
||||||
<el-select v-model="formData.cooperationType" disabled filterable placeholder="请选择合作类型" class="w-1/1">
|
<el-select v-model="formData.cooperationType" disabled filterable placeholder="请选择合作类型" class="w-1/1">
|
||||||
|
|
@ -19,6 +20,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #regType>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="企业类型" prop="">
|
<el-form-item label="企业类型" prop="">
|
||||||
<el-input v-model="formData.regType" disabled placeholder="自动获取" />
|
<el-input v-model="formData.regType" disabled placeholder="自动获取" />
|
||||||
|
|
@ -53,17 +56,22 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
|
</template>
|
||||||
|
<template #actualCapital>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="实缴资金" prop="paidInCapital">
|
<el-form-item label="实缴资金" prop="paidInCapital">
|
||||||
<el-input v-model="formData.actualCapital" disabled />
|
<el-input v-model="formData.actualCapital" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #socialEmployeeNum>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="参保人数" prop="insuredCount">
|
<el-form-item label="参保人数" prop="insuredCount">
|
||||||
<el-input v-model="formData.socialEmployeeNum" disabled />
|
<el-input v-model="formData.socialEmployeeNum" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #defendantRecord>
|
||||||
<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="true">
|
<el-radio-group v-model="formData.defendantRecord" :disabled="true">
|
||||||
|
|
@ -72,6 +80,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #abnormalService>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="经营异常" prop="abnormalService">
|
<el-form-item label="经营异常" prop="abnormalService">
|
||||||
<el-radio-group v-model="formData.abnormalService" :disabled="true">
|
<el-radio-group v-model="formData.abnormalService" :disabled="true">
|
||||||
|
|
@ -80,6 +90,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #equityPledge>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="股权出质" prop="equityPledge">
|
<el-form-item label="股权出质" prop="equityPledge">
|
||||||
<el-radio-group v-model="formData.equityPledge" :disabled="true">
|
<el-radio-group v-model="formData.equityPledge" :disabled="true">
|
||||||
|
|
@ -88,6 +100,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #dishonestyRecord>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="失信记录" prop="dishonestyRecord">
|
<el-form-item label="失信记录" prop="dishonestyRecord">
|
||||||
<el-radio-group v-model="formData.dishonestyRecord" :disabled="true">
|
<el-radio-group v-model="formData.dishonestyRecord" :disabled="true">
|
||||||
|
|
@ -96,6 +110,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #financeRecord>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="融资记录" prop="financeRecord">
|
<el-form-item label="融资记录" prop="financeRecord">
|
||||||
<el-radio-group v-model="formData.financeRecord" :disabled="true">
|
<el-radio-group v-model="formData.financeRecord" :disabled="true">
|
||||||
|
|
@ -104,6 +120,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #judgmentRecord>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="被执行记录" prop="judgmentRecord">
|
<el-form-item label="被执行记录" prop="judgmentRecord">
|
||||||
<el-radio-group v-model="formData.judgmentRecord" :disabled="true">
|
<el-radio-group v-model="formData.judgmentRecord" :disabled="true">
|
||||||
|
|
@ -112,43 +130,51 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</template>
|
||||||
|
<template #creditAmount>
|
||||||
<el-row>
|
|
||||||
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="初始额度" prop="creditLimit">
|
|
||||||
<el-input v-model="formData.creditAmount" placeholder="请输入初始额度" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="目前额度" prop="creditLimit">
|
<el-form-item label="初始额度" prop="creditLimit">
|
||||||
<el-input v-model="formData.creditLimit" placeholder="" disabled />
|
<el-input v-model="formData.creditAmount" placeholder="请输入初始额度" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #creditLimit>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="目前额度" prop="creditLimit">
|
||||||
|
<el-input v-model="formData.creditLimit" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #partnerCompanyId>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="合作主体" prop="partnerCompanyId">
|
||||||
|
<el-select v-model="formData.partnerCompanyId" disabled placeholder="请选择签约主体" @change="onPartnerChange">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in orgList"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.orgName"
|
||||||
|
:value="dict.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #changeAmount>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="调整金额(元)" prop="changeAmount">
|
||||||
|
<el-input v-model="formData.changeAmount" :disabled="type" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入调整金额(元)" @input="onChangeAmount" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #afterAmount>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="最终额度" prop="afterAmount">
|
||||||
|
<el-input v-model="formData.afterAmount" type="number" disabled placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #changeAmountDeadline>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合作主体" prop="partnerCompanyId">
|
|
||||||
<el-select v-model="formData.partnerCompanyId" disabled placeholder="请选择签约主体" @change="onPartnerChange">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in orgList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.orgName"
|
|
||||||
:value="dict.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="调整金额(元)" prop="changeAmount">
|
|
||||||
<el-input v-model="formData.changeAmount" :disabled="type" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入调整金额(元)" @input="onChangeAmount" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="最终额度" prop="afterAmount">
|
|
||||||
<el-input v-model="formData.afterAmount" type="number" disabled placeholder="" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="调整金额截止日期" prop="changeAmountDeadline">
|
<el-form-item label="调整金额截止日期" prop="changeAmountDeadline">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.changeAmountDeadline"
|
v-model="formData.changeAmountDeadline"
|
||||||
|
|
@ -160,12 +186,14 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
</template>
|
||||||
<el-form-item label="调额说明" prop="note">
|
<template #note>
|
||||||
<el-input v-model="formData.note" type="textarea" :disabled="!!type" :row="5" placeholder="请输入调额说明" />
|
<el-col :span="24">
|
||||||
</el-form-item>
|
<el-form-item label="调额说明" prop="note">
|
||||||
</el-col>
|
<el-input v-model="formData.note" type="textarea" :disabled="!!type" :row="5" placeholder="请输入调额说明" />
|
||||||
</el-row>
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
</el-form>
|
</el-form>
|
||||||
<!-- 子表的表单 -->
|
<!-- 子表的表单 -->
|
||||||
|
|
||||||
|
|
@ -180,6 +208,7 @@ import * as UserApi from '@/api/system/user'
|
||||||
import * as DeptApi from '@/api/system/dept'
|
import * as DeptApi from '@/api/system/dept'
|
||||||
import * as BusinessApi from '@/api/crm/business'
|
import * as BusinessApi from '@/api/crm/business'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
import { type } from 'os'
|
||||||
|
|
||||||
/** CRM 方案报价 表单 */
|
/** CRM 方案报价 表单 */
|
||||||
defineOptions({ name: 'QuotationForm' })
|
defineOptions({ name: 'QuotationForm' })
|
||||||
|
|
@ -263,7 +292,28 @@ const quotationProductFormRef = ref()
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
data: undefined,
|
data: undefined,
|
||||||
type: undefined
|
type: undefined,
|
||||||
|
formFields: {
|
||||||
|
type: Object,
|
||||||
|
defualt: {
|
||||||
|
cooperationType: 1,
|
||||||
|
regType: 1,
|
||||||
|
actualCapital: 1,
|
||||||
|
socialEmployeeNum: 1,
|
||||||
|
defendantRecord: 1,
|
||||||
|
abnormalService: 1,
|
||||||
|
equityPledge: 1,
|
||||||
|
dishonestyRecord: 1,
|
||||||
|
financeRecord: 1,
|
||||||
|
judgmentRecord: 1,
|
||||||
|
creditAmount: 1,
|
||||||
|
creditLimit: 1,
|
||||||
|
partnerCompanyId: 1,
|
||||||
|
changeAmount: 1,
|
||||||
|
afterAmount: 1,
|
||||||
|
changeAmountDeadline: 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
|
|
||||||
|
|
@ -197,14 +197,16 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
products: undefined
|
products: undefined
|
||||||
disabled: false,
|
disabled: false,
|
||||||
type: undefined
|
type: undefined,
|
||||||
|
formFields: {}
|
||||||
}>()
|
}>()
|
||||||
const formLoading = ref(false) // 表单的加载中
|
const formLoading = ref(false) // 表单的加载中
|
||||||
const formData = ref([])
|
const formData = ref([])
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
|
productId: [{ required: true, message: '产品不能为空', trigger: 'blur' }],
|
||||||
contractPrice: [{ required: true, message: '合同价格不能为空', trigger: 'blur' }],
|
contractPrice: [{ required: true, message: '合同价格不能为空', trigger: 'blur' }],
|
||||||
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }]
|
count: [{ required: true, message: '产品数量不能为空', trigger: 'blur' }],
|
||||||
|
|
||||||
})
|
})
|
||||||
const formRef = ref([]) // 表单 Ref
|
const formRef = ref([]) // 表单 Ref
|
||||||
const productList = ref<ProductApi.ProductVO[]>([]) // 产品列表
|
const productList = ref<ProductApi.ProductVO[]>([]) // 产品列表
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap class="mt-10px">
|
<ContentWrap class="mt-10px">
|
||||||
<el-form
|
<processForm
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
|
:fields="formFields"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
>
|
>
|
||||||
<ContentWrap style="border: none;font-weight: 700">
|
|
||||||
基础信息
|
|
||||||
</ContentWrap>
|
|
||||||
<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> -->
|
||||||
|
<template #other>
|
||||||
|
<el-col :span="24">
|
||||||
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
|
基础信息
|
||||||
|
</ContentWrap>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #customerId>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="客户名称" prop="customerId">
|
<el-form-item label="客户名称" prop="customerId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -33,11 +39,15 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #no>
|
||||||
<el-col :span="8" v-if="formType">
|
<el-col :span="8" v-if="formType">
|
||||||
<el-form-item label="合同编号" prop="no">
|
<el-form-item label="合同编号" prop="no">
|
||||||
<el-input v-model="formData.no" disabled placeholder="" />
|
<el-input v-model="formData.no" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #quotationId>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="报价单编号" prop="quotationId">
|
<el-form-item label="报价单编号" prop="quotationId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -56,7 +66,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #pricingUserId>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="方案签约人" prop="pricingUserId">
|
<el-form-item label="方案签约人" prop="pricingUserId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -75,12 +86,15 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #creditLimit>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="授信额度" prop="creditLimit">
|
<el-form-item label="授信额度" prop="creditLimit">
|
||||||
<el-input v-model="formData.creditLimit" placeholder="" disabled />
|
<el-input v-model="formData.creditLimit" placeholder="" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #creditMethod>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="授信方式" prop="creditMethod" >
|
<el-form-item label="授信方式" prop="creditMethod" >
|
||||||
<el-select v-model="formData.creditMethod" placeholder="" disabled>
|
<el-select v-model="formData.creditMethod" placeholder="" disabled>
|
||||||
|
|
@ -93,6 +107,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #creditCalcCycle>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="授信计算周期" prop="creditCalcCycle" >
|
<el-form-item label="授信计算周期" prop="creditCalcCycle" >
|
||||||
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
<el-input v-model="formData.creditCalcCycle" placeholder="" disabled />
|
||||||
|
|
@ -110,24 +126,29 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
|
</template>
|
||||||
|
<template #quotationTimes>
|
||||||
<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="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #paymentTerm>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="账期" prop="paymentTerm">
|
<el-form-item label="账期" prop="paymentTerm">
|
||||||
<el-select v-model="formData.paymentTerm" disabled placeholder="">
|
<el-select v-model="formData.paymentTerm" disabled placeholder="">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions('payment_term')"
|
v-for="dict in getStrDictOptions('payment_term')"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #onlinePrice>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="基础服务费合计" prop="onlinePrice">
|
<el-form-item label="基础服务费合计" prop="onlinePrice">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -148,6 +169,8 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
|
</template>
|
||||||
|
<template #totalPrice>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="服务费收入合计" prop="price">
|
<el-form-item label="服务费收入合计" prop="price">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -158,123 +181,149 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</template>
|
||||||
<el-row>
|
<template #other1>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<ContentWrap style="border: none;font-weight: 700">
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
甲方基本信息
|
甲方基本信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="甲方名称" prop="partyName">
|
<template #customerId1>
|
||||||
<el-select
|
<el-col :span="8">
|
||||||
v-model="formData.customerId"
|
<el-form-item label="甲方名称" prop="partyName">
|
||||||
disabled=""
|
<el-select
|
||||||
placeholder=""
|
v-model="formData.customerId"
|
||||||
class="w-1/1"
|
disabled=""
|
||||||
>
|
placeholder=""
|
||||||
<el-option
|
class="w-1/1"
|
||||||
v-for="item in contactList"
|
>
|
||||||
:key="item.id"
|
<el-option
|
||||||
:label="item.name"
|
v-for="item in contactList"
|
||||||
:value="item.id"
|
:key="item.id"
|
||||||
/>
|
:label="item.name"
|
||||||
</el-select>
|
:value="item.id"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-col>
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="客户编号" prop="customerId">
|
<el-form-item label="客户编号" prop="customerId">
|
||||||
<el-input v-model="formData.customerId" disabled placeholder="客户编号" />
|
<el-input v-model="formData.customerId" disabled placeholder="客户编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="法人代表" prop="legalPersonName">
|
<template #legalPersonName>
|
||||||
<el-input v-model="formData.legalPersonName" placeholder="" disabled />
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="法人代表" prop="legalPersonName">
|
||||||
</el-col>
|
<el-input v-model="formData.legalPersonName" placeholder="" disabled />
|
||||||
<el-col :span="8">
|
</el-form-item>
|
||||||
<el-form-item label="统一信用代码" prop="creditNo">
|
</el-col>
|
||||||
<el-input v-model="formData.creditNo" placeholder="" disabled />
|
</template>
|
||||||
</el-form-item>
|
<template #creditNo>
|
||||||
</el-col>
|
<el-col :span="8">
|
||||||
<el-col :span="8">
|
<el-form-item label="统一信用代码" prop="creditNo">
|
||||||
<el-form-item label="企业类型" prop="regType">
|
<el-input v-model="formData.creditNo" placeholder="" disabled />
|
||||||
<el-input v-model="formData.regType" placeholder="" disabled />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
</el-col>
|
</template>
|
||||||
|
<template #regType>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="企业类型" prop="regType">
|
||||||
|
<el-input v-model="formData.regType" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</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="融资信息" disabled />
|
<el-input v-model="formData.financingInfo" placeholder="融资信息" disabled />
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<!-- </el-col> -->
|
<!-- </el-col> -->
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="实缴资金" prop="actualCapital">
|
<template #actualCapital>
|
||||||
<el-input v-model="formData.actualCapital" placeholder="" disabled />
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="实缴资金" prop="actualCapital">
|
||||||
</el-col>
|
<el-input v-model="formData.actualCapital" placeholder="" disabled />
|
||||||
<el-col :span="8">
|
</el-form-item>
|
||||||
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
</el-col>
|
||||||
<el-input v-model="formData.socialEmployeeNum" placeholder="" disabled />
|
</template>
|
||||||
</el-form-item>
|
<template #socialEmployeeNum>
|
||||||
</el-col>
|
<el-col :span="8">
|
||||||
|
<el-form-item label="参保人数" prop="socialEmployeeNum">
|
||||||
|
<el-input v-model="formData.socialEmployeeNum" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</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="上市情况" disabled />
|
<el-input v-model="formData.listingStatus" placeholder="上市情况" disabled />
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
<!-- </el-col> -->
|
<!-- </el-col> -->
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="注册地址" prop="registeredAddress">
|
<template #registeredAddress>
|
||||||
<el-input v-model="formData.registeredAddress" placeholder="" disabled />
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="注册地址" prop="registeredAddress">
|
||||||
</el-col>
|
<el-input v-model="formData.registeredAddress" placeholder="" disabled />
|
||||||
<el-col :span="24">
|
</el-form-item>
|
||||||
<ContentWrap style="border: none;font-weight: 700">
|
</el-col>
|
||||||
乙方基本信息
|
</template>
|
||||||
</ContentWrap>
|
<template #other2>
|
||||||
</el-col>
|
<el-col :span="24">
|
||||||
<el-col :span="8">
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
<el-form-item label="合作主体" prop="partnerCompanyId">
|
乙方基本信息
|
||||||
<el-select v-model="formData.partnerCompanyId" placeholder="" disabled >
|
</ContentWrap>
|
||||||
<el-option
|
</el-col>
|
||||||
v-for="dict in orgList"
|
</template>
|
||||||
:key="dict.id"
|
<template #partnerCompanyId>
|
||||||
:label="dict.orgName"
|
<el-col :span="8">
|
||||||
:value="dict.id"
|
<el-form-item label="合作主体" prop="partnerCompanyId">
|
||||||
/>
|
<el-select v-model="formData.partnerCompanyId" placeholder="" disabled >
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="开户行" prop="bankName">
|
|
||||||
<el-input v-model="formData.bankName" placeholder="" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="银行账号" prop="bankAccount">
|
|
||||||
<el-input v-model="formData.bankAccount" placeholder="" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="法人代表" prop="legalRepresentative">
|
|
||||||
<el-input v-model="formData.legalRepresentative" placeholder="" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="商务负责人" prop="ownerUserId">
|
|
||||||
<el-select
|
|
||||||
v-model="formData.ownerUserId"
|
|
||||||
disabled
|
|
||||||
class="w-1/1"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in userOptions"
|
v-for="dict in orgList"
|
||||||
:key="item.id"
|
:key="dict.id"
|
||||||
:label="item.nickname"
|
:label="dict.orgName"
|
||||||
:value="item.id"
|
:value="dict.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #bankName>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="开户行" prop="bankName">
|
||||||
|
<el-input v-model="formData.bankName" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #bankAccount>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="银行账号" prop="bankAccount">
|
||||||
|
<el-input v-model="formData.bankAccount" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #legalRepresentative>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="法人代表" prop="legalRepresentative">
|
||||||
|
<el-input v-model="formData.legalRepresentative" placeholder="" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #ownerUserId>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="商务负责人" prop="ownerUserId">
|
||||||
|
<el-select
|
||||||
|
v-model="formData.ownerUserId"
|
||||||
|
disabled
|
||||||
|
class="w-1/1"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="手机号" prop="mobile">
|
<el-form-item label="手机号" prop="mobile">
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -302,25 +351,31 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="归属部门" prop="deptId">
|
<template #deptId>
|
||||||
<el-tree-select
|
<el-col :span="8">
|
||||||
v-model="formData.deptId"
|
<el-form-item label="归属部门" prop="deptId">
|
||||||
:data="deptTree"
|
<el-tree-select
|
||||||
disabled
|
v-model="formData.deptId"
|
||||||
:props="defaultProps"
|
:data="deptTree"
|
||||||
check-strictly
|
disabled
|
||||||
node-key="id"
|
:props="defaultProps"
|
||||||
placeholder=""
|
check-strictly
|
||||||
/>
|
node-key="id"
|
||||||
</el-form-item>
|
placeholder=""
|
||||||
</el-col>
|
/>
|
||||||
<el-col :span="24">
|
</el-form-item>
|
||||||
<ContentWrap style="border: none;font-weight: 700">
|
</el-col>
|
||||||
合同信息
|
</template>
|
||||||
</ContentWrap>
|
<template #other3>
|
||||||
</el-col>
|
<el-col :span="24">
|
||||||
<el-col :span="8">
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
|
合同信息
|
||||||
|
</ContentWrap>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #contractType>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label="合同类型" prop="contractType">
|
<el-form-item label="合同类型" prop="contractType">
|
||||||
<el-radio-group v-model="formData.contractType" disabled>
|
<el-radio-group v-model="formData.contractType" disabled>
|
||||||
<el-radio :label="1">单次合同</el-radio>
|
<el-radio :label="1">单次合同</el-radio>
|
||||||
|
|
@ -328,6 +383,8 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #startTime>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同签订日期" prop="startTime">
|
<el-form-item label="合同签订日期" prop="startTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
|
@ -340,6 +397,8 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #endTime>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同结束时间" prop="endTime">
|
<el-form-item label="合同结束时间" prop="endTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
|
@ -352,11 +411,15 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #contractTerm>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合同期限(月)" prop="contractTerm">
|
<el-form-item label="合同期限(月)" prop="contractTerm">
|
||||||
<el-input v-model="formData.contractTerm" disabled oninput = "value=value.replace(/[^\d]/g,'')" placeholder="" />
|
<el-input v-model="formData.contractTerm" disabled oninput = "value=value.replace(/[^\d]/g,'')" placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #statementDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="账单日" prop="statementDate">
|
<el-form-item label="账单日" prop="statementDate">
|
||||||
<el-select v-model="formData.statementDate" disabled placeholder="" >
|
<el-select v-model="formData.statementDate" disabled placeholder="" >
|
||||||
|
|
@ -369,6 +432,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #lastPayDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="最晚付款日" prop="lastPayDate">
|
<el-form-item label="最晚付款日" prop="lastPayDate">
|
||||||
<el-select v-model="formData.lastPayDate" disabled placeholder="" >
|
<el-select v-model="formData.lastPayDate" disabled placeholder="" >
|
||||||
|
|
@ -381,11 +446,15 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #penaltyRate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="违约金比例" prop="penaltyRate">
|
<el-form-item label="违约金比例" prop="penaltyRate">
|
||||||
<el-input v-model="formData.penaltyRate" disabled placeholder="" />
|
<el-input v-model="formData.penaltyRate" disabled placeholder="" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #latePaymentRate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="延期付款利率" prop="latePaymentRate">
|
<el-form-item label="延期付款利率" prop="latePaymentRate">
|
||||||
<el-input v-model="formData.latePaymentRate" disabled placeholder="" />
|
<el-input v-model="formData.latePaymentRate" disabled placeholder="" />
|
||||||
|
|
@ -399,32 +468,40 @@
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row> -->
|
<el-row> -->
|
||||||
<el-col :span="24">
|
</template>
|
||||||
<ContentWrap style="border: none;font-weight: 700">
|
<template #other4>
|
||||||
财务与客服对接信息
|
<el-col :span="24">
|
||||||
</ContentWrap>
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
</el-col>
|
财务与客服对接信息
|
||||||
<el-col :span="8">
|
</ContentWrap>
|
||||||
<el-form-item label="财务结算方式" prop="settleMethod">
|
</el-col>
|
||||||
<el-radio-group v-model="formData.settleMethod" disabled>
|
</template>
|
||||||
<el-radio :label="1">按月结算</el-radio>
|
<template #settleMethod>
|
||||||
<el-radio :label="0">按项目结算</el-radio>
|
<el-col :span="8">
|
||||||
</el-radio-group>
|
<el-form-item label="财务结算方式" prop="settleMethod">
|
||||||
</el-form-item>
|
<el-radio-group v-model="formData.settleMethod" disabled>
|
||||||
</el-col>
|
<el-radio :label="1">按月结算</el-radio>
|
||||||
<el-col :span="8">
|
<el-radio :label="0">按项目结算</el-radio>
|
||||||
<el-form-item label="售后维护人" prop="afterSaleUserId">
|
</el-radio-group>
|
||||||
<el-select v-model="formData.afterSaleUserId" disabled placeholder="">
|
</el-form-item>
|
||||||
<el-option
|
</el-col>
|
||||||
v-for="dict in userOptions"
|
</template>
|
||||||
:key="dict.id"
|
<template #afterSaleUserId>
|
||||||
:label="dict.nickname"
|
<el-col :span="8">
|
||||||
:value="dict.id"
|
<el-form-item label="售后维护人" prop="afterSaleUserId">
|
||||||
/>
|
<el-select v-model="formData.afterSaleUserId" disabled placeholder="">
|
||||||
</el-select>
|
<el-option
|
||||||
</el-form-item>
|
v-for="dict in userOptions"
|
||||||
</el-col>
|
:key="dict.id"
|
||||||
<el-col :span="8">
|
:label="dict.nickname"
|
||||||
|
:value="dict.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #collUserId>
|
||||||
|
<el-col :span="8">
|
||||||
<el-form-item label="协作人" prop="collUserId">
|
<el-form-item label="协作人" prop="collUserId">
|
||||||
<el-select v-model="formData.collUserId" disabled placeholder="">
|
<el-select v-model="formData.collUserId" disabled placeholder="">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -436,51 +513,63 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
</template>
|
||||||
<el-form-item label="合同正文" prop="contractBody">
|
<template #contractBody>
|
||||||
<el-input v-model="formData.contractBody" disabled type="textarea" rows="5" placeholder="" />
|
<el-col :span="24">
|
||||||
</el-form-item>
|
<el-form-item label="合同正文" prop="contractBody">
|
||||||
</el-col>
|
<el-input v-model="formData.contractBody" disabled type="textarea" rows="5" placeholder="" />
|
||||||
<el-col :span="24">
|
</el-form-item>
|
||||||
<el-form-item label="合同补充协议" prop="contractAgreement">
|
</el-col>
|
||||||
<el-input v-model="formData.contractAgreement" disabled type="textarea" rows="5" placeholder="" />
|
</template>
|
||||||
</el-form-item>
|
<template #contractAgreement>
|
||||||
</el-col>
|
<el-col :span="24">
|
||||||
|
<el-form-item label="合同补充协议" prop="contractAgreement">
|
||||||
</el-row>
|
<el-input v-model="formData.contractAgreement" disabled type="textarea" rows="5" placeholder="" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #other5>
|
||||||
|
|
||||||
|
|
||||||
<!-- 子表的表单 -->
|
<!-- 子表的表单 -->
|
||||||
<ContentWrap style="border: none;font-weight:700">
|
<ContentWrap style="border: none;font-weight:700">
|
||||||
产品清单
|
产品清单
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<ContractProductForm
|
<ContractProductForm
|
||||||
:type="1"
|
:type="1"
|
||||||
ref="productFormRef"
|
:formFields="formFields"
|
||||||
:products="formData.products"
|
ref="productFormRef"
|
||||||
:disabled="disabled"
|
:products="formData.products"
|
||||||
/>
|
:disabled="disabled"
|
||||||
</ContentWrap>
|
/>
|
||||||
<ContentWrap style="border: none;font-weight:700">
|
</ContentWrap>
|
||||||
合同甲方关联单位
|
<ContentWrap style="border: none;font-weight:700">
|
||||||
</ContentWrap>
|
合同甲方关联单位
|
||||||
<ContentWrap>
|
</ContentWrap>
|
||||||
<ContractAAuthorizedCompanyForm :type="1" ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" />
|
<el-col :span="24">
|
||||||
</ContentWrap>
|
<ContentWrap>
|
||||||
<ContentWrap style="border: none;font-weight:700">
|
<ContractAAuthorizedCompanyForm :type="1" :formFields="formFields" ref="contractAAuthorizedCompanyFormRef" :data="formData.contractAAuthorizedCompanys" :contract-id="formData.id" />
|
||||||
合同甲方授权人信息
|
</ContentWrap>
|
||||||
</ContentWrap>
|
</el-col>
|
||||||
<ContentWrap>
|
<ContentWrap style="border: none;font-weight:700">
|
||||||
<ContractAAuthorizedPersonForm :type="1" ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" />
|
合同甲方授权人信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<ContentWrap style="border: none;font-weight:700">
|
<el-col :span="24">
|
||||||
合同乙方授权人信息
|
<ContentWrap>
|
||||||
</ContentWrap>
|
<ContractAAuthorizedPersonForm :type="1" :formFields="formFields" ref="contractAAuthorizedPersonFormRef" :contract-id="formData.id" />
|
||||||
<ContentWrap>
|
</ContentWrap>
|
||||||
<ContractBAuthorizedPersonForm :type="1" ref="contractBAuthorizedPersonFormRef" :userOptions="userOptions" :contract-id="formData.id" />
|
</el-col>
|
||||||
</ContentWrap>
|
<ContentWrap style="border: none;font-weight:700">
|
||||||
</el-form>
|
合同乙方授权人信息
|
||||||
|
</ContentWrap>
|
||||||
|
<el-col :span="24">
|
||||||
|
<ContentWrap>
|
||||||
|
<ContractBAuthorizedPersonForm :type="1" :formFields="formFields" ref="contractBAuthorizedPersonFormRef" :userOptions="userOptions" :contract-id="formData.id" />
|
||||||
|
</ContentWrap>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</processForm>
|
||||||
<!-- 显示在其他页面时的判断type -->
|
<!-- 显示在其他页面时的判断type -->
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -501,7 +590,9 @@ import { propTypes } from '@/utils/propTypes'
|
||||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { defaultProps, handleTree } from '@/utils/tree'
|
import { defaultProps, handleTree } from '@/utils/tree'
|
||||||
import * as DeptApi from '@/api/system/dept'
|
import * as DeptApi from '@/api/system/dept'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
|
const isTrue = ref(false)
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const { proxy }: any = getCurrentInstance();
|
const { proxy }: any = getCurrentInstance();
|
||||||
|
|
@ -515,6 +606,52 @@ const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const deptTree = ref() // 部门树形结构
|
const deptTree = ref() // 部门树形结构
|
||||||
|
|
||||||
|
const formFields = ref({
|
||||||
|
other: 1,
|
||||||
|
customerId: 1,
|
||||||
|
no: 1,
|
||||||
|
quotationId: 1,
|
||||||
|
pricingUserId: 1,
|
||||||
|
creditLimit: 1,
|
||||||
|
creditMethod: 1,
|
||||||
|
creditCalcCycle: 1,
|
||||||
|
quotationTimes: 1,
|
||||||
|
paymentTerm: 1,
|
||||||
|
onlinePrice: 1,
|
||||||
|
totalPrice: 1,
|
||||||
|
other1: 1,
|
||||||
|
customerId1: 1,
|
||||||
|
legalPersonName: 1,
|
||||||
|
creditNo: 1,
|
||||||
|
regType: 1,
|
||||||
|
actualCapital: 1,
|
||||||
|
socialEmployeeNum: 1,
|
||||||
|
registeredAddress: 1,
|
||||||
|
other2: 1,
|
||||||
|
partnerCompanyId: 1,
|
||||||
|
bankName: 1,
|
||||||
|
bankAccount: 1,
|
||||||
|
legalRepresentative: 1,
|
||||||
|
ownerUserId: 1,
|
||||||
|
deptId: 1,
|
||||||
|
other3: 1,
|
||||||
|
contractType: 1,
|
||||||
|
startTime: 1,
|
||||||
|
endTime: 1,
|
||||||
|
contractTerm: 1,
|
||||||
|
statementDate: 1,
|
||||||
|
lastPayDate: 1,
|
||||||
|
penaltyRate: 1,
|
||||||
|
latePaymentRate: 1,
|
||||||
|
other4: 1,
|
||||||
|
settleMethod: 1,
|
||||||
|
afterSaleUserId: 1,
|
||||||
|
collUserId: 1,
|
||||||
|
contractBody: 1,
|
||||||
|
contractAgreement: 1,
|
||||||
|
other5: 1,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
name: undefined,
|
name: undefined,
|
||||||
|
|
@ -833,11 +970,36 @@ const getContactOptions = computed(() =>
|
||||||
)
|
)
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
//获取字段权限
|
||||||
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
|
||||||
|
if(formFields.value.hasOwnProperty(key)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[0] + v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
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)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
// 获得客户列表
|
// 获得客户列表
|
||||||
customerList.value = await CustomerApi.getCustomerSimpleList()
|
customerList.value = await CustomerApi.getCustomerSimpleList()
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,23 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
|
<el-form-item label="维护人" prop="maintainer">
|
||||||
|
<el-select
|
||||||
|
class="w-1/1"
|
||||||
|
placeholder="请选择维护人"
|
||||||
|
v-model="formData.maintainer"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="合作地区" prop="cooperationArea">
|
<el-form-item label="合作地区" prop="cooperationArea">
|
||||||
<el-select v-model="formData.cooperationArea" filterable placeholder="请选择合作地区" class="w-1/1">
|
<el-select v-model="formData.cooperationArea" filterable placeholder="请选择合作地区" class="w-1/1">
|
||||||
<el-option
|
<el-option
|
||||||
|
|
@ -80,7 +97,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col> -->
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="法人代表" prop="legalPersonName">
|
<el-form-item label="法人代表" prop="legalPersonName">
|
||||||
<el-input v-model="formData.legalPersonName" disabled placeholder="" />
|
<el-input v-model="formData.legalPersonName" disabled placeholder="" />
|
||||||
|
|
@ -88,6 +105,7 @@
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row>
|
<el-row>
|
||||||
|
|
||||||
<!-- <el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="负责人" prop="ownerUserId">
|
<el-form-item label="负责人" prop="ownerUserId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -236,6 +254,86 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="客户行业" prop="industryId">
|
||||||
|
<el-select v-model="formData.industryId" placeholder="请选择客户行业" >
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_INDUSTRY)"
|
||||||
|
: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="servicor">
|
||||||
|
<el-select
|
||||||
|
class="w-1/1"
|
||||||
|
placeholder="请选择服务对接人"
|
||||||
|
v-model="formData.servicor"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="技术对接人" prop="technicalLead">
|
||||||
|
<el-select
|
||||||
|
class="w-1/1"
|
||||||
|
placeholder="请选择技术对接人"
|
||||||
|
v-model="formData.technicalLead"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="结算对接人" prop="settlementLead">
|
||||||
|
<el-select
|
||||||
|
class="w-1/1"
|
||||||
|
placeholder="请选择结算对接人"
|
||||||
|
v-model="formData.settlementLead"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="签约人" prop="contractor">
|
||||||
|
<el-select
|
||||||
|
class="w-1/1"
|
||||||
|
placeholder="请选择签约人"
|
||||||
|
v-model="formData.contractor"
|
||||||
|
filterable
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in userOptions"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.nickname"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<!-- <el-col :span="12">
|
<!-- <el-col :span="12">
|
||||||
<el-form-item label="地址" prop="areaId">
|
<el-form-item label="地址" prop="areaId">
|
||||||
<el-cascader
|
<el-cascader
|
||||||
|
|
@ -319,6 +417,7 @@ const formData = ref({
|
||||||
registerCapital: undefined,
|
registerCapital: undefined,
|
||||||
website: undefined,
|
website: undefined,
|
||||||
registeredAddress: undefined,
|
registeredAddress: undefined,
|
||||||
|
cooperationArea: 1
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
name: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
|
name: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ContentWrap class="mt-10px">
|
<ContentWrap class="mt-10px">
|
||||||
<el-descriptions :column="5" direction="vertical">
|
<!-- <el-descriptions :column="5" direction="vertical">
|
||||||
<el-descriptions-item label="客户级别">
|
<el-descriptions-item label="客户级别">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="customer.level" />
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="customer.level" />
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
@ -27,7 +27,46 @@
|
||||||
<el-descriptions-item label="创建时间">
|
<el-descriptions-item label="创建时间">
|
||||||
{{ formatDate(customer.createTime) }}
|
{{ formatDate(customer.createTime) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions> -->
|
||||||
|
<!-- <el-collapse v-model="activeNames" class=""> -->
|
||||||
|
|
||||||
|
<el-descriptions :column="4">
|
||||||
|
<el-descriptions-item label="客户名称">
|
||||||
|
{{ customer.name }}
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="成交状态">{{ customer.dealStatus ? '已成交' : '未成交' }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="客户来源">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="customer.source" />
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="客户级别">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="customer.level" />
|
||||||
|
</el-descriptions-item> -->
|
||||||
|
<el-descriptions-item label="合作类型"><!-- {{ getName(getIntDictOptions(DICT_TYPE.CRM_COOPERATION_TYPE),customer.cooperationType) }} -->
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_COOPERATION_TYPE" :value="customer.cooperationType" />
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="合作地区">{{ getName(getIntDictOptions(DICT_TYPE.CRM_COOPERATION_AREA),customer.cooperationArea) }}</el-descriptions-item> -->
|
||||||
|
<!-- <el-descriptions-item label="行业">{{ getName(getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_INDUSTRY),customer.industryId) }}</el-descriptions-item> -->
|
||||||
|
<el-descriptions-item label="行业">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="customer.industryId" />
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label=" 拓展人">{{ customer.developerName }}</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="线索拓展人">{{ customer.clueDeveloperName }}</el-descriptions-item>-->
|
||||||
|
<!-- <el-descriptions-item label="协助人">{{ customer.assistName }}</el-descriptions-item> -->
|
||||||
|
=<el-descriptions-item label="维护人">{{ customer.maintainerName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="签约人">{{ customer.contractorName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="负责人">{{ customer.ownerUserName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="技术对接人">{{ customer.contractorName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="服务对接人">{{ customer.servicorName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="结算对接人">{{ customer.settlementLeadName }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="创建时间">{{ formatDate(customer.createTime) }}</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item label="手机号">{{ customer.mobile }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="电话">{{ customer.telephone }}</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="邮箱">{{ customer.email }}</el-descriptions-item>-->
|
||||||
|
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </el-collapse> -->
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
<!-- <el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transfer">
|
<!-- <el-button v-if="permissionListRef?.validateOwnerUser" type="primary" @click="transfer">
|
||||||
转移
|
转移
|
||||||
</el-button> -->
|
</el-button> -->
|
||||||
<el-button v-if="permissionListRef?.validateWrite" @click="handleUpdateDealStatus">
|
<!-- <el-button v-if="permissionListRef?.validateWrite" @click="handleUpdateDealStatus">
|
||||||
更改成交状态
|
更改成交状态
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
@click="handleLock"
|
@click="handleLock"
|
||||||
>
|
>
|
||||||
锁定
|
锁定
|
||||||
</el-button>
|
</el-button> -->
|
||||||
<el-button v-if="!customer.ownerUserId" type="primary" @click="handleReceive"> 领取</el-button>
|
<el-button v-if="!customer.ownerUserId" type="primary" @click="handleReceive"> 领取</el-button>
|
||||||
<el-button v-if="!customer.ownerUserId" type="primary" @click="handleDistributeForm">
|
<el-button v-if="!customer.ownerUserId" type="primary" @click="handleDistributeForm">
|
||||||
分配
|
分配
|
||||||
|
|
@ -42,9 +42,9 @@
|
||||||
<el-tab-pane label="跟进记录">
|
<el-tab-pane label="跟进记录">
|
||||||
<FollowUpList :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
<FollowUpList :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="基本信息">
|
<!-- <el-tab-pane label="基本信息">
|
||||||
<CustomerDetailsInfo :customer="customer" />
|
<CustomerDetailsInfo :customer="customer" />
|
||||||
</el-tab-pane>
|
</el-tab-pane> -->
|
||||||
<el-tab-pane label="工商信息">
|
<el-tab-pane label="工商信息">
|
||||||
<CompanyDetailsInfo :customer="customer" />
|
<CompanyDetailsInfo :customer="customer" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
|
|
@ -69,9 +69,9 @@
|
||||||
<el-tab-pane label="合同" lazy>
|
<el-tab-pane label="合同" lazy>
|
||||||
<ContractList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
<ContractList :biz-id="customer.id!" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="回访" lazy>
|
<!-- <el-tab-pane label="回访" lazy>
|
||||||
<ReturnVisitrecord :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
<ReturnVisitrecord :biz-id="customerId" :biz-type="BizTypeEnum.CRM_CUSTOMER" />
|
||||||
</el-tab-pane>
|
</el-tab-pane> -->
|
||||||
<!-- <el-tab-pane label="回款" lazy>
|
<!-- <el-tab-pane label="回款" lazy>
|
||||||
<ReceivablePlanList :customer-id="customer.id!" @create-receivable="createReceivable" />
|
<ReceivablePlanList :customer-id="customer.id!" @create-receivable="createReceivable" />
|
||||||
<ReceivableList ref="receivableListRef" :customer-id="customer.id!" />
|
<ReceivableList ref="receivableListRef" :customer-id="customer.id!" />
|
||||||
|
|
|
||||||
|
|
@ -44,22 +44,37 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="客户级别" prop="level">
|
<el-form-item label="创建时间" prop="timeType">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.level"
|
v-model="queryParams.timeType"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
clearable
|
clearable
|
||||||
placeholder="请选择客户级别"
|
placeholder="请选择时间类型"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_LEVEL)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.TIME_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>-->
|
</el-form-item>
|
||||||
<!-- <el-form-item label="客户来源" prop="source">
|
<el-form-item label="合作状态" prop="customerStatus">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.customerStatus"
|
||||||
|
class="!w-240px"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择合作状态"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.CRM_CUSTOMER_STSTUS)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="客户来源" prop="source">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.source"
|
v-model="queryParams.source"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
|
|
@ -73,7 +88,7 @@
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>-->
|
</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" />
|
||||||
|
|
@ -113,46 +128,76 @@
|
||||||
<el-tab-pane label="下属负责的" name="3" />
|
<el-tab-pane label="下属负责的" name="3" />
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
<el-table v-loading="loading" :data="list" :show-overflow-tooltip="true" :stripe="true">
|
||||||
<el-table-column align="center" fixed="left" label="客户名称" prop="name" width="250">
|
<el-table-column align="center" fixed="left" label="名称" prop="name" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||||
{{ scope.row.name }}
|
{{ scope.row.name }}
|
||||||
</el-link>
|
</el-link>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="合作状态" prop="source" width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_STSTUS" :value="scope.row.customerStatus" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column align="center" label="客户来源" prop="source" width="100">
|
<el-table-column align="center" label="客户来源" prop="source" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_SOURCE" :value="scope.row.source" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="客户状态" prop="serviceStatus" width="120" />
|
<!-- <el-table-column align="center" label="线索人" prop="clueDeveloperName" width="120">
|
||||||
<!-- <el-table-column align="center" label="电话" prop="telephone" width="130" />
|
|
||||||
<el-table-column align="center" label="邮箱" prop="email" width="180" /> -->
|
|
||||||
<el-table-column align="center" label="客户级别" prop="level" width="145">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
|
{{scope.row.clueDeveloperName || '暂无'}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column align="center" label="商务拓展人" prop="developerName" width="120">
|
<el-table-column align="center" label="拓展人" prop="developerName" width="120" />
|
||||||
<template #default="scope">
|
<el-table-column align="center" label="签约人" prop="contractorName" width="120">
|
||||||
{{scope.row.developerName || '暂无'}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column align="center" label="商务签约人" prop="contractorName" width="120">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{scope.row.contractorName || '暂无'}}
|
{{scope.row.contractorName || '暂无'}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="维护人" prop="maintainerName" width="120">
|
||||||
|
<template #default="scope">
|
||||||
|
{{scope.row.maintainerName || '暂无'}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="技术对接人" prop="technicalLeadName" width="120" />
|
||||||
|
<el-table-column align="center" label="服务对接人" prop="servicorName" width="120" />
|
||||||
|
<el-table-column align="center" label="结算对接人" prop="settlementLeadName" width="120" />
|
||||||
|
<el-table-column align="center" label="行业" prop="industryId" width="100">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_INDUSTRY" :value="scope.row.industryId" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="公司类型" prop="regType" width="250" />
|
||||||
|
<el-table-column align="center" label="距离进入公海天数" prop="poolDay" width="140">
|
||||||
|
<template #default="scope"> {{ scope.row.poolDay }} 天</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column align="center" label="负责人" prop="ownerUserName" width="100px" />
|
||||||
|
<el-table-column align="center" label="所属部门" prop="ownerUserDeptName" width="100px" />
|
||||||
|
<el-table-column
|
||||||
|
:formatter="dateFormatter"
|
||||||
|
align="center"
|
||||||
|
label="创建时间"
|
||||||
|
prop="createTime"
|
||||||
|
width="180px"
|
||||||
|
/>
|
||||||
|
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
||||||
|
<!-- <el-table-column align="center" label="客户状态" prop="serviceStatus" width="120" /> -->
|
||||||
|
<!-- <el-table-column align="center" label="电话" prop="telephone" width="130" />
|
||||||
|
<el-table-column align="center" label="邮箱" prop="email" width="180" /> -->
|
||||||
|
<!-- <el-table-column align="center" label="客户级别" prop="level" width="145">
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_CUSTOMER_LEVEL" :value="scope.row.level" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column align="center" label="归属部门" prop="ownerUserDeptName" width="120">
|
<el-table-column align="center" label="归属部门" prop="ownerUserDeptName" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{scope.row.ownerUserDeptName || '暂无'}}
|
{{scope.row.ownerUserDeptName || '暂无'}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="售后维护人" prop="maintainerName" width="120">
|
|
||||||
<template #default="scope">
|
|
||||||
{{scope.row.maintainerName || '暂无'}}
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column align="center" label="协助人" prop="assistName" width="250">
|
<el-table-column align="center" label="协助人" prop="assistName" width="250">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
{{scope.row.assistName || '暂无'}}
|
{{scope.row.assistName || '暂无'}}
|
||||||
|
|
@ -211,7 +256,7 @@
|
||||||
prop="createTime"
|
prop="createTime"
|
||||||
width="180px"
|
width="180px"
|
||||||
/>
|
/>
|
||||||
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" />
|
<el-table-column align="center" label="创建人" prop="creatorName" width="100px" /> -->
|
||||||
<el-table-column align="center" fixed="right" label="操作" min-width="150" v-if="activeName != 2">
|
<el-table-column align="center" fixed="right" label="操作" min-width="150" v-if="activeName != 2">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<template>
|
<template>
|
||||||
<!-- 操作栏 -->
|
<!-- 操作栏 -->
|
||||||
<el-row class="mb-10px" justify="end" v-if="!type">
|
<el-row class="mb-10px" justify="end" v-if="!type">
|
||||||
<el-button @click="openForm">
|
<el-button @click="openForm" type="primary">
|
||||||
<Icon class="mr-5px" icon="ep:edit" />
|
<Icon class="mr-5px" icon="ep:edit" />
|
||||||
写跟进
|
写跟进
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,18 @@
|
||||||
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap>
|
<ContentWrap style="border: none; font-weight: 700">需求信息</ContentWrap>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="合作类型" prop="partnerCompanyId">
|
||||||
|
<el-select v-model="formData.partnerCompanyId" clearable placeholder="请选择合作主体" @change="onPartnerChange">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in orgList"
|
||||||
|
:key="dict.id"
|
||||||
|
:label="dict.orgName"
|
||||||
|
:value="dict.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="合作主体" prop="partnerCompanyId">
|
<el-form-item label="合作主体" prop="partnerCompanyId">
|
||||||
<el-select v-model="formData.partnerCompanyId" clearable placeholder="请选择合作主体" @change="onPartnerChange">
|
<el-select v-model="formData.partnerCompanyId" clearable placeholder="请选择合作主体" @change="onPartnerChange">
|
||||||
|
|
@ -577,7 +589,6 @@ const changeQuotationTimes = async() => {
|
||||||
|
|
||||||
let num = await QuotationApi.getServerFee(data)
|
let num = await QuotationApi.getServerFee(data)
|
||||||
formData.value.QuotationTimes = num.quotationProducts
|
formData.value.QuotationTimes = num.quotationProducts
|
||||||
console.log('%csrc/views/crm/quotation/QuotationForm.vue:574 formData.value.QuotationTimes', 'color: #007acc;', formData.value.QuotationTimes);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,92 +7,116 @@
|
||||||
label-width="0px"
|
label-width="0px"
|
||||||
:inline-message="true"
|
:inline-message="true"
|
||||||
>
|
>
|
||||||
<el-table :data="formData" class="-mt-10px">
|
<AuthTable :data="formData" :fields="formFields" class="-mt-10px">
|
||||||
<el-table-column label="序号" type="index" width="100" />
|
<template #productsother>
|
||||||
<!-- <el-table-column label="产品名称" min-width="150">
|
<el-table-column label="序号" type="index" width="100" />
|
||||||
<template #default="{ row, $index }">
|
<!-- <el-table-column label="产品名称" min-width="150">
|
||||||
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
<template #default="{ row, $index }">
|
||||||
{{row.productName}}
|
<el-form-item :prop="`${$index}.productName`" :rules="formRules.productName" class="mb-0px!">
|
||||||
</el-form-item>
|
{{row.productName}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
<template #productscategory>
|
||||||
<el-table-column label="产品类型" align="center" min-width="150">
|
<el-table-column label="产品类型" align="center" min-width="150">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsdetailType>
|
||||||
|
<el-table-column label="产品明细类型" align="center" min-width="190">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsproductUnit>
|
||||||
|
<el-table-column label="产品单位" align="center" min-width="150">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsbasicServiceFee>
|
||||||
|
<el-table-column label="基础服务费(元)" min-width="130">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!">
|
||||||
|
<!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
|
||||||
|
{{row.basicServiceFee}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsadvancePaymentServiceFee>
|
||||||
|
<el-table-column label="垫资服务费(元)" min-width="140">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.offlinePrice" class="mb-0px!">
|
||||||
|
<!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
|
||||||
|
{{row.advancePaymentServiceFee}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsbookingPaymentServiceFee>
|
||||||
|
<el-table-column label="代订服务费(元)" min-width="130">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.bookingPaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
|
||||||
|
{{row.bookingPaymentServiceFee}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsbillSortingServiceFee>
|
||||||
|
<el-table-column label="票据分拣服务费(元)" min-width="130">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
|
||||||
|
{{row.billSortingServiceFee}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productstotalServiceFee>
|
||||||
|
<el-table-column label="服务费收入合计(元)" min-width="130">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
|
||||||
|
{{row.totalServiceFee}}
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsproductInvoice>
|
||||||
|
<el-table-column label="产品票据" align="center" min-width="150">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsproductInvoiceItem>
|
||||||
|
<el-table-column label="产品开具项目" align="center" min-width="250">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsserviceInvoice>
|
||||||
|
<el-table-column label="服务费票据" align="center" min-width="150">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #productsserviceInvoiceItem>
|
||||||
|
<el-table-column label="服务开具项目" align="center" min-width="250">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
|
||||||
<el-table-column label="产品明细类型" align="center" min-width="190">
|
</AuthTable>
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_DETAIL_TYPE" :value="row.detailType" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="产品单位" align="center" min-width="150">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_UNIT" :value="row.productUnit" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="基础服务费(元)" min-width="130">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.basicServiceFee`" :rules="formRules.basicServiceFee" class="mb-0px!">
|
|
||||||
<!-- <el-input v-model="row.basicServiceFee" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
|
|
||||||
{{row.basicServiceFee}}
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
<el-table-column label="垫资服务费(元)" min-width="140">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.advancePaymentServiceFee`" :rules="formRules.offlinePrice" class="mb-0px!">
|
|
||||||
<!-- <el-input v-model="row.offlinePrice" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="" /> -->
|
|
||||||
{{row.advancePaymentServiceFee}}
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="代订服务费(元)" min-width="130">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.bookingPaymentServiceFee`" :rules="formRules.advancePaymentServiceFee" class="mb-0px!">
|
|
||||||
{{row.bookingPaymentServiceFee}}
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="票据分拣服务费(元)" min-width="130">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.billSortingServiceFee`" :rules="formRules.billSortingServiceFee" class="mb-0px!">
|
|
||||||
{{row.billSortingServiceFee}}
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="服务费收入合计(元)" min-width="130">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.totalServiceFee`" :rules="formRules.totalServiceFee" class="mb-0px!">
|
|
||||||
{{row.totalServiceFee}}
|
|
||||||
</el-form-item>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="产品票据" align="center" min-width="150">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE" :value="row.productInvoice" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="产品开具项目" align="center" min-width="250">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_INVOICE_ITEMS" :value="row.productInvoiceItem" />
|
|
||||||
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="服务费票据" align="center" min-width="150">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE" :value="row.serviceInvoice" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="服务开具项目" align="center" min-width="250">
|
|
||||||
<template #default="{ row }">
|
|
||||||
<dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
|
|
||||||
</el-table>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-row justify="center" class="mt-3">
|
<el-row justify="center" class="mt-3">
|
||||||
<!-- <el-button @click="handleAdd" round>+ 添加CRM 报价产品关联</el-button> -->
|
<!-- <el-button @click="handleAdd" round>+ 添加CRM 报价产品关联</el-button> -->
|
||||||
|
|
@ -108,8 +132,8 @@ const props = defineProps<{
|
||||||
quotationId: undefined, // 报价编号(主表的关联字段)
|
quotationId: undefined, // 报价编号(主表的关联字段)
|
||||||
businessId: undefined,
|
businessId: undefined,
|
||||||
billTemplateId: undefined,
|
billTemplateId: undefined,
|
||||||
products: undefined
|
products: undefined,
|
||||||
|
formFields: {},
|
||||||
}>()
|
}>()
|
||||||
const formLoading = ref(false) // 表单的加载中
|
const formLoading = ref(false) // 表单的加载中
|
||||||
const formData = ref([])
|
const formData = ref([])
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<el-table :data="formData" class="-mt-10px" v-loading="loading" :summary-method="getSummaries"
|
<el-table :data="formData" class="-mt-10px" v-loading="loading" :summary-method="getSummaries"
|
||||||
show-summary>
|
show-summary :span-method="arraySpanMethod">
|
||||||
<el-table-column label="产品类型" align="center" min-width="150">
|
<el-table-column label="产品类型" align="center" min-width="150">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
<dict-tag :type="DICT_TYPE.CRM_PRODUCT_CATEGORY" :value="row.category" />
|
||||||
|
|
@ -55,7 +55,6 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="您的分润收入" align="center" prop="revenueAnalysisVO.profitSharingIncome" min-width="250">
|
<el-table-column label="您的分润收入" align="center" prop="revenueAnalysisVO.profitSharingIncome" min-width="250">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<!-- <dict-tag :type="DICT_TYPE.CRM_SERVICE_FEE_INVOICE_ITEMS" :value="row.serviceInvoiceItem" /> -->
|
|
||||||
{{row.revenueAnalysisVO.profitSharingIncome}}
|
{{row.revenueAnalysisVO.profitSharingIncome}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
@ -108,9 +107,7 @@ const getSummaries = (param: SummaryMethodProps<Product>) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const property = column.property
|
const property = column.property
|
||||||
// if(property === 'evenueAnalysisVO.profitSharingIncome' || property === 'revenueAnalysisVO.profitSharingRatio') {
|
|
||||||
|
|
||||||
// }
|
|
||||||
const isNestedField = property ? property.includes('.') : ''
|
const isNestedField = property ? property.includes('.') : ''
|
||||||
|
|
||||||
let values: number[] = []
|
let values: number[] = []
|
||||||
|
|
@ -129,6 +126,8 @@ const getSummaries = (param: SummaryMethodProps<Product>) => {
|
||||||
let total = `${values.reduce((prev, curr) => {
|
let total = `${values.reduce((prev, curr) => {
|
||||||
const value = Number(curr)
|
const value = Number(curr)
|
||||||
if (!Number.isNaN(value)) {
|
if (!Number.isNaN(value)) {
|
||||||
|
if(property === 'revenueAnalysisVO.profitSharingIncome' || property === 'revenueAnalysisVO.profitSharingRatio') return value
|
||||||
|
|
||||||
return prev + value
|
return prev + value
|
||||||
} else {
|
} else {
|
||||||
return prev
|
return prev
|
||||||
|
|
@ -152,6 +151,10 @@ const getData = async (data) => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
let list = await QuotationApi.getRevenueList(data)
|
let list = await QuotationApi.getRevenueList(data)
|
||||||
|
list.quotationProducts.forEach(v => {
|
||||||
|
v.revenueAnalysisVO.profitSharingRatio = list.totalRevenueAnalysis.profitSharingRatio
|
||||||
|
v.revenueAnalysisVO.profitSharingIncome = list.totalRevenueAnalysis.profitSharingIncome
|
||||||
|
})
|
||||||
formData.value = list.quotationProducts
|
formData.value = list.quotationProducts
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
|
|
@ -163,4 +166,26 @@ const getName = (opt, val) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({ getData })
|
defineExpose({ getData })
|
||||||
|
|
||||||
|
|
||||||
|
const arraySpanMethod = ({
|
||||||
|
row,
|
||||||
|
column,
|
||||||
|
rowIndex,
|
||||||
|
columnIndex,
|
||||||
|
}) => {
|
||||||
|
if (column.property === 'revenueAnalysisVO.profitSharingIncome' || column.property === 'revenueAnalysisVO.profitSharingRatio') {
|
||||||
|
if (rowIndex=== 0) {
|
||||||
|
return {
|
||||||
|
rowspan: formData.value.length,
|
||||||
|
colspan: 1,
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
rowspan: 0,
|
||||||
|
colspan: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -8,7 +8,10 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="110px"
|
label-width="110px"
|
||||||
>
|
>
|
||||||
<el-form-item label="报价单编号" prop="no">
|
<el-form-item label="客户" prop="customerId">
|
||||||
|
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
||||||
|
</el-form-item>
|
||||||
|
<!-- <el-form-item label="报价单编号" prop="no">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.no"
|
v-model="queryParams.no"
|
||||||
placeholder="请输入报价单编号"
|
placeholder="请输入报价单编号"
|
||||||
|
|
@ -16,24 +19,9 @@
|
||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="客户" prop="customerId">
|
|
||||||
<SelectComponent :customerList="customerList" class="!w-240px" v-model="queryParams.customerId" />
|
<!-- <el-form-item label="商机负责人" prop="ownerUserId">
|
||||||
<!-- <el-select
|
|
||||||
v-model="queryParams.customerId"
|
|
||||||
placeholder="请选择客户"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in customerList"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.name"
|
|
||||||
:value="dict.id"
|
|
||||||
/>
|
|
||||||
</el-select> -->
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="商机负责人" prop="ownerUserId">
|
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.ownerUserId"
|
v-model="queryParams.ownerUserId"
|
||||||
placeholder="请选择商机负责人"
|
placeholder="请选择商机负责人"
|
||||||
|
|
@ -47,7 +35,7 @@
|
||||||
:value="dict.id"
|
:value="dict.id"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="客户确认状态" prop="confirmStatus">
|
<el-form-item label="客户确认状态" prop="confirmStatus">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.confirmStatus"
|
v-model="queryParams.confirmStatus"
|
||||||
|
|
@ -63,7 +51,7 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="创建时间" prop="createTime">
|
<!-- <el-form-item label="创建时间" prop="createTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.createTime"
|
v-model="queryParams.createTime"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
|
|
@ -73,7 +61,7 @@
|
||||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
|
|
@ -85,7 +73,7 @@
|
||||||
>
|
>
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||||
</el-button>
|
</el-button>
|
||||||
<el-button
|
<!-- <el-button
|
||||||
type="success"
|
type="success"
|
||||||
plain
|
plain
|
||||||
@click="handleExport"
|
@click="handleExport"
|
||||||
|
|
@ -93,7 +81,7 @@
|
||||||
v-hasPermi="['crm:quotation:export']"
|
v-hasPermi="['crm:quotation:export']"
|
||||||
>
|
>
|
||||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||||
</el-button>
|
</el-button> -->
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
@ -106,14 +94,7 @@
|
||||||
<el-tab-pane label="下属负责的" name="3" />
|
<el-tab-pane label="下属负责的" name="3" />
|
||||||
</el-tabs> -->
|
</el-tabs> -->
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="报价单编号" align="center" prop="no" width="200" >
|
<el-table-column label="客户名称" align="center" prop="customerId" width="250">
|
||||||
<template #default="scope">
|
|
||||||
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
|
||||||
{{ scope.row.no }}
|
|
||||||
</el-link>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="客户名称" align="center" prop="customerId" width="220">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-link
|
<!-- <el-link
|
||||||
:underline="false"
|
:underline="false"
|
||||||
|
|
@ -124,19 +105,32 @@
|
||||||
<!-- </el-link> -->
|
<!-- </el-link> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="报价单编号" align="center" prop="no" width="200" >
|
||||||
|
<template #default="scope">
|
||||||
|
<el-link :underline="false" type="primary" @click="openDetail(scope.row.id)">
|
||||||
|
{{ scope.row.no }}
|
||||||
|
</el-link>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column label="商机负责人" align="center" prop="ownerUserId">
|
<el-table-column label="商机负责人" align="center" prop="ownerUserId">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <el-link
|
|
||||||
:underline="false"
|
|
||||||
type="primary"
|
|
||||||
@click="openContactDetail(scope.row.ownerUserId)"
|
|
||||||
>
|
|
||||||
{{ scope.row.ownerUserName }}
|
|
||||||
</el-link> -->
|
|
||||||
{{getName(userOptions, scope.row.creator)}}
|
{{getName(userOptions, scope.row.creator)}}
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="拓展人" align="center" prop="expandingUserId">
|
||||||
|
<template #default="scope">
|
||||||
|
{{getName(userOptions, scope.row.expandingUserId)}}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="维护人" align="center" prop="ownerUserId">
|
||||||
|
<template #default="scope">
|
||||||
|
{{getName(userOptions, scope.row.maintenanceUserId)}}
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="账期" align="center" prop="paymentTerm" width="120">
|
<el-table-column label="账期" align="center" prop="paymentTerm" width="120">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="'payment_term'" :value="scope.row.paymentTerm" />
|
<dict-tag :type="'payment_term'" :value="scope.row.paymentTerm" />
|
||||||
|
|
@ -147,12 +141,13 @@
|
||||||
<dict-tag :type="'credit_method'" :value="scope.row.creditMethod" />
|
<dict-tag :type="'credit_method'" :value="scope.row.creditMethod" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="授信计算周期" align="center" prop="creditCalcCycle" width="120" />
|
<el-table-column label="项目难度" align="center" prop="projectDifficultyName" width="120" />
|
||||||
|
<!-- <el-table-column label="授信计算周期" align="center" prop="creditCalcCycle" width="120" /> -->
|
||||||
<!-- <template #default="scope">
|
<!-- <template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.CREDIT_CALC_CYCLE" :value="scope.row.creditCalcCycle" />
|
<dict-tag :type="DICT_TYPE.CREDIT_CALC_CYCLE" :value="scope.row.creditCalcCycle" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column> -->
|
||||||
<el-table-column label="授信额度" align="center" prop="creditLimit" />
|
<el-table-column label="授信额度" align="center" prop="creditLimit" width="180" />
|
||||||
<el-table-column label="合作主体" align="center" prop="partnerCompanyName" />
|
<el-table-column label="合作主体" align="center" prop="partnerCompanyName" />
|
||||||
<el-table-column label="审批状态" align="center" prop="auditStatus" width="100">
|
<el-table-column label="审批状态" align="center" prop="auditStatus" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
<ContentWrap>
|
||||||
<el-form
|
<el-form
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
|
|
@ -7,44 +7,73 @@
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-form-item label="申请人ID" prop="userId">
|
|
||||||
<el-input v-model="formData.userId" placeholder="请输入申请人ID" />
|
<!-- <el-form-item label="工作流编号" prop="processInstanceId">
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
|
||||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="审批状态" prop="auditStatus">
|
<el-form-item label="审批状态" prop="auditStatus">
|
||||||
<el-radio-group v-model="formData.auditStatus">
|
<el-radio-group v-model="formData.auditStatus">
|
||||||
<el-radio value="1">请选择字典生成</el-radio>
|
<el-radio value="1">请选择字典生成</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="证明类型(在职证明、实习证明)" prop="certificateType">
|
<el-row>
|
||||||
<el-select v-model="formData.certificateType" placeholder="请选择证明类型(在职证明、实习证明)">
|
<el-col :span="12">
|
||||||
<el-option
|
<el-form-item label="证明类型" prop="certificateType">
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_CERTIFICATE_TYPE)"
|
<el-select v-model="formData.certificateType" placeholder="请选择证明类型">
|
||||||
:key="dict.value"
|
<el-option
|
||||||
:label="dict.label"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_CERTIFICATE_TYPE)"
|
||||||
:value="dict.value"
|
:key="dict.value"
|
||||||
/>
|
:label="dict.label"
|
||||||
</el-select>
|
:value="dict.value"
|
||||||
</el-form-item>
|
/>
|
||||||
<el-form-item label="申请日期" prop="applicationDate">
|
</el-select>
|
||||||
<el-date-picker
|
</el-form-item>
|
||||||
v-model="formData.applicationDate"
|
</el-col>
|
||||||
type="date"
|
</el-row>
|
||||||
value-format="x"
|
<el-row>
|
||||||
placeholder="选择申请日期"
|
<el-col :span="12">
|
||||||
/>
|
<el-form-item label="申请日期" prop="applicationDate">
|
||||||
</el-form-item>
|
<el-date-picker
|
||||||
<el-form-item label="申请事由" prop="reason">
|
style="width:100%"
|
||||||
<el-input v-model="formData.reason" placeholder="请输入申请事由" />
|
v-model="formData.applicationDate"
|
||||||
</el-form-item>
|
type="date"
|
||||||
|
value-format="x"
|
||||||
|
placeholder="选择申请日期"
|
||||||
|
/>
|
||||||
|
</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="">
|
||||||
|
<el-input v-model="formData.reason" placeholder="请输入申请事由" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="身份证号" prop="">
|
||||||
|
<el-input v-model="formData.reason" placeholder="请输入申请事由" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="所属岗位" prop="">
|
||||||
|
<el-input v-model="formData.reason" placeholder="请输入申请事由" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="申请事由" prop="reason">
|
||||||
|
<el-input v-model="formData.reason" placeholder="请输入申请事由" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<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>
|
</template>
|
||||||
</Dialog>
|
</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'
|
||||||
|
|
@ -52,10 +81,14 @@ import { CertificateRequestApi, CertificateRequestVO } from '@/api/hrm/certifica
|
||||||
|
|
||||||
/** 人事证明申请 表单 */
|
/** 人事证明申请 表单 */
|
||||||
defineOptions({ name: 'CertificateRequestForm' })
|
defineOptions({ name: 'CertificateRequestForm' })
|
||||||
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
import { useUserStore } from '@/store/modules/user'
|
||||||
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)提交的按钮禁用
|
||||||
|
|
@ -79,10 +112,7 @@ const formRules = reactive({
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (type: string, id?: number) => {
|
const open = async (id?: number) => {
|
||||||
dialogVisible.value = true
|
|
||||||
dialogTitle.value = t('action.' + type)
|
|
||||||
formType.value = type
|
|
||||||
resetForm()
|
resetForm()
|
||||||
// 修改时,设置数据
|
// 修改时,设置数据
|
||||||
if (id) {
|
if (id) {
|
||||||
|
|
@ -105,7 +135,7 @@ const submitForm = async () => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as CertificateRequestVO
|
const data = formData.value as unknown as CertificateRequestVO
|
||||||
if (formType.value === 'create') {
|
if (!formType.value) {
|
||||||
await CertificateRequestApi.createCertificateRequest(data)
|
await CertificateRequestApi.createCertificateRequest(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -133,4 +163,18 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 初始化 **/
|
||||||
|
const route = useRoute();
|
||||||
|
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()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="申请人ID" prop="userId">
|
<el-form-item label="申请人" prop="userId">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.userId"
|
v-model="queryParams.userId"
|
||||||
placeholder="请输入申请人ID"
|
placeholder="请输入申请人ID"
|
||||||
|
|
@ -17,29 +17,11 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
|
||||||
<el-input
|
<el-form-item label="证明类型" prop="certificateType">
|
||||||
v-model="queryParams.processInstanceId"
|
|
||||||
placeholder="请输入工作流编号"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="审批状态" prop="auditStatus">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.auditStatus"
|
|
||||||
placeholder="请选择审批状态"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option label="请选择字典生成" value="" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="证明类型(在职证明、实习证明)" prop="certificateType">
|
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.certificateType"
|
v-model="queryParams.certificateType"
|
||||||
placeholder="请选择证明类型(在职证明、实习证明)"
|
placeholder="请选择证明类型"
|
||||||
clearable
|
clearable
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
>
|
>
|
||||||
|
|
@ -62,33 +44,13 @@
|
||||||
class="!w-220px"
|
class="!w-220px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="申请事由" prop="reason">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.reason"
|
|
||||||
placeholder="请输入申请事由"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="创建时间" prop="createTime">
|
|
||||||
<el-date-picker
|
|
||||||
v-model="queryParams.createTime"
|
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
|
||||||
type="daterange"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
|
|
||||||
class="!w-220px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
@click="openForm('create')"
|
@click="openFormAdd('create')"
|
||||||
v-hasPermi="['hrm:certificate-request:create']"
|
v-hasPermi="['hrm:certificate-request:create']"
|
||||||
>
|
>
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||||
|
|
@ -110,23 +72,14 @@
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="主键ID" align="center" prop="id" />
|
<el-table-column label="主键ID" align="center" prop="id" />
|
||||||
<el-table-column label="申请人ID" align="center" prop="userId" />
|
<el-table-column label="申请" align="center" prop="userId" />
|
||||||
<el-table-column label="工作流编号" align="center" prop="processInstanceId" />
|
<!-- <el-table-column label="审批状态" align="center" prop="auditStatus" /> -->
|
||||||
<el-table-column label="审批状态" align="center" prop="auditStatus" />
|
<el-table-column label="证明类型" align="center" prop="certificateType">
|
||||||
<el-table-column label="证明类型(在职证明、实习证明)" align="center" prop="certificateType">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.HRM_CERTIFICATE_TYPE" :value="scope.row.certificateType" />
|
<dict-tag :type="DICT_TYPE.HRM_CERTIFICATE_TYPE" :value="scope.row.certificateType" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="申请日期" align="center" prop="applicationDate" />
|
<el-table-column label="申请日期" align="center" prop="applicationDate" />
|
||||||
<el-table-column label="申请事由" align="center" prop="reason" />
|
|
||||||
<el-table-column
|
|
||||||
label="创建时间"
|
|
||||||
align="center"
|
|
||||||
prop="createTime"
|
|
||||||
:formatter="dateFormatter"
|
|
||||||
width="180px"
|
|
||||||
/>
|
|
||||||
<el-table-column label="操作" align="center" min-width="120px">
|
<el-table-column label="操作" align="center" min-width="120px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button
|
||||||
|
|
@ -158,7 +111,7 @@
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
<!-- 表单弹窗:添加/修改 -->
|
||||||
<CertificateRequestForm ref="formRef" @success="getList" />
|
<!-- <CertificateRequestForm ref="formRef" @success="getList" /> -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -166,7 +119,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { CertificateRequestApi, CertificateRequestVO } from '@/api/hrm/certificaterequest'
|
import { CertificateRequestApi, CertificateRequestVO } from '@/api/hrm/certificaterequest'
|
||||||
import CertificateRequestForm from './CertificateRequestForm.vue'
|
// import CertificateRequestForm from './CertificateRequestForm.vue'
|
||||||
|
|
||||||
/** 人事证明申请 列表 */
|
/** 人事证明申请 列表 */
|
||||||
defineOptions({ name: 'CertificateRequest' })
|
defineOptions({ name: 'CertificateRequest' })
|
||||||
|
|
@ -217,8 +170,10 @@ const resetQuery = () => {
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
/** 添加/修改操作 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = (type: string, id?: number) => {
|
const router = useRouter() // 路由
|
||||||
formRef.value.open(type, id)
|
const { push } = useRouter()
|
||||||
|
const openFormAdd = () => {
|
||||||
|
push({ name: 'CertificateRequestAdd' })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-form-item label="需求类型:新增需求、替换需求、储备需求" prop="requestType">
|
<el-form-item label="需求类型" prop="requestType">
|
||||||
<el-select v-model="formData.requestType" placeholder="请选择需求类型:新增需求、替换需求、储备需求">
|
<el-select v-model="formData.requestType" placeholder="请选择需求类型">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_REQUEST_TYPE)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_REQUEST_TYPE)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -17,8 +17,14 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属部门" prop="requestDeptId">
|
<el-form-item label="需求部门" prop="requestDeptId">
|
||||||
<el-input v-model="formData.requestDeptId" placeholder="请输入所属部门" />
|
<el-select v-model="formData.requestType" placeholder="请选择需求部门">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EMAND_DEPARTMENT)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="工作流编号" prop="processInstanceId">
|
<el-form-item label="工作流编号" prop="processInstanceId">
|
||||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||||
|
|
@ -35,9 +41,16 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="岗位id" prop="postId">
|
<el-form-item label="岗位id" prop="postId">
|
||||||
<el-input v-model="formData.postId" placeholder="请输入岗位id" />
|
<el-input v-model="formData.postId" placeholder="请输入岗位id" />
|
||||||
</el-form-item>
|
<el-form-item label="岗位" prop="postIds">
|
||||||
<el-form-item label="需求岗位名称" prop="positionName">
|
<el-select v-model="formData.postIds" multiple placeholder="请选择">
|
||||||
<el-input v-model="formData.positionName" placeholder="请输入需求岗位名称" />
|
<el-option
|
||||||
|
v-for="item in postList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id!"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="期望到岗日期" prop="expectedOnboard">
|
<el-form-item label="期望到岗日期" prop="expectedOnboard">
|
||||||
<el-input v-model="formData.expectedOnboard" placeholder="请输入期望到岗日期" />
|
<el-input v-model="formData.expectedOnboard" placeholder="请输入期望到岗日期" />
|
||||||
|
|
@ -45,16 +58,13 @@
|
||||||
<el-form-item label="需求人数" prop="requestedCount">
|
<el-form-item label="需求人数" prop="requestedCount">
|
||||||
<el-input v-model="formData.requestedCount" placeholder="请输入需求人数" />
|
<el-input v-model="formData.requestedCount" placeholder="请输入需求人数" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="年龄范围,如:18-25,25-35,30-45" prop="ageRange">
|
<!-- <el-form-item label="需求岗位名称" prop="positionName">
|
||||||
<el-input v-model="formData.ageRange" placeholder="请输入年龄范围,如:18-25,25-35,30-45" />
|
<el-input v-model="formData.positionName" placeholder="请输入需求岗位名称" />
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<el-form-item label="薪资(月),如:4k-7k,5k-8k,10k-15k" prop="monthlySalary">
|
<el-form-item label="婚姻状况" prop="maritalStatus">
|
||||||
<el-input v-model="formData.monthlySalary" type="textarea" placeholder="请输入薪资(月),如:4k-7k,5k-8k,10k-15k" />
|
<el-select v-model="formData.maritalStatus" placeholder="请选择婚姻状况">
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="最低学历:1=高中,2=大专,3=本科,4=硕士,5=博士" prop="minEducation">
|
|
||||||
<el-select v-model="formData.minEducation" placeholder="请选择最低学历:1=高中,2=大专,3=本科,4=硕士,5=博士">
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
|
|
@ -71,17 +81,41 @@
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="婚姻状况:未婚、已婚、离异、丧偶" prop="maritalStatus">
|
<el-form-item label="薪资(月)" prop="monthlySalary">
|
||||||
<el-select v-model="formData.maritalStatus" placeholder="请选择婚姻状况:未婚、已婚、离异、丧偶">
|
<el-select v-model="formData.monthlySalary" placeholder="请选择薪资(月)">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MONTHLY_SALARY)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="从业经验" prop="experience">
|
<el-form-item label="年龄范围" prop="ageRange">
|
||||||
|
<el-select v-model="formData.monthlySalary" placeholder="请选择年龄范围">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_AGE_RANGE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="最低学历" prop="minEducation">
|
||||||
|
<el-select v-model="formData.minEducation" placeholder="请选择最低学历">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="行业年限" prop="minEducation">
|
||||||
|
<el-input v-model="formData.experience" placeholder="请输入从业经验" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="岗位年限" prop="experience">
|
||||||
<el-input v-model="formData.experience" placeholder="请输入从业经验" />
|
<el-input v-model="formData.experience" placeholder="请输入从业经验" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
@ -97,10 +131,12 @@ import { RecruitmentRequestApi, RecruitmentRequestVO } from '@/api/hrm/recruitme
|
||||||
|
|
||||||
/** 招聘需求申请 表单 */
|
/** 招聘需求申请 表单 */
|
||||||
defineOptions({ name: 'RecruitmentRequestForm' })
|
defineOptions({ name: 'RecruitmentRequestForm' })
|
||||||
|
import * as PostApi from '@/api/system/post'
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
|
const postList = ref([] as PostApi.PostVO[]) // 岗位列表
|
||||||
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)提交的按钮禁用
|
||||||
|
|
@ -198,4 +234,9 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted( async() => {
|
||||||
|
// 加载岗位列表
|
||||||
|
postList.value = await PostApi.getSimplePostList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -8,10 +8,10 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="需求类型:新增需求、替换需求、储备需求" prop="requestType">
|
<el-form-item label="需求类型" prop="requestType">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="queryParams.requestType"
|
v-model="queryParams.requestType"
|
||||||
placeholder="请选择需求类型:新增需求、替换需求、储备需求"
|
placeholder="请选择需求类型"
|
||||||
clearable
|
clearable
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
<ContentWrap>
|
||||||
<el-form
|
<el-form
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
|
|
@ -7,101 +7,164 @@
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-form-item label="招聘需求ID" prop="recruitmentRequestId">
|
<el-row>
|
||||||
<el-input v-model="formData.recruitmentRequestId" placeholder="请输入招聘需求ID" />
|
<el-col :span="24">
|
||||||
</el-form-item>
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
<el-form-item label="姓名" prop="name">
|
个人信息
|
||||||
<el-input v-model="formData.name" placeholder="请输入姓名" />
|
</ContentWrap>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="性别" prop="gender">
|
<el-col :span="8">
|
||||||
<el-select v-model="formData.gender" placeholder="请选择性别">
|
<el-form-item label="姓名" prop="realName">
|
||||||
<el-option
|
<el-input v-model="formData.realName" placeholder="请输入姓名" />
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
</el-form-item>
|
||||||
:key="dict.value"
|
</el-col>
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
<el-col :span="8">
|
||||||
/>
|
<el-form-item label="手机号" prop="phone">
|
||||||
</el-select>
|
<el-input v-model="formData.phone" placeholder="请输入手机号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="籍贯" prop="birthPlace">
|
</el-col>
|
||||||
<el-input v-model="formData.birthPlace" placeholder="请输入籍贯" />
|
|
||||||
</el-form-item>
|
<el-col :span="8">
|
||||||
<el-form-item label="年龄" prop="age">
|
<el-form-item label="电子邮箱" prop="email">
|
||||||
<el-input v-model="formData.age" placeholder="请输入年龄" />
|
<el-input v-model="formData.email" placeholder="请输入电子邮箱" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="电子邮箱" prop="email">
|
</el-col>
|
||||||
<el-input v-model="formData.email" placeholder="请输入电子邮箱" />
|
|
||||||
</el-form-item>
|
<el-col :span="8">
|
||||||
<el-form-item label="学校" prop="school">
|
<el-form-item label="学校" prop="school">
|
||||||
<el-input v-model="formData.school" placeholder="请输入学校" />
|
<el-input v-model="formData.school" placeholder="请输入学校" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="专业" prop="major">
|
</el-col>
|
||||||
<el-input v-model="formData.major" placeholder="请输入专业" />
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="专业" prop="major">
|
||||||
<el-form-item label="手机号" prop="phone">
|
<el-input v-model="formData.major" placeholder="请输入专业" />
|
||||||
<el-input v-model="formData.phone" placeholder="请输入手机号" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="出生日期" prop="birthday">
|
<el-col :span="8">
|
||||||
<el-input v-model="formData.birthday" placeholder="请输入出生日期" />
|
<el-form-item label="年龄" prop="age">
|
||||||
</el-form-item>
|
<el-input v-model="formData.age" placeholder="请输入年龄" />
|
||||||
<el-form-item label="岗位id" prop="postId">
|
</el-form-item>
|
||||||
<el-input v-model="formData.postId" placeholder="请输入岗位id" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="8">
|
||||||
<el-form-item label="意向岗位名称" prop="desiredPosition">
|
<el-form-item label="最高学历" prop="highestEducation">
|
||||||
<el-input v-model="formData.desiredPosition" placeholder="请输入意向岗位名称" />
|
<el-select v-model="formData.highestEducation" placeholder="请选择最高学历" >
|
||||||
</el-form-item>
|
<el-option
|
||||||
<el-form-item label="意向城市" prop="desiredCity">
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION)"
|
||||||
<el-input v-model="formData.desiredCity" placeholder="请输入意向城市" />
|
:key="dict.value"
|
||||||
</el-form-item>
|
:label="dict.label"
|
||||||
<el-form-item label="最高学历(大专、本科、硕士、博士)" prop="highestEducation">
|
:value="dict.value"
|
||||||
<el-input v-model="formData.highestEducation" placeholder="请输入最高学历(大专、本科、硕士、博士)" />
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
<el-form-item label="个人照片" prop="personalPhoto">
|
</el-form-item>
|
||||||
<el-input v-model="formData.personalPhoto" placeholder="请输入个人照片" />
|
</el-col>
|
||||||
</el-form-item>
|
<el-col :span="8">
|
||||||
<el-form-item label="工作案例附件" prop="workCaseAttachment">
|
<el-form-item label="性别" prop="gender">
|
||||||
<el-input v-model="formData.workCaseAttachment" placeholder="请输入工作案例附件" />
|
<el-select v-model="formData.gender" placeholder="请选择性别">
|
||||||
</el-form-item>
|
<el-option
|
||||||
<el-form-item label="简历附件" prop="resumeAttachment">
|
v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
||||||
<el-input v-model="formData.resumeAttachment" placeholder="请输入简历附件" />
|
:key="dict.value"
|
||||||
</el-form-item>
|
:label="dict.label"
|
||||||
<el-form-item label="是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号)" prop="isInternalRef">
|
:value="dict.value"
|
||||||
<el-select v-model="formData.isInternalRef" placeholder="请选择是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号)">
|
/>
|
||||||
<el-option
|
</el-select>
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_INTERNAL_REF)"
|
</el-form-item>
|
||||||
:key="dict.value"
|
</el-col>
|
||||||
:label="dict.label"
|
<el-col :span="8">
|
||||||
:value="dict.value"
|
<el-form-item label="籍贯" prop="birthPlace">
|
||||||
/>
|
<el-input v-model="formData.birthPlace" placeholder="请输入籍贯" />
|
||||||
</el-select>
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
<el-form-item label="婚育情况(未婚、已婚未育、已婚已育)" prop="maritalStatus">
|
<el-col :span="8">
|
||||||
<el-select v-model="formData.maritalStatus" placeholder="请选择婚育情况(未婚、已婚未育、已婚已育)">
|
|
||||||
<el-option
|
<el-form-item label="婚育情况" prop="maritalStatus">
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
<el-select v-model="formData.maritalStatus" placeholder="请选择婚育情况">
|
||||||
:key="dict.value"
|
<el-option
|
||||||
:label="dict.label"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
||||||
:value="dict.value"
|
:key="dict.value"
|
||||||
/>
|
:label="dict.label"
|
||||||
</el-select>
|
:value="dict.value"
|
||||||
</el-form-item>
|
/>
|
||||||
<el-form-item label="部门ID" prop="deptId">
|
</el-select>
|
||||||
<el-input v-model="formData.deptId" placeholder="请输入部门ID" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="是否内推" prop="isInternalRef">
|
||||||
|
<el-select v-model="formData.isInternalRef" placeholder="请选择是否内推">
|
||||||
|
<el-option
|
||||||
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_INTERNAL_REF)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<ContentWrap style="border: none;font-weight: 700">
|
||||||
|
关联招聘需求
|
||||||
|
</ContentWrap>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="岗位" prop="desiredPosition">
|
||||||
|
<el-select v-model="formData.desiredPosition" @change="changePost" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in postList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id!"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="意向城市" prop="desiredCity">
|
||||||
|
<el-input v-model="formData.desiredCity" placeholder="请输入意向城市" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="部门ID" prop="deptId">
|
||||||
|
<el-input v-model="formData.deptId" placeholder="请输入部门ID" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="24">
|
||||||
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
|
附件资料
|
||||||
|
</ContentWrap>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="简历附件" prop="deptId">
|
||||||
|
<UploadFile v-model="formData.attachment" :limit="1" :fileType="['doc','docx']"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="工作案例" prop="deptId">
|
||||||
|
<UploadFile v-model="formData.attachment" :limit="1" :fileType="['doc','docx']"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="个人照片" prop="deptId">
|
||||||
|
<UploadImg v-model="formData.picUrls" class="min-w-80px" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
|
||||||
|
</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>
|
||||||
</Dialog>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { TalentPoolApi, TalentPoolVO } from '@/api/hrm/talentpool'
|
import { TalentPoolApi, TalentPoolVO } from '@/api/hrm/talentpool'
|
||||||
|
import * as PostApi from '@/api/system/post'
|
||||||
|
|
||||||
/** 人才库 表单 */
|
/** 人才库 表单 */
|
||||||
defineOptions({ name: 'TalentPoolForm' })
|
defineOptions({ name: 'TalentPoolForm' })
|
||||||
|
|
||||||
|
const postList = ref([] as PostApi.PostVO[]) // 岗位列表
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
|
|
@ -112,7 +175,7 @@ const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
recruitmentRequestId: undefined,
|
recruitmentRequestId: undefined,
|
||||||
name: undefined,
|
realName: undefined,
|
||||||
gender: undefined,
|
gender: undefined,
|
||||||
birthPlace: undefined,
|
birthPlace: undefined,
|
||||||
age: undefined,
|
age: undefined,
|
||||||
|
|
@ -133,7 +196,7 @@ const formData = ref({
|
||||||
deptId: undefined
|
deptId: undefined
|
||||||
})
|
})
|
||||||
const formRules = reactive({
|
const formRules = reactive({
|
||||||
name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
realName: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],
|
||||||
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
|
phone: [{ required: true, message: '手机号不能为空', trigger: 'blur' }],
|
||||||
desiredPosition: [{ required: true, message: '意向岗位名称不能为空', trigger: 'blur' }],
|
desiredPosition: [{ required: true, message: '意向岗位名称不能为空', trigger: 'blur' }],
|
||||||
desiredCity: [{ required: true, message: '意向城市不能为空', trigger: 'blur' }],
|
desiredCity: [{ required: true, message: '意向城市不能为空', trigger: 'blur' }],
|
||||||
|
|
@ -171,7 +234,7 @@ const submitForm = async () => {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
const data = formData.value as unknown as TalentPoolVO
|
const data = formData.value as unknown as TalentPoolVO
|
||||||
if (formType.value === 'create') {
|
if (!formType.value) {
|
||||||
await TalentPoolApi.createTalentPool(data)
|
await TalentPoolApi.createTalentPool(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -185,13 +248,17 @@ const submitForm = async () => {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const changePost = (val) => {
|
||||||
|
let arr = postList.value.filter( v => v.id === val)
|
||||||
|
formData.value.psotName = arr.length ? arr[0]['name'] : ''
|
||||||
|
}
|
||||||
|
|
||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
id: undefined,
|
id: undefined,
|
||||||
recruitmentRequestId: undefined,
|
recruitmentRequestId: undefined,
|
||||||
name: undefined,
|
realName: undefined,
|
||||||
gender: undefined,
|
gender: undefined,
|
||||||
birthPlace: undefined,
|
birthPlace: undefined,
|
||||||
age: undefined,
|
age: undefined,
|
||||||
|
|
@ -213,4 +280,9 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted( async() => {
|
||||||
|
// 加载岗位列表
|
||||||
|
postList.value = await PostApi.getSimplePostList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -8,15 +8,6 @@
|
||||||
:inline="true"
|
:inline="true"
|
||||||
label-width="68px"
|
label-width="68px"
|
||||||
>
|
>
|
||||||
<el-form-item label="招聘需求ID" prop="recruitmentRequestId">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.recruitmentRequestId"
|
|
||||||
placeholder="请输入招聘需求ID"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="姓名" prop="name">
|
<el-form-item label="姓名" prop="name">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.name"
|
v-model="queryParams.name"
|
||||||
|
|
@ -26,66 +17,16 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别" prop="gender">
|
<el-form-item label="最高学历" prop="highestEducation">
|
||||||
<el-select
|
<el-select v-model="queryParams.highestEducation" class="!w-240px" placeholder="请选择最高学历" >
|
||||||
v-model="queryParams.gender"
|
|
||||||
placeholder="请选择性别"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getStrDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_EDUCATION)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
:label="dict.label"
|
:label="dict.label"
|
||||||
:value="dict.value"
|
:value="dict.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="籍贯" prop="birthPlace">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.birthPlace"
|
|
||||||
placeholder="请输入籍贯"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="年龄" prop="age">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.age"
|
|
||||||
placeholder="请输入年龄"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="电子邮箱" prop="email">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.email"
|
|
||||||
placeholder="请输入电子邮箱"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="学校" prop="school">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.school"
|
|
||||||
placeholder="请输入学校"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="专业" prop="major">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.major"
|
|
||||||
placeholder="请输入专业"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="手机号" prop="phone">
|
<el-form-item label="手机号" prop="phone">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.phone"
|
v-model="queryParams.phone"
|
||||||
|
|
@ -95,33 +36,6 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="出生日期" prop="birthday">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.birthday"
|
|
||||||
placeholder="请输入出生日期"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="岗位id" prop="postId">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.postId"
|
|
||||||
placeholder="请输入岗位id"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="意向岗位名称" prop="desiredPosition">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.desiredPosition"
|
|
||||||
placeholder="请输入意向岗位名称"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="意向城市" prop="desiredCity">
|
<el-form-item label="意向城市" prop="desiredCity">
|
||||||
<el-input
|
<el-input
|
||||||
v-model="queryParams.desiredCity"
|
v-model="queryParams.desiredCity"
|
||||||
|
|
@ -131,81 +45,6 @@
|
||||||
class="!w-240px"
|
class="!w-240px"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="最高学历(大专、本科、硕士、博士)" prop="highestEducation">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.highestEducation"
|
|
||||||
placeholder="请输入最高学历(大专、本科、硕士、博士)"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="个人照片" prop="personalPhoto">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.personalPhoto"
|
|
||||||
placeholder="请输入个人照片"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="工作案例附件" prop="workCaseAttachment">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.workCaseAttachment"
|
|
||||||
placeholder="请输入工作案例附件"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="简历附件" prop="resumeAttachment">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.resumeAttachment"
|
|
||||||
placeholder="请输入简历附件"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号)" prop="isInternalRef">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.isInternalRef"
|
|
||||||
placeholder="请选择是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号)"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_INTERNAL_REF)"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="婚育情况(未婚、已婚未育、已婚已育)" prop="maritalStatus">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.maritalStatus"
|
|
||||||
placeholder="请选择婚育情况(未婚、已婚未育、已婚已育)"
|
|
||||||
clearable
|
|
||||||
class="!w-240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.HRM_MARITAL_STATUS)"
|
|
||||||
:key="dict.value"
|
|
||||||
:label="dict.label"
|
|
||||||
:value="dict.value"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="部门ID" prop="deptId">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.deptId"
|
|
||||||
placeholder="请输入部门ID"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
class="!w-240px"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="创建时间" prop="createTime">
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="queryParams.createTime"
|
v-model="queryParams.createTime"
|
||||||
|
|
@ -223,7 +62,7 @@
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
plain
|
plain
|
||||||
@click="openForm('create')"
|
@click="openFormAdd('create')"
|
||||||
v-hasPermi="['hrm:talent-pool:create']"
|
v-hasPermi="['hrm:talent-pool:create']"
|
||||||
>
|
>
|
||||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||||
|
|
@ -244,39 +83,21 @@
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="主键ID" align="center" prop="id" />
|
|
||||||
<el-table-column label="招聘需求ID" align="center" prop="recruitmentRequestId" />
|
|
||||||
<el-table-column label="姓名" align="center" prop="name" />
|
<el-table-column label="姓名" align="center" prop="name" />
|
||||||
|
<el-table-column label="手机号" align="center" prop="phone" />
|
||||||
|
<el-table-column label="年龄" align="center" prop="age" />
|
||||||
<el-table-column label="性别" align="center" prop="gender">
|
<el-table-column label="性别" align="center" prop="gender">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.gender" />
|
<dict-tag :type="DICT_TYPE.SYSTEM_USER_SEX" :value="scope.row.gender" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="籍贯" align="center" prop="birthPlace" />
|
|
||||||
<el-table-column label="年龄" align="center" prop="age" />
|
|
||||||
<el-table-column label="电子邮箱" align="center" prop="email" />
|
|
||||||
<el-table-column label="学校" align="center" prop="school" />
|
|
||||||
<el-table-column label="专业" align="center" prop="major" />
|
|
||||||
<el-table-column label="手机号" align="center" prop="phone" />
|
|
||||||
<el-table-column label="出生日期" align="center" prop="birthday" />
|
|
||||||
<el-table-column label="岗位id" align="center" prop="postId" />
|
|
||||||
<el-table-column label="意向岗位名称" align="center" prop="desiredPosition" />
|
<el-table-column label="意向岗位名称" align="center" prop="desiredPosition" />
|
||||||
<el-table-column label="意向城市" align="center" prop="desiredCity" />
|
<el-table-column label="意向城市" align="center" prop="desiredCity" />
|
||||||
<el-table-column label="最高学历(大专、本科、硕士、博士)" align="center" prop="highestEducation" />
|
<el-table-column label="最高学历" align="center" prop="highestEducation">
|
||||||
<el-table-column label="个人照片" align="center" prop="personalPhoto" />
|
|
||||||
<el-table-column label="工作案例附件" align="center" prop="workCaseAttachment" />
|
|
||||||
<el-table-column label="简历附件" align="center" prop="resumeAttachment" />
|
|
||||||
<el-table-column label="是否内推(内部推荐、BOSS直聘、猎聘、智联招聘、脉脉、公众号)" align="center" prop="isInternalRef">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :type="DICT_TYPE.HRM_INTERNAL_REF" :value="scope.row.isInternalRef" />
|
<dict-tag :type="DICT_TYPE.HRM_EDUCATION" :value="scope.row.highestEducation" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="婚育情况(未婚、已婚未育、已婚已育)" align="center" prop="maritalStatus">
|
|
||||||
<template #default="scope">
|
|
||||||
<dict-tag :type="DICT_TYPE.HRM_MARITAL_STATUS" :value="scope.row.maritalStatus" />
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="部门ID" align="center" prop="deptId" />
|
|
||||||
<el-table-column
|
<el-table-column
|
||||||
label="创建时间"
|
label="创建时间"
|
||||||
align="center"
|
align="center"
|
||||||
|
|
@ -315,7 +136,7 @@
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
<!-- 表单弹窗:添加/修改 -->
|
<!-- 表单弹窗:添加/修改 -->
|
||||||
<TalentPoolForm ref="formRef" @success="getList" />
|
<!-- <TalentPoolForm ref="formRef" @success="getList" /> -->
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -323,7 +144,7 @@ import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { dateFormatter } from '@/utils/formatTime'
|
import { dateFormatter } from '@/utils/formatTime'
|
||||||
import download from '@/utils/download'
|
import download from '@/utils/download'
|
||||||
import { TalentPoolApi, TalentPoolVO } from '@/api/hrm/talentpool'
|
import { TalentPoolApi, TalentPoolVO } from '@/api/hrm/talentpool'
|
||||||
import TalentPoolForm from './TalentPoolForm.vue'
|
// import TalentPoolForm from './TalentPoolForm.vue'
|
||||||
|
|
||||||
/** 人才库 列表 */
|
/** 人才库 列表 */
|
||||||
defineOptions({ name: 'TalentPool' })
|
defineOptions({ name: 'TalentPool' })
|
||||||
|
|
@ -388,8 +209,10 @@ const resetQuery = () => {
|
||||||
|
|
||||||
/** 添加/修改操作 */
|
/** 添加/修改操作 */
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const openForm = (type: string, id?: number) => {
|
const router = useRouter() // 路由
|
||||||
formRef.value.open(type, id)
|
const { push } = useRouter()
|
||||||
|
const openFormAdd = () => {
|
||||||
|
push({ name: 'TalentPoolAdd' })
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,31 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-form
|
<processForm
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
|
:fields="formFields"
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
<template #briefStartDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="简报开始日期" prop="briefStartDate">
|
<el-form-item label="简报开始日期" prop="briefStartDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.briefStartDate"
|
v-model="formData.briefStartDate"
|
||||||
type="date"
|
type="date"
|
||||||
disabled
|
:disabled="formFields.briefStartDate !== 2 || isTrue"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="选择简报开始日期"
|
placeholder="选择简报开始日期"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #briefEndDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="简报结束日期" prop="briefEndDate">
|
<el-form-item label="简报结束日期" prop="briefEndDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
:disabled="formFields.briefEndDate !== 2 || isTrue"
|
||||||
v-model="formData.briefEndDate"
|
v-model="formData.briefEndDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
|
@ -30,50 +33,62 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #selectCustomer>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="是否选择客户" prop="selectCustomer">
|
<el-form-item label="是否选择客户" prop="selectCustomer">
|
||||||
<el-radio-group v-model="formData.selectCustomer" disabled>
|
<el-radio-group v-model="formData.selectCustomer" :disabled="formFields.selectCustomer !== 2 || isTrue">
|
||||||
<el-radio :label="true">是</el-radio>
|
<el-radio :label="true">是</el-radio>
|
||||||
<el-radio :label="false">否</el-radio>
|
<el-radio :label="false">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #other>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
||||||
选择客户
|
选择客户
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<CustomerForm ref="customerFormRef" :userOptions="userOptions" :type="1" :dataList="formData.followUpRecords" v-if="formData.selectCustomer" />
|
<CustomerForm ref="customerFormRef" :formFields="formFields" :userOptions="userOptions" :type="1" :dataList="formData.followUpRecords" v-if="formData.selectCustomer" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<ContentWrap style="border: none;font-weight: 700" >
|
||||||
选择任务
|
选择任务
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" />
|
<TaskForm ref="taskFormRef" :type="1" :dataList="formData.tasks" :formFields="formFields" />
|
||||||
<!-- <ContentWrap style="border: none;font-weight: 700" >
|
<!-- <ContentWrap style="border: none;font-weight: 700" >
|
||||||
日报信息
|
日报信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<DayReportForm :reportType="2" :type="1" ref="dayReportFormRef" :time="time" /> -->
|
<DayReportForm :reportType="2" :type="1" ref="dayReportFormRef" :time="time" /> -->
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #workComplate>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="本月完成工作" prop="workComplate">
|
<el-form-item label="本月完成工作" prop="workComplate">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
<el-input type="textarea" :disabled="formFields.workComplate !== 2 || isTrue" :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #workPlan>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="下月工作计划" prop="workPlan">
|
<el-form-item label="下月工作计划" prop="workPlan">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
<el-input type="textarea" :disabled="formFields.workPlan !== 2 || isTrue" :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #workAssistance>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工作困难及协助" prop="workAssistance">
|
<el-form-item label="工作困难及协助" prop="workAssistance">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
<el-input type="textarea" :disabled="formFields.workAssistance !== 2 || isTrue" :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #attachment>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件" prop="attachment">
|
<el-form-item label="附件" prop="attachment">
|
||||||
<UploadFile v-model="formData.attachment" :disabled="true" :limit="1" :fileType="['doc','docx']"/>
|
<UploadFile v-model="formData.attachment" :disabled="formFields.attachment !== 2 || isTrue" :limit="1" :fileType="['doc','docx']"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</template>
|
||||||
</el-form>
|
</processForm>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
@ -85,6 +100,7 @@ import TaskForm from '../briefWeekWork/components/selectTask.vue'
|
||||||
import DayReportForm from '../briefWeekWork/components/selectDayReport.vue'
|
import DayReportForm from '../briefWeekWork/components/selectDayReport.vue'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
/** 工作简报 表单 */
|
/** 工作简报 表单 */
|
||||||
defineOptions({ name: 'BriefWorkForm' })
|
defineOptions({ name: 'BriefWorkForm' })
|
||||||
|
|
@ -93,12 +109,32 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined)
|
id: propTypes.number.def(undefined)
|
||||||
})
|
})
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
const isTrue = ref(false)
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const time = ref([]) //
|
const time = ref([]) //
|
||||||
|
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||||
|
briefStartDate: 1,
|
||||||
|
briefEndDate: 1,
|
||||||
|
selectCustomer: 1,
|
||||||
|
other: 1,
|
||||||
|
workComplate: 1 ,
|
||||||
|
workPlan: 1,
|
||||||
|
workAssistance: 1,
|
||||||
|
attachment: 1,
|
||||||
|
name: 1,
|
||||||
|
followUpStatus: 1 ,
|
||||||
|
contactLastContent: 1,
|
||||||
|
contactLastTime: 1,
|
||||||
|
followUpUserId: 1,
|
||||||
|
taskName: 1,
|
||||||
|
taskLevel: 1,
|
||||||
|
userId: 1,
|
||||||
|
taskDescribe: 1,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
briefType: 3,
|
briefType: 3,
|
||||||
|
|
@ -160,15 +196,43 @@ const resetForm = () => {
|
||||||
processInstanceId: undefined,
|
processInstanceId: undefined,
|
||||||
auditStatus: undefined
|
auditStatus: undefined
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
// formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
onMounted(async () => {
|
//获取字段权限
|
||||||
formType.value = props.id || route.query.id
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
formFields.value = Object.assign(formFields.value, field.fields)
|
||||||
|
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
let newKey = key
|
||||||
|
if(formFields.value.hasOwnProperty(newKey)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
formType.value = props.id || route.query.id
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,13 +42,13 @@
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.selectCustomer">
|
||||||
选择客户
|
选择客户
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<CustomerForm ref="customerFormRef" :userOptions="userOptions" v-if="formData.selectCustomer" />
|
<CustomerForm ref="customerFormRef" :formFields="formFields" :userOptions="userOptions" v-if="formData.selectCustomer" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<ContentWrap style="border: none;font-weight: 700" >
|
||||||
选择任务
|
选择任务
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<TaskForm ref="taskFormRef" />
|
<TaskForm ref="taskFormRef" :formFields="formFields" />
|
||||||
<ContentWrap style="border: none;font-weight: 700" >
|
<ContentWrap style="border: none;font-weight: 700" >
|
||||||
日报信息
|
周报信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<DayReportForm :reportType="2" ref="dayReportFormRef" :time="time" />
|
<DayReportForm :reportType="2" ref="dayReportFormRef" :time="time" />
|
||||||
</el-col>
|
</el-col>
|
||||||
|
|
@ -99,6 +99,17 @@ const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const time = ref([]) //
|
const time = ref([]) //
|
||||||
|
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||||
|
name: 1,
|
||||||
|
followUpStatus: 1 ,
|
||||||
|
contactLastContent: 1,
|
||||||
|
contactLastTime: 1,
|
||||||
|
followUpUserId: 1,
|
||||||
|
taskName: 1,
|
||||||
|
taskLevel: 1,
|
||||||
|
userId: 1,
|
||||||
|
taskDescribe: 1,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
briefType: 3,
|
briefType: 3,
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
v-model="formData.briefStartDate"
|
v-model="formData.briefStartDate"
|
||||||
type="date"
|
type="date"
|
||||||
disabled
|
:disabled="formFields.briefStartDate !== 2 || isTrue"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
placeholder="选择简报开始日期"
|
placeholder="选择简报开始日期"
|
||||||
/>
|
/>
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="简报结束日期" prop="briefEndDate">
|
<el-form-item label="简报结束日期" prop="briefEndDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
:disabled="formFields.briefStartDate !== 2 || isTrue"
|
||||||
v-model="formData.briefEndDate"
|
v-model="formData.briefEndDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
<template #selectCustomer>
|
<template #selectCustomer>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="是否选择客户" prop="selectCustomer">
|
<el-form-item label="是否选择客户" prop="selectCustomer">
|
||||||
<el-radio-group v-model="formData.selectCustomer" disabled>
|
<el-radio-group v-model="formData.selectCustomer" :disabled="formFields.briefStartDate !== 2 || isTrue">
|
||||||
<el-radio :label="true">是</el-radio>
|
<el-radio :label="true">是</el-radio>
|
||||||
<el-radio :label="false">否</el-radio>
|
<el-radio :label="false">否</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
|
|
@ -63,28 +63,28 @@
|
||||||
<template #workComplate>
|
<template #workComplate>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="本周完成工作" prop="workComplate">
|
<el-form-item label="本周完成工作" prop="workComplate">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
<el-input type="textarea" :disabled="formFields.briefStartDate !== 2 || isTrue" :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #workPlan>
|
<template #workPlan>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="下周工作计划" prop="workPlan">
|
<el-form-item label="下周工作计划" prop="workPlan">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
<el-input type="textarea" :disabled="formFields.briefStartDate !== 2 || isTrue" :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #workAssistance>
|
<template #workAssistance>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工作困难及协助" prop="workAssistance">
|
<el-form-item label="工作困难及协助" prop="workAssistance">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
<el-input type="textarea" :disabled="formFields.briefStartDate !== 2 || isTrue" :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #attachment>
|
<template #attachment>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件" prop="attachment">
|
<el-form-item label="附件" prop="attachment">
|
||||||
<UploadFile v-model="formData.attachment" :disabled="!!formType" :limit="1" :fileType="['doc','docx']"/>
|
<UploadFile v-model="formData.attachment" :disabled="formFields.briefStartDate !== 2 || isTrue" :limit="1" :fileType="['doc','docx']"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -100,6 +100,7 @@ import TaskForm from './components/selectTask.vue'
|
||||||
import DayReportForm from './components/selectDayReport.vue'
|
import DayReportForm from './components/selectDayReport.vue'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
/** 工作简报 表单 */
|
/** 工作简报 表单 */
|
||||||
defineOptions({ name: 'BriefWorkForm' })
|
defineOptions({ name: 'BriefWorkForm' })
|
||||||
|
|
@ -108,6 +109,7 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined)
|
id: propTypes.number.def(undefined)
|
||||||
})
|
})
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
const isTrue = ref(false)
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
|
|
@ -115,23 +117,23 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const time = ref([]) //
|
const time = ref([]) //
|
||||||
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||||
briefStartDate: false,
|
briefStartDate: 1,
|
||||||
briefEndDate: false,
|
briefEndDate: 1,
|
||||||
selectCustomer: false,
|
selectCustomer: 1,
|
||||||
other: false,
|
other: 1,
|
||||||
workComplate: false ,
|
workComplate: 1 ,
|
||||||
workPlan: false,
|
workPlan: 1,
|
||||||
workAssistance: false,
|
workAssistance: 1,
|
||||||
attachment: false,
|
attachment: 1,
|
||||||
name: false,
|
name: 1,
|
||||||
followUpStatus: false ,
|
followUpStatus: 1 ,
|
||||||
contactLastContent: false,
|
contactLastContent: 1,
|
||||||
contactLastTime: false,
|
contactLastTime: 1,
|
||||||
followUpUserId: false,
|
followUpUserId: 1,
|
||||||
taskName: false,
|
taskName: 1,
|
||||||
taskLevel: false,
|
taskLevel: 1,
|
||||||
userId: false,
|
userId:1,
|
||||||
taskDescribe: false,
|
taskDescribe: 1,
|
||||||
})
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
|
@ -229,11 +231,36 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
onMounted(async () => {
|
//获取字段权限
|
||||||
formType.value = props.id || route.query.id
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
|
||||||
|
if(formFields.value.hasOwnProperty(key)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
|
formType.value = props.id || route.query.id
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,15 +100,15 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const time = ref([]) //
|
const time = ref([]) //
|
||||||
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||||
name: false,
|
name: 1,
|
||||||
followUpStatus: false ,
|
followUpStatus: 1 ,
|
||||||
contactLastContent: false,
|
contactLastContent: 1,
|
||||||
contactLastTime: false,
|
contactLastTime: 1,
|
||||||
followUpUserId: false,
|
followUpUserId: 1,
|
||||||
taskName: false,
|
taskName: 1,
|
||||||
taskLevel: false,
|
taskLevel: 1,
|
||||||
userId: false,
|
userId: 1,
|
||||||
taskDescribe: false,
|
taskDescribe: 1,
|
||||||
})
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,17 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
type: propTypes.number.def(undefined),
|
type: propTypes.number.def(undefined),
|
||||||
dataList: propTypes.object.def([]),
|
dataList: propTypes.object.def([]),
|
||||||
formFields: {},
|
formFields: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
taskName: false,
|
||||||
|
taskLevel: false,
|
||||||
|
userId: false,
|
||||||
|
taskDescribe: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
})
|
})
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const loading = ref(false) // 列表的加载中
|
const loading = ref(false) // 列表的加载中
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="简报日期" prop="briefStartDate">
|
<el-form-item label="简报日期" prop="briefStartDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
:disabled="formFields.briefStartDate !== 2 || isTrue"
|
||||||
v-model="formData.briefStartDate"
|
v-model="formData.briefStartDate"
|
||||||
type="date"
|
type="date"
|
||||||
value-format="YYYY-MM-DD"
|
value-format="YYYY-MM-DD"
|
||||||
|
|
@ -26,28 +26,28 @@
|
||||||
|
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="本日完成工作" prop="workComplate">
|
<el-form-item label="本日完成工作" prop="workComplate">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
<el-input type="textarea" :disabled="formFields.workComplate !== 2 || isTrue" :rows="5" v-model="formData.workComplate" placeholder="请输入本日完成工作" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #workPlan>
|
<template #workPlan>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="明日工作计划" prop="workPlan">
|
<el-form-item label="明日工作计划" prop="workPlan">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
<el-input type="textarea" :disabled="formFields.workPlan !== 2 || isTrue" :rows="5" v-model="formData.workPlan" placeholder="请输入明日工作计划" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #workAssistance>
|
<template #workAssistance>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="工作困难及协助" prop="workAssistance">
|
<el-form-item label="工作困难及协助" prop="workAssistance">
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
<el-input type="textarea" :disabled="formFields.workAssistance !== 2 || isTrue" :rows="5" v-model="formData.workAssistance" placeholder="请输入工作困难及协助" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
<template #attachment>
|
<template #attachment>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="附件" prop="attachment">
|
<el-form-item label="附件" prop="attachment">
|
||||||
<UploadFile v-model="formData.attachment" :disabled="!!formType" :limit="1" :fileType="['doc','docx']"/>
|
<UploadFile v-model="formData.attachment" :disabled="formFields.attachment !== 2 || isTrue" :limit="1" :fileType="['doc','docx']"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -59,6 +59,7 @@ import { getIntDictOptions, getBoolDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { BriefWorkApi, BriefWorkVO } from '@/api/task/briefWork'
|
import { BriefWorkApi, BriefWorkVO } from '@/api/task/briefWork'
|
||||||
import { useUserStore } from '@/store/modules/user'
|
import { useUserStore } from '@/store/modules/user'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
/** 工作简报 表单 */
|
/** 工作简报 表单 */
|
||||||
defineOptions({ name: 'BriefWorkForm' })
|
defineOptions({ name: 'BriefWorkForm' })
|
||||||
|
|
@ -69,16 +70,17 @@ const message = useMessage() // 消息弹窗
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
})
|
})
|
||||||
|
const isTrue = ref(false)
|
||||||
const dialogTitle = ref('') // 弹窗的标题
|
const dialogTitle = ref('') // 弹窗的标题
|
||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const authType = ref('') // 是否流程审批页面
|
const authType = ref('') // 是否流程审批页面
|
||||||
const formFields = ref({ //字段显示隐藏权限控制
|
const formFields = ref({ //字段显示隐藏权限控制
|
||||||
briefStartDate: false,
|
briefStartDate: 1,
|
||||||
workComplate: false ,
|
workComplate: 1 ,
|
||||||
workPlan: false,
|
workPlan: 1,
|
||||||
workAssistance: false,
|
workAssistance: 1,
|
||||||
attachment: false
|
attachment: 1
|
||||||
})
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
|
|
@ -117,10 +119,6 @@ const open = async (id?: number) => {
|
||||||
}
|
}
|
||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
const openAuth = () => {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 提交表单 */
|
/** 提交表单 */
|
||||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||||
const submitForm = async () => {
|
const submitForm = async () => {
|
||||||
|
|
@ -172,17 +170,39 @@ const resetForm = () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
//获取字段权限
|
||||||
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
formFields.value = Object.assign(formFields.value, field.fields)
|
||||||
|
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
let newKey = key
|
||||||
|
if(formFields.value.hasOwnProperty(newKey)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
formType.value = props.id || route.query.id
|
formType.value = props.id || route.query.id
|
||||||
authType.value = route.query.authId
|
authType.value = route.query.authId
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
||||||
if (!authType.value) await openAuth()
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!formType.value) {
|
if (!formType.value) {
|
||||||
formData.value.userId = useUserStore().getUser.id
|
formData.value.userId = useUserStore().getUser.id
|
||||||
|
|
|
||||||
|
|
@ -1,114 +1,137 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
|
|
||||||
<el-form
|
<processForm
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
|
:fields="formFields"
|
||||||
label-width="130px"
|
label-width="130px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
<template #projectName>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="名称" prop="projectName">
|
<el-form-item label="名称" prop="projectName">
|
||||||
<el-input v-model="formData.projectName" disabled placeholder="请输入名称" />
|
<el-input v-model="formData.projectName" :disabled="formFields.projectName !== 2 || isTrue" placeholder="请输入名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="项目类型" prop="projectType">
|
<template #projectType>
|
||||||
<el-select v-model="formData.projectType" disabled placeholder="请选择项目类型">
|
<el-col :span="8">
|
||||||
<el-option
|
<el-form-item label="项目类型" prop="projectType">
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.TTS_PROJECT_TYPE)"
|
<el-select v-model="formData.projectType" :disabled="formFields.projectType !== 2 || isTrue" placeholder="请选择项目类型">
|
||||||
:key="dict.value"
|
<el-option
|
||||||
:label="dict.label"
|
v-for="dict in getIntDictOptions(DICT_TYPE.TTS_PROJECT_TYPE)"
|
||||||
:value="dict.value"
|
:key="dict.value"
|
||||||
/>
|
:label="dict.label"
|
||||||
</el-select>
|
:value="dict.value"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-col>
|
</el-select>
|
||||||
<el-col :span="8">
|
</el-form-item>
|
||||||
<el-form-item label="申请部门" prop="deptId">
|
</el-col>
|
||||||
<el-tree-select
|
</template>
|
||||||
disabled
|
<template #deptId>
|
||||||
v-model="formData.deptId"
|
<el-col :span="8">
|
||||||
:data="deptTree"
|
<el-form-item label="申请部门" prop="deptId">
|
||||||
:props="defaultProps"
|
<el-tree-select
|
||||||
check-strictly
|
:disabled="formFields.deptId !== 2 || isTrue"
|
||||||
node-key="id"
|
v-model="formData.deptId"
|
||||||
placeholder=""
|
:data="deptTree"
|
||||||
/>
|
:props="defaultProps"
|
||||||
</el-form-item>
|
check-strictly
|
||||||
</el-col>
|
node-key="id"
|
||||||
<el-col :span="8">
|
placeholder=""
|
||||||
<el-form-item label="申请人" prop="userId">
|
|
||||||
<el-select v-model="formData.userId" disabled placeholder="请选择申请人">
|
|
||||||
<el-option
|
|
||||||
v-for="dict in userOptions"
|
|
||||||
:key="dict.id"
|
|
||||||
:label="dict.nickname"
|
|
||||||
:value="dict.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="测试完成日期" prop="testCompletionDate">
|
|
||||||
<el-date-picker
|
|
||||||
disabled
|
|
||||||
v-model="formData.testCompletionDate"
|
|
||||||
style="width: 100%"
|
|
||||||
type="date"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
placeholder="选择测试完成日期"
|
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
</template>
|
||||||
<el-form-item label="申请上线日期" prop="onlineDate">
|
<template #userId>
|
||||||
<el-date-picker
|
<el-col :span="8">
|
||||||
v-model="formData.onlineDate"
|
<el-form-item label="申请人" prop="userId">
|
||||||
style="width: 100%"
|
<el-select v-model="formData.userId" :disabled="formFields.userId !== 2 || isTrue" placeholder="请选择申请人">
|
||||||
disabled
|
<el-option
|
||||||
type="date"
|
v-for="dict in userOptions"
|
||||||
value-format="YYYY-MM-DD"
|
:key="dict.id"
|
||||||
placeholder="选择申请上线日期"
|
:label="dict.nickname"
|
||||||
/>
|
:value="dict.id"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-col>
|
</el-select>
|
||||||
<el-col :span="8">
|
</el-form-item>
|
||||||
<el-form-item label="涉及第三方系统" prop="externalSystem">
|
</el-col>
|
||||||
<el-radio-group v-model="formData.externalSystem" disabled>
|
</template>
|
||||||
<el-radio :label="true">是</el-radio>
|
<template #testCompletionDate>
|
||||||
<el-radio :label="false">否</el-radio>
|
<el-col :span="8">
|
||||||
</el-radio-group>
|
<el-form-item label="测试完成日期" prop="testCompletionDate">
|
||||||
</el-form-item>
|
<el-date-picker
|
||||||
</el-col>
|
:disabled="formFields.testCompletionDate !== 2 || isTrue"
|
||||||
<el-col :span="24">
|
v-model="formData.testCompletionDate"
|
||||||
<OnlineApplicationList ref="onlineApplicationFormRef" :type="1" :onlineModuleInfo="formData.onlineModuleInfo" />
|
style="width: 100%"
|
||||||
</el-col>
|
type="date"
|
||||||
<el-col :span="24">
|
value-format="YYYY-MM-DD"
|
||||||
<el-form-item label="上线注意事项" prop="precautions">
|
placeholder="选择测试完成日期"
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.precautions" placeholder="请输入上线注意事项" />
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="24">
|
</template>
|
||||||
<el-form-item label="失败应急处理" prop="emergencyManagement">
|
<template #onlineDate>
|
||||||
<el-input type="textarea" disabled :rows="5" v-model="formData.emergencyManagement" placeholder="请输入失败应急处理" />
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="申请上线日期" prop="onlineDate">
|
||||||
</el-col>
|
<el-date-picker
|
||||||
<el-col :span="24">
|
v-model="formData.onlineDate"
|
||||||
<el-form-item label="申请人签字" prop="applicantSign">
|
style="width: 100%"
|
||||||
<div class="signature-preview">
|
:disabled="formFields.onlineDate !== 2 || isTrue"
|
||||||
<el-image class="image" v-if="formData.applicantSign" :src="formData.applicantSign" alt="签名预览" />
|
type="date"
|
||||||
</div>
|
value-format="YYYY-MM-DD"
|
||||||
</el-form-item>
|
placeholder="选择申请上线日期"
|
||||||
</el-col>
|
/>
|
||||||
</el-row>
|
</el-form-item>
|
||||||
<el-form-item v-if="visible" >
|
</el-col>
|
||||||
<div>
|
</template>
|
||||||
<HandleSign @success="setSign" @close="visible = false" />
|
<template #externalSystem>
|
||||||
</div>
|
<el-col :span="8">
|
||||||
</el-form-item>
|
<el-form-item label="涉及第三方系统" prop="externalSystem">
|
||||||
|
<el-radio-group v-model="formData.externalSystem" :disabled="formFields.externalSystem !== 2 || isTrue">
|
||||||
|
<el-radio :label="true">是</el-radio>
|
||||||
|
<el-radio :label="false">否</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #other>
|
||||||
|
<el-col :span="24">
|
||||||
|
<OnlineApplicationList ref="onlineApplicationFormRef" :formFields="formFields" :type="1" :onlineModuleInfo="formData.onlineModuleInfo" />
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #precautions>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="上线注意事项" prop="precautions">
|
||||||
|
<el-input type="textarea" :disabled="formFields.precautions !== 2 || isTrue" :rows="5" v-model="formData.precautions" placeholder="请输入上线注意事项" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #emergencyManagement>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="失败应急处理" prop="emergencyManagement">
|
||||||
|
<el-input type="textarea" :disabled="formFields.emergencyManagement !== 2 || isTrue" :rows="5" v-model="formData.emergencyManagement" placeholder="请输入失败应急处理" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #applicantSign>
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-form-item label="申请人签字" prop="applicantSign">
|
||||||
|
<div class="signature-preview">
|
||||||
|
<el-image class="image" v-if="formData.applicantSign" :src="formData.applicantSign" alt="签名预览" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #other1>
|
||||||
|
<el-form-item v-if="visible" >
|
||||||
|
<div>
|
||||||
|
<HandleSign @success="setSign" @close="visible = false" />
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
|
||||||
<!-- <el-form-item label="工作流编号" prop="processInstanceId">
|
<!-- <el-form-item label="工作流编号" prop="processInstanceId">
|
||||||
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
<el-input v-model="formData.processInstanceId" placeholder="请输入工作流编号" />
|
||||||
|
|
@ -118,7 +141,7 @@
|
||||||
<el-radio value="1">请选择字典生成</el-radio>
|
<el-radio value="1">请选择字典生成</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item> -->
|
</el-form-item> -->
|
||||||
</el-form>
|
</processForm>
|
||||||
|
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
|
|
@ -132,6 +155,8 @@ import { defaultProps, handleTree } from '@/utils/tree'
|
||||||
import * as DeptApi from '@/api/system/dept'
|
import * as DeptApi from '@/api/system/dept'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
/** 上线申请 表单 */
|
/** 上线申请 表单 */
|
||||||
defineOptions({ name: 'OnlineApplicationForm' })
|
defineOptions({ name: 'OnlineApplicationForm' })
|
||||||
const { proxy }: any = getCurrentInstance();
|
const { proxy }: any = getCurrentInstance();
|
||||||
|
|
@ -144,12 +169,31 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
type: propTypes.number.def(undefined),
|
type: propTypes.number.def(undefined),
|
||||||
})
|
})
|
||||||
|
const isTrue = ref(false)
|
||||||
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)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const visible = ref(false)
|
const visible = ref(false)
|
||||||
const onlineApplicationFormRef = ref('')
|
const onlineApplicationFormRef = ref('')
|
||||||
|
const formFields = ref({ //字段显示隐藏权限控制
|
||||||
|
projectName: 1,
|
||||||
|
projectType: 1 ,
|
||||||
|
deptId: 1,
|
||||||
|
userId: 1,
|
||||||
|
testCompletionDate: 1,
|
||||||
|
onlineDate: 1,
|
||||||
|
externalSystem: 1,
|
||||||
|
other: 1,
|
||||||
|
precautions: 1,
|
||||||
|
emergencyManagement: 1,
|
||||||
|
applicantSign: 1,
|
||||||
|
other1: 1,
|
||||||
|
involvingModule: 1,
|
||||||
|
version: 1,
|
||||||
|
moduleDescription: 1,
|
||||||
|
tableOther: 1,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectName: undefined,
|
projectName: undefined,
|
||||||
|
|
@ -197,7 +241,6 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
|
|
||||||
const setSign = (val) => {
|
const setSign = (val) => {
|
||||||
console.log('%csrc/views/task/online/OnlineApplicationForm.vue:143 val', 'color: #007acc;', val);
|
|
||||||
formData.value.applicantSign = val
|
formData.value.applicantSign = val
|
||||||
visible.value = false
|
visible.value = false
|
||||||
}
|
}
|
||||||
|
|
@ -251,14 +294,43 @@ const resetForm = () => {
|
||||||
processInstanceId: undefined,
|
processInstanceId: undefined,
|
||||||
auditStatus: undefined
|
auditStatus: undefined
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
// formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
//获取字段权限
|
||||||
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
formFields.value = Object.assign(formFields.value, field.fields)
|
||||||
|
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
let newKey = key
|
||||||
|
if(formFields.value.hasOwnProperty(newKey)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('%csrc/views/project/online/OnlineApplicationDetail.vue:322 object', 'color: #007acc;', formFields.value);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(async()=> {
|
onMounted(async()=> {
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
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)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
|
|
|
||||||
|
|
@ -10,58 +10,66 @@
|
||||||
label-width="0px"
|
label-width="0px"
|
||||||
:inline-message="true"
|
:inline-message="true"
|
||||||
>
|
>
|
||||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
<AuthTable v-loading="loading" :fields="formFields" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||||
<el-table-column label="涉及模块" align="center">
|
<template #involvingModule>
|
||||||
<template #default="{ row, $index }">
|
<el-table-column label="涉及模块" align="center" prop="involvingModule">
|
||||||
<el-form-item :prop="`${$index}.involvingModule`" :rules="formRules.involvingModule" class="mb-0px!" v-if="!type">
|
<template #default="{ row, $index }">
|
||||||
<el-input v-model="row.involvingModule" placeholder="请输入涉及模块" />
|
<el-form-item :prop="`${$index}.involvingModule`" :rules="formRules.involvingModule" class="mb-0px!" v-if="!type">
|
||||||
</el-form-item>
|
<el-input v-model="row.involvingModule" placeholder="请输入涉及模块" />
|
||||||
<div v-else>
|
</el-form-item>
|
||||||
{{row.involvingModule}}
|
<div v-else>
|
||||||
</div>
|
{{row.involvingModule}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #version>
|
||||||
|
<el-table-column label="版本" align="center" prop="version">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.version`" :rules="formRules.version" class="mb-0px!" v-if="!type">
|
||||||
|
<el-input v-model="row.version" placeholder="请输入版本" />
|
||||||
|
</el-form-item>
|
||||||
|
<div v-else>
|
||||||
|
{{row.version}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
|
<template #moduleDescription>
|
||||||
|
<el-table-column label="模块说明" align="center" prop="moduleDescription">
|
||||||
|
<template #default="{ row, $index }">
|
||||||
|
<el-form-item :prop="`${$index}.moduleDescription`" :rules="formRules.moduleDescription" class="mb-0px!" v-if="!type">
|
||||||
|
<el-input v-model="row.moduleDescription" placeholder="请输入模块说明" />
|
||||||
|
</el-form-item>
|
||||||
|
<div v-else>
|
||||||
|
{{row.moduleDescription}}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</template>
|
||||||
|
<template #tableOther>
|
||||||
|
<el-table-column label="操作" align="center" width="120px" v-if="!type">
|
||||||
|
<template #default="scope">
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="primary"
|
||||||
|
@click="openForm('update', scope.row.id)"
|
||||||
|
v-hasPermi="['tts:online-module-info:update']"
|
||||||
|
>
|
||||||
|
编辑
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
link
|
||||||
|
type="danger"
|
||||||
|
@click="handleDelete(scope.row.id)"
|
||||||
|
v-hasPermi="['tts:online-module-info:delete']"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="版本" align="center">
|
</template>
|
||||||
<template #default="{ row, $index }">
|
</AuthTable>
|
||||||
<el-form-item :prop="`${$index}.version`" :rules="formRules.version" class="mb-0px!" v-if="!type">
|
|
||||||
<el-input v-model="row.version" placeholder="请输入版本" />
|
|
||||||
</el-form-item>
|
|
||||||
<div v-else>
|
|
||||||
{{row.version}}
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="模块说明" align="center">
|
|
||||||
<template #default="{ row, $index }">
|
|
||||||
<el-form-item :prop="`${$index}.moduleDescription`" :rules="formRules.moduleDescription" class="mb-0px!" v-if="!type">
|
|
||||||
<el-input v-model="row.moduleDescription" placeholder="请输入模块说明" />
|
|
||||||
</el-form-item>
|
|
||||||
<div v-else>
|
|
||||||
{{row.moduleDescription}}
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="操作" align="center" width="120px" v-if="!type">
|
|
||||||
<template #default="scope">
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="openForm('update', scope.row.id)"
|
|
||||||
v-hasPermi="['tts:online-module-info:update']"
|
|
||||||
>
|
|
||||||
编辑
|
|
||||||
</el-button>
|
|
||||||
<el-button
|
|
||||||
link
|
|
||||||
type="danger"
|
|
||||||
@click="handleDelete(scope.row.id)"
|
|
||||||
v-hasPermi="['tts:online-module-info:delete']"
|
|
||||||
>
|
|
||||||
删除
|
|
||||||
</el-button>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
</el-table>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
<el-row justify="center" class="mt-3" v-if="!type">
|
<el-row justify="center" class="mt-3" v-if="!type">
|
||||||
|
|
@ -94,7 +102,18 @@ const message = useMessage() // 消息弹窗
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
onlineModuleInfo: [],
|
onlineModuleInfo: [],
|
||||||
type: propTypes.number.def(undefined)
|
type: propTypes.number.def(undefined),
|
||||||
|
formFields: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {
|
||||||
|
involvingModule: 1,
|
||||||
|
version: 1,
|
||||||
|
moduleDescription: 1,
|
||||||
|
tableOther: 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
})
|
})
|
||||||
const loading = ref(false) // 列表的加载中
|
const loading = ref(false) // 列表的加载中
|
||||||
const list = ref<OnlineModuleInfoVO[]>([]) // 列表的数据
|
const list = ref<OnlineModuleInfoVO[]>([]) // 列表的数据
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,19 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap>
|
<ContentWrap>
|
||||||
<el-form
|
<processForm
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
|
:fields="formFields"
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="项目编号" prop="projectCode">
|
<el-form-item label="项目编号" prop="projectCode">
|
||||||
<el-input v-model="formData.projectCode" placeholder="请输入项目编号" />
|
<el-input v-model="formData.projectCode" placeholder="请输入项目编号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
|
<template #projectLevel>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目级别" prop="projectLevel">
|
<el-form-item label="项目级别" prop="projectLevel">
|
||||||
<el-select v-model="formData.projectLevel" :disabled="formType" placeholder="请输入项目级别">
|
<el-select v-model="formData.projectLevel" :disabled="formType" placeholder="请输入项目级别">
|
||||||
|
|
@ -26,6 +26,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #projectType>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目类型" prop="projectType">
|
<el-form-item label="项目类型" prop="projectType">
|
||||||
<el-select v-model="formData.projectType" :disabled="formType" placeholder="请选择项目类型">
|
<el-select v-model="formData.projectType" :disabled="formType" placeholder="请选择项目类型">
|
||||||
|
|
@ -38,11 +40,15 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #name>
|
||||||
<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="formType" placeholder="请输入项目名称" />
|
<el-input v-model="formData.name" :disabled="formType" placeholder="请输入项目名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #userId>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目负责人" prop="userId">
|
<el-form-item label="项目负责人" prop="userId">
|
||||||
<el-select
|
<el-select
|
||||||
|
|
@ -60,6 +66,8 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #startDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目开始日期" prop="startDate">
|
<el-form-item label="项目开始日期" prop="startDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
|
@ -72,6 +80,8 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #endDate>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="项目结束日期" prop="endDate">
|
<el-form-item label="项目结束日期" prop="endDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
|
|
@ -84,6 +94,8 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #deptId>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="归属部门" prop="deptId">
|
<el-form-item label="归属部门" prop="deptId">
|
||||||
<el-tree-select
|
<el-tree-select
|
||||||
|
|
@ -97,52 +109,68 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #bonusEvaluation>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<el-form-item label="立项奖金评估" prop="bonusEvaluation">
|
<el-form-item label="立项奖金评估" prop="bonusEvaluation">
|
||||||
<el-radio-group v-model="formData.bonusEvaluation">
|
<el-radio-group v-model="formData.bonusEvaluation">
|
||||||
<el-switch
|
<el-switch
|
||||||
disabled
|
:disabled="formFields.bonusEvaluation !== 2 || isTrue"
|
||||||
v-model="formData.bonusEvaluation"
|
v-model="formData.bonusEvaluation"
|
||||||
class="ml-2"
|
class="ml-2"
|
||||||
/>
|
/>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #bonusAmount>
|
||||||
<el-col :span="8" v-if="formData.bonusEvaluation">
|
<el-col :span="8" v-if="formData.bonusEvaluation">
|
||||||
<el-form-item label="立项奖金金额" prop="bonusAmount">
|
<el-form-item label="立项奖金金额" prop="bonusAmount">
|
||||||
<el-input v-model="formData.bonusAmount" disabled oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入奖金评估描述" />
|
<el-input v-model="formData.bonusAmount" :disabled="formFields.bonusAmount !== 2 || isTrue" oninput="value=value.match(/^\d+(?:\.\d{0,2})?/)" placeholder="请输入奖金评估描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #progress>
|
||||||
<el-col :span="8" v-if="formData.bonusEvaluation">
|
<el-col :span="8" v-if="formData.bonusEvaluation">
|
||||||
<el-form-item label="项目进度(%)" prop="progress">
|
<el-form-item label="项目进度(%)" prop="progress">
|
||||||
<el-input v-model="formData.progress" disabled oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入奖金评估描述" />
|
<el-input v-model="formData.progress" :disabled="formFields.progress !== 2 || isTrue" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入奖金评估描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #attachment>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目附件" prop="attachment">
|
<el-form-item label="项目附件" prop="attachment">
|
||||||
<UploadFile v-model="formData.attachment" :disabled="!!formType" :limit="1" :fileType="['doc','docx']"/>
|
<UploadFile v-model="formData.attachment" :disabled="!!formType" :limit="1" :fileType="['doc','docx']"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</template>
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
<template #other1>
|
||||||
项目信息
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
</ContentWrap>
|
项目信息
|
||||||
<el-row>
|
</ContentWrap>
|
||||||
|
</template>
|
||||||
|
<template #background>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目背景" prop="background">
|
<el-form-item label="项目背景" prop="background">
|
||||||
<el-input v-model="formData.background" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目背景" />
|
<el-input v-model="formData.background" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目背景" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #introduction>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目简介" prop="introduction">
|
<el-form-item label="项目简介" prop="introduction">
|
||||||
<el-input v-model="formData.introduction" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目简介" />
|
<el-input v-model="formData.introduction" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目简介" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #expectation>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="项目预期" prop="expectation">
|
<el-form-item label="项目预期" prop="expectation">
|
||||||
<el-input v-model="formData.expectation" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目预期" />
|
<el-input v-model="formData.expectation" type="textarea" :disabled="formType" :rows="5" placeholder="请输入项目预期" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #other2>
|
||||||
<!-- <el-col :span="8">
|
<!-- <el-col :span="8">
|
||||||
<el-form-item label="项目进度" prop="progress">
|
<el-form-item label="项目进度" prop="progress">
|
||||||
<el-input v-model="formData.progress" placeholder="请输入项目进度" />
|
<el-input v-model="formData.progress" placeholder="请输入项目进度" />
|
||||||
|
|
@ -160,33 +188,36 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col> -->
|
</el-col> -->
|
||||||
</el-row>
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
奖金信息
|
||||||
奖金信息
|
</ContentWrap>
|
||||||
</ContentWrap>
|
<div style="width: 100%;display:flex" v-if="formData.auditStatus == 2">
|
||||||
<el-row v-if="formData.auditStatus == 2">
|
<el-col :span="8">
|
||||||
<el-col :span="8">
|
<el-form-item label="系数总和" prop="">
|
||||||
<el-form-item label="系数总和" prop="">
|
<el-input v-model="coefficient" disabled placeholder="系数总和" />
|
||||||
<el-input v-model="coefficient" disabled placeholder="系数总和" />
|
</el-form-item>
|
||||||
</el-form-item>
|
</el-col>
|
||||||
|
<el-col :span="8">
|
||||||
|
<el-form-item label="团队奖金" prop="">
|
||||||
|
<el-input v-model="teamAmount" disabled placeholder="团队奖金" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</div>
|
||||||
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
|
团队成员
|
||||||
|
</ContentWrap>
|
||||||
|
<el-col :span="24">
|
||||||
|
<Bonus ref="formRef" :formFields="formFields" v-if="formData.auditStatus == 2" :userOptions="userOptions" :type="formType" :id="formData.id" @success="getData" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
|
||||||
<el-form-item label="团队奖金" prop="">
|
|
||||||
<el-input v-model="teamAmount" disabled placeholder="团队奖金" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
|
||||||
团队成员
|
|
||||||
</ContentWrap>
|
|
||||||
<Bonus ref="formRef" v-if="formData.auditStatus == 2" :userOptions="userOptions" :type="formType" :id="formData.id" @success="getData" />
|
|
||||||
|
|
||||||
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
<ContentWrap style="border: none;font-weight: 700" v-if="formData.auditStatus == 2">
|
||||||
任务信息
|
任务信息
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
<Task ref="taskRef" v-if="formData.auditStatus == 2" :userOptions="userOptions" :type="formType" :id="formData.id" :userId="formData.userId" :name="formData.name" />
|
<el-col :span="24">
|
||||||
|
<Task ref="taskRef" :formFields="formFields" v-if="formData.auditStatus == 2" :userOptions="userOptions" :type="formType" :id="formData.id" :userId="formData.userId" :name="formData.name" />
|
||||||
</el-form>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
</processForm>
|
||||||
|
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
|
|
@ -202,6 +233,9 @@ import * as DeptApi from '@/api/system/dept'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
import { useUserStore } from '@/store/modules/user'
|
import { useUserStore } from '@/store/modules/user'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
|
|
||||||
const { proxy }: any = getCurrentInstance();
|
const { proxy }: any = getCurrentInstance();
|
||||||
|
|
||||||
/** 项目管理 表单 */
|
/** 项目管理 表单 */
|
||||||
|
|
@ -212,6 +246,7 @@ const props = defineProps({
|
||||||
id: propTypes.number.def(undefined),
|
id: propTypes.number.def(undefined),
|
||||||
type: propTypes.number.def(undefined),
|
type: propTypes.number.def(undefined),
|
||||||
})
|
})
|
||||||
|
const isTrue = ref(false)
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const deptTree = ref() // 部门树形结构
|
const deptTree = ref() // 部门树形结构
|
||||||
|
|
@ -232,6 +267,23 @@ const validateProgress = (_: any, __: any, callback: any) => {
|
||||||
|
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
|
const formFields = ref({ //字段显示隐藏权限控制
|
||||||
|
projectLevel: 1,
|
||||||
|
projectType: 1,
|
||||||
|
name: 1,
|
||||||
|
userId: 1,
|
||||||
|
startDate: 1,
|
||||||
|
endDate: 1,
|
||||||
|
deptId: 1,
|
||||||
|
bonusEvaluation: 1,
|
||||||
|
bonusAmount: 1,
|
||||||
|
progress: 1,
|
||||||
|
other1: 1,
|
||||||
|
background: 1,
|
||||||
|
introduction: 1,
|
||||||
|
expectation: 1,
|
||||||
|
other2: 1,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
projectCode: undefined,
|
projectCode: undefined,
|
||||||
|
|
@ -345,16 +397,44 @@ const resetForm = () => {
|
||||||
processInstanceId: undefined,
|
processInstanceId: undefined,
|
||||||
auditStatus: undefined
|
auditStatus: undefined
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
// formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
//获取字段权限
|
||||||
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
formFields.value = Object.assign(formFields.value, field.fields)
|
||||||
|
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
let newKey = key
|
||||||
|
if(formFields.value.hasOwnProperty(newKey)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
formType.value = props.id || route.query.id
|
formType.value = props.id || route.query.id
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
|
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
|
|
||||||
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
deptTree.value = handleTree(await DeptApi.getSimpleDeptList())
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,22 @@
|
||||||
<template>
|
<template>
|
||||||
<ContentWrap style="margin-right:10px">
|
<ContentWrap style="margin-right:10px">
|
||||||
|
|
||||||
<el-form
|
<processForm
|
||||||
ref="formRef"
|
ref="formRef"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
|
:fields="formFields"
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
>
|
>
|
||||||
<el-row>
|
<template #projectName>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="项目名称" prop="projectName">
|
<el-form-item label="项目名称" prop="projectName">
|
||||||
<el-input v-model="formData.projectName" disabled placeholder="请输入任务名称" />
|
<el-input v-model="formData.projectName" disabled placeholder="请输入任务名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #projectUser>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="项目负责人" prop="projectUser">
|
<el-form-item label="项目负责人" prop="projectUser">
|
||||||
<el-select v-model="formData.projectUser" disabled placeholder="">
|
<el-select v-model="formData.projectUser" disabled placeholder="">
|
||||||
|
|
@ -26,14 +29,18 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #taskName>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="任务标题" prop="taskName">
|
<el-form-item label="任务标题" prop="taskName">
|
||||||
<el-input v-model="formData.taskName" disabled placeholder="请输入任务名称" />
|
<el-input v-model="formData.taskName" :disabled="formFields.taskName !== 2 || isTrue" placeholder="请输入任务名称" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #userId>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="任务负责人" prop="userId">
|
<el-form-item label="任务负责人" prop="userId">
|
||||||
<el-select v-model="formData.userId" disabled placeholder="请选择成员姓名">
|
<el-select v-model="formData.userId" :disabled="formFields.userId !== 2 || isTrue" placeholder="请选择成员姓名">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in userOptions"
|
v-for="dict in userOptions"
|
||||||
:key="dict.id"
|
:key="dict.id"
|
||||||
|
|
@ -43,10 +50,12 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #startDate>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="开始日期" prop="startDate">
|
<el-form-item label="开始日期" prop="startDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
:disabled="formFields.startDate !== 2 || isTrue"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
v-model="formData.startDate"
|
v-model="formData.startDate"
|
||||||
type="date"
|
type="date"
|
||||||
|
|
@ -55,10 +64,12 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #endDate>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="截止日期" prop="endDate">
|
<el-form-item label="截止日期" prop="endDate">
|
||||||
<el-date-picker
|
<el-date-picker
|
||||||
disabled
|
:disabled="formFields.endDate !== 2 || isTrue"
|
||||||
v-model="formData.endDate"
|
v-model="formData.endDate"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
type="date"
|
type="date"
|
||||||
|
|
@ -67,9 +78,11 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #taskLevel>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="任务优先级" prop="taskLevel">
|
<el-form-item label="任务优先级" prop="taskLevel">
|
||||||
<el-select v-model="formData.taskLevel" disabled filterable clearable placeholder="请输入任务优先级" class="w-1/1">
|
<el-select v-model="formData.taskLevel" :disabled="formFields.taskLevel !== 2 || isTrue" filterable clearable placeholder="请输入任务优先级" class="w-1/1">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="dict in getIntDictOptions(DICT_TYPE.TTS_TASK_LEVEL)"
|
v-for="dict in getIntDictOptions(DICT_TYPE.TTS_TASK_LEVEL)"
|
||||||
:key="dict.value"
|
:key="dict.value"
|
||||||
|
|
@ -79,23 +92,29 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #taskProgress>
|
||||||
<el-col :span="12" v-if="formType === 'update'">
|
<el-col :span="12" v-if="formType === 'update'">
|
||||||
<el-form-item label="任务进度" prop="taskProgress">
|
<el-form-item label="任务进度" prop="taskProgress">
|
||||||
<el-input v-model="formData.taskProgress" disabled oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入任务进度" />
|
<el-input v-model="formData.taskProgress" :disabled="formFields.taskProgress !== 2 || isTrue" oninput = "value=value.replace(/[^\d]/g,'')" placeholder="请输入任务进度" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #attachment>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="任务附件" prop="attachment">
|
<el-form-item label="任务附件" prop="attachment">
|
||||||
<UploadFile v-model="formData.attachment" :disabled="true" :limit="1" :fileType="['doc','docx']"/>
|
<UploadFile v-model="formData.attachment" :disabled="formFields.attachment !== 2 || isTrue" :limit="1" :fileType="['doc','docx']"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<template #taskDescribe>
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="任务描述" prop="taskDescribe">
|
<el-form-item label="任务描述" prop="taskDescribe">
|
||||||
<el-input v-model="formData.taskDescribe" disabled type="textarea" :rows="5" placeholder="请输入任务描述" />
|
<el-input v-model="formData.taskDescribe" :disabled="formFields.taskDescribe !== 2 || isTrue" type="textarea" :rows="5" placeholder="请输入任务描述" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</template>
|
||||||
</el-form>
|
</processForm>
|
||||||
</ContentWrap>
|
</ContentWrap>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -105,11 +124,13 @@ import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
|
||||||
import { propTypes } from '@/utils/propTypes'
|
import { propTypes } from '@/utils/propTypes'
|
||||||
import * as DeptApi from '@/api/system/dept'
|
import * as DeptApi from '@/api/system/dept'
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as UserApi from '@/api/system/user'
|
||||||
|
import { getLimitForm } from '@/api/bpm/form'
|
||||||
|
|
||||||
/** 任务 表单 */
|
/** 任务 表单 */
|
||||||
defineOptions({ name: 'ProjectTaskForm' })
|
defineOptions({ name: 'ProjectTaskForm' })
|
||||||
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
const userOptions = ref<UserApi.UserVO[]>([]) // 用户列表
|
||||||
|
|
||||||
|
const isTrue = ref(false)
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
|
@ -129,6 +150,18 @@ const validateProgress = (_: any, __: any, callback: any) => {
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
|
const formFields = ref({ //字段显示隐藏权限控制,字段顺序就是显示的顺序
|
||||||
|
projectName: 1,
|
||||||
|
projectUser: 1,
|
||||||
|
taskName: 1,
|
||||||
|
userId: 1,
|
||||||
|
startDate: 1 ,
|
||||||
|
endDate: 1,
|
||||||
|
taskLevel: 1,
|
||||||
|
taskProgress: 1,
|
||||||
|
attachment: 1,
|
||||||
|
taskDescribe: 1 ,
|
||||||
|
})
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
id: undefined,
|
id: undefined,
|
||||||
taskName: undefined,
|
taskName: undefined,
|
||||||
|
|
@ -220,13 +253,39 @@ const resetForm = () => {
|
||||||
projectUser: undefined,
|
projectUser: undefined,
|
||||||
projectName: undefined,
|
projectName: undefined,
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
// formRef.value?.resetFields()
|
||||||
|
}
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
//获取字段权限
|
||||||
|
const getLimit = async () => {
|
||||||
|
let data = {
|
||||||
|
modelNodeId: route.query.taskDefinitionKey,
|
||||||
|
processDefinitionId: route.query.processDefinitionId
|
||||||
|
}
|
||||||
|
let field = await getLimitForm(data)
|
||||||
|
for(let key in formFields.value) {
|
||||||
|
|
||||||
|
if(formFields.value.hasOwnProperty(key)) {
|
||||||
|
field.fields.map( v => {
|
||||||
|
let newKey = v.field
|
||||||
|
if(v.field.indexOf('.') > -1) {
|
||||||
|
newKey = v.field.split('.')[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
if(newKey === key) formFields.value[key] = v.permission
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
|
isTrue.value = !!route.query.isDetail
|
||||||
formType.value = props.id
|
formType.value = props.id
|
||||||
|
|
||||||
if (formType.value) await open(formType.value)
|
if (formType.value) await open(formType.value)
|
||||||
|
|
||||||
|
if(route.query.processDefinitionId) getLimit()
|
||||||
// 获得用户列表
|
// 获得用户列表
|
||||||
userOptions.value = await UserApi.getSimpleUserList()
|
userOptions.value = await UserApi.getSimpleUserList()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue