Compare commits

..

5 Commits

5 changed files with 380 additions and 260 deletions

View File

@ -26,53 +26,52 @@ export const systemRoutes: RouteRecordRaw[] = [
// } // }
// ], // ],
// }, // },
{ // {
path: '/regulation', // path: '/regulation',
name: 'Regulation', // name: 'Regulation',
component: Layout, // component: Layout,
redirect: '/regulation/system-regulation', // redirect: '/regulation/system-regulation',
meta: { title: '制度管理', icon: 'file-text', hidden: false, sort: 1.5 }, // meta: { title: '制度管理', icon: 'file-text', hidden: false, sort: 1.5 },
children: [ // children: [
{ // {
path: '/regulation/system-regulation', // path: '/regulation/system-regulation',
name: 'SystemRegulation', // name: 'SystemRegulation',
component: () => import('@/views/regulation/repository.vue'), // component: () => import('@/views/regulation/repository.vue'),
meta: { title: '制度公告', icon: 'file-text', hidden: false }, // meta: { title: '制度公告', icon: 'file-text', hidden: false },
}, // },
{ // {
path: '/regulation/process-management', // path: '/regulation/process-management',
name: 'ProcessManagement', // name: 'ProcessManagement',
component: () => import('@/views/regulation/confirm.vue'), // component: () => import('@/views/regulation/confirm.vue'),
meta: { title: '制度公示', icon: 'workflow', hidden: false }, // meta: { title: '制度公示', icon: 'workflow', hidden: false },
}, // },
{ // {
path: '/regulation/proposal', // path: '/regulation/proposal',
name: 'RegulationProposal', // name: 'RegulationProposal',
component: () => import('@/views/regulation/proposal/index.vue'), // component: () => import('@/views/regulation/proposal/index.vue'),
meta: { title: '制度提案', icon: 'edit', hidden: false }, // meta: { title: '制度提案', icon: 'edit', hidden: false },
}, // },
{ // {
path: '/regulation/type', // path: '/regulation/type',
name: 'RegulationType', // name: 'RegulationType',
component: () => import('@/views/regulation/type/index.vue'), // component: () => import('@/views/regulation/type/index.vue'),
meta: { title: '制度类型', icon: 'tag', hidden: false }, // meta: { title: '制度类型', icon: 'tag', hidden: false },
}, // },
// ],
], // },
},
{ {
path: '/organization', path: '/organization',
name: 'Organization', name: 'Organization',
component: Layout, component: Layout,
redirect: '/organization/dept', redirect: '/organization/dept',
meta: { title: '组织架构', icon: 'user-group', hidden: false, sort: 2 }, meta: { title: '企业管理', icon: 'user-group', hidden: false, sort: 2 },
children: [ children: [
{ // {
path: '/organization/user', // path: '/organization/user',
name: 'OrganizationUser', // name: 'OrganizationUser',
component: () => import('@/views/system/user/index.vue'), // component: () => import('@/views/system/user/index.vue'),
meta: { title: '用户管理', icon: 'user', hidden: false, sort: 2.25 }, // meta: { title: '用户管理', icon: 'user', hidden: false, sort: 2.25 },
}, // },
{ {
path: '/organization/dept', path: '/organization/dept',
name: 'OrganizationDept', name: 'OrganizationDept',
@ -85,6 +84,39 @@ export const systemRoutes: RouteRecordRaw[] = [
component: () => import('@/views/system/post/index.vue'), component: () => import('@/views/system/post/index.vue'),
meta: { title: '岗位管理', icon: 'nav', hidden: false, sort: 2.75 }, meta: { title: '岗位管理', icon: 'nav', hidden: false, sort: 2.75 },
}, },
{
path: '/regulation',
name: 'Regulation',
// component: Layout,
redirect: '/regulation/system-regulation',
meta: { title: '制度管理', icon: 'file-text', hidden: false, sort: 1.5 },
children: [
{
path: '/regulation/system-regulation',
name: 'SystemRegulation',
component: () => import('@/views/regulation/repository.vue'),
meta: { title: '制度公告', icon: 'file-text', hidden: false },
},
{
path: '/regulation/process-management',
name: 'ProcessManagement',
component: () => import('@/views/regulation/confirm.vue'),
meta: { title: '制度公示', icon: 'workflow', hidden: false },
},
{
path: '/regulation/proposal',
name: 'RegulationProposal',
component: () => import('@/views/regulation/proposal/index.vue'),
meta: { title: '制度提案', icon: 'edit', hidden: false },
},
{
path: '/regulation/type',
name: 'RegulationType',
component: () => import('@/views/regulation/type/index.vue'),
meta: { title: '制度类型', icon: 'tag', hidden: false },
},
],
},
// { // {
// path: '/organization/hr/workload', // path: '/organization/hr/workload',
// name: 'HRWorkload', // name: 'HRWorkload',
@ -296,98 +328,64 @@ export const systemRoutes: RouteRecordRaw[] = [
path: '/asset-management', path: '/asset-management',
name: 'AssetManagement', name: 'AssetManagement',
component: Layout, component: Layout,
redirect: '/asset-management/device-management/device-center', redirect: '/asset-management/device/inventory',
meta: { title: '资产管理', icon: 'property-safety', hidden: true, sort: 3 }, meta: { title: '资产管理', icon: 'property-safety', hidden: false, sort: 3 },
children: [ children: [
{ {
path: '/asset-management/device-management', path: '/asset-management/intellectual-property1',
name: 'DeviceManagement', name: 'IntellectualProperty1',
component: () => import('@/components/ParentView/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
redirect: '/asset-management/device-management/device-center', meta: { title: '设备管理', icon: 'copyright', hidden: false },
meta: {
title: '设备管理',
icon: 'device',
hidden: false,
},
children: [ children: [
{ {
path: '/asset-management/device-management/device-center', path: '/asset-management/intellectual-property1',
name: 'DeviceCenter', name: 'IntellectualProperty11',
component: () => import('@/views/system-resource/device-management/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '库存管理', hidden: false },
title: '设备中心',
icon: 'appstore',
hidden: false,
},
}, },
{ {
path: '/asset-management/device-management/device-detail/:id', path: '/asset-management/intellectual-property1',
name: 'DeviceDetail', name: 'IntellectualProperty12',
component: () => import('@/views/system-resource/device-management/detail.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '设备采购', hidden: false },
title: '设备详情',
icon: 'info-circle',
hidden: true,
},
}, },
{ {
path: '/asset-management/device-management/procurement', path: '/asset-management/intellectual-property1',
name: 'DeviceProcurement', name: 'IntellectualProperty13',
component: () => import('@/views/system-resource/device-management/procurement/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '在线管理', hidden: false },
title: '设备采购',
icon: 'shopping-cart',
hidden: false,
},
},
{
path: '/asset-management/device-management/online',
name: 'DeviceOnline',
component: () => import('@/components/ParentView/index.vue'),
redirect: '/asset-management/device-management/online/drone',
meta: {
title: '在线管理',
icon: 'cloud',
hidden: false,
},
children: [ children: [
{ {
path: '/asset-management/device-management/online/drone', path: '/asset-management/intellectual-property11',
name: 'DeviceDrone', name: 'IntellectualProperty14',
component: () => import('@/views/system-resource/device-management/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '无人机', hidden: false },
title: '无人机',
icon: 'drone',
hidden: false,
},
}, },
{ {
path: '/asset-management/device-management/online/nest', path: '/asset-management/intellectual-property12',
name: 'DeviceNest', name: 'IntellectualProperty15',
component: () => import('@/views/system-resource/device-management/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '机巢', hidden: false },
title: '机巢',
icon: 'nest',
hidden: false,
},
}, },
{ {
path: '/asset-management/device-management/online/smart-terminal', path: '/asset-management/intellectual-property13',
name: 'DeviceSmartTerminal', name: 'IntellectualProperty16',
component: () => import('@/views/system-resource/device-management/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { meta: { title: '其他智能终端', hidden: false },
title: '其他智能终端', },
icon: 'terminal', {
hidden: false, path: '/asset-management/intellectual-property14',
}, name: 'IntellectualProperty17',
component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { title: '车辆管理', hidden: false },
}, },
], ],
}, },
], ],
}, },
{ {
path: '/asset-management/other-assets', path: '/asset-management/intellectual-property',
name: 'OtherAssets', name: 'IntellectualProperty',
component: () => import('@/views/system-resource/information-system/software-management/index.vue'), component: () => import('@/views/system-resource/information-system/software-management/index.vue'),
meta: { title: '其他资产', icon: 'copyright', hidden: false }, meta: { title: '其他资产', icon: 'copyright', hidden: false },
}, },
@ -535,99 +533,86 @@ export const systemRoutes: RouteRecordRaw[] = [
], ],
}, },
{ {
path: '/project-management', path: '/project-marketing',
name: 'ProjectManagement', name: 'Projectmarketing',
component: Layout, component: Layout,
redirect: '/project-management/project-template/project-management', redirect: '/project-marketing/project-marketing',
meta: { title: '项目管理', icon: 'apps', hidden: false, sort: 4 }, meta: { title: '营销管理', icon: 'file-text', hidden: false, sort: 3 },
children: [ children: [
{ {
path: '/project-management/contract/project-source', path: '/project-marketing/contract/revenue-contract2',
name: 'ProjectSource', name: 'RevenueContract2',
component: () => import('@/views/default/error/404.vue'),
meta: {
title: '市场营销(N)',
icon: 'dollar',
hidden: false,
},
},
{
path: '/project-marketing/contract/procurement-business',
name: 'ProcurementBusiness',
component: () => import('@/components/ParentView/index.vue'), component: () => import('@/components/ParentView/index.vue'),
meta: { meta: {
title: '项目来源', title: '招采业务',
icon: 'dollar', icon: 'dollar',
hidden: false, hidden: false,
}, },
children: [ children: [
{ {
path: '/project-management/contract/procurement-business', path: '/project-marketing/project-template/tender-documents',
name: 'ProcurementBusiness', name: 'TenderDocuments',
component: () => import('@/components/ParentView/index.vue'), component: () => import('@/views/project-management/bidding/tender-documents/index.vue'),
meta: { meta: {
title: '招采业务', title: '招标文件',
icon: 'dollar', icon: 'file-text',
hidden: false,
},
children: [
{
path: '/project-management/project-template/tender-documents',
name: 'TenderDocuments',
component: () => import('@/views/project-management/bidding/tender-documents/index.vue'),
meta: {
title: '招标文件',
icon: 'file-text',
hidden: false,
},
},
{
path: '/project-management/project-template/bid-documents',
name: 'BidDocuments',
component: () => import('@/views/project-management/bidding/bid-documents/index.vue'),
meta: {
title: '投标文件',
icon: 'file-text',
hidden: false,
},
},
{
path: '/project-management/project-template/award-notice',
name: 'AwardNotice',
component: () => import('@/views/project-management/bidding/award-notice/index.vue'),
meta: {
title: '中标通知书',
icon: 'trophy',
hidden: false,
},
},
{
path: '/project-management/project-template/information-retrieval',
name: 'InformationRetrieval',
component: () => import ('@/views/project-management/bidding/information-retrieval/index.vue'),
meta: {
title: '信息检索(N)',
icon: 'trophy',
hidden: false,
},
},
],
},
{
path: '/project-management/contract/revenue-contract2',
name: 'RevenueContract2',
component: () => import('@/views/default/error/404.vue'),
meta: {
title: '市场营销(N)',
icon: 'dollar',
hidden: false, hidden: false,
}, },
}, },
{ {
path: '/project-management/project-source/privateproject', path: '/project-marketing/project-template/bid-documents',
name: 'PrivateProject', name: 'BidDocuments',
component: () => import('@/views/default/error/404.vue'), component: () => import('@/views/project-management/bidding/bid-documents/index.vue'),
meta: { meta: {
title: '自建项目(N)', title: '投标文件',
icon: 'dollar', icon: 'file-text',
hidden: false,
},
},
{
path: '/project-marketing/project-template/award-notice',
name: 'AwardNotice',
component: () => import('@/views/project-management/bidding/award-notice/index.vue'),
meta: {
title: '中标通知书',
icon: 'trophy',
hidden: false,
},
},
{
path: '/project-marketing/project-template/information-retrieval',
name: 'InformationRetrieval',
component: () => import ('@/views/project-management/bidding/information-retrieval/index.vue'),
meta: {
title: '信息检索(N)',
icon: 'trophy',
hidden: false, hidden: false,
}, },
}, },
], ],
}, },
{
path: '/project-marketing/order-management/order-management',
name: 'OrderManagement',
component: () => import('@/views/project-management/order-management/index.vue'),
meta: {
title: '订单管理',
icon: 'file-text',
hidden: false,
},
},
{ path: '/project-management/contract', name: 'ProjectContract', component: () => import('@/components/ParentView/index.vue'), redirect: '/project-management/contract/revenue-contract', meta: { { path: '/project-management/contract', name: 'ProjectContract', component: () => import('@/components/ParentView/index.vue'), redirect: '/project-management/contract/revenue-contract', meta: {
title: '项目合同', title: '合同管理',
icon: 'file-text', icon: 'file-text',
hidden: false, hidden: false,
}, children: [ }, children: [
@ -662,6 +647,136 @@ export const systemRoutes: RouteRecordRaw[] = [
}, },
}, },
] }, ] },
],
},
{
path: '/project-management',
name: 'ProjectManagement',
component: Layout,
redirect: '/project-management/project-template/project-management',
meta: { title: '项目管理', icon: 'apps', hidden: false, sort: 4 },
children: [
{
path: '/project-management/contract/project-source',
name: 'ProjectSource',
component: () => import('@/components/ParentView/index.vue'),
meta: {
title: '项目来源',
icon: 'dollar',
hidden: false,
},
children: [
// {
// path: '/project-management/contract/procurement-business',
// name: 'ProcurementBusiness',
// component: () => import('@/components/ParentView/index.vue'),
// meta: {
// title: '招采业务',
// icon: 'dollar',
// hidden: false,
// },
// children: [
// {
// path: '/project-management/project-template/tender-documents',
// name: 'TenderDocuments',
// component: () => import('@/views/project-management/bidding/tender-documents/index.vue'),
// meta: {
// title: '招标文件',
// icon: 'file-text',
// hidden: false,
// },
// },
// {
// path: '/project-management/project-template/bid-documents',
// name: 'BidDocuments',
// component: () => import('@/views/project-management/bidding/bid-documents/index.vue'),
// meta: {
// title: '投标文件',
// icon: 'file-text',
// hidden: false,
// },
// },
// {
// path: '/project-management/project-template/award-notice',
// name: 'AwardNotice',
// component: () => import('@/views/project-management/bidding/award-notice/index.vue'),
// meta: {
// title: '中标通知书',
// icon: 'trophy',
// hidden: false,
// },
// },
// {
// path: '/project-management/project-template/information-retrieval',
// name: 'InformationRetrieval',
// component: () => import ('@/views/project-management/bidding/information-retrieval/index.vue'),
// meta: {
// title: '信息检索(N)',
// icon: 'trophy',
// hidden: false,
// },
// },
//
// ],
// },
// {
// path: '/project-management/contract/revenue-contract2',
// name: 'RevenueContract2',
// component: () => import('@/views/default/error/404.vue'),
// meta: {
// title: '市场营销(N)',
// icon: 'dollar',
// hidden: false,
// },
// },
{
path: '/project-management/project-source/privateproject',
name: 'PrivateProject',
component: () => import('@/views/default/error/404.vue'),
meta: {
title: '自建项目(N)',
icon: 'dollar',
hidden: false,
},
},
],
},
// { path: '/project-management/contract', name: 'ProjectContract', component: () => import('@/components/ParentView/index.vue'), redirect: '/project-management/contract/revenue-contract', meta: {
// title: '项目合同',
// icon: 'file-text',
// hidden: false,
// }, children: [
// {
// path: '/project-management/contract/revenue-contract',
// name: 'RevenueContract',
// component: () => import('@/views/project-management/contract/revenue-contract/index.vue'),
// meta: {
// title: '收入合同',
// icon: 'dollar',
// hidden: false,
// },
// },
// {
// path: '/project-management/contract/expense-contract',
// name: 'ExpenseContract',
// component: () => import('@/views/project-management/contract/expense-contract/index.vue'),
// meta: {
// title: '支出合同',
// icon: 'credit-card',
// hidden: false,
// },
// },
// {
// path: '/project-management/contract/cost-management',
// name: 'CostManagement',
// component: () => import('@/views/project-management/contract/cost-management/index.vue'),
// meta: {
// title: '成本费用',
// icon: 'bar-chart',
// hidden: false,
// },
// },
// ] },
{ {
path: '/project-management/project-template/project-aproval', path: '/project-management/project-template/project-aproval',
name: 'ProjectTemplate', name: 'ProjectTemplate',
@ -737,7 +852,26 @@ export const systemRoutes: RouteRecordRaw[] = [
], ],
}, },
// 添加商务知识库
{
path: '/bussiness-knowledge',
name: 'bussinesskonwledge',
component: Layout,
redirect: '/bussiness-knowledge/data',
meta: { title: '商务资料知识库', icon: 'message', hidden: false, sort: 6 },
children: [
{
path: '/bussiness-konwledge/data',
name: 'bussiness-knowledge',
component: () => import('@/views/bussiness-data/bussiness.vue'),
meta: {
title: '商务数据库信息',
icon: 'info-circle',
hidden: false,
},
},
],
},
{ {
path: 'project-management/project-implementation/', path: 'project-management/project-implementation/',
name: 'Project-Implementation', name: 'Project-Implementation',
@ -1032,26 +1166,6 @@ export const systemRoutes: RouteRecordRaw[] = [
}, },
// ], // ],
// }, // },
// 商务数据库信息模块
{
path: '/business-knowledge',
name: 'BusinessKnowledge',
component: Layout,
redirect: '/business-knowledge/data',
meta: { title: '商务数据库信息', icon: 'database', hidden: false, sort: 5.5 },
children: [
{
path: '/business-knowledge/data',
name: 'BusinessKnowledgeData',
component: () => import('@/views/bussiness-data/bussiness.vue'),
meta: {
title: '商务数据库信息',
icon: 'info-circle',
hidden: false,
},
},
],
},
{ {
path: '/chat-platform', path: '/chat-platform',
name: 'ChatPlatform', name: 'ChatPlatform',
@ -1071,30 +1185,30 @@ export const systemRoutes: RouteRecordRaw[] = [
// } // }
], ],
}, },
{ // {
path: '/user/profile', // path: '/user/profile',
name: 'UserProfile', // name: 'UserProfile',
component: Layout, // component: Layout,
redirect: '/user/profile', // redirect: '/user/profile',
meta: { // meta: {
title: '个人中心', // title: '个人中心',
icon: 'user', // icon: 'user',
hidden: false, // hidden: false,
sort: 100, // sort: 100,
}, // },
children: [ // children: [
{ // {
path: '/user/profile', // path: '/user/profile',
name: 'UsersProfile', // name: 'UsersProfile',
component: () => import('@/views/user/profile/index.vue'), // component: () => import('@/views/user/profile/index.vue'),
meta: { // meta: {
title: '个人中心', // title: '个人中心',
icon: 'user', // icon: 'user',
hidden: false, // hidden: false,
}, // },
}, // },
], // ],
}, // },
{ {
path: '/enterprise-settings', path: '/enterprise-settings',
name: 'EnterpriseSettings', name: 'EnterpriseSettings',
@ -1193,25 +1307,6 @@ export const systemRoutes: RouteRecordRaw[] = [
}, },
], ],
}, },
{
path: '/training',
name: 'Training',
component: Layout,
redirect: '/training/plan',
meta: { title: '培训管理', icon: 'book', hidden: false, sort: 9 },
children: [
{
path: '/training/plan',
name: 'TrainingPlan',
component: () => import('@/views/training/plan/index.vue'),
meta: {
title: '培训计划',
icon: 'calendar',
hidden: false,
},
},
],
},
{ {
path: '/system-resource', path: '/system-resource',
name: 'SystemResource', name: 'SystemResource',

View File

@ -149,6 +149,20 @@ const storeSetup = () => {
isHidden: false, isHidden: false,
sort: 3, sort: 3,
}, },
{
id: 1070,
parentId: 1000,
title: '个人中心',
type: 2,
path: '/user/profile',
name: 'UserProfile',
component: 'user/profile/index',
icon: 'user',
isExternal: false,
isCache: false,
isHidden: false,
sort: 4,
},
], ],
}, },
{ {

View File

@ -70,6 +70,6 @@ declare global {
// for type re-export // for type re-export
declare global { declare global {
// @ts-ignore // @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
import('vue') import('vue')
} }

View File

@ -0,0 +1,11 @@
<script setup lang="ts">
</script>
<template>
</template>
<style scoped lang="scss">
</style>

View File

@ -29,7 +29,7 @@
</div> </div>
<div class="info-item"> <div class="info-item">
<div class="info-label">所属部门</div> <div class="info-label">所属部门</div>
<div class="info-value">{{ primaryInfo?.department || '技术部' }}</div> <div class="info-value">{{ primaryInfo?.deptName || '技术部' }}</div>
</div> </div>
<div class="info-item"> <div class="info-item">
<div class="info-label">直接上级岗位</div> <div class="info-label">直接上级岗位</div>
@ -68,7 +68,7 @@
<div class="section-title">主要职责与工作任务</div> <div class="section-title">主要职责与工作任务</div>
<div class="content-container"> <div class="content-container">
<ul> <ul>
<li v-for="(task, idx) in (primaryInfo?.tasks || ['负责XXX产品的需求分析、架构设计、核心模块编码和单元测试。','制定并执行季度社交媒体营销计划,提升品牌曝光度和用户互动率。'])" :key="idx">{{ task }}</li> <li v-for="(task, idx) in (primaryInfo?.tasks || ['负责XXX产品的需求分析、架构设计、核心模块编码和单元测试。', '制定并执行季度社交媒体营销计划,提升品牌曝光度和用户互动率。'])" :key="idx">{{ task }}</li>
</ul> </ul>
</div> </div>
@ -76,7 +76,7 @@
<div class="section-title">工作权限</div> <div class="section-title">工作权限</div>
<div class="content-container"> <div class="content-container">
<ul> <ul>
<li v-for="(perm, idx) in (primaryInfo?.permissions || ['有权审批部门内5000元以下的采购申请。','有权对项目团队成员的工作任务进行分配和调整。'])" :key="idx">{{ perm }}</li> <li v-for="(perm, idx) in (primaryInfo?.permissions || ['有权审批部门内5000元以下的采购申请。', '有权对项目团队成员的工作任务进行分配和调整。'])" :key="idx">{{ perm }}</li>
</ul> </ul>
</div> </div>
@ -244,7 +244,7 @@ const getDetail = async (id: string) => {
id: data.postId ?? data.id ?? '10001', id: data.postId ?? data.id ?? '10001',
name: data.postName ?? data.name ?? '-', name: data.postName ?? data.name ?? '-',
status: data.status, status: data.status,
department: data.department ?? '技术部', department: data.department ?? data.deptName ?? '技术部',
superior: data.superior ?? '技术总监', superior: data.superior ?? '技术总监',
level: data.level ?? 'P5', level: data.level ?? 'P5',
version: data.version ?? '2024-06-01 / V1.0', version: data.version ?? '2024-06-01 / V1.0',
@ -252,11 +252,11 @@ const getDetail = async (id: string) => {
summary: data.summary ?? '负责公司核心产品开发,支撑业务增长。', summary: data.summary ?? '负责公司核心产品开发,支撑业务增长。',
tasks: data.tasks ?? [ tasks: data.tasks ?? [
'负责XXX产品的需求分析、架构设计、核心模块编码和单元测试。', '负责XXX产品的需求分析、架构设计、核心模块编码和单元测试。',
'制定并执行季度社交媒体营销计划,提升品牌曝光度和用户互动率。' '制定并执行季度社交媒体营销计划,提升品牌曝光度和用户互动率。',
], ],
permissions: data.permissions ?? [ permissions: data.permissions ?? [
'有权审批部门内5000元以下的采购申请。', '有权审批部门内5000元以下的采购申请。',
'有权对项目团队成员的工作任务进行分配和调整。' '有权对项目团队成员的工作任务进行分配和调整。',
], ],
subordinates: data.subordinates ?? '无', subordinates: data.subordinates ?? '无',
collaboration: data.collaboration ?? '与产品部、销售部、客服部紧密合作', collaboration: data.collaboration ?? '与产品部、销售部、客服部紧密合作',