浏览代码

wx-ui Final Version

panxingxin 5 年之前
当前提交
c2e2dc302a
共有 100 个文件被更改,包括 2379 次插入0 次删除
  1. 3 0
      .browserslistrc
  2. 15 0
      .editorconfig
  3. 4 0
      .eslintignore
  4. 215 0
      .eslintrc.js
  5. 28 0
      .gitignore
  6. 5 0
      .postcssrc.js
  7. 13 0
      Dockerfile
  8. 27 0
      README.md
  9. 5 0
      babel.config.js
  10. 25 0
      default.conf
  11. 55 0
      package.json
  12. 11 0
      public/cdn/animate/3.5.2/animate.css
  13. 54 0
      public/cdn/avue/avue.css
  14. 1 0
      public/cdn/avue/index.css
  15. 8 0
      public/cdn/avue/index.js
  16. 9 0
      public/cdn/axios/1.0.0/axios.min.js
  17. 31 0
      public/cdn/iconfont/1.0.0/index.css
  18. 193 0
      public/cdn/store/1.3.20/store.js
  19. 二进制
      public/favicon.ico
  20. 二进制
      public/images/banner_control23b288.png
  21. 1 0
      public/images/base.css.bak
  22. 二进制
      public/images/base_z36574a.png
  23. 二进制
      public/images/bg_mobile21d289.png
  24. 二进制
      public/images/bg_mobile_foot_default2968da.png
  25. 二进制
      public/images/bg_mobile_head_default2968da.png
  26. 二进制
      public/images/card_tpl_deco.png
  27. 二进制
      public/images/emoji218877.png
  28. 二进制
      public/images/emotion_editor_z3518e7.png
  29. 二进制
      public/images/history_msg35065c.png
  30. 二进制
      public/images/icon13_arrow_right_gray218877.png
  31. 二进制
      public/images/icon16_loading_light218877.gif
  32. 二进制
      public/images/icon18_loading_default218877.gif
  33. 二进制
      public/images/icon18_loading_primary218877.gif
  34. 二进制
      public/images/icon32_loading_dark218877.gif
  35. 二进制
      public/images/icon32_loading_light218877.gif
  36. 二进制
      public/images/icon40_loading_gray218877.gif
  37. 二进制
      public/images/icon40_loading_white218877.gif
  38. 二进制
      public/images/icon_memu_function.png
  39. 二进制
      public/images/icon_memu_function_selected.png
  40. 二进制
      public/images/icon_memu_manage.png
  41. 二进制
      public/images/icon_memu_manage_selected.png
  42. 二进制
      public/images/icon_memu_statistics.png
  43. 二进制
      public/images/icon_memu_statistics_selected.png
  44. 二进制
      public/images/icon_menu_adclient.png
  45. 二进制
      public/images/icon_menu_advert.png
  46. 二进制
      public/images/icon_menu_advert_selected.png
  47. 二进制
      public/images/icon_menu_host.png
  48. 二进制
      public/images/icon_menu_host_selected.png
  49. 二进制
      public/images/icon_menu_nav_next2968da.png
  50. 二进制
      public/images/icon_menu_nav_prev2968da.png
  51. 二进制
      public/images/icon_menu_service_selected.png
  52. 二进制
      public/images/icon_menu_setting.png
  53. 二进制
      public/images/icon_menu_setting_selected.png
  54. 二进制
      public/images/icon_menu_store.png
  55. 二进制
      public/images/icon_menu_store_selected.png
  56. 二进制
      public/images/icon_noie6218877.png
  57. 1 0
      public/images/index.css.bak
  58. 二进制
      public/images/index_z354723.png
  59. 2 0
      public/images/media_dialog&emotion_editor&msg_tab&emoji&msg_sender&tooltip.css.bak
  60. 二进制
      public/images/media_dialog_z27dcd8.png
  61. 二进制
      public/images/msg_sender_z35e455.png
  62. 二进制
      public/images/msg_tab_z25df2d.png
  63. 二进制
      public/images/pic_menu_preview2968da.png
  64. 二进制
      public/img/bg/cloud.jpg
  65. 二进制
      public/img/bg/login.png
  66. 二进制
      public/img/bg/star-squashed.jpg
  67. 二进制
      public/img/code/qq-code.jpg
  68. 二进制
      public/img/code/wechat-code.jpg
  69. 二进制
      public/img/login.png
  70. 二进制
      public/img/logo.png
  71. 55 0
      public/index.html
  72. 6 0
      public/svg/loading-spin.svg
  73. 26 0
      src/App.vue
  74. 63 0
      src/api/activiti/activiti.js
  75. 63 0
      src/api/activiti/leave-bill.js
  76. 40 0
      src/api/activiti/process.js
  77. 48 0
      src/api/activiti/task.js
  78. 56 0
      src/api/admin/client.js
  79. 56 0
      src/api/admin/dept.js
  80. 101 0
      src/api/admin/dict.js
  81. 64 0
      src/api/admin/log.js
  82. 72 0
      src/api/admin/menu.js
  83. 88 0
      src/api/admin/role.js
  84. 41 0
      src/api/admin/route.js
  85. 56 0
      src/api/admin/sys-file.js
  86. 56 0
      src/api/admin/sys-public-param.js
  87. 56 0
      src/api/admin/sys-social-details.js
  88. 56 0
      src/api/admin/tenant.js
  89. 33 0
      src/api/admin/token.js
  90. 63 0
      src/api/admin/user.js
  91. 56 0
      src/api/daemon/execution-log.js
  92. 56 0
      src/api/daemon/status-trace-log.js
  93. 10 0
      src/api/daemon/sys-job-log.js
  94. 97 0
      src/api/daemon/sys-job.js
  95. 56 0
      src/api/gen/form.js
  96. 109 0
      src/api/gen/gen.js
  97. 66 0
      src/api/inventory/sgtimesheet.js
  98. 91 0
      src/api/login.js
  99. 33 0
      src/api/monitor/monitor.js
  100. 0 0
      src/api/mp/wxaccount.js

+ 3 - 0
.browserslistrc

@@ -0,0 +1,3 @@
+> 1%
+last 2 versions
+not ie <= 8

+ 15 - 0
.editorconfig

@@ -0,0 +1,15 @@
+# http://editorconfig.org
+
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 2
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+insert_final_newline = false
+trim_trailing_whitespace = false

+ 4 - 0
.eslintignore

@@ -0,0 +1,4 @@
+build/*.js
+src/assets
+public
+dist

+ 215 - 0
.eslintrc.js

@@ -0,0 +1,215 @@
+module.exports = {
+  root: true,
+  parserOptions: {
+    parser: 'babel-eslint',
+    sourceType: 'module'
+  },
+  env: {
+    browser: true,
+    node: true,
+    es6: true
+  },
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
+
+  // add your custom rules here
+  // it is base on https://github.com/vuejs/eslint-config-vue
+  rules: {
+    'vue/max-attributes-per-line': [2, {
+      'singleline': 10,
+      'multiline': {
+        'max': 1,
+        'allowFirstLine': false
+      }
+    }],
+    'vue/html-self-closing': ['error', {
+      'html': {
+        'void': 'any',
+        'normal': 'any',
+        'component': 'any'
+      },
+      'svg': 'any',
+      'math': 'any'
+    }],
+    'vue/singleline-html-element-content-newline': 'off',
+    'vue/no-parsing-error': [2, { 'invalid-first-character-of-tag-name': false }],
+    'vue/no-use-v-if-with-v-for': 'off',
+    'vue/multiline-html-element-content-newline': 'off',
+    'vue/name-property-casing': [0, 'PascalCase'],
+    'vue/html-closing-bracket-newline': [0, {
+      'singleline': 'never',
+      'multiline': 'always'
+    }],
+    'vue/no-side-effects-in-computed-properties': 0,
+    'accessor-pairs': 2, //在对象中使用getter/setter
+    'arrow-spacing': [2, {
+      'before': true,
+      'after': true
+    }], //=>的前/后括号
+    'block-spacing': [2, 'always'], //块是否需要空格
+    // if while function 后面的{必须与if在同一行,java风格。
+    'brace-style': [2, '1tbs', {
+      'allowSingleLine': true
+    }],
+    //强制驼峰法命名
+    'camelcase': [0, {
+      'properties': 'always'
+    }],
+    // 数组和对象键值对最后一个逗号, never参数:不能带末尾的逗号, always参数:必须带末尾的逗号,
+    // always-multiline:多行模式必须带逗号,单行模式不能带逗号
+    'comma-dangle': [2, 'never'],
+    // 控制逗号前后的空格
+    'comma-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'comma-style': [2, 'last'], // 控制逗号在行尾出现还是在行首出现
+    // 强制在子类构造函数中用super()调用父类构造函数,TypeScrip的编译器也会提示
+    'constructor-super': 2,
+    // 强制object.key 中 . 的位置,参数:
+    // property,'.'号应与属性在同一行
+    // object, '.' 号应与对象名在同一行
+    'dot-location': [2, 'property'],
+    'eol-last': 2, // 文件末尾强制换行
+    'eqeqeq': [2, 'allow-null'], // 使用 === 替代 ==
+    'generator-star-spacing': 0, //生成器函数*的前后空格
+    'handle-callback-err': 0, //nodejs 处理错误
+    'indent': [2, 2, { //缩进风格
+      'SwitchCase': 1
+    }],
+    // JSX 属性中一致使用双引号或单引号
+    'jsx-quotes': [2, 'prefer-single'],
+    //对象字面量中冒号的前后空格
+    'key-spacing': [2, {
+      'beforeColon': false,
+      'afterColon': true
+    }],
+    'keyword-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    //函数名首行大写必须使用new方式调用,首行小写必须用不带new方式调用
+    'new-cap': [2, {
+      'newIsCap': true,
+      'capIsNew': false
+    }],
+    'new-parens': 2, //new时必须加小括号
+    'no-array-constructor': 2, //禁止使用数组构造器
+    'no-caller': 2, //禁止使用arguments.caller或arguments.callee
+    'no-console': process.env.NODE_ENV === 'production' ? 2 : 0, //禁止使用console
+    'no-class-assign': 2, //禁止给类赋值
+    'no-cond-assign': 2, //禁止在条件表达式中使用赋值语句
+    'no-const-assign': 2, //禁止修改const声明的变量
+    'no-control-regex': 0, //禁止在正则表达式中使用控制字符
+    'no-delete-var': 2, //不能对var声明的变量使用delete操作符
+    'no-dupe-args': 2, //函数参数不能重复
+    'no-dupe-class-members': 2, //不允许类中出现重复的声明
+    'no-dupe-keys': 2, //在创建对象字面量时不允许键重复 {a:1,a:1}
+    'no-duplicate-case': 2, //switch中的case标签不能重复
+    'no-empty-character-class': 0, //正则表达式中的[]内容不能为空
+    'no-empty-pattern': 0,
+    'no-eval': 0, //禁止使用eval
+    'no-ex-assign': 2, //禁止给catch语句中的异常参数赋值
+    'no-extend-native': 2, //禁止扩展native对象
+    'no-extra-bind': 2, //禁止不必要的函数绑定
+    'no-extra-boolean-cast': 2, //禁止不必要的bool转换
+    'no-extra-parens': [2, 'functions'], //禁止非必要的括号
+    'no-fallthrough': 2, //禁止switch穿透
+    'no-floating-decimal': 2, //禁止省略浮点数中的0 .5 3.
+    'no-func-assign': 2, //禁止重复的函数声明
+    'no-implied-eval': 2, //禁止使用隐式eval
+    'no-inner-declarations': [2, 'functions'], //禁止在块语句中使用声明(变量或函数)
+    'no-invalid-regexp': 2, //禁止无效的正则表达式
+    'no-irregular-whitespace': 2, //不能有不规则的空格
+    'no-iterator': 2, //禁止使用__iterator__ 属性
+    'no-label-var': 2, //label名不能与var声明的变量名相同
+    'no-labels': [2, { //禁止标签声明
+      'allowLoop': false,
+      'allowSwitch': false
+    }],
+    'no-lone-blocks': 2, //禁止不必要的嵌套块
+    'no-mixed-spaces-and-tabs': 2, //禁止混用tab和空格
+    'no-multi-spaces': 2, //不能用多余的空格
+    'no-multi-str': 2, //字符串不能用\换行
+    'no-multiple-empty-lines': [0, {
+      'max': 1
+    }], //空行最多不能超过1行
+    'no-native-reassign': 2, //不能重写native对象
+    'no-negated-in-lhs': 2, //in 操作符的左边不能有!
+    'no-new-object': 2, //禁止使用new Object()
+    'no-new-require': 2, //禁止使用new require
+    'no-new-symbol': 2, //禁止使用new symbol
+    'no-new-wrappers': 2, //禁止使用new创建包装实例,new String new Boolean new Number
+    'no-obj-calls': 0, //不能调用内置的全局对象,比如Math() JSON()
+    'no-octal': 2, //禁止使用八进制数字
+    'no-octal-escape': 2, //禁止使用八进制转义序列
+    'no-path-concat': 2, //node中不能使用__dirname或__filename做路径拼接
+    'no-proto': 2, //禁止使用__proto__属性
+    'no-redeclare': 2, //禁止重复声明变量
+    'no-regex-spaces': 2, //禁止在正则表达式字面量中使用多个空格 /foo bar/
+    'no-return-assign': [2, 'except-parens'], //return 语句中不能有赋值表达式
+    'no-self-assign': 2, //自我分配
+    'no-self-compare': 2, //不能比较自身
+    'no-sequences': 2, //禁止使用逗号运算符
+    'no-shadow-restricted-names': 2, //严格模式中规定的限制标识符不能作为声明时的变量名使用
+    'no-spaced-func': 2, //函数调用时 函数名与()之间不能有空格
+    'no-sparse-arrays': 2, //禁止稀疏数组, [1,,2]
+    'no-this-before-super': 2, //在调用super()之前不能使用this或super
+    'no-throw-literal': 2, //禁止抛出字面量错误 throw "error";
+    'no-trailing-spaces': 0, //一行结束后面不要有空格
+    'no-undef': 2, //不能有未定义的变量
+    'no-undef-init': 2, //变量初始化时不能直接给它赋值为undefined
+    'no-unexpected-multiline': 0, //避免多行表达式
+    'no-unmodified-loop-condition': 0, //检查引用是否在循环中被修改
+    'no-unneeded-ternary': 0, //禁止不必要的嵌套 var isYes = answer === 1 ? true : false;
+    'no-unreachable': 2, //不能有无法执行的代码
+    'no-unsafe-finally': 0,
+    'no-unused-vars': [2, {
+      'vars': 'all',
+      'args': 'none'
+    }], //不能有声明后未被使用的变量或参数
+    'no-useless-call': 2, //禁止不必要的call和apply
+    'no-useless-computed-key': 0, //没有必要使用带文字的计算属性
+    'no-useless-constructor': 2, //可以在不改变类的工作方式的情况下安全地移除的类构造函数
+    'no-useless-escape': 0,
+    'no-whitespace-before-property': 0,
+    'no-with': 2, //禁用with
+    'one-var': 0, //连续声明
+    'operator-linebreak': [2, 'after', {
+      'overrides': {
+        '?': 'before',
+        ':': 'before'
+      }
+    }], //换行时运算符在行尾还是行首
+    'padded-blocks': 0, //块语句内行首行尾是否要空行
+    'quotes': [2, 'single', {
+      'avoidEscape': true,
+      'allowTemplateLiterals': true
+    }], //引号类型 `` "" ''
+    'semi': [2, 'never'], //语句强制分号结尾
+    'semi-spacing': [2, {
+      'before': false,
+      'after': true
+    }], //分号前后空格
+    'space-before-blocks': [2, 'always'], //不以新行开始的块{前面要不要有空格
+    'space-before-function-paren': [2, 'never'], //函数定义时括号前面要不要有空格
+    'space-in-parens': [2, 'never'], //小括号里面要不要有空格
+    'space-infix-ops': 2, //中缀操作符周围要不要有空格
+    'space-unary-ops': [2, {
+      'words': true,
+      'nonwords': false
+    }], //一元运算符的前/后要不要加空格
+    'spaced-comment': 0, //注释风格不要有空格什么的
+    'template-curly-spacing': [2, 'never'],
+    'use-isnan': 2, //禁止比较时使用NaN,只能用isNaN()
+    'valid-typeof': 2, //必须使用合法的typeof的值
+    'wrap-iife': [2, 'any'], //立即执行函数表达式的小括号风格
+    'yield-star-spacing': 0,
+    'yoda': [2, 'never'], //禁止尤达条件
+    'prefer-const': 2, //首选const
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, //禁止使用debugger
+    'object-curly-spacing': [2, 'always', {
+      objectsInObjects: false
+    }], //大括号内是否允许不必要的空格
+    'array-bracket-spacing': [2, 'never'] //是否允许非空数组里面有多余的空格
+  }
+}

+ 28 - 0
.gitignore

@@ -0,0 +1,28 @@
+.DS_Store
+node_modules
+/dist
+
+/tests/e2e/videos/
+/tests/e2e/screenshots/
+
+# local env files
+.env.local
+.env.*.local
+
+# Log files
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw*
+
+# Lock File
+package-lock.json
+yarn.lock

+ 5 - 0
.postcssrc.js

@@ -0,0 +1,5 @@
+module.exports = {
+  plugins: {
+    autoprefixer: {}
+  }
+}

+ 13 - 0
Dockerfile

@@ -0,0 +1,13 @@
+FROM nginx
+ 
+COPY dist /usr/share/nginx/html/
+ 
+RUN rm /etc/nginx/conf.d/default.conf
+ 
+ADD default.conf /etc/nginx/conf.d/
+
+WORKDIR /usr/share/nginx/html
+
+RUN chmod -R a+rx *
+
+RUN /bin/bash -c 'echo init ok'

+ 27 - 0
README.md

@@ -0,0 +1,27 @@
+## 协议和授权
+
+pigX并非一个开源软件,作者保留全部的权利。
+
+### 🌹权益
+
+1. 个人使用
+2. 允许用于学习、毕设等。
+
+### 🚫禁止  
+
+1. 将本项目的部分或全部代码和资源进行任何形式的再发行(尤其上传GitHub、Gitee )
+2. 利用本项目的部分或全部代码和资源进行`任何商业行为`
+
+## 贡献代码
+
+pigX并非一个开源项目,也不是社区共同创造,其全部功能由作者独立完成。
+
+如果你愿意放弃所有权利,并将权利无条件转让给pigX作者,欢迎您贡献代码,当然会给予不等金额奖励。
+
+## 提交反馈
+
+1. 欢迎提交 issue,请写清楚遇到问题的原因,浏览器和操作系统环境,重现的流程。
+如果有开发能力,建议在本地调试出出错的代码。
+
+2. 不接受`功能请求`的 issue,功能请求可能会被直接关闭,请谅解(正确的方式是打赏并附言)。
+

+ 5 - 0
babel.config.js

@@ -0,0 +1,5 @@
+module.exports = {
+  presets: [
+    '@vue/app'
+  ]
+}

+ 25 - 0
default.conf

@@ -0,0 +1,25 @@
+server {
+    listen 80;
+    server_name 192.168.20.56;
+    root   /usr/share/nginx/html;
+    index  index.html index.htm;
+    
+    # 3.8 以后必须开启压缩
+    gzip on;
+    gzip_static on;
+    gzip_min_length 1k;
+    gzip_comp_level 4;
+    gzip_proxied any;
+    gzip_types text/plain text/xml text/css;
+    gzip_vary on;
+    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
+    location ~* ^/(actuator|code|auth|admin|gen|daemon|tx|act|monitor|mp|job|pay) {
+       proxy_pass http://192.168.20.56:9999;
+       #proxy_set_header Host $http_host;
+       proxy_connect_timeout 15s;
+       proxy_send_timeout 15s;
+       proxy_read_timeout 15s;
+       proxy_set_header X-Real-IP $remote_addr;
+       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+    }
+}

+ 55 - 0
package.json

@@ -0,0 +1,55 @@
+{
+  "name": "pigx-ui",
+  "version": "3.7.0",
+  "private": true,
+  "scripts": {
+    "pre": "cnpm install || yarn --registry https://registry.npm.taobao.org || npm install --registry https://registry.npm.taobao.org ",
+    "dev": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "lint": "vue-cli-service lint"
+  },
+  "dependencies": {
+    "@chenfengyuan/vue-qrcode": "^1.0.1",
+    "avue-plugin-formdesign": "^1.0.2",
+    "avue-plugin-ueditor": "^0.0.6",
+    "axios": "^0.18.0",
+    "babel-polyfill": "^6.26.0",
+    "classlist-polyfill": "^1.2.0",
+    "clipboard": "^2.0.4",
+    "crypto-js": "^3.1.9-1",
+    "echarts": "^4.2.1",
+    "element-ui": "^2.12.0",
+    "js-cookie": "^2.2.0",
+    "nprogress": "^0.2.0",
+    "script-loader": "^0.7.2",
+    "sockjs-client": "^1.0.0",
+    "stomp-websocket": "^2.3.4-next",
+    "vue": "^2.6.10",
+    "vue-axios": "^2.1.2",
+    "vue-clipboard2": "^0.3.0",
+    "vue-cron": "^1.0.9",
+    "vue-echarts": "^4.0.1",
+    "vue-json-editor": "^1.2.3",
+    "vue-json-tree-view": "^2.1.4",
+    "vue-router": "^3.0.2",
+    "vuex": "^3.0.1"
+  },
+  "devDependencies": {
+    "@vue/cli-plugin-babel": "~3.8.0",
+    "@vue/cli-service": "~3.8.4",
+    "chai": "^4.1.2",
+    "node-sass": "^4.9.0",
+    "sass-loader": "^7.0.1",
+    "vue-template-compiler": "^2.6.10"
+  },
+  "lint-staged": {
+    "*.js": [
+      "vue-cli-service lint",
+      "git add"
+    ],
+    "*.vue": [
+      "vue-cli-service lint",
+      "git add"
+    ]
+  }
+}

文件差异内容过多而无法显示
+ 11 - 0
public/cdn/animate/3.5.2/animate.css


+ 54 - 0
public/cdn/avue/avue.css

@@ -0,0 +1,54 @@
+html,
+body,
+#app {
+    height: 100%;
+    margin: 0;
+    padding: 0;
+}
+
+.avue-home {
+    background-color: #303133;
+    height: 100%;
+    display: flex;
+    flex-direction: column;
+}
+
+.avue-home__main {
+    user-select: none;
+    width: 100%;
+    flex-grow: 1;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    flex-direction: column;
+}
+
+.avue-home__footer {
+    width: 100%;
+    flex-grow: 0;
+    text-align: center;
+    padding: 1em 0;
+}
+
+.avue-home__footer > a {
+    font-size: 12px;
+    color: #ABABAB;
+    text-decoration: none;
+}
+
+.avue-home__loading {
+    height: 32px;
+    width: 32px;
+    margin-bottom: 20px;
+}
+
+.avue-home__title {
+    color: #FFF;
+    font-size: 14px;
+    margin-bottom: 10px;
+}
+
+.avue-home__sub-title {
+    color: #ABABAB;
+    font-size: 12px;
+}

文件差异内容过多而无法显示
+ 1 - 0
public/cdn/avue/index.css


文件差异内容过多而无法显示
+ 8 - 0
public/cdn/avue/index.js


文件差异内容过多而无法显示
+ 9 - 0
public/cdn/axios/1.0.0/axios.min.js


+ 31 - 0
public/cdn/iconfont/1.0.0/index.css

@@ -0,0 +1,31 @@
+
+[class^="icon-"]{
+	font-family: "iconfont" !important;
+	/* 以下内容参照第三方图标库本身的规则 */
+	font-size: 18px !important;
+	font-style: normal;
+	-webkit-font-smoothing: antialiased;
+	-moz-osx-font-smoothing: grayscale;
+}
+.avue-icon-select__item i {
+  font-family: "iconfont" !important;
+  /* 以下内容参照第三方图标库本身的规则 */
+  font-size: 24px !important;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+.el-menu-item [class^=icon-] {
+    margin-right: 5px;
+    width: 24px;
+    text-align: center;
+    font-size: 18px;
+    vertical-align: middle;
+}
+.el-submenu [class^=icon-] {
+    vertical-align: middle;
+    margin-right: 5px;
+    width: 24px;
+    text-align: center;
+    font-size: 18px;
+}

+ 193 - 0
public/cdn/store/1.3.20/store.js

@@ -0,0 +1,193 @@
+'use strict'
+// Module export pattern from
+// https://github.com/umdjs/umd/blob/master/returnExports.js
+;(function (root, factory) {
+  if (typeof define === 'function' && define.amd) {
+    // AMD. Register as an anonymous module.
+    define([], factory)
+  } else if (typeof exports === 'object') {
+    // Node. Does not work with strict CommonJS, but
+    // only CommonJS-like environments that support module.exports,
+    // like Node.
+    module.exports = factory()
+  } else {
+    // Browser globals (root is window)
+    root.store = factory()
+  }
+}(this, function () {
+  // Store.js
+  var store = {}
+
+  var win = (typeof window !== 'undefined' ? window : global)
+
+  var doc = win.document
+
+  var localStorageName = 'localStorage'
+
+  var scriptTag = 'script'
+
+  var storage
+
+  store.disabled = false
+  store.version = '1.3.20'
+  store.set = function (key, value) {}
+  store.get = function (key, defaultVal) {}
+  store.has = function (key) { return store.get(key) !== undefined }
+  store.remove = function (key) {}
+  store.clear = function () {}
+  store.transact = function (key, defaultVal, transactionFn) {
+    if (transactionFn == null) {
+      transactionFn = defaultVal
+      defaultVal = null
+    }
+    if (defaultVal == null) {
+      defaultVal = {}
+    }
+    var val = store.get(key, defaultVal)
+    transactionFn(val)
+    store.set(key, val)
+  }
+  store.getAll = function () {}
+  store.forEach = function () {}
+
+  store.serialize = function (value) {
+    return JSON.stringify(value)
+  }
+  store.deserialize = function (value) {
+    if (typeof value !== 'string') { return undefined }
+    try { return JSON.parse(value) } catch (e) { return value || undefined }
+  }
+
+  // Functions to encapsulate questionable FireFox 3.6.13 behavior
+  // when about.config::dom.storage.enabled === false
+  // See https://github.com/marcuswestin/store.js/issues#issue/13
+  function isLocalStorageNameSupported () {
+    try { return (localStorageName in win && win[localStorageName]) } catch (err) { return false }
+  }
+
+  if (isLocalStorageNameSupported()) {
+    storage = win[localStorageName]
+    store.set = function (key, val) {
+      if (val === undefined) { return store.remove(key) }
+      storage.setItem(key, store.serialize(val))
+      return val
+    }
+    store.get = function (key, defaultVal) {
+      var val = store.deserialize(storage.getItem(key))
+      return (val === undefined ? defaultVal : val)
+    }
+    store.remove = function (key) { storage.removeItem(key) }
+    store.clear = function () { storage.clear() }
+    store.getAll = function () {
+      var ret = {}
+      store.forEach(function (key, val) {
+        ret[key] = val
+      })
+      return ret
+    }
+    store.forEach = function (callback) {
+      for (var i = 0; i < storage.length; i++) {
+        var key = storage.key(i)
+        callback(key, store.get(key))
+      }
+    }
+  } else if (doc && doc.documentElement.addBehavior) {
+    var storageOwner,
+      storageContainer
+    // Since #userData storage applies only to specific paths, we need to
+    // somehow link our data to a specific path.  We choose /favicon.ico
+    // as a pretty safe option, since all browsers already make a request to
+    // this URL anyway and being a 404 will not hurt us here.  We wrap an
+    // iframe pointing to the favicon in an ActiveXObject(htmlfile) object
+    // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)
+    // since the iframe access rules appear to allow direct access and
+    // manipulation of the document element, even for a 404 page.  This
+    // document can be used instead of the current document (which would
+    // have been limited to the current path) to perform #userData storage.
+    try {
+      storageContainer = new ActiveXObject('htmlfile')
+      storageContainer.open()
+      storageContainer.write('<' + scriptTag + '>document.w=window</' + scriptTag + '><iframe src="/favicon.ico"></iframe>')
+      storageContainer.close()
+      storageOwner = storageContainer.w.frames[0].document
+      storage = storageOwner.createElement('div')
+    } catch (e) {
+      // somehow ActiveXObject instantiation failed (perhaps some special
+      // security settings or otherwse), fall back to per-path storage
+      storage = doc.createElement('div')
+      storageOwner = doc.body
+    }
+    var withIEStorage = function (storeFunction) {
+      return function () {
+        var args = Array.prototype.slice.call(arguments, 0)
+        args.unshift(storage)
+        // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx
+        // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx
+        storageOwner.appendChild(storage)
+        storage.addBehavior('#default#userData')
+        storage.load(localStorageName)
+        var result = storeFunction.apply(store, args)
+        storageOwner.removeChild(storage)
+        return result
+      }
+    }
+
+    // In IE7, keys cannot start with a digit or contain certain chars.
+    // See https://github.com/marcuswestin/store.js/issues/40
+    // See https://github.com/marcuswestin/store.js/issues/83
+    var forbiddenCharsRegex = new RegExp("[!\"#$%&'()*+,/\\\\:;<=>?@[\\]^`{|}~]", 'g')
+    var ieKeyFix = function (key) {
+      return key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___')
+    }
+    store.set = withIEStorage(function (storage, key, val) {
+      key = ieKeyFix(key)
+      if (val === undefined) { return store.remove(key) }
+      storage.setAttribute(key, store.serialize(val))
+      storage.save(localStorageName)
+      return val
+    })
+    store.get = withIEStorage(function (storage, key, defaultVal) {
+      key = ieKeyFix(key)
+      var val = store.deserialize(storage.getAttribute(key))
+      return (val === undefined ? defaultVal : val)
+    })
+    store.remove = withIEStorage(function (storage, key) {
+      key = ieKeyFix(key)
+      storage.removeAttribute(key)
+      storage.save(localStorageName)
+    })
+    store.clear = withIEStorage(function (storage) {
+      var attributes = storage.XMLDocument.documentElement.attributes
+      storage.load(localStorageName)
+      for (var i = attributes.length - 1; i >= 0; i--) {
+        storage.removeAttribute(attributes[i].name)
+      }
+      storage.save(localStorageName)
+    })
+    store.getAll = function (storage) {
+      var ret = {}
+      store.forEach(function (key, val) {
+        ret[key] = val
+      })
+      return ret
+    }
+    store.forEach = withIEStorage(function (storage, callback) {
+      var attributes = storage.XMLDocument.documentElement.attributes
+      for (var i = 0, attr; attr = attributes[i]; ++i) {
+        callback(attr.name, store.deserialize(storage.getAttribute(attr.name)))
+      }
+    })
+  }
+
+  try {
+    var testKey = '__storejs__'
+    store.set(testKey, testKey)
+    if (store.get(testKey) != testKey) { store.disabled = true }
+    store.remove(testKey)
+  } catch (e) {
+    store.disabled = true
+  }
+  store.enabled = !store.disabled
+
+  return store
+}))

二进制
public/favicon.ico


二进制
public/images/banner_control23b288.png


文件差异内容过多而无法显示
+ 1 - 0
public/images/base.css.bak


二进制
public/images/base_z36574a.png


二进制
public/images/bg_mobile21d289.png


二进制
public/images/bg_mobile_foot_default2968da.png


二进制
public/images/bg_mobile_head_default2968da.png


二进制
public/images/card_tpl_deco.png


二进制
public/images/emoji218877.png


二进制
public/images/emotion_editor_z3518e7.png


二进制
public/images/history_msg35065c.png


二进制
public/images/icon13_arrow_right_gray218877.png


二进制
public/images/icon16_loading_light218877.gif


二进制
public/images/icon18_loading_default218877.gif


二进制
public/images/icon18_loading_primary218877.gif


二进制
public/images/icon32_loading_dark218877.gif


二进制
public/images/icon32_loading_light218877.gif


二进制
public/images/icon40_loading_gray218877.gif


二进制
public/images/icon40_loading_white218877.gif


二进制
public/images/icon_memu_function.png


二进制
public/images/icon_memu_function_selected.png


二进制
public/images/icon_memu_manage.png


二进制
public/images/icon_memu_manage_selected.png


二进制
public/images/icon_memu_statistics.png


二进制
public/images/icon_memu_statistics_selected.png


二进制
public/images/icon_menu_adclient.png


二进制
public/images/icon_menu_advert.png


二进制
public/images/icon_menu_advert_selected.png


二进制
public/images/icon_menu_host.png


二进制
public/images/icon_menu_host_selected.png


二进制
public/images/icon_menu_nav_next2968da.png


二进制
public/images/icon_menu_nav_prev2968da.png


二进制
public/images/icon_menu_service_selected.png


二进制
public/images/icon_menu_setting.png


二进制
public/images/icon_menu_setting_selected.png


二进制
public/images/icon_menu_store.png


二进制
public/images/icon_menu_store_selected.png


二进制
public/images/icon_noie6218877.png


文件差异内容过多而无法显示
+ 1 - 0
public/images/index.css.bak


二进制
public/images/index_z354723.png


文件差异内容过多而无法显示
+ 2 - 0
public/images/media_dialog&emotion_editor&msg_tab&emoji&msg_sender&tooltip.css.bak


二进制
public/images/media_dialog_z27dcd8.png


二进制
public/images/msg_sender_z35e455.png


二进制
public/images/msg_tab_z25df2d.png


二进制
public/images/pic_menu_preview2968da.png


二进制
public/img/bg/cloud.jpg


二进制
public/img/bg/login.png


二进制
public/img/bg/star-squashed.jpg


二进制
public/img/code/qq-code.jpg


二进制
public/img/code/wechat-code.jpg


二进制
public/img/login.png


二进制
public/img/logo.png


+ 55 - 0
public/index.html

@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
+  <meta name="apple-mobile-web-app-capable" content="yes">
+  <meta name="apple-mobile-web-app-status-bar-style" content="black">
+  <meta name="format-detection" content="telephone=no">
+  <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
+  <link rel="stylesheet" href="<%= BASE_URL %>cdn/animate/3.5.2/animate.css">
+  <link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/1.0.0/index.css">
+  <link rel="stylesheet" href="<%= BASE_URL %>cdn/avue/avue.css">
+  <link rel="stylesheet" href="<%= BASE_URL %>cdn/avue/index.css">
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+  <title>PigX微服务快速开发框架</title>
+</head>
+
+<body>
+<noscript>
+  <strong>很抱歉,如果没有 JavaScript 支持,网站将不能正常工作。请启用浏览器的 JavaScript 然后继续。</strong>
+</noscript>
+<div id="app">
+  <div class="avue-home">
+    <div class="avue-home__main">
+      <img class="avue-home__loading" src="./svg/loading-spin.svg" alt="loading">
+      <div class="avue-home__title">
+        正在加载资源
+      </div>
+      <div class="avue-home__sub-title">
+        初次加载资源可能需要较多时间 请耐心等待
+      </div>
+    </div>
+    <div class="avue-home__footer">
+      <a href="https://pig4cloud.com/zh-cn" target="_blank">
+        Copyright © 2019 pig4cloud.com</a>
+    </div>
+  </div>
+</div>
+<!-- built files will be auto injected -->
+<script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
+<script src="<%= BASE_URL %>cdn/avue/index.js" charset="utf-8"></script>
+<script>
+  var _hmt = _hmt || [];
+  (function() {
+    var hm = document.createElement('script')
+    hm.src = 'https://hm.baidu.com/hm.js?0625618efb027ed02e88da84c121652e'
+    var s = document.getElementsByTagName('script')[0]
+    s.parentNode.insertBefore(hm, s)
+  })()
+</script>
+</body>
+
+</html>

+ 6 - 0
public/svg/loading-spin.svg

@@ -0,0 +1,6 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="white">
+  <path opacity=".25" d="M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"/>
+  <path d="M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z">
+    <animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="0.8s" repeatCount="indefinite" />
+  </path>
+</svg>

+ 26 - 0
src/App.vue

@@ -0,0 +1,26 @@
+<template>
+  <div id="app">
+    <router-view/>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'App',
+  data() {
+    return {}
+  },
+  computed: {},
+  watch: {},
+  created() {
+  },
+  methods: {}
+}
+</script>
+<style lang="scss">
+  #app {
+    width: 100%;
+    height: 100%;
+    overflow: hidden;
+  }
+</style>

+ 63 - 0
src/api/activiti/activiti.js

@@ -0,0 +1,63 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/act/model',
+    method: 'get',
+    params: query
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/act/model/' + id,
+    method: 'delete'
+  })
+}
+
+export function deploy(id) {
+  return request({
+    url: '/act/model/deploy/' + id,
+    method: 'post'
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/act/model/insert',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/log/' + id,
+    method: 'get'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/log/',
+    method: 'put',
+    data: obj
+  })
+}

+ 63 - 0
src/api/activiti/leave-bill.js

@@ -0,0 +1,63 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/act/leave-bill/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/act/leave-bill',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/act/leave-bill/' + id,
+    method: 'get'
+  })
+}
+
+export function submit(id) {
+  return request({
+    url: '/act/leave-bill/submit/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/act/leave-bill/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/act/leave-bill/',
+    method: 'put',
+    data: obj
+  })
+}

+ 40 - 0
src/api/activiti/process.js

@@ -0,0 +1,40 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/act/process',
+    method: 'get',
+    params: query
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/act/process/' + id,
+    method: 'delete'
+  })
+}
+
+export function status(id, type) {
+  return request({
+    url: '/act/process/status/' + id + '/' + type,
+    method: 'put'
+  })
+}

+ 48 - 0
src/api/activiti/task.js

@@ -0,0 +1,48 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/act/task/todo',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchDetail(id) {
+  return request({
+    url: '/act/task/' + id,
+    method: 'get'
+  })
+}
+
+export function fetchComment(id) {
+  return request({
+    url: '/act/task/comment/' + id,
+    method: 'get'
+  })
+}
+
+export function doTask(obj) {
+  return request({
+    url: '/act/task',
+    method: 'post',
+    data: obj
+  })
+}

+ 56 - 0
src/api/admin/client.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/client/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/client/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/client/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/client/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/client',
+    method: 'put',
+    data: obj
+  })
+}

+ 56 - 0
src/api/admin/dept.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchTree(query) {
+  return request({
+    url: '/admin/dept/tree',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/dept/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/dept/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/dept/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/dept/',
+    method: 'put',
+    data: obj
+  })
+}

+ 101 - 0
src/api/admin/dict.js

@@ -0,0 +1,101 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/dict/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchItemList(query) {
+  return request({
+    url: '/admin/dict/item/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addItemObj(obj) {
+  return request({
+    url: '/admin/dict/item',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getItemObj(id) {
+  return request({
+    url: '/admin/dict/item/' + id,
+    method: 'get'
+  })
+}
+
+export function delItemObj(id) {
+  return request({
+    url: '/admin/dict/item/' + id,
+    method: 'delete'
+  })
+}
+
+export function putItemObj(obj) {
+  return request({
+    url: '/admin/dict/item',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/dict/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/dict/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(row) {
+  return request({
+    url: '/admin/dict/' + row.id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/dict/',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function remote(type) {
+  return request({
+    url: '/admin/dict/type/' + type,
+    method: 'get'
+  })
+}

+ 64 - 0
src/api/admin/log.js

@@ -0,0 +1,64 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/log/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/log/' + id,
+    method: 'delete'
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/log/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/log/' + id,
+    method: 'get'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/log/',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function sendLogs(logsList) {
+  return request({
+    url: '/admin/log/logs',
+    method: 'post',
+    data: logsList
+  })
+}

+ 72 - 0
src/api/admin/menu.js

@@ -0,0 +1,72 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function getMenu(id) {
+  return request({
+    url: '/admin/menu',
+    params: {parentId: id},
+    method: 'get'
+  })
+}
+
+export function getTopMenu() {
+  return request({
+    url: '/admin/menu',
+    params: {type: 'top'},
+    method: 'get'
+  })
+}
+
+export function fetchMenuTree(lazy, parentId) {
+  return request({
+    url: '/admin/menu/tree',
+    method: 'get',
+    params: {lazy: lazy, parentId: parentId}
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/menu',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/menu/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/menu/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/menu',
+    method: 'put',
+    data: obj
+  })
+}

+ 88 - 0
src/api/admin/role.js

@@ -0,0 +1,88 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function roleList() {
+  return request({
+    url: '/admin/role/roleList',
+    method: 'get'
+  })
+}
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/role/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function deptRoleList() {
+  return request({
+    url: '/admin/role/list',
+    method: 'get'
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/role/' + id,
+    method: 'get'
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/role',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/role',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/role/' + id,
+    method: 'delete'
+  })
+}
+
+export function permissionUpd(roleId, menuIds) {
+  return request({
+    url: '/admin/role/menu',
+    method: 'put',
+    data: {
+      roleId: roleId,
+      menuIds: menuIds
+    }
+  })
+}
+
+export function fetchRoleTree(roleId) {
+  return request({
+    url: '/admin/menu/tree/' + roleId,
+    method: 'get'
+  })
+}

+ 41 - 0
src/api/admin/route.js

@@ -0,0 +1,41 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/route',
+    method: 'get',
+    params: query
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/route',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function refreshObj() {
+  return request({
+    url: '/actuator/refresh',
+    method: 'post'
+  })
+}

+ 56 - 0
src/api/admin/sys-file.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/sys-file/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/sys-file',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/sys-file/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/sys-file/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/sys-file',
+    method: 'put',
+    data: obj
+  })
+}

+ 56 - 0
src/api/admin/sys-public-param.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/param/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/param',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/param/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/param/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/param',
+    method: 'put',
+    data: obj
+  })
+}

+ 56 - 0
src/api/admin/sys-social-details.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/social/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/social/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/social/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/social/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/social/',
+    method: 'put',
+    data: obj
+  })
+}

+ 56 - 0
src/api/admin/tenant.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/tenant/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/tenant',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/tenant/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/tenant/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/tenant',
+    method: 'put',
+    data: obj
+  })
+}

+ 33 - 0
src/api/admin/token.js

@@ -0,0 +1,33 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/token/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function delObj(token) {
+  return request({
+    url: '/admin/token/' + token,
+    method: 'delete'
+  })
+}

+ 63 - 0
src/api/admin/user.js

@@ -0,0 +1,63 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/admin/user/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/admin/user',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/admin/user/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/admin/user/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/admin/user',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function getDetails(obj) {
+  return request({
+    url: '/admin/user/details/' + obj,
+    method: 'get'
+  })
+}

+ 56 - 0
src/api/daemon/execution-log.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/daemon/execution-log/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/daemon/execution-log',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/daemon/execution-log/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/daemon/execution-log/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/daemon/execution-log',
+    method: 'put',
+    data: obj
+  })
+}

+ 56 - 0
src/api/daemon/status-trace-log.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/daemon/status-trace-log/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/daemon/status-trace-log',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/daemon/status-trace-log/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/daemon/status-trace-log/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/daemon/status-trace-log',
+    method: 'put',
+    data: obj
+  })
+}

+ 10 - 0
src/api/daemon/sys-job-log.js

@@ -0,0 +1,10 @@
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/job/sys-job-log/page',
+    method: 'get',
+    params: query
+  })
+}
+

+ 97 - 0
src/api/daemon/sys-job.js

@@ -0,0 +1,97 @@
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/job/sys-job/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchLogList(query) {
+  return request({
+    url: '/job/sys-job/job-log',
+    method: 'get',
+    params: query
+  })
+}
+
+export function shutdownJobsRa() {
+  return request({
+    url: '/job/sys-job/shutdown-jobs',
+    method: 'post'
+  })
+}
+
+export function startJobsRa() {
+  return request({
+    url: '/job/sys-job/start-jobs',
+    method: 'post'
+  })
+}
+
+export function refreshJobsRa() {
+  return request({
+    url: '/job/sys-job/refresh-jobs',
+    method: 'post'
+  })
+}
+
+export function startJobRa(jobId) {
+  return request({
+    url: '/job/sys-job/start-job/' + jobId,
+    method: 'post'
+  })
+}
+
+export function runJobRa(jobId) {
+  return request({
+    url: '/job/sys-job/run-job/' + jobId,
+    method: 'post'
+  })
+}
+
+export function shutDownJobRa(jobId) {
+  return request({
+    url: '/job/sys-job/shutdown-job/' + jobId,
+    method: 'post'
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/job/sys-job',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/job/sys-job/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/job/sys-job/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/job/sys-job',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function isValidTaskName(query) {
+  return request({
+    url: '/job/sys-job/is-valid-task-name',
+    method: 'get',
+    params: query
+  })
+}

+ 56 - 0
src/api/gen/form.js

@@ -0,0 +1,56 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/gen/form/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/gen/form',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/gen/form/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/gen/form/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/gen/form',
+    method: 'put',
+    data: obj
+  })
+}

+ 109 - 0
src/api/gen/gen.js

@@ -0,0 +1,109 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/gen/generator/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchDsList(query) {
+  return request({
+    url: '/gen/dsconf/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchSelectDsList() {
+  return request({
+    url: '/gen/dsconf/list',
+    method: 'get'
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/gen/dsconf/',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/gen/dsconf/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/gen/dsconf/' + id,
+    method: 'delete'
+  })
+}
+
+export function putObj(obj) {
+  return request({
+    url: '/gen/dsconf/',
+    method: 'put',
+    data: obj
+  })
+}
+
+export function handleDown(table) {
+  return request({
+    url: '/gen/generator/code',
+    method: 'post',
+    data: table,
+    responseType: 'arraybuffer'
+  }).then((response) => { // 处理返回的文件流
+    const blob = new Blob([response.data], {type: 'application/zip'})
+    const filename = table.tableName + '.zip'
+    const link = document.createElement('a')
+    link.href = URL.createObjectURL(blob)
+    link.download = filename
+    document.body.appendChild(link)
+    link.click()
+    window.setTimeout(function () {
+      URL.revokeObjectURL(blob)
+      document.body.removeChild(link)
+    }, 0)
+  })
+}
+
+
+export function getForm(tableName, dsName) {
+  return request({
+    url: '/gen/form/info',
+    params: {tableName: tableName, dsName: dsName},
+    method: 'get'
+  })
+}
+
+export function postForm(formInfo, tableName, dsId) {
+  return request({
+    url: '/gen/form/',
+    method: 'post',
+    data: Object.assign({formInfo, tableName, dsId})
+  })
+}

+ 66 - 0
src/api/inventory/sgtimesheet.js

@@ -0,0 +1,66 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchList(query) {
+  return request({
+    url: '/inventory/sgtimesheet/page',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addObj(obj) {
+  return request({
+    url: '/inventory/sgtimesheet',
+    method: 'post',
+    data: obj
+  })
+}
+
+export function getObj(id) {
+  return request({
+    url: '/inventory/sgtimesheet/' + id,
+    method: 'get'
+  })
+}
+
+export function delObj(id) {
+  return request({
+    url: '/inventory/sgtimesheet/' + id,
+    method: 'delete'
+  })
+}
+
+
+export function uploadExcel(file) {
+  return request({
+    url: '/inventory/sgtimesheet/excel',
+    method: 'post',
+    data: file
+  })
+}
+
+
+export function putObj(obj) {
+  return request({
+    url: '/inventory/sgtimesheet',
+    method: 'put',
+    data: obj
+  })
+}

+ 91 - 0
src/api/login.js

@@ -0,0 +1,91 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+import request from '@/router/axios'
+import qs from 'qs'
+
+const scope = 'server'
+
+export const loginByUsername = (username, password, code, randomStr) => {
+  let grant_type = 'password'
+  let dataObj = qs.stringify({'username': username, 'password': password})
+
+  return request({
+    url: '/auth/oauth/token',
+    headers: {
+      isToken: false,
+      'TENANT-ID': '1',
+      'Authorization': 'Basic cGlnOnBpZw=='
+    },
+    method: 'post',
+    params: {randomStr, code, grant_type},
+    data: dataObj
+  })
+}
+
+export const refreshToken = (refresh_token) => {
+  const grant_type = 'refresh_token'
+  return request({
+    url: '/auth/oauth/token',
+    headers: {
+      'isToken': false,
+      'TENANT-ID': '1',
+      'Authorization': 'Basic cGlnOnBpZw=='
+    },
+    method: 'post',
+    params: {refresh_token, grant_type, scope}
+  })
+}
+
+export const loginByMobile = (mobile, code) => {
+  const grant_type = 'mobile'
+  return request({
+    url: '/auth/mobile/token/sms',
+    headers: {
+      'TENANT-ID': '1',
+      'Authorization': 'Basic cGlnOnBpZw=='
+    },
+    method: 'post',
+    params: {mobile: 'SMS@' + mobile, code: code, grant_type}
+  })
+}
+
+export const loginBySocial = (state, code) => {
+  const grant_type = 'mobile'
+  return request({
+    url: '/auth/mobile/token/social',
+    headers: {
+      'TENANT-ID': '1',
+      'Authorization': 'Basic cGlnOnBpZw=='
+    },
+    method: 'post',
+    params: {mobile: state + '@' + code, grant_type}
+  })
+}
+
+export const getUserInfo = () => {
+  return request({
+    url: '/admin/user/info',
+    method: 'get'
+  })
+}
+
+export const logout = () => {
+  return request({
+    url: '/auth/token/logout',
+    method: 'delete'
+  })
+}

+ 33 - 0
src/api/monitor/monitor.js

@@ -0,0 +1,33 @@
+/*
+ *    Copyright (c) 2018-2025, lengleng All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the pig4cloud.com developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: lengleng (wangiegie@gmail.com)
+ */
+
+import request from '@/router/axios'
+
+export function fetchInfo() {
+  return request({
+    url: '/monitor/redis/info',
+    method: 'get'
+  })
+}
+
+export function fetchExec(query) {
+  return request({
+    url: '/monitor/redis/exec',
+    method: 'get',
+    params: query
+  })
+}

+ 0 - 0
src/api/mp/wxaccount.js


部分文件因为文件数量过多而无法显示