字段权限
@@ -246,7 +295,8 @@
- 确 定
+ 确 定
+ 确 定
取 消
@@ -270,9 +320,14 @@ import {
CopyTaskFormType
} from '../node'
import { defaultProps } from '@/utils/tree'
+import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form'
defineOptions({
name: 'CopyTaskNodeConfig'
})
+const { t } = useI18n() // 国际化
+const message = useMessage() // 消息弹窗
+const fieldsPermissionCustomize = ref([])
+const tabName = ref('')
const props = defineProps({
flowNode: {
type: Object as () => SimpleFlowNode,
@@ -348,6 +403,33 @@ const changeCandidateStrategy = () => {
configForm.value.deptLevel = 1
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 () => {
activeTabName.value = 'user'
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
index eca35e2b8..57800f247 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
@@ -467,32 +467,29 @@
{{ item.title }}
@@ -563,7 +560,8 @@
- 确 定
+ 确 定
+ 确 定
取 消
@@ -610,7 +608,7 @@ import { defaultProps } from '@/utils/tree'
import { cloneDeep } from 'lodash-es'
import { convertTimeUnit, getApproveTypeText } from '../utils'
import UserTaskListener from './components/UserTaskListener.vue'
-import { getBusinessForm, FormVO } from '@/api/bpm/form'
+import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form'
defineOptions({
name: 'UserTaskNodeConfig'
})
@@ -620,6 +618,10 @@ const props = defineProps({
required: true
}
})
+const { t } = useI18n() // 国际化
+const message = useMessage() // 消息弹窗
+const tabName = ref('')
+const fieldsPermissionCustomize = ref([])
const emits = defineEmits<{
'find:returnTaskNodes': [nodeList: SimpleFlowNode[]]
}>()
@@ -1027,14 +1029,32 @@ const updatePermission = (type: string) => {
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
- 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
+}
diff --git a/src/components/processForm/src/index.vue b/src/components/processForm/src/index.vue
index acd36dcf6..36aae4297 100644
--- a/src/components/processForm/src/index.vue
+++ b/src/components/processForm/src/index.vue
@@ -3,7 +3,7 @@
-
+
diff --git a/src/components/processTable/src/index.vue b/src/components/processTable/src/index.vue
index 6dc8f227a..a63152c0b 100644
--- a/src/components/processTable/src/index.vue
+++ b/src/components/processTable/src/index.vue
@@ -2,7 +2,7 @@
-
+
diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts
index 337ff952a..1ff9a2541 100644
--- a/src/router/modules/remaining.ts
+++ b/src/router/modules/remaining.ts
@@ -978,6 +978,28 @@ const remainingRouter: AppRouteRecordRaw[] = [
},
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')
+ },
]
},
{
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 55692a565..63ac284ab 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -218,6 +218,9 @@ export enum DICT_TYPE {
CRM_SERVICE_FEE_INVOICE='crm_service_fee_invoice',// 服务费票据
CRM_SERVICE_FEE_INVOICE_ITEMS='crm_service_fee_invoice_items',// 服务费开票项目
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_DETAIL_TYPE = "crm_product_detail_type", //CRM 产品明细类型
@@ -388,6 +391,8 @@ export enum DICT_TYPE {
HRM_PERFORMANCE_LEVEL = 'hrm_performance_level',
// 考核类型
HRM_ASSESS_TYPE = 'hrm_assess_type',
+ //需求部门
+ HRM_EMAND_DEPARTMENT = 'hrm_emand_department'
}
diff --git a/src/views/bpm/task/copy/index.vue b/src/views/bpm/task/copy/index.vue
index 91cfaafef..59199ff99 100644
--- a/src/views/bpm/task/copy/index.vue
+++ b/src/views/bpm/task/copy/index.vue
@@ -131,7 +131,10 @@ const getList = async () => {
const handleAudit = (row: any) => {
const query = {
id: row.processInstanceId,
- activityId: undefined
+ activityId: undefined,
+ processDefinitionId: row.processInstanceId,
+ taskDefinitionKey: row.activityId,
+ isDetail: 1
}
if (row.activityId) {
query.activityId = row.activityId
diff --git a/src/views/bpm/task/done/index.vue b/src/views/bpm/task/done/index.vue
index 2f91e69a1..8182635a8 100644
--- a/src/views/bpm/task/done/index.vue
+++ b/src/views/bpm/task/done/index.vue
@@ -257,7 +257,10 @@ const handleAudit = (row: any) => {
name: 'BpmProcessInstanceDetail',
query: {
id: row.processInstance.id,
- taskId: row.id
+ taskId: row.id,
+ processDefinitionId: row.processInstance.processDefinitionId,
+ taskDefinitionKey: row.taskDefinitionKey,
+ isDetail: 1
}
})
}
diff --git a/src/views/bpm/task/todo/index.vue b/src/views/bpm/task/todo/index.vue
index de92ea133..187bc6787 100644
--- a/src/views/bpm/task/todo/index.vue
+++ b/src/views/bpm/task/todo/index.vue
@@ -221,7 +221,9 @@ const handleAudit = (row: any) => {
name: 'BpmProcessInstanceDetail',
query: {
id: row.processInstance.id,
- taskId: row.id
+ taskId: row.id,
+ processDefinitionId: row.processInstance.processDefinitionId,
+ taskDefinitionKey: row.taskDefinitionKey
}
})
}
diff --git a/src/views/crm/business/BusinessForm.vue b/src/views/crm/business/BusinessForm.vue
index 7b4c2ea7e..fdfc4053e 100644
--- a/src/views/crm/business/BusinessForm.vue
+++ b/src/views/crm/business/BusinessForm.vue
@@ -8,10 +8,30 @@
v-loading="formLoading"
>
-
+
+
+
+
+
+
@@ -50,27 +70,26 @@
-
-
-
+
-
+
+
-
+
@@ -142,7 +161,7 @@
-
+
-
+
+
@@ -182,7 +194,7 @@
-
+ -->
diff --git a/src/views/crm/business/components/BusinessProductForm.vue b/src/views/crm/business/components/BusinessProductForm.vue
index abb668525..ffddd6fce 100644
--- a/src/views/crm/business/components/BusinessProductForm.vue
+++ b/src/views/crm/business/components/BusinessProductForm.vue
@@ -18,9 +18,9 @@
-
-
-
+
+
+
+
diff --git a/src/views/crm/contract/components/ContractChangeLimit.vue b/src/views/crm/contract/components/ContractChangeLimit.vue
index fefa74a86..2285c5dd8 100644
--- a/src/views/crm/contract/components/ContractChangeLimit.vue
+++ b/src/views/crm/contract/components/ContractChangeLimit.vue
@@ -3,10 +3,11 @@
ref="formRef"
:model="formData"
:rules="formRules"
+ :fields="formFields"
label-width="142px"
v-loading="formLoading"
>
-
+
@@ -19,6 +20,8 @@
+
+
@@ -53,17 +56,22 @@
-->
+
+
+
+
-
+
+
@@ -72,6 +80,8 @@
+
+
@@ -80,6 +90,8 @@
+
+
@@ -88,6 +100,8 @@
+
+
@@ -96,6 +110,8 @@
+
+
@@ -104,6 +120,8 @@
+
+
@@ -112,43 +130,51 @@
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -180,6 +208,7 @@ import * as UserApi from '@/api/system/user'
import * as DeptApi from '@/api/system/dept'
import * as BusinessApi from '@/api/crm/business'
import { propTypes } from '@/utils/propTypes'
+import { type } from 'os'
/** CRM 方案报价 表单 */
defineOptions({ name: 'QuotationForm' })
@@ -263,7 +292,28 @@ const quotationProductFormRef = ref()
const props = defineProps<{
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(
diff --git a/src/views/crm/contract/components/ContractProductForm.vue b/src/views/crm/contract/components/ContractProductForm.vue
index 29fd02d1a..9a3fa216f 100644
--- a/src/views/crm/contract/components/ContractProductForm.vue
+++ b/src/views/crm/contract/components/ContractProductForm.vue
@@ -197,14 +197,16 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
const props = defineProps<{
products: undefined
disabled: false,
- type: undefined
+ type: undefined,
+ formFields: {}
}>()
const formLoading = ref(false) // 表单的加载中
const formData = ref([])
const formRules = reactive({
productId: [{ 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 productList = ref
([]) // 产品列表
diff --git a/src/views/crm/contract/detail/ContractDetail.vue b/src/views/crm/contract/detail/ContractDetail.vue
index 1e32e7667..bf999803d 100644
--- a/src/views/crm/contract/detail/ContractDetail.vue
+++ b/src/views/crm/contract/detail/ContractDetail.vue
@@ -1,21 +1,27 @@
-
-
- 基础信息
-
-
+
+
+
+
+ 基础信息
+
+
+
+
+
+
+
+
-
+
+
-
+
+
+
+
@@ -93,6 +107,8 @@
+
+
@@ -110,24 +126,29 @@
-->
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-->
+
+
-
-
-
-
- 甲方基本信息
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 甲方基本信息
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
- 乙方基本信息
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 乙方基本信息
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
- 合同信息
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+ 合同信息
+
+
+
+
+
单次合同
@@ -328,6 +383,8 @@
+
+
+
+
+
+
+
+
@@ -369,6 +432,8 @@
+
+
@@ -381,11 +446,15 @@
+
+
+
+
@@ -399,32 +468,40 @@
-->
-
-
- 财务与客服对接信息
-
-
-
-
-
- 按月结算
- 按项目结算
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 财务与客服对接信息
+
+
+
+
+
+
+
+ 按月结算
+ 按项目结算
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- 产品清单
-
-
-
-
-
- 合同甲方关联单位
-
-
-
-
-
- 合同甲方授权人信息
-
-
-
-
-
- 合同乙方授权人信息
-
-
-
-
-
+
+
+ 产品清单
+
+
+
+
+
+ 合同甲方关联单位
+
+
+
+
+
+
+
+ 合同甲方授权人信息
+
+
+
+
+
+
+
+ 合同乙方授权人信息
+
+
+
+
+
+
+
+
@@ -501,7 +590,9 @@ import { propTypes } from '@/utils/propTypes'
import { getIntDictOptions, getStrDictOptions, DICT_TYPE } from '@/utils/dict'
import { defaultProps, handleTree } from '@/utils/tree'
import * as DeptApi from '@/api/system/dept'
+import { getLimitForm } from '@/api/bpm/form'
+const isTrue = ref(false)
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const { proxy }: any = getCurrentInstance();
@@ -515,6 +606,52 @@ const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const formType = ref('') // 表单的类型:create - 新增;update - 修改
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({
id: undefined,
name: undefined,
@@ -833,11 +970,36 @@ const getContactOptions = computed(() =>
)
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 () => {
+ isTrue.value = !!route.query.isDetail
formType.value = props.id || route.query.id
if (formType.value) await open(formType.value)
+ if(route.query.processDefinitionId) getLimit()
+
// 获得客户列表
customerList.value = await CustomerApi.getCustomerSimpleList()
// 获得用户列表
diff --git a/src/views/crm/customer/CustomerForm.vue b/src/views/crm/customer/CustomerForm.vue
index 2e57faa40..e224c7739 100644
--- a/src/views/crm/customer/CustomerForm.vue
+++ b/src/views/crm/customer/CustomerForm.vue
@@ -70,6 +70,23 @@
+
+
+
+
+
+
+
@@ -88,6 +105,7 @@
+
+
+
+
+
+ {{ customer.name }}
+
+ {{ customer.dealStatus ? '已成交' : '未成交' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ customer.developerName }}
+
+
+ ={{ customer.maintainerName }}
+ {{ customer.contractorName }}
+ {{ customer.ownerUserName }}
+ {{ customer.contractorName }}
+ {{ customer.servicorName }}
+ {{ customer.settlementLeadName }}
+ {{ formatDate(customer.createTime) }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/quotation/index.vue b/src/views/crm/quotation/index.vue
index 28ade4864..0989a4750 100644
--- a/src/views/crm/quotation/index.vue
+++ b/src/views/crm/quotation/index.vue
@@ -8,7 +8,10 @@
:inline="true"
label-width="110px"
>
-
+
+
+
+
-
-
+ -->
+
+
-
+
搜索
重置
@@ -85,7 +73,7 @@
>
新增
-
导出
-
+ -->
@@ -106,14 +94,7 @@
-->
-
-
-
- {{ scope.row.no }}
-
-
-
-
+
+
+
+
+ {{ scope.row.no }}
+
+
+
+
-
+
{{getName(userOptions, scope.row.creator)}}
+
+
+ {{getName(userOptions, scope.row.expandingUserId)}}
+
+
+
+
+ {{getName(userOptions, scope.row.maintenanceUserId)}}
+
+
+
@@ -147,12 +141,13 @@
-
+
+
-
+
diff --git a/src/views/hrm/certificaterequest/CertificateRequestForm.vue b/src/views/hrm/certificaterequest/CertificateRequestForm.vue
index 2873751bf..0e49f91db 100644
--- a/src/views/hrm/certificaterequest/CertificateRequestForm.vue
+++ b/src/views/hrm/certificaterequest/CertificateRequestForm.vue
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/src/views/hrm/certificaterequest/index.vue b/src/views/hrm/certificaterequest/index.vue
index 3244ce15a..e430254f1 100644
--- a/src/views/hrm/certificaterequest/index.vue
+++ b/src/views/hrm/certificaterequest/index.vue
@@ -8,7 +8,7 @@
:inline="true"
label-width="68px"
>
-
+
-
-
-
-
-
-
-
-
-
+
+
@@ -62,33 +44,13 @@
class="!w-220px"
/>
-
-
-
-
-
-
搜索
重置
新增
@@ -110,23 +72,14 @@
-
-
-
-
+
+
+
-
-
-
+
\ No newline at end of file
diff --git a/src/views/hrm/recruitmentrequest/index.vue b/src/views/hrm/recruitmentrequest/index.vue
index 883a0b666..3e9ef8c06 100644
--- a/src/views/hrm/recruitmentrequest/index.vue
+++ b/src/views/hrm/recruitmentrequest/index.vue
@@ -8,10 +8,10 @@
:inline="true"
label-width="68px"
>
-
+
diff --git a/src/views/hrm/talentpool/TalentPoolForm.vue b/src/views/hrm/talentpool/TalentPoolForm.vue
index 47754c8c7..8811ae49f 100644
--- a/src/views/hrm/talentpool/TalentPoolForm.vue
+++ b/src/views/hrm/talentpool/TalentPoolForm.vue
@@ -1,5 +1,5 @@
-
\ No newline at end of file
diff --git a/src/views/hrm/talentpool/index.vue b/src/views/hrm/talentpool/index.vue
index 196895b94..18a815d55 100644
--- a/src/views/hrm/talentpool/index.vue
+++ b/src/views/hrm/talentpool/index.vue
@@ -8,15 +8,6 @@
:inline="true"
label-width="68px"
>
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
新增
@@ -244,39 +83,21 @@
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
-
-
-
+