@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 54e0d4c..fe03729 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -15,7 +15,8 @@
const constantRoutes: Route.recordRaw[] = [
{
path: '/',
- redirect: '/dashboard',
+ // redirect: '/dashboard',
+ redirect: '/workbench',
meta: {
title: '',
},
@@ -41,6 +42,48 @@
// 系统路由
const systemRoutes: Route.recordRaw[] = [
{
+ path: '/workbench',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ meta: {
+ title: '总工作台',
+ breadcrumb: false,
+ },
+ children: [
+ {
+ path: '',
+ name: 'workbench',
+ component: () => import('@/views/workbench.vue'),
+ meta: {
+ title: '总工作台子组件',
+ breadcrumb: false,
+ },
+ },
+ ],
+ },
+ {
+ path: '/comprehensive',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-business-system',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ component: () => import('@/views/workbench/approve/list.vue'),
+ meta: {
+ title: '审批提醒',
+ sidebar: true,
+ breadcrumb: true,
+ // activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
path: '/dashboard',
component: () => import('@/layouts/index.vue'),
meta: {
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 54e0d4c..fe03729 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -15,7 +15,8 @@
const constantRoutes: Route.recordRaw[] = [
{
path: '/',
- redirect: '/dashboard',
+ // redirect: '/dashboard',
+ redirect: '/workbench',
meta: {
title: '',
},
@@ -41,6 +42,48 @@
// 系统路由
const systemRoutes: Route.recordRaw[] = [
{
+ path: '/workbench',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ meta: {
+ title: '总工作台',
+ breadcrumb: false,
+ },
+ children: [
+ {
+ path: '',
+ name: 'workbench',
+ component: () => import('@/views/workbench.vue'),
+ meta: {
+ title: '总工作台子组件',
+ breadcrumb: false,
+ },
+ },
+ ],
+ },
+ {
+ path: '/comprehensive',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-business-system',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ component: () => import('@/views/workbench/approve/list.vue'),
+ meta: {
+ title: '审批提醒',
+ sidebar: true,
+ breadcrumb: true,
+ // activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
path: '/dashboard',
component: () => import('@/layouts/index.vue'),
meta: {
diff --git a/src/views/workbench.vue b/src/views/workbench.vue
new file mode 100644
index 0000000..a63b6fb
--- /dev/null
+++ b/src/views/workbench.vue
@@ -0,0 +1,385 @@
+
+
+name: workbench
+meta:
+ title: 总工作台
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (approvalMessageListQuery.offset - 1) * approvalMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ (workMessageListQuery.offset - 1) * workMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.day.split("-").slice(2).join() }}
+
+
+
+
+
+ {{ key }}
+
+ {{ e.scheduleMatters }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 54e0d4c..fe03729 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -15,7 +15,8 @@
const constantRoutes: Route.recordRaw[] = [
{
path: '/',
- redirect: '/dashboard',
+ // redirect: '/dashboard',
+ redirect: '/workbench',
meta: {
title: '',
},
@@ -41,6 +42,48 @@
// 系统路由
const systemRoutes: Route.recordRaw[] = [
{
+ path: '/workbench',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ meta: {
+ title: '总工作台',
+ breadcrumb: false,
+ },
+ children: [
+ {
+ path: '',
+ name: 'workbench',
+ component: () => import('@/views/workbench.vue'),
+ meta: {
+ title: '总工作台子组件',
+ breadcrumb: false,
+ },
+ },
+ ],
+ },
+ {
+ path: '/comprehensive',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-business-system',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ component: () => import('@/views/workbench/approve/list.vue'),
+ meta: {
+ title: '审批提醒',
+ sidebar: true,
+ breadcrumb: true,
+ // activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
path: '/dashboard',
component: () => import('@/layouts/index.vue'),
meta: {
diff --git a/src/views/workbench.vue b/src/views/workbench.vue
new file mode 100644
index 0000000..a63b6fb
--- /dev/null
+++ b/src/views/workbench.vue
@@ -0,0 +1,385 @@
+
+
+name: workbench
+meta:
+ title: 总工作台
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (approvalMessageListQuery.offset - 1) * approvalMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ (workMessageListQuery.offset - 1) * workMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.day.split("-").slice(2).join() }}
+
+
+
+
+
+ {{ key }}
+
+ {{ e.scheduleMatters }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/workbench/approve/list.vue b/src/views/workbench/approve/list.vue
new file mode 100644
index 0000000..ad022d8
--- /dev/null
+++ b/src/views/workbench/approve/list.vue
@@ -0,0 +1,7 @@
+
+
+
+ 审批提醒
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 54e0d4c..fe03729 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -15,7 +15,8 @@
const constantRoutes: Route.recordRaw[] = [
{
path: '/',
- redirect: '/dashboard',
+ // redirect: '/dashboard',
+ redirect: '/workbench',
meta: {
title: '',
},
@@ -41,6 +42,48 @@
// 系统路由
const systemRoutes: Route.recordRaw[] = [
{
+ path: '/workbench',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ meta: {
+ title: '总工作台',
+ breadcrumb: false,
+ },
+ children: [
+ {
+ path: '',
+ name: 'workbench',
+ component: () => import('@/views/workbench.vue'),
+ meta: {
+ title: '总工作台子组件',
+ breadcrumb: false,
+ },
+ },
+ ],
+ },
+ {
+ path: '/comprehensive',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-business-system',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ component: () => import('@/views/workbench/approve/list.vue'),
+ meta: {
+ title: '审批提醒',
+ sidebar: true,
+ breadcrumb: true,
+ // activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
path: '/dashboard',
component: () => import('@/layouts/index.vue'),
meta: {
diff --git a/src/views/workbench.vue b/src/views/workbench.vue
new file mode 100644
index 0000000..a63b6fb
--- /dev/null
+++ b/src/views/workbench.vue
@@ -0,0 +1,385 @@
+
+
+name: workbench
+meta:
+ title: 总工作台
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (approvalMessageListQuery.offset - 1) * approvalMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ (workMessageListQuery.offset - 1) * workMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.day.split("-").slice(2).join() }}
+
+
+
+
+
+ {{ key }}
+
+ {{ e.scheduleMatters }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/workbench/approve/list.vue b/src/views/workbench/approve/list.vue
new file mode 100644
index 0000000..ad022d8
--- /dev/null
+++ b/src/views/workbench/approve/list.vue
@@ -0,0 +1,7 @@
+
+
+
+ 审批提醒
+
diff --git a/src/views/workbench/editSchedule.vue b/src/views/workbench/editSchedule.vue
new file mode 100644
index 0000000..b50f98f
--- /dev/null
+++ b/src/views/workbench/editSchedule.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+ 取消
+
+
+ 删除所有日程
+
+
+
+
+
+
+
diff --git a/.env.development b/.env.development
index 1441fe7..3b872c5 100644
--- a/.env.development
+++ b/.env.development
@@ -1,5 +1,5 @@
# 页面标题
-VITE_APP_TITLE = 计量管理系统
+VITE_APP_TITLE = 华东计量综合系统
# 接口请求地址,会设置到 axios 的 baseURL 参数上
# VITE_APP_API_BASEURL = http://111.198.10.15:11309
# VITE_APP_API_BASEURL = http://111.198.10.15:21409
diff --git a/src/api/workbench/workbench.ts b/src/api/workbench/workbench.ts
new file mode 100644
index 0000000..94fae4a
--- /dev/null
+++ b/src/api/workbench/workbench.ts
@@ -0,0 +1,55 @@
+// 总工作台
+import request from '../index'
+
+// 审批提醒列表
+export function getApprovalMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/approvalMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+// 工作提醒列表
+export function getWorkMessageList(data: { offset: number; limit: number }) {
+ return request({
+ url: `/workbench/remindMessage/listPage?offset=${data.offset}&limit=${data.limit}`,
+ method: 'post',
+ data,
+ })
+}
+
+// -----------------------------------------日历------------------------------------------
+// 新增日程
+export function addSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/add',
+ method: 'post',
+ data,
+ })
+}
+// 编辑日程
+export function editSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/update',
+ method: 'post',
+ data,
+ })
+}
+// 日历列表
+export function getCalendarList(data: { calendarMonth: string; userId: string }) {
+ return request({
+ url: '/workbench/calendarSchedule/list',
+ method: 'post',
+ data,
+ })
+}
+
+// 删除日程
+export function delSchedule(data: object) {
+ return request({
+ url: '/workbench/calendarSchedule/delete',
+ method: 'post',
+ data,
+ })
+}
+
diff --git a/src/assets/icons/icon-add-circle.svg b/src/assets/icons/icon-add-circle.svg
new file mode 100644
index 0000000..13f4b3b
--- /dev/null
+++ b/src/assets/icons/icon-add-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-applyRemind.svg b/src/assets/icons/icon-applyRemind.svg
new file mode 100644
index 0000000..ade887e
--- /dev/null
+++ b/src/assets/icons/icon-applyRemind.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-backlog.svg b/src/assets/icons/icon-backlog.svg
new file mode 100644
index 0000000..2f1b34f
--- /dev/null
+++ b/src/assets/icons/icon-backlog.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-business-system.svg b/src/assets/icons/icon-business-system.svg
new file mode 100644
index 0000000..1224b34
--- /dev/null
+++ b/src/assets/icons/icon-business-system.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-calendar.svg b/src/assets/icons/icon-calendar.svg
new file mode 100644
index 0000000..2fe1f13
--- /dev/null
+++ b/src/assets/icons/icon-calendar.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-edit.svg b/src/assets/icons/icon-edit.svg
new file mode 100644
index 0000000..6bb525d
--- /dev/null
+++ b/src/assets/icons/icon-edit.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-reduce-circle.svg b/src/assets/icons/icon-reduce-circle.svg
new file mode 100644
index 0000000..eed0947
--- /dev/null
+++ b/src/assets/icons/icon-reduce-circle.svg
@@ -0,0 +1 @@
+
diff --git a/src/assets/icons/icon-workbench.svg b/src/assets/icons/icon-workbench.svg
new file mode 100644
index 0000000..904c222
--- /dev/null
+++ b/src/assets/icons/icon-workbench.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/icon-zh.svg b/src/assets/icons/icon-zh.svg
new file mode 100644
index 0000000..57f2c1e
--- /dev/null
+++ b/src/assets/icons/icon-zh.svg
@@ -0,0 +1 @@
+
diff --git a/src/components/benchCol/index.vue b/src/components/benchCol/index.vue
index e406d0a..41b9f64 100644
--- a/src/components/benchCol/index.vue
+++ b/src/components/benchCol/index.vue
@@ -50,8 +50,13 @@
type: Number,
default: 0,
},
+ // 可编辑
+ isEdit: {
+ type: Boolean,
+ default: false,
+ },
})
-const emit = defineEmits(['change'])
+const emit = defineEmits(['change', 'editData', 'deleteData'])
// 改变页容量
function handleSizeChange(val: number) {
@@ -61,6 +66,15 @@
function handleCurrentChange(val: number) {
emit('change', { page: val })
}
+
+// 点击编辑icon
+function clickEdit() {
+ emit('editData')
+}
+// 点击删除icon
+function clickDelete() {
+ emit('deleteData')
+}
@@ -73,6 +87,9 @@
{{ title }}
更多 >
+
+
+
@@ -128,6 +145,10 @@
margin-right: 5px;
}
+ .edit-icon {
+ cursor: pointer;
+ }
+
.title {
color: #000;
font-size: 16px;
diff --git a/src/layouts/components/Logo/index.vue b/src/layouts/components/Logo/index.vue
index bdcd228..6f5d962 100644
--- a/src/layouts/components/Logo/index.vue
+++ b/src/layouts/components/Logo/index.vue
@@ -11,11 +11,15 @@
type: Boolean,
default: true,
},
+ title: {
+ type: String,
+ default: '华东计量综合系统',
+ },
})
const settingsStore = useSettingsStore()
-const title = ref(import.meta.env.VITE_APP_TITLE)
+// const title = ref(import.meta.env.VITE_APP_TITLE)
const logo = ref(imgLogo)
const to = computed(() => {
@@ -32,7 +36,7 @@
- {{ title }}
+ {{ title }}
@@ -51,6 +55,11 @@
overflow: hidden;
text-decoration: none;
+ .title-item {
+ font-size: 20px;
+ font-weight: 600;
+ }
+
&.is-link {
cursor: pointer;
}
diff --git a/src/layouts/components/SidebarItem/workbenchItem.vue b/src/layouts/components/SidebarItem/workbenchItem.vue
new file mode 100644
index 0000000..c08cd89
--- /dev/null
+++ b/src/layouts/components/SidebarItem/workbenchItem.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/components/SubSidebar/workbenchSiderBar.vue b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
new file mode 100644
index 0000000..d737a86
--- /dev/null
+++ b/src/layouts/components/SubSidebar/workbenchSiderBar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/components/workBenchHeader/index.vue b/src/layouts/components/workBenchHeader/index.vue
new file mode 100644
index 0000000..bb31ccf
--- /dev/null
+++ b/src/layouts/components/workBenchHeader/index.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/workBenchLayouts.vue b/src/layouts/workBenchLayouts.vue
new file mode 100644
index 0000000..21d5ba3
--- /dev/null
+++ b/src/layouts/workBenchLayouts.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
diff --git a/src/router/index.ts b/src/router/index.ts
index 6b9ba93..6404758 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -49,24 +49,41 @@
})
}
// 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
- else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
- if (menuStore.sidebarMenus.length > 0) {
- next({
- path: menuStore.sidebarMenusFirstDeepestPath,
- replace: true,
- })
+ // else if (!settingsStore.dashboard.enable && to.name === 'dashboard') {
+ // if (menuStore.sidebarMenus.length > 0) {
+ // next({
+ // path: menuStore.sidebarMenusFirstDeepestPath,
+ // replace: true,
+ // })
+ // }
+ // // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ // else {
+ // next()
+ // }
+ // }
+ // 正常访问页面
+ else {
+ // 如果未开启控制台,但进入的是控制台页面,则会进入侧边栏导航第一个模块
+ if (!settingsStore.dashboard.enable && (to.name === 'dashboard')) {
+ if (menuStore.sidebarMenus.length > 0) {
+ next({
+ path: menuStore.sidebarMenusFirstDeepestPath,
+ replace: true,
+ })
+ }
+ // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
+ else {
+ next()
+ }
}
- // 如果侧边栏导航第一个模块无法命中,则还是进入控制台页面
else {
next()
}
}
- // 正常访问页面
- else {
- next()
- }
}
else {
+ console.log('00000', '动态路由')
+
// 生成动态路由
switch (settingsStore.app.routeBaseOn) {
case 'frontend':
diff --git a/src/router/modules/benchList.ts b/src/router/modules/benchList.ts
new file mode 100644
index 0000000..f5280fa
--- /dev/null
+++ b/src/router/modules/benchList.ts
@@ -0,0 +1,147 @@
+import type { Route } from '@/global'
+
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/customer',
+ component: Layout,
+ redirect: '/customer/bench',
+ name: 'CustomerBench',
+ meta: {
+ title: '工作台',
+ icon: 'ep:key',
+ auth: '/customer/bench',
+ },
+ children: [
+ {
+ path: 'bench',
+ name: 'CustomerBenchPage',
+ component: () => import('@/views/customer/bench/bench.vue'),
+ meta: {
+ title: '工作台',
+ auth: '/customer/bench',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customer',
+ },
+ },
+ ],
+ },
+ {
+ path: '/sample',
+ component: Layout,
+ redirect: '/sample/list',
+ name: 'Sample',
+ meta: {
+ title: '样品库',
+ icon: 'ep:key',
+ auth: '/sample',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'SampleList',
+ component: () => import('@/views/customer/sample/list/list.vue'),
+ meta: {
+ title: '样品列表',
+ icon: 'ep:key',
+ auth: '/sample/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'SampleDetail',
+ component: () => import('@/views/customer/sample/list/edit.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/list',
+ },
+ },
+ {
+ path: 'overtime',
+ name: 'OvertimeSample',
+ component: () => import('@/views/customer/sample/overTime/list.vue'),
+ meta: {
+ title: '到期样品',
+ icon: 'ep:key',
+ auth: '/sample/overtime',
+ },
+ },
+ {
+ path: 'overtime/:type/:id?',
+ name: 'OverTimeDetail',
+ component: () => import('@/views/customer/sample/overTime/detail.vue'),
+ meta: {
+ title: '样品详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/sample/overtime',
+ },
+ },
+ ],
+ },
+ {
+ path: '/customerManage',
+ component: Layout,
+ redirect: '/customerManage/list',
+ name: 'Customer',
+ meta: {
+ title: '客户管理',
+ icon: 'ep:key',
+ auth: '/customer/manage',
+ },
+ children: [
+ {
+ path: 'list',
+ name: 'CustomerList',
+ component: () => import('@/views/customer/customerInfo/customerList.vue'),
+ meta: {
+ title: '客户列表',
+ icon: 'ep:key',
+ auth: '/customer/list',
+ },
+ },
+ {
+ path: ':type/:id?',
+ name: 'CustomerDetail',
+ component: () => import('@/views/customer/customerInfo/customerEdit.vue'),
+ meta: {
+ title: '客户详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/customerManage/list',
+ },
+ },
+ {
+ path: 'advice',
+ name: 'CustomerAdvice',
+ component: () => import('@/views/customer/advice/adviceList.vue'),
+ meta: {
+ title: '客户关系',
+ icon: 'ep:key',
+ auth: '/customer/advice',
+ },
+ },
+ {
+ path: 'advice/:type/:id?',
+ name: 'CustomerAdviceDetail',
+ component: () => import('@/views/customer/advice/adviceEdit.vue'),
+ meta: {
+ title: '客户关系详情',
+ icon: 'ep:key',
+ sidebar: false,
+ breadcrumb: true,
+ activeMenu: '/source/approve',
+ },
+ },
+ ],
+ },
+]
+
+export default routes
diff --git a/src/router/modules/workbench.ts b/src/router/modules/workbench.ts
new file mode 100644
index 0000000..9d180ea
--- /dev/null
+++ b/src/router/modules/workbench.ts
@@ -0,0 +1,51 @@
+// 总工作台路由
+import type { Route } from '@/global'
+const Layout = () => import('@/layouts/index.vue')
+
+const routes: Route.recordRaw[] = [
+ {
+ path: '/workbench',
+ component: Layout,
+ redirect: '/workbench/bench',
+ name: 'Workbench',
+ meta: {
+ title: '总工作台',
+ icon: 'icon-workbench',
+ },
+ },
+ {
+ path: '/comprehensive',
+ component: Layout,
+ // redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-zh',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ // component: () => import('@/views/business/board/depComprehensive/list.vue'),
+ meta: {
+ title: '审批提醒',
+ // auth: '/device/bench',
+ sidebar: true,
+ // breadcrumb: true,
+ activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
+ path: '/dashboard',
+ component: Layout,
+ // redirect: '/dashboard',
+ name: 'MeterSystem',
+ meta: {
+ title: '计量业务系统',
+ icon: 'icon-business-system',
+ },
+ },
+]
+export default routes
diff --git a/src/router/routes.ts b/src/router/routes.ts
index 54e0d4c..fe03729 100644
--- a/src/router/routes.ts
+++ b/src/router/routes.ts
@@ -15,7 +15,8 @@
const constantRoutes: Route.recordRaw[] = [
{
path: '/',
- redirect: '/dashboard',
+ // redirect: '/dashboard',
+ redirect: '/workbench',
meta: {
title: '',
},
@@ -41,6 +42,48 @@
// 系统路由
const systemRoutes: Route.recordRaw[] = [
{
+ path: '/workbench',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ meta: {
+ title: '总工作台',
+ breadcrumb: false,
+ },
+ children: [
+ {
+ path: '',
+ name: 'workbench',
+ component: () => import('@/views/workbench.vue'),
+ meta: {
+ title: '总工作台子组件',
+ breadcrumb: false,
+ },
+ },
+ ],
+ },
+ {
+ path: '/comprehensive',
+ component: () => import('@/layouts/workBenchLayouts.vue'),
+ redirect: '/comprehensive/approve',
+ name: 'Comprehensive',
+ meta: {
+ title: '计量综合系统',
+ icon: 'icon-business-system',
+ },
+ children: [
+ {
+ path: 'approve',
+ name: 'Approve',
+ component: () => import('@/views/workbench/approve/list.vue'),
+ meta: {
+ title: '审批提醒',
+ sidebar: true,
+ breadcrumb: true,
+ // activeMenu: '/comprehensive',
+ },
+ },
+ ],
+ },
+ {
path: '/dashboard',
component: () => import('@/layouts/index.vue'),
meta: {
diff --git a/src/views/workbench.vue b/src/views/workbench.vue
new file mode 100644
index 0000000..a63b6fb
--- /dev/null
+++ b/src/views/workbench.vue
@@ -0,0 +1,385 @@
+
+
+name: workbench
+meta:
+ title: 总工作台
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (approvalMessageListQuery.offset - 1) * approvalMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ (workMessageListQuery.offset - 1) * workMessageListQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+ {{ (searchQuery.offset - 1) * searchQuery.limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ data.day.split("-").slice(2).join() }}
+
+
+
+
+
+ {{ key }}
+
+ {{ e.scheduleMatters }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/workbench/approve/list.vue b/src/views/workbench/approve/list.vue
new file mode 100644
index 0000000..ad022d8
--- /dev/null
+++ b/src/views/workbench/approve/list.vue
@@ -0,0 +1,7 @@
+
+
+
+ 审批提醒
+
diff --git a/src/views/workbench/editSchedule.vue b/src/views/workbench/editSchedule.vue
new file mode 100644
index 0000000..b50f98f
--- /dev/null
+++ b/src/views/workbench/editSchedule.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+ 取消
+
+
+ 删除所有日程
+
+
+
+
+
+
+
diff --git a/src/views/workbench/workbench-interface.ts b/src/views/workbench/workbench-interface.ts
new file mode 100644
index 0000000..7699137
--- /dev/null
+++ b/src/views/workbench/workbench-interface.ts
@@ -0,0 +1,27 @@
+// 审批提醒查询
+export interface IApprovalMessageListQuery {
+ endTime: string // 通知结束时间
+ messageSourceModule: string // 来源模块(字典code)
+ startTime: string // 通知开始时间
+ status: number // 已读1未读0
+ offset: number
+ limit: number
+}
+
+// 审批提醒列表数据
+export interface IApprovalMessageList {
+ messageTitle: string // 审批名称
+}
+
+// 工作提醒查询
+export interface IWorkMessageListQuery {
+ endTime: string // 消息提醒结束时间
+ messageSourceModule: string // 来源模块(字典code)
+ messageType: string// 消息提醒的业务类型(字典code)
+ remindDeptId: string// 消息提醒的用户部门id
+ remindId: string// 消息提醒的用户id
+ startTime: string// 消息提醒开始时间
+ status: number// 已读1未读0
+ offset: number
+ limit: number
+}