diff --git a/ui/.env.development b/ui/.env.development
new file mode 100644
index 0000000..3d8c48c
--- /dev/null
+++ b/ui/.env.development
@@ -0,0 +1,14 @@
+# 本地环境
+NODE_ENV = development
+
+# 标题
+VUE_APP_TITLE = 服务支持系统
+
+# 接口地址
+VUE_APP_API_BASEURL = https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api
+
+# 本地端口
+VUE_APP_PORT = 2800
+
+# 是否开启代理
+VUE_APP_PROXY = true
\ No newline at end of file
diff --git a/ui/.env.production b/ui/.env.production
new file mode 100644
index 0000000..3b9d37f
--- /dev/null
+++ b/ui/.env.production
@@ -0,0 +1,8 @@
+# 生产环境
+NODE_ENV = production
+
+# 标题
+VUE_APP_TITLE = 服务支持系统
+
+# 接口地址
+VUE_APP_API_BASEURL = https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api
\ No newline at end of file
diff --git a/ui/README.md b/ui/README.md
index 6740d80..d5e80f3 100644
--- a/ui/README.md
+++ b/ui/README.md
@@ -1,19 +1,75 @@
-# thinkvue-admin
-## Project setup
-```
-npm install
-```
+
-

+
-
<%= htmlWebpackPlugin.options.title %>
+
<%= VUE_APP_TITLE %>
diff --git a/ui/src/api/model/common.js b/ui/src/api/model/common.js
index 811ca9f..48cc2be 100644
--- a/ui/src/api/model/common.js
+++ b/ui/src/api/model/common.js
@@ -3,7 +3,7 @@ import http from "@/utils/request"
export default {
upload: {
- url: `${config.API_URL}/upload`,
+ url: `${config.API_URL}file/upload`,
name: "文件上传",
post: async function(data, config={}){
return await http.post(this.url, data, config);
diff --git a/ui/src/api/model/demo.js b/ui/src/api/model/demo.js
new file mode 100644
index 0000000..fa8f712
--- /dev/null
+++ b/ui/src/api/model/demo.js
@@ -0,0 +1,55 @@
+import config from "@/config"
+import http from "@/utils/request"
+
+export default {
+ ver: {
+ url: `${config.API_URL}/demo/ver`,
+ name: "获取最新版本号",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ post: {
+ url: `${config.API_URL}/demo/post`,
+ name: "分页列表",
+ post: async function(data){
+ return await http.post(this.url, data, {
+ headers: {
+ //'response-status': 401
+ }
+ });
+ }
+ },
+ page: {
+ url: `${config.API_URL}/demo/page`,
+ name: "分页列表",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ list: {
+ url: `${config.API_URL}/demo/list`,
+ name: "数据列表",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ menu: {
+ url: `${config.API_URL}/demo/menu`,
+ name: "普通用户菜单",
+ get: async function(){
+ return await http.get(this.url);
+ }
+ },
+ status: {
+ url: `${config.API_URL}/demo/status`,
+ name: "模拟无权限",
+ get: async function(code){
+ return await http.get(this.url, {}, {
+ headers: {
+ "response-status": code
+ }
+ });
+ }
+ }
+}
diff --git a/ui/src/api/model/system.js b/ui/src/api/model/system.js
index 3dc813a..5507ef0 100644
--- a/ui/src/api/model/system.js
+++ b/ui/src/api/model/system.js
@@ -34,21 +34,21 @@ export default {
}
},
add: {
- url: `${config.API_URL}/system/menu/add`,
+ url: `${config.API_URL}system/menu/add`,
name: "添加菜单",
post: async function(data){
return await http.post(this.url, data);
}
},
edit: {
- url: `${config.API_URL}/system/menu/edit`,
+ url: `${config.API_URL}system/menu/edit`,
name: "编辑菜单",
post: async function(data){
return await http.post(this.url, data);
}
},
delete: {
- url: `${config.API_URL}/system/menu/delete`,
+ url: `${config.API_URL}system/menu/delete`,
name: "删除菜单",
post: async function(data){
return await http.post(this.url, data);
@@ -129,7 +129,7 @@ export default {
},
app: {
list: {
- url: `${config.API_URL}/system/app/list`,
+ url: `${config.API_URL}system/app/list`,
name: "应用列表",
get: async function(){
return await http.get(this.url);
@@ -138,23 +138,30 @@ export default {
},
log: {
list: {
- url: `${config.API_URL}/system/log/index`,
+ url: `${config.API_URL}system/log/index`,
name: "日志列表",
get: async function(params){
return await http.get(this.url, params);
}
+ },
+ my: {
+ url: `${config.API_URL}system/log/my`,
+ name: "我的日志",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
}
},
table: {
list: {
- url: `${config.API_URL}/system/table/list`,
+ url: `${config.API_URL}system/table/list`,
name: "表格列管理列表",
get: async function(params){
return await http.get(this.url, params);
}
},
info: {
- url: `${config.API_URL}/system/table/info`,
+ url: `${config.API_URL}system/table/info`,
name: "表格列管理详情",
get: async function(params){
return await http.get(this.url, params);
diff --git a/ui/src/api/model/tools.js b/ui/src/api/model/tools.js
new file mode 100644
index 0000000..cedfd24
--- /dev/null
+++ b/ui/src/api/model/tools.js
@@ -0,0 +1,123 @@
+import config from "@/config"
+import http from "@/utils/request"
+
+export default {
+ filter: {
+ list: {
+ url: `${config.API_URL}/tools/filter/index`,
+ name: "获得过滤数据",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ insert:{
+ url: `${config.API_URL}/tools/filter/insert`,
+ name: "导入过滤数据",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ },
+ search: {
+ url: `${config.API_URL}/tools/filter/search`,
+ name: "过滤数据",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ delete:{
+ url: `${config.API_URL}/tools/filter/delete`,
+ name: "删除过滤数据",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ },
+ edit:{
+ url: `${config.API_URL}/tools/filter/edit`,
+ name: "更新过滤数据",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ },
+ task: {
+ url: `${config.API_URL}/tools/filter/task`,
+ name: "任务单数据",
+ get: async function(params){
+ return await http.get(this.url, params);
+ }
+ },
+ batch:{
+ url: `${config.API_URL}/tools/filter/batch`,
+ name: "条件删除",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ }
+ },
+ inspect:{
+ list: {
+ url: `${config.API_URL}/tools/inspect/index`,
+ name: "获得质检数据",
+ get: async function(data){
+ let params = Object.assign({}, data);
+ let users = params.user || {}, uids = [];
+ if(users.length > 0){
+ users.map((item) => {
+ uids.push(item.uid);
+ })
+ }
+ params.user = uids;
+ return await http.get(this.url, params);
+ }
+ },
+ insert:{
+ url: `${config.API_URL}/tools/inspect/insert`,
+ name: "导入质检数据",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ },
+ edit:{
+ url: `${config.API_URL}/tools/inspect/edit`,
+ name: "质检数据操作",
+ post: async function(data={}){
+ return await http.post(this.url, data);
+ }
+ },
+ delete:{
+ url: `${config.API_URL}/tools/inspect/delete`,
+ name: "删除过滤数据",
+ post: async function(data={}){
+ let params = Object.assign({}, data);
+ let users = params.user || {}, uids = [];
+ if(users.length > 0){
+ users.map((item) => {
+ uids.push(item.uid);
+ })
+ }
+ params.user = uids;
+ return await http.post(this.url, params);
+ }
+ },
+ average:{
+ url: `${config.API_URL}/tools/inspect/average`,
+ name: "质检数据操作",
+ post: async function(data={}){
+ let params = Object.assign({}, data);
+ let users = params.users || {}, uids = [], user = params.user || {}, uid = [];
+ if(users.length > 0){
+ users.map((item) => {
+ uids.push(item.uid);
+ })
+ }
+ if(user.length > 0){
+ user.map((item) => {
+ uid.push(item.uid);
+ })
+ }
+ params.users = uids;
+ params.user = uid;
+ return await http.post(this.url, params);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ui/src/api/model/user.js b/ui/src/api/model/user.js
index 87f6934..e870e90 100644
--- a/ui/src/api/model/user.js
+++ b/ui/src/api/model/user.js
@@ -23,6 +23,20 @@ export default {
return await http.post(this.url, params);
}
},
+ uppasswd:{
+ url: `${config.API_URL}/auth/user/passwd`,
+ name: "修改密码",
+ post: async function(params){
+ return await http.post(this.url, params);
+ }
+ },
+ uprole: {
+ url: `${config.API_URL}/auth/user/auth`,
+ name: "编辑用户",
+ post: async function(params){
+ return await http.post(this.url, params);
+ }
+ },
role: {
list: {
url: `${config.API_URL}/auth/role/index`,
@@ -37,6 +51,13 @@ export default {
post: async function(params){
return await http.post(this.url, params);
}
+ },
+ auth: {
+ url: `${config.API_URL}/auth/role/auth`,
+ name: "编辑角色",
+ post: async function(params){
+ return await http.post(this.url, params);
+ }
}
},
department: {
@@ -57,7 +78,7 @@ export default {
},
userinfo:{
url: `${config.API_URL}/auth/user/info`,
- name: "获得部门列表",
+ name: "获得用户信息",
get: async function(params){
return await http.get(this.url, params);
}
diff --git a/ui/src/assets/icons/BugFill.vue b/ui/src/assets/icons/BugFill.vue
new file mode 100644
index 0000000..35a6edc
--- /dev/null
+++ b/ui/src/assets/icons/BugFill.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/ui/src/assets/icons/BugLine.vue b/ui/src/assets/icons/BugLine.vue
new file mode 100644
index 0000000..b1cb9ad
--- /dev/null
+++ b/ui/src/assets/icons/BugLine.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/ui/src/assets/icons/Code.vue b/ui/src/assets/icons/Code.vue
new file mode 100644
index 0000000..9d1581c
--- /dev/null
+++ b/ui/src/assets/icons/Code.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/Download.vue b/ui/src/assets/icons/Download.vue
new file mode 100644
index 0000000..3b139da
--- /dev/null
+++ b/ui/src/assets/icons/Download.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/FileExcel.vue b/ui/src/assets/icons/FileExcel.vue
new file mode 100644
index 0000000..c6d5fdf
--- /dev/null
+++ b/ui/src/assets/icons/FileExcel.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/FilePpt.vue b/ui/src/assets/icons/FilePpt.vue
new file mode 100644
index 0000000..9fcf2a2
--- /dev/null
+++ b/ui/src/assets/icons/FilePpt.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/FileWord.vue b/ui/src/assets/icons/FileWord.vue
new file mode 100644
index 0000000..cfd035a
--- /dev/null
+++ b/ui/src/assets/icons/FileWord.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/Organization.vue b/ui/src/assets/icons/Organization.vue
new file mode 100644
index 0000000..a666d76
--- /dev/null
+++ b/ui/src/assets/icons/Organization.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/Upload.vue b/ui/src/assets/icons/Upload.vue
new file mode 100644
index 0000000..c0bf5e6
--- /dev/null
+++ b/ui/src/assets/icons/Upload.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/Vue.vue b/ui/src/assets/icons/Vue.vue
new file mode 100644
index 0000000..5253d61
--- /dev/null
+++ b/ui/src/assets/icons/Vue.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/assets/icons/Wechat.vue b/ui/src/assets/icons/Wechat.vue
new file mode 100644
index 0000000..a572f7b
--- /dev/null
+++ b/ui/src/assets/icons/Wechat.vue
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ui/src/static/icons/index.js b/ui/src/assets/icons/index.js
similarity index 61%
rename from ui/src/static/icons/index.js
rename to ui/src/assets/icons/index.js
index c5139c1..7d60d7a 100644
--- a/ui/src/static/icons/index.js
+++ b/ui/src/assets/icons/index.js
@@ -5,4 +5,7 @@ export { default as BugFill } from './BugFill.vue'
export { default as BugLine } from './BugLine.vue'
export { default as FileWord } from './FileWord.vue'
export { default as FileExcel } from './FileExcel.vue'
-export { default as FilePpt } from './FilePpt.vue'
\ No newline at end of file
+export { default as FilePpt } from './FilePpt.vue'
+export { default as Organization } from './Organization.vue'
+export { default as Upload } from './Upload.vue'
+export { default as Download } from './Download.vue'
\ No newline at end of file
diff --git a/ui/src/components/scCodeEditor/index.vue b/ui/src/components/scCodeEditor/index.vue
new file mode 100644
index 0000000..4a9c29e
--- /dev/null
+++ b/ui/src/components/scCodeEditor/index.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/components/scContextmenu/index.vue b/ui/src/components/scContextmenu/index.vue
index 8e1c8f0..7f0a72e 100644
--- a/ui/src/components/scContextmenu/index.vue
+++ b/ui/src/components/scContextmenu/index.vue
@@ -1,10 +1,10 @@
@@ -34,17 +34,10 @@
},
watch: {
visible(value) {
- var _this = this;
- var cm = function(e){
- let sp = _this.$refs.contextmenu
- if(sp&&!sp.contains(e.target)){
- _this.closeMenu()
- }
- }
if (value) {
- document.body.addEventListener('click', e=>cm(e))
+ document.body.addEventListener('click', this.cm, true)
}else{
- document.body.removeEventListener('click', e=>cm(e))
+ document.body.removeEventListener('click', this.cm, true)
}
}
},
@@ -52,6 +45,12 @@
},
methods: {
+ cm(e){
+ let sp = this.$refs.contextmenu
+ if(sp&&!sp.contains(e.target)){
+ this.closeMenu()
+ }
+ },
menuClick(command){
this.closeMenu()
this.$emit('command', command)
@@ -89,7 +88,7 @@
diff --git a/ui/src/components/scFileImport/index.vue b/ui/src/components/scFileImport/index.vue
new file mode 100644
index 0000000..0cb6f3d
--- /dev/null
+++ b/ui/src/components/scFileImport/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+ 导入
+
+
+
+
+
+
+
+
+ 将文件拖到此处或 点击选择文件上传
+
+
+
+
+
{{tip}}
+
请上传小于或等于 {{maxSize}}M 的 {{accept}} 格式文件
+
+ 下载导入模板
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/components/scFilterBar/index.vue b/ui/src/components/scFilterBar/index.vue
index 136cb34..4e3653b 100644
--- a/ui/src/components/scFilterBar/index.vue
+++ b/ui/src/components/scFilterBar/index.vue
@@ -1,10 +1,10 @@
@@ -76,7 +76,7 @@
- 增加过滤项
+ 增加过滤项
@@ -302,9 +302,9 @@
.root:deep(.el-tabs__content) {flex: 1;background: #f6f8f9;}
.root:deep(.el-tabs__content) .el-tab-pane{overflow: auto;height:100%;}
- [data-theme='dark'] .root:deep(.el-tabs__content) {background: none;}
- [data-theme='dark'] .sc-filter-main {background: none;border-color:var(--el-border-color-base);}
- [data-theme='dark'] .sc-filter-main table td .del {background: none;}
- [data-theme='dark'] .sc-filter-main table td .del:hover {background: #F56C6C;}
- [data-theme='dark'] .nodata {border-color:var(--el-border-color-base);}
+ .dark .root:deep(.el-tabs__content) {background: var(--el-bg-color-overlay);}
+ .dark .sc-filter-main {background: var(--el-bg-color);border-color:var(--el-border-color-light);}
+ .dark .sc-filter-main table td .del {background: none;}
+ .dark .sc-filter-main table td .del:hover {background: #F56C6C;}
+ .dark .nodata {border-color:var(--el-border-color-light);}
diff --git a/ui/src/components/scFormTable/index.vue b/ui/src/components/scFormTable/index.vue
index 2f292b3..682a06e 100644
--- a/ui/src/components/scFormTable/index.vue
+++ b/ui/src/components/scFormTable/index.vue
@@ -18,7 +18,6 @@