修改项目中的问题信息以及合并代码

main
于阔 9 months ago
commit 5e9d41346f

@ -0,0 +1,18 @@
import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'
const modules = import.meta.glob('./**/*.ts', {
import: 'default',
eager: true
})
const mockModules: any[] = []
Object.keys(modules).forEach(async (key) => {
if (key.includes('_')) {
return
}
mockModules.push(...(modules[key] as any))
})
export function setupProdMockServer() {
createProdMockServer(mockModules)
}

@ -0,0 +1,89 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
const { code } = config
const timeout = 1000
export default [
// 分析页统计接口
{
url: '/analysis/total',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: {
users: 102400,
messages: 81212,
moneys: 9280,
shoppings: 13600
}
}
}
},
// 用户来源
{
url: '/analysis/userAccessSource',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{ value: 1000, name: 'analysis.directAccess' },
{ value: 310, name: 'analysis.mailMarketing' },
{ value: 234, name: 'analysis.allianceAdvertising' },
{ value: 135, name: 'analysis.videoAdvertising' },
{ value: 1548, name: 'analysis.searchEngines' }
]
}
}
},
// 每周用户活跃量
{
url: '/analysis/weeklyUserActivity',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{ value: 13253, name: 'analysis.monday' },
{ value: 34235, name: 'analysis.tuesday' },
{ value: 26321, name: 'analysis.wednesday' },
{ value: 12340, name: 'analysis.thursday' },
{ value: 24643, name: 'analysis.friday' },
{ value: 1322, name: 'analysis.saturday' },
{ value: 1324, name: 'analysis.sunday' }
]
}
}
},
// 每月销售额
{
url: '/analysis/monthlySales',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{ estimate: 100, actual: 120, name: 'analysis.january' },
{ estimate: 120, actual: 82, name: 'analysis.february' },
{ estimate: 161, actual: 91, name: 'analysis.march' },
{ estimate: 134, actual: 154, name: 'analysis.april' },
{ estimate: 105, actual: 162, name: 'analysis.may' },
{ estimate: 160, actual: 140, name: 'analysis.june' },
{ estimate: 165, actual: 145, name: 'analysis.july' },
{ estimate: 114, actual: 250, name: 'analysis.august' },
{ estimate: 163, actual: 134, name: 'analysis.september' },
{ estimate: 185, actual: 56, name: 'analysis.october' },
{ estimate: 118, actual: 99, name: 'analysis.november' },
{ estimate: 123, actual: 123, name: 'analysis.december' }
]
}
}
}
] as MockMethod[]

@ -0,0 +1,205 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
import { toAnyString } from '@/utils'
import Mock from 'mockjs'
const { code } = config
const departmentList: any = []
const citys = ['厦门总公司', '北京分公司', '上海分公司', '福州分公司', '深圳分公司', '杭州分公司']
for (let i = 0; i < 5; i++) {
departmentList.push({
// 部门名称
departmentName: citys[i],
id: toAnyString(),
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
// 备注
remark: '@cword(10, 15)',
children: [
{
// 部门名称
departmentName: '研发部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
},
{
// 部门名称
departmentName: '产品部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
},
{
// 部门名称
departmentName: '运营部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
},
{
// 部门名称
departmentName: '市场部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
},
{
// 部门名称
departmentName: '销售部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
},
{
// 部门名称
departmentName: '客服部',
createTime: '@datetime',
// 状态
status: Mock.Random.integer(0, 1),
id: toAnyString(),
remark: '@cword(10, 15)'
}
]
})
}
export default [
// 列表接口
{
url: '/department/list',
method: 'get',
response: () => {
return {
code: code,
data: {
list: departmentList
}
}
}
},
{
url: '/department/table/list',
method: 'get',
response: () => {
return {
code: code,
data: {
list: departmentList,
total: 5
}
}
}
},
{
url: '/department/users',
method: 'get',
timeout: 1000,
response: ({ query }) => {
const { pageSize } = query
// 根据pageSize来创建数据
const mockList: any = []
for (let i = 0; i < pageSize; i++) {
mockList.push(
Mock.mock({
// 用户名
username: '@cname',
// 账号
account: '@first',
// 邮箱
email: '@EMAIL',
// 创建时间
createTime: '@datetime',
// 角色
role: '@first',
// 用户id
id: toAnyString()
})
)
}
return {
code: code,
data: {
total: 100,
list: mockList
}
}
}
},
// 保存接口
{
url: '/department/user/save',
method: 'post',
timeout: 1000,
response: () => {
return {
code: code,
data: 'success'
}
}
},
// 删除接口
{
url: '/department/user/delete',
method: 'post',
response: ({ body }) => {
const ids = body.ids
if (!ids) {
return {
code: 500,
message: '请选择需要删除的数据'
}
} else {
return {
code: code,
data: 'success'
}
}
}
},
// 保存接口
{
url: '/department/save',
method: 'post',
timeout: 1000,
response: () => {
return {
code: code,
data: 'success'
}
}
},
// 删除接口
{
url: '/department/delete',
method: 'post',
response: ({ body }) => {
const ids = body.ids
if (!ids) {
return {
code: 500,
message: '请选择需要删除的数据'
}
} else {
return {
code: code,
data: 'success'
}
}
}
}
] as MockMethod[]

@ -0,0 +1,63 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
const { code } = config
const timeout = 1000
const dictObj: Recordable = {
importance: [
{
value: 0,
label: 'tableDemo.commonly'
},
{
value: 1,
label: 'tableDemo.good'
},
{
value: 2,
label: 'tableDemo.important'
}
]
}
export default [
// 字典接口
{
url: '/dict/list',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: dictObj
}
}
},
// 获取某个字典
{
url: '/dict/one',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{
label: 'test1',
value: 0
},
{
label: 'test2',
value: 1
},
{
label: 'test3',
value: 2
}
]
}
}
}
] as MockMethod[]

@ -0,0 +1,265 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
import Mock from 'mockjs'
const { code } = config
const timeout = 1000
export default [
// 列表接口
{
url: '/menu/list',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: {
list: [
{
path: '/dashboard',
component: '#',
redirect: '/dashboard/analysis',
name: 'Dashboard',
status: Mock.Random.integer(0, 1),
id: 1,
title: '首页',
meta: {
title: '首页',
icon: 'ant-design:dashboard-filled',
alwaysShow: true
},
children: [
{
path: 'analysis',
component: 'views/Dashboard/Analysis',
name: 'Analysis',
status: Mock.Random.integer(0, 1),
id: 2,
title: '分析页',
meta: {
title: '分析页',
noCache: true
}
},
{
path: 'workplace',
component: 'views/Dashboard/Workplace',
name: 'Workplace',
status: Mock.Random.integer(0, 1),
id: 3,
title: '工作台',
meta: {
title: '工作台',
noCache: true
}
}
]
},
{
path: '/external-link',
component: '#',
title: '文档',
meta: {
title: '文档',
icon: 'clarity:document-solid'
},
name: 'ExternalLink',
status: Mock.Random.integer(0, 1),
id: 4,
children: [
{
path: 'https://element-plus-admin-doc.cn/',
name: 'DocumentLink',
status: Mock.Random.integer(0, 1),
id: 5,
title: '文档',
meta: {
title: '文档'
}
}
]
},
{
path: '/level',
component: '#',
redirect: '/level/menu1/menu1-1/menu1-1-1',
name: 'Level',
status: Mock.Random.integer(0, 1),
id: 6,
title: '菜单',
meta: {
title: '菜单',
icon: 'carbon:skill-level-advanced'
},
children: [
{
path: 'menu1',
name: 'Menu1',
component: '##',
status: Mock.Random.integer(0, 1),
id: 7,
redirect: '/level/menu1/menu1-1/menu1-1-1',
title: '菜单1',
meta: {
title: '菜单1'
},
children: [
{
path: 'menu1-1',
name: 'Menu11',
component: '##',
status: Mock.Random.integer(0, 1),
id: 8,
redirect: '/level/menu1/menu1-1/menu1-1-1',
title: '菜单1-1',
meta: {
title: '菜单1-1',
alwaysShow: true
},
children: [
{
path: 'menu1-1-1',
name: 'Menu111',
component: 'views/Level/Menu111',
status: Mock.Random.integer(0, 1),
id: 9,
permission: ['edit', 'add', 'delete'],
title: '菜单1-1-1',
meta: {
title: '菜单1-1-1'
}
}
]
},
{
path: 'menu1-2',
name: 'Menu12',
component: 'views/Level/Menu12',
status: Mock.Random.integer(0, 1),
id: 10,
permission: ['edit', 'add', 'delete'],
title: '菜单1-2',
meta: {
title: '菜单1-2'
}
}
]
},
{
path: 'menu2',
name: 'Menu2Demo',
component: 'views/Level/Menu2',
status: Mock.Random.integer(0, 1),
id: 11,
permission: ['edit', 'add', 'delete'],
title: '菜单2',
meta: {
title: '菜单2'
}
}
]
},
{
path: '/example',
component: '#',
redirect: '/example/example-dialog',
name: 'Example',
status: Mock.Random.integer(0, 1),
id: 12,
title: '综合示例',
meta: {
title: '综合示例',
icon: 'ep:management',
alwaysShow: true
},
children: [
{
path: 'example-dialog',
component: 'views/Example/Dialog/ExampleDialog',
name: 'ExampleDialog',
status: Mock.Random.integer(0, 1),
id: 13,
title: '综合示例-弹窗',
permission: ['edit', 'add', 'delete'],
meta: {
title: '综合示例-弹窗',
permission: ['edit', 'add']
}
},
{
path: 'example-page',
component: 'views/Example/Page/ExamplePage',
name: 'ExamplePage',
status: Mock.Random.integer(0, 1),
id: 14,
permission: ['edit', 'add', 'delete'],
title: '综合示例-页面',
meta: {
title: '综合示例-页面',
permission: ['edit', 'add']
}
},
{
path: 'example-add',
component: 'views/Example/Page/ExampleAdd',
name: 'ExampleAdd',
status: Mock.Random.integer(0, 1),
id: 15,
permission: ['edit', 'add', 'delete'],
title: '综合示例-新增',
meta: {
title: '综合示例-新增',
noTagsView: true,
noCache: true,
hidden: true,
showMainRoute: true,
activeMenu: '/example/example-page',
permission: ['delete', 'add']
}
},
{
path: 'example-edit',
component: 'views/Example/Page/ExampleEdit',
name: 'ExampleEdit',
status: Mock.Random.integer(0, 1),
id: 16,
permission: ['edit', 'add', 'delete'],
title: '综合示例-编辑',
meta: {
title: '综合示例-编辑',
noTagsView: true,
noCache: true,
hidden: true,
showMainRoute: true,
activeMenu: '/example/example-page',
permission: ['delete', 'add']
}
},
{
path: 'example-detail',
component: 'views/Example/Page/ExampleDetail',
name: 'ExampleDetail',
status: Mock.Random.integer(0, 1),
id: 17,
permission: ['edit', 'add', 'delete'],
title: '综合示例-详情',
meta: {
title: '综合示例-详情',
noTagsView: true,
noCache: true,
hidden: true,
showMainRoute: true,
activeMenu: '/example/example-page',
permission: ['delete', 'edit']
}
}
]
}
]
}
}
}
}
] as MockMethod[]

@ -0,0 +1,64 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
const timeout = 600000
const { code } = config
export default [
{
url: '/request/1',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: 'request-1'
}
}
},
{
url: '/request/2',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: 'request-2'
}
}
},
{
url: '/request/3',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: 'request-3'
}
}
},
{
url: '/request/4',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: 'request-4'
}
}
},
{
url: '/request/5',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: 'request-5'
}
}
}
] as MockMethod[]

File diff suppressed because it is too large Load Diff

@ -0,0 +1,256 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
import { toAnyString } from '@/utils'
import Mock from 'mockjs'
const { code } = config
const timeout = 1000
const count = 100
const baseContent =
'<p>I am testing data, I am testing data.</p><p><img src="https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943"></p>'
interface ListProps {
id: string
author: string
title: string
content: string
importance: number
display_time: string
pageviews: number
image_uri: string
}
interface TreeListProps {
id: string
author: string
title: string
content: string
importance: number
display_time: string
pageviews: number
children: TreeListProps[]
}
let List: ListProps[] = []
for (let i = 0; i < count; i++) {
List.push(
Mock.mock({
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(100, 500)',
image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
})
)
}
const treeList: TreeListProps[] = []
for (let i = 0; i < count; i++) {
treeList.push(
Mock.mock({
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)',
children: [
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)',
children: [
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
},
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
}
]
},
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
},
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
},
{
id: toAnyString(),
// timestamp: +Mock.Random.date('T'),
author: '@first',
title: '@title(5, 10)',
content: baseContent,
importance: '@integer(1, 3)',
display_time: '@datetime',
pageviews: '@integer(300, 5000)'
}
]
// image_uri
})
)
}
export default [
// 树形列表接口
{
url: '/example/treeList',
method: 'get',
timeout,
response: ({ query }) => {
const { title, pageIndex, pageSize } = query
const mockList = treeList.filter((item) => {
if (title && item.title.indexOf(title) < 0) return false
return true
})
const pageList = mockList.filter(
(_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
)
return {
code: code,
data: {
total: mockList.length,
list: pageList
}
}
}
},
// 列表接口
{
url: '/example/list',
method: 'get',
timeout,
response: ({ query }) => {
const { title, pageIndex, pageSize } = query
const mockList = List.filter((item) => {
if (title && item.title.indexOf(title) < 0) return false
return true
})
const pageList = mockList.filter(
(_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
)
return {
code: code,
data: {
total: mockList.length,
list: pageList
}
}
}
},
// 保存接口
{
url: '/example/save',
method: 'post',
timeout,
response: ({ body }) => {
if (!body.id) {
List = [
Object.assign(body, {
id: toAnyString()
})
].concat(List)
return {
code: code,
data: 'success'
}
} else {
List.map((item) => {
if (item.id === body.id) {
for (const key in item) {
item[key] = body[key]
}
}
})
return {
code: code,
data: 'success'
}
}
}
},
// 详情接口
{
url: '/example/detail',
method: 'get',
response: ({ query }) => {
const { id } = query
for (const example of List) {
if (example.id === id) {
return {
code: code,
data: example
}
}
}
}
},
// 删除接口
{
url: '/example/delete',
method: 'post',
response: ({ body }) => {
const ids = body.ids
if (!ids) {
return {
code: 500,
message: '请选择需要删除的数据'
}
} else {
let i = List.length
while (i--) {
if (ids.indexOf(List[i].id) !== -1) {
List.splice(i, 1)
}
}
return {
code: code,
data: 'success'
}
}
}
}
] as MockMethod[]

@ -0,0 +1,135 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
const { code } = config
const timeout = 1000
const List: {
username: string
password: string
role: string
roleId: string
permissions: string | string[]
}[] = [
{
username: 'admin',
password: 'o9%2B2oAvFf9DHDj1yBTJHhw%3D%3D',
role: 'admin',
roleId: '1',
permissions: ['*.*.*']
},
{
username: 'test',
password: 'test',
role: 'test',
roleId: '2',
permissions: ['example:dialog:create', 'example:dialog:delete']
}
]
export default [
// 列表接口
{
url: '/user/list',
method: 'get',
response: ({ query }) => {
const { username, pageIndex, pageSize } = query
const mockList = List.filter((item) => {
if (username && item.username.indexOf(username) < 0) return false
return true
})
const pageList = mockList.filter(
(_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
)
return {
code: code,
data: {
total: mockList.length,
list: pageList
}
}
}
},
// 登录接口
{
url: '/user/login',
method: 'post',
timeout,
response: ({ body }) => {
const data = body
let hasUser = false
for (const user of List) {
if (user.username === data.username && user.password === data.password) {
hasUser = true
return {
code: code,
data: user
}
}
}
if (!hasUser) {
return {
code: 500,
message: '账号或密码错误'
}
}
}
},
{
url: '/mobile/login',
method: 'post',
timeout,
response: ({ body }) => {
debugger
const data = body
let hasUser = false
for (const user of List) {
if (user.username === data.username && user.password === data.password) {
hasUser = true
return {
code: code,
data: user
}
}
}
return {
code: code,
data: {
code: 1
}
}
if (!hasUser) {
return {
code: 500,
message: '账号或密码错误'
}
}
}
},
// 退出接口
{
url: '/user/loginOut',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: null
}
}
},
{
url: '/mobile/logout',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: null
}
}
}
] as MockMethod[]

@ -0,0 +1,172 @@
import config from '@/config/axios/config'
import { MockMethod } from 'vite-plugin-mock'
const { code } = config
const timeout = 1000
export default [
// 获取统计
{
url: '/workplace/total',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: {
project: 40,
access: 2340,
todo: 10
}
}
}
},
// 获取项目
{
url: '/workplace/project',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{
name: 'Github',
icon: 'akar-icons:github-fill',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
},
{
name: 'Vue',
icon: 'logos:vue',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
},
{
name: 'Angular',
icon: 'logos:angular-icon',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
},
{
name: 'React',
icon: 'logos:react',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
},
{
name: 'Webpack',
icon: 'logos:webpack',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
},
{
name: 'Vite',
icon: 'vscode-icons:file-type-vite',
message: 'workplace.introduction',
personal: 'Archer',
time: new Date()
}
]
}
}
},
// 获取动态
{
url: '/workplace/dynamic',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{
keys: ['workplace.push', 'Github'],
time: new Date()
},
{
keys: ['workplace.push', 'Github'],
time: new Date()
},
{
keys: ['workplace.push', 'Github'],
time: new Date()
},
{
keys: ['workplace.push', 'Github'],
time: new Date()
},
{
keys: ['workplace.push', 'Github'],
time: new Date()
},
{
keys: ['workplace.push', 'Github'],
time: new Date()
}
]
}
}
},
// 获取团队信息
{
url: '/workplace/team',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{
name: 'Github',
icon: 'akar-icons:github-fill'
},
{
name: 'Vue',
icon: 'logos:vue'
},
{
name: 'Angular',
icon: 'logos:angular-icon'
},
{
name: 'React',
icon: 'logos:react'
},
{
name: 'Webpack',
icon: 'logos:webpack'
},
{
name: 'Vite',
icon: 'vscode-icons:file-type-vite'
}
]
}
}
},
// 获取指数
{
url: '/workplace/radar',
method: 'get',
timeout,
response: () => {
return {
code: code,
data: [
{ name: 'workplace.quote', max: 65, personal: 42, team: 50 },
{ name: 'workplace.contribution', max: 160, personal: 30, team: 140 },
{ name: 'workplace.hot', max: 300, personal: 20, team: 28 },
{ name: 'workplace.yield', max: 130, personal: 35, team: 35 },
{ name: 'workplace.follow', max: 100, personal: 80, team: 90 }
]
}
}
}
] as MockMethod[]

@ -1,28 +0,0 @@
select
distinct res.name,
res.URL,
res.id,
res.PARENT_ID,
res.COMMON,
res.ICON,
res.SORT,
res.TYPE,
res.URL,
res.DESCRIPTION,
res.STATUS,
res.PERMISSION_STR,
res.PARENT_IDS,
res.SYSTEM_CODE,
res.ROUTE_NAME,
srr.PERMISSION
from
sys_menu res
left join sys_role_menu srr on
res.id = srr.menu_id
left join sys_user_role ur on
ur.role_id = srr.role_id
where
STATUS = '0'
and ur.user_id = '120'
order by
res.SORT

@ -13,7 +13,7 @@ import { ref, computed } from 'vue'
import { useRouteStore } from '@/store/modules/route'
import { usePermissionStore } from '@/store/modules/permission'
import { useStorage } from '@/hooks/web/useStorage'
const checkname = ref('一表通管理');
const checkname = ref('指标管理');
const routeStore = useRouteStore();//使routepinia
const permissionStore = usePermissionStore();
const { getStorage } = useStorage();
@ -21,7 +21,7 @@ const items = ref([
// { text: '', type:"bslc"},
// { text: '', type:"mdgl" },
// { text: '', type:"pjgl" },
{ text: '一表通管理', type:"ybt" },
{ text: '指标管理', type:"ybt" },
{ text: '系统管理', type:"xtgl" },
]);
const changeSystem = (val) => {

@ -137,7 +137,7 @@ export default {
small: '小'
},
login: {
welcome: '欢迎使用一表通管理平台',
welcome: '欢迎使用指标管理系统',
message: 'V3.0.1',
username: '用户名',
password: '密码',

@ -723,8 +723,10 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
name: 'repSetRule',
menuId: 'datasetpage/repSetRule',
meta: {
title: '指标加工',
sort:3,
title: '规则引擎',
alwaysShow: true,
type:"ybt",
sort:12,
}
},
{

@ -36,7 +36,7 @@ const formSchema = reactive<FormSchema[]>([
label: '指标集编码',
component: 'Input',
componentProps: {
disabled:props.actionType == 'edit'
},
},
{

@ -32,7 +32,7 @@ const formSchema = reactive<FormSchema[]>([
label: '指标集编码',
component: 'Input',
componentProps: {
disabled:props.actionType == 'edit'
},
},
{

@ -28,7 +28,7 @@ const formSchema = reactive<FormSchema[]>([
label: '模型编码',
component: 'Input',
componentProps: {
disabled:props.actionType == 'edit'
},
},
{

@ -32,7 +32,7 @@ const formSchema = reactive<FormSchema[]>([
label: '指标集编码',
component: 'Input',
componentProps: {
disabled:props.actionType == 'edit'
},
},
{

@ -293,7 +293,7 @@ const onSelectionChange = (selection: TableData[]) => {
/** 导出Excel */
const exportExcel = async () => {
const data = { ...unref(searchParams),fileName:'指标加工.xls' }
const data = { ...unref(searchParams),fileName:'规则引擎.xls' }
await exportExcelApi(data)
}
</script>

@ -37,8 +37,8 @@ const ids = ref<string[]>([])
/** 生成word */
const generatorWord = async (row: TableData) => {
//,,
const organCode=row.organCode
const dataDate=row.dataDate;
let organCode=row.organCode?row.organCode:searchParams.value.organCode;
let dataDate=row.dataDate?row.dataDate:searchParams.value.dataDate;
if(!organCode){
ElMessage.warning("请选择机构");
return false;
@ -47,7 +47,20 @@ const generatorWord = async (row: TableData) => {
ElMessage.warning("请选择日期");
return false;
}
saveWordBytes(row.tId,organCode,dataDate);
let detailLoading = ElLoading.service({
background: 'rgba(0, 0, 0, 0.7)'
})
await saveWordBytes(row.tId,organCode,dataDate).then(res=>{
detailLoading.close();
if(res.head.code == '0'){
ElMessage.success("生成成功");
}else{
ElMessage.error(res.body.msg);
}
}).catch(err=>{
detailLoading.close();
ElMessage.error('生成失败');
});
getList();
};
@ -90,7 +103,7 @@ const tableColumns = reactive<TableColumn[]>([
},
{
field: 'dataDate',
label: '数据日期'
label: '数据日期',
},
{
field: 'createTime',
@ -128,12 +141,17 @@ const searchSchema = reactive<FormSchema[]>([
nodeKey: 'key',
props: { children: 'childrens', label: 'value' },
filterable: true,
multiple: true,
// multiple: true,
collapseTags: true,
showCheckbox: true,
// showCheckbox: true,
style: { minWidth: '200px' },
//style: 'width: 100%',
checkOnClickNode: true,
// checkOnClickNode: true,
on:{
change:(value)=>{
searchParams.value.organCode = value;
}
}
},
component: 'TreeSelect',
optionApi: async () => {
@ -144,7 +162,7 @@ const searchSchema = reactive<FormSchema[]>([
});
return res.body.result;
},
value: loginOrganCode,
// value: loginOrganCode,
formItemProps: {
//rules: [required()],
},
@ -155,6 +173,12 @@ const searchSchema = reactive<FormSchema[]>([
componentProps: {
type: 'date',
valueFormat: 'YYYYMMDD',
on:{
change:(value)=>{
console.log(value);
searchParams.value.dataDate = value;
}
}
},
component: 'DatePicker',
formItemProps: {

@ -114,7 +114,7 @@ const tableColumns = reactive<TableColumn[]>([
{
field: 'action',
label: t('tableDemo.action'),
width: 160,
width: 120,
fixed: 'right',
slots: {
default: (data: any) => {
@ -172,8 +172,10 @@ const searchSchema = reactive<FormSchema[]>([
},
{
field: 'createTime',
label: '上传时间',
componentProps: {type: 'daterange'},
label: '创建时间',
componentProps: {
valueFormat: 'YYYY/MM/DD',
},
component: 'DatePicker'
}
])

@ -8,7 +8,7 @@ import { getCategory } from '@/api/reporting/RepTemplate/RepTemplate';
import { transfDictList } from '@/utils';
import { REPORTING_STATUS_LIST } from '../constants';
import { getLoginNameByUserInfo } from '@/utils/auth';
import { formatToDate } from "@/utils/dateUtil"
const session_loginName = getLoginNameByUserInfo();
const { required } = useValidator()
@ -99,9 +99,19 @@ const formSchema = reactive<FormSchema[]>([
type: 'textarea'
},
},
{
field: 'tName',
label: '模版名称',
component: 'Input',
hidden:props.actionType == 'edit' && props.currentRow.fileFlow?false:true,
componentProps: {
readonly:true
},
colProps: { span: 24 },
},
{
field: 'file',
label: '报告模版',
label: props.actionType == 'add'?'报告模版':'更换模版',
component: 'Upload',
colProps: { span: 24 },
componentProps: {
@ -152,17 +162,21 @@ const submit = async () => {
if (valid) {
const formData = await getFormData()
formData.file = fileData;
formData.tName = tName;
formData.tName = tName?tName:props.currentRow.tName;
formData.uploadUser=session_loginName;
if(!formData.tName){
ElMessage.warning("请上传报告模版")
return
}
let time = new Date()
//
if(props.actionType=='add'){
formData.createTime=time.toLocaleString();
formData.createTime=formatToDate(time,"YYYY/MM/DD").slice(0,11);
}
//
else{
formData.updateTime=time.toLocaleString();
formData.updateTime=formatToDate(time,"YYYY/MM/DD").slice(0,11);;
}
return formData
}

@ -75,7 +75,7 @@ const tableColumns = reactive<TableColumn[]>([
{
field: 'action',
label: t('tableDemo.action'),
width: 160,
width: 120,
fixed: 'right',
slots: {
default: (data: any) => {

@ -31,7 +31,7 @@ const formSchema = reactive<FormSchema[]>([
label: '报告编码',
component: 'Input',
componentProps: {
disabled:props.actionType == 'edit'
},
formItemProps: {
rules: [required()],

Loading…
Cancel
Save