zzw преди 3 месеца
ревизия
5208a6efc6
променени са 100 файла, в които са добавени 5913 реда и са изтрити 0 реда
  1. 5 0
      .browserslistrc
  2. 14 0
      .editorconfig
  3. 7 0
      .eslintignore
  4. 26 0
      .eslintrc.js
  5. 1 0
      .gitignore
  6. 10 0
      .idea/.gitignore
  7. 3 0
      .stylelintrc.js
  8. 55 0
      .vscode/settings.json
  9. 4 0
      babel.config.js
  10. 50 0
      mock/controller/type.js
  11. 98 0
      mock/index.js
  12. 99 0
      mock/utils/index.js
  13. 131 0
      package.json
  14. 16 0
      prettier.config.js
  15. 335 0
      public/calendar-converter.js
  16. 45 0
      public/config.js
  17. 18 0
      public/eip.js
  18. BIN
      public/favicon.ico
  19. 98 0
      public/hotent.helper.js
  20. 56 0
      public/index.html
  21. BIN
      public/logo.png
  22. 99 0
      public/static/css/loading.css
  23. 299 0
      src/App.vue
  24. 94 0
      src/api/annualReviewPlan.js
  25. 286 0
      src/api/appCenter.js
  26. 38 0
      src/api/auditDocManage.js
  27. 77 0
      src/api/auditDocNoManage.js
  28. 105 0
      src/api/auditEntityManage.js
  29. 80 0
      src/api/auditInitiation.js
  30. 19 0
      src/api/auditManage.js
  31. 70 0
      src/api/auditReviewDocManage.js
  32. 30 0
      src/api/base.js
  33. 262 0
      src/api/catalogManage.js
  34. 18 0
      src/api/commonWords.js
  35. 168 0
      src/api/costFormManage.js
  36. 90 0
      src/api/costSurveyFdTemplate.js
  37. 21 0
      src/api/costSurveyFdTemplateHeaders.js
  38. 24 0
      src/api/costSurveyFdTemplateItems.js
  39. 33 0
      src/api/costSurveyFdTemplateVersion.js
  40. 41 0
      src/api/costSurveyTemplate.js
  41. 41 0
      src/api/costSurveyTemplateHeaders.js
  42. 24 0
      src/api/costSurveyTemplateItems.js
  43. 60 0
      src/api/costSurveyTemplateVersion.js
  44. 58 0
      src/api/costVerifyManage.js
  45. 239 0
      src/api/dictionaryManage.js
  46. 15 0
      src/api/file.js
  47. 19 0
      src/api/financeSheetManage.js
  48. 177 0
      src/api/flow.js
  49. 57 0
      src/api/form.js
  50. 38 0
      src/api/memoManage.js
  51. 135 0
      src/api/newApi.js
  52. 18 0
      src/api/openPlatform.js
  53. 306 0
      src/api/personal.js
  54. 223 0
      src/api/portal.js
  55. 775 0
      src/api/process.js
  56. 8 0
      src/api/publicKey.js
  57. 10 0
      src/api/router.js
  58. 234 0
      src/api/statistics.js
  59. 47 0
      src/api/storeProcess.js
  60. 11 0
      src/api/superviseMattersManage.js
  61. 8 0
      src/api/sysModule.js
  62. 253 0
      src/api/taskCustomizedRelease.js
  63. 14 0
      src/api/taskProgressManage.js
  64. 34 0
      src/api/todoList.js
  65. 109 0
      src/api/uc.js
  66. 75 0
      src/api/user.js
  67. BIN
      src/assets/datav_images/datav_bg1.png
  68. BIN
      src/assets/datav_images/datav_bg2.png
  69. BIN
      src/assets/datav_images/datav_bg3.png
  70. BIN
      src/assets/datav_images/flylineChart/map.jpg
  71. BIN
      src/assets/datav_images/flylineChart/mapCenterPoint.png
  72. BIN
      src/assets/datav_images/flylineChart/mapPoint.png
  73. BIN
      src/assets/datav_images/icon-bar.png
  74. BIN
      src/assets/datav_images/icon-border.png
  75. BIN
      src/assets/datav_images/icon-capsule-chart.png
  76. BIN
      src/assets/datav_images/icon-decoration1.png
  77. BIN
      src/assets/datav_images/icon-decoration10.png
  78. BIN
      src/assets/datav_images/icon-decoration11.png
  79. BIN
      src/assets/datav_images/icon-decoration12.png
  80. BIN
      src/assets/datav_images/icon-decoration2.png
  81. BIN
      src/assets/datav_images/icon-decoration3.png
  82. BIN
      src/assets/datav_images/icon-decoration4.png
  83. BIN
      src/assets/datav_images/icon-decoration5.png
  84. BIN
      src/assets/datav_images/icon-decoration6.png
  85. BIN
      src/assets/datav_images/icon-decoration7.png
  86. BIN
      src/assets/datav_images/icon-decoration8.png
  87. BIN
      src/assets/datav_images/icon-decoration9.png
  88. BIN
      src/assets/datav_images/icon-flyline-chart.png
  89. BIN
      src/assets/datav_images/icon-gauge.png
  90. BIN
      src/assets/datav_images/icon-line.png
  91. BIN
      src/assets/datav_images/icon-percent-pond.png
  92. BIN
      src/assets/datav_images/icon-pie.png
  93. BIN
      src/assets/datav_images/icon-radar.png
  94. BIN
      src/assets/datav_images/icon-ring-chart.png
  95. BIN
      src/assets/datav_images/icon-scatter.png
  96. BIN
      src/assets/datav_images/icon-span.png
  97. BIN
      src/assets/datav_images/icon-water-level-pond.png
  98. BIN
      src/assets/datav_images/tp-bar.png
  99. BIN
      src/assets/datav_images/tp-gauge.png
  100. BIN
      src/assets/datav_images/tp-line.png

+ 5 - 0
.browserslistrc

@@ -0,0 +1,5 @@
+# 支持浏览器配置
+> 1%
+last 2 versions
+not dead
+

+ 14 - 0
.editorconfig

@@ -0,0 +1,14 @@
+# 编辑器配置
+
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false

+ 7 - 0
.eslintignore

@@ -0,0 +1,7 @@
+# .eslintignore
+
+src/assets
+src/icons
+public
+dist
+node_modules

+ 26 - 0
.eslintrc.js

@@ -0,0 +1,26 @@
+module.exports = {
+  root: true,
+  env: {
+    node: true,
+  },
+  extends: ['plugin:vue/recommended', '@vue/prettier'],
+  rules: {
+    'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
+    'vue/no-v-html': 'off',
+  },
+  parserOptions: {
+    parser: 'babel-eslint',
+  },
+  overrides: [
+    {
+      files: [
+        '**/__tests__/*.{j,t}s?(x)',
+        '**/tests/unit/**/*.spec.{j,t}s?(x)',
+      ],
+      env: {
+        jest: true,
+      },
+    },
+  ],
+}

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+node_modules

+ 10 - 0
.idea/.gitignore

@@ -0,0 +1,10 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Environment-dependent path to Maven home directory
+/mavenHomeManager.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 3 - 0
.stylelintrc.js

@@ -0,0 +1,3 @@
+module.exports = {
+  extends: ['stylelint-config-recess-order', 'stylelint-config-prettier'],
+}

+ 55 - 0
.vscode/settings.json

@@ -0,0 +1,55 @@
+{
+  "[vue]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[html]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[javascript]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[json]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "[jsonc]": {
+    "editor.defaultFormatter": "esbenp.prettier-vscode"
+  },
+  "editor.quickSuggestions": {
+    "strings": true
+  },
+  "workbench.colorTheme": "Default Dark Modern",
+  "editor.tabSize": 2,
+  "editor.detectIndentation": false,
+  "emmet.triggerExpansionOnTab": true,
+  "editor.formatOnSave": true,
+  "javascript.format.enable": true,
+  "git.enableSmartCommit": true,
+  "git.autofetch": true,
+  "git.confirmSync": false,
+  "liveServer.settings.donotShowInfoMsg": true,
+  "explorer.confirmDelete": false,
+  "javascript.updateImportsOnFileMove.enabled": "always",
+  "typescript.updateImportsOnFileMove.enabled": "always",
+  "files.exclude": {
+    "**/.idea": true
+  },
+  "editor.codeActionsOnSave": {
+    "source.fixAll.stylelint": "explicit",
+    "source.fixAll.eslint": "explicit"
+  },
+
+  "editor.suggest.snippetsPreventQuickSuggestions": false,
+  "prettier.htmlWhitespaceSensitivity": "ignore",
+  "prettier.vueIndentScriptAndStyle": true,
+  "docthis.authorName": "hotent",
+  "docthis.includeAuthorTag": true,
+  "docthis.includeDescriptionTag": true,
+  "docthis.enableHungarianNotationEvaluation": true,
+  "docthis.inferTypesFromNames": true,
+  "vetur.format.defaultFormatter.html": "prettier",
+  "files.autoSave": "onFocusChange",
+  "path-intellisense.mappings": {
+    "@": "${workspaceRoot}/src"
+  },
+  "files.eol": "\n"
+}

+ 4 - 0
babel.config.js

@@ -0,0 +1,4 @@
+module.exports = {
+  presets: ['@vue/cli-plugin-babel/preset'],
+  plugins: ['@babel/plugin-proposal-optional-chaining'],
+}

+ 50 - 0
mock/controller/type.js

@@ -0,0 +1,50 @@
+const { mock } = require('mockjs')
+const { icons } = require('../utils')
+
+module.exports = [
+  {
+    url: '/sys/sysType/v1/getTypesByKey',
+    type: 'get',
+    response() {
+      return {
+        success: true,
+        code: 200,
+        message: '成功',
+        data: {
+          rows: [
+            {
+              id: '6',
+              name: '流程分类',
+              typeKey: 'FLOW_TYPE',
+              parentId: '0',
+              isLeaf: 'N',
+              open: 'true',
+              isParent: 'true',
+              pkVal: '6',
+              children: mock({
+                'data|20': [
+                  {
+                    createTime: '2021-02-01 17:53:08',
+                    id: '@id',
+                    typeGroupKey: 'FLOW_TYPE',
+                    name: '@cword(3,8)',
+                    typeKey: '111',
+                    struType: 1,
+                    parentId: '1301112336211382272',
+                    depth: 1,
+                    path: '6.1301112336211382272.1356178762215067648.',
+                    isLeaf: 'Y',
+                    ownerId: '0',
+                    sn: 0,
+                    isParent: 'false',
+                    pkVal: '1356178762215067648',
+                  },
+                ],
+              }).data,
+            },
+          ],
+        },
+      }
+    },
+  },
+]

+ 98 - 0
mock/index.js

@@ -0,0 +1,98 @@
+const chokidar = require('chokidar')
+const bodyParser = require('body-parser')
+const chalk = require('chalk')
+const path = require('path')
+const { mock } = require('mockjs')
+const { baseURL } = require('../src/config')
+const mockDir = path.join(process.cwd(), 'mock')
+const { handleMockArray } = require('./utils')
+
+/**
+ *
+ * @param app
+ * @returns {{mockStartIndex: number, mockRoutesLength: number}}
+ */
+const registerRoutes = (app) => {
+  let mockLastIndex
+  const mocks = []
+  const mockArray = handleMockArray()
+  mockArray.forEach((item) => {
+    const obj = require(item)
+    mocks.push(...obj)
+  })
+  const mocksForServer = mocks.map((route) => {
+    return responseFake(route.url, route.type, route.response)
+  })
+  for (const mock of mocksForServer) {
+    app[mock.type](mock.url, mock.response)
+    mockLastIndex = app._router.stack.length
+  }
+  const mockRoutesLength = Object.keys(mocksForServer).length
+  return {
+    mockRoutesLength: mockRoutesLength,
+    mockStartIndex: mockLastIndex - mockRoutesLength,
+  }
+}
+
+/**
+ *
+ * @param url
+ * @param type
+ * @param respond
+ * @returns {{response(*=, *=): void, type: (*|string), url: RegExp}}
+ */
+const responseFake = (url, type, respond) => {
+  return {
+    url: new RegExp(`${baseURL}${url}`),
+    type: type || 'get',
+    response(req, res) {
+      res.status(200)
+      if (JSON.stringify(req.body) !== '{}') {
+        console.log(chalk.gray(`> 请求地址:${req.path}`))
+        console.log(chalk.gray(`> 请求参数:${JSON.stringify(req.body)}\n`))
+      } else {
+        console.log(chalk.gray(`> 请求地址:${req.path}\n`))
+      }
+      res.json(mock(respond instanceof Function ? respond(req, res) : respond))
+    },
+  }
+}
+/**
+ *
+ * @param app
+ */
+module.exports = (app) => {
+  app.use(bodyParser.json())
+  app.use(
+    bodyParser.urlencoded({
+      extended: true,
+    })
+  )
+
+  const mockRoutes = registerRoutes(app)
+  let mockRoutesLength = mockRoutes.mockRoutesLength
+  let mockStartIndex = mockRoutes.mockStartIndex
+  chokidar
+    .watch(mockDir, {
+      ignored: /mock-server/,
+      ignoreInitial: true,
+    })
+    .on('all', (event) => {
+      if (event === 'change' || event === 'add') {
+        try {
+          app._router.stack.splice(mockStartIndex, mockRoutesLength)
+
+          Object.keys(require.cache).forEach((item) => {
+            if (item.includes(mockDir)) {
+              delete require.cache[require.resolve(item)]
+            }
+          })
+          const mockRoutes = registerRoutes(app)
+          mockRoutesLength = mockRoutes.mockRoutesLength
+          mockStartIndex = mockRoutes.mockStartIndex
+        } catch (error) {
+          console.log(chalk.red(error))
+        }
+      }
+    })
+}

+ 99 - 0
mock/utils/index.js

@@ -0,0 +1,99 @@
+const { Random } = require('mockjs')
+const { join } = require('path')
+const fs = require('fs')
+
+/**
+ * 随机生成图片url
+ * @param {*} width
+ * @param {*} height
+ * @returns
+ */
+function handleRandomImage(width = 50, height = 50) {
+  return `https://picsum.photos/${width}/${height}?random=${Random.guid()}`
+}
+
+/**
+ * 处理所有 controller 模块,npm run serve时在node环境中自动输出controller文件夹下Mock接口。
+ * @returns
+ */
+function handleMockArray() {
+  const mockArray = []
+  const getFiles = (jsonPath) => {
+    const jsonFiles = []
+    const findJsonFile = (path) => {
+      const files = fs.readdirSync(path)
+      files.forEach((item) => {
+        const fPath = join(path, item)
+        const stat = fs.statSync(fPath)
+        if (stat.isDirectory() === true) findJsonFile(item)
+        if (stat.isFile() === true) jsonFiles.push(item)
+      })
+    }
+    findJsonFile(jsonPath)
+    jsonFiles.forEach((item) => mockArray.push(`./controller/${item}`))
+  }
+  getFiles('mock/controller')
+  return mockArray
+}
+
+// 图标数组
+const icons = [
+  'ad',
+  'address-book',
+  'arrow',
+  'ban',
+  'balance',
+  'bell',
+  'book',
+  'bookmark',
+  'bug',
+  'bullhorn',
+  'calc',
+  'circle',
+  'cloud-sun',
+  'close',
+  'checkbox',
+  'coffee',
+  'copyright',
+  'component',
+  'compress',
+  'expand',
+  'eye',
+  'eye-slash',
+  'form',
+  'ganged',
+  'gift',
+  'home',
+  'hotent',
+  'info',
+  'laptop',
+  'lock',
+  'move',
+  'more',
+  'search',
+  'setting',
+  'simple-collapse',
+  'simple-expand',
+  'table',
+  'user',
+  'users',
+  'upload',
+  'video',
+  'palette',
+  'plan',
+  'refresh',
+  'time',
+  'typography',
+  'dialog',
+  'duration',
+  'attachment',
+  'radio',
+  'select',
+  'tree',
+]
+
+module.exports = {
+  handleRandomImage,
+  handleMockArray,
+  icons,
+}

+ 131 - 0
package.json

@@ -0,0 +1,131 @@
+{
+  "name": "eip-front",
+  "version": "8.0.7",
+  "author": "hotent",
+  "participants": [],
+  "homepage": "https://hotent.com",
+  "scripts": {
+    "serve": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "build:report": "vue-cli-service build --report",
+    "globle": "npm install -g cnpm --registry=https://registry.npm.taobao.org&&cnpm i rimraf npm-check-updates nrm -g&&rimraf node_modules&&cnpm i",
+    "lint": "vue-cli-service lint",
+    "lint:style": "stylelint-config-prettier-check",
+    "inspect": "vue-cli-service inspect",
+    "template": "plop",
+    "clear": "rimraf node_modules&&npm install --registry=https://registry.npm.taobao.org",
+    "image-webpack-loader": "cnpm i image-webpack-loader -D",
+    "use:npm": "nrm use npm",
+    "use:taobao": "nrm use taobao",
+    "update": "ncu -u --reject sass-loader,vue-echarts&&cnpm i",
+    "update:globle": "ncu -g --concurrency 10 --timeout 80000",
+    "cnpm:install": "npm install cnpm -g && cnpm install --by=npm --legacy-peer-deps"
+  },
+  "repository": {
+    "type": "gitlab",
+    "url": "http://git.ht.cn/hotent/eip7/frontend.git"
+  },
+  "gitHooks": {
+    "pre-commit": "lint-staged"
+  },
+  "lint-staged": {
+    "*.{js,jsx,vue}": [
+      "vue-cli-service lint",
+      "git add"
+    ]
+  },
+  "dependencies": {
+    "@jiaminghi/data-view": "^2.10.0",
+    "@vue/composition-api": "^1.7.2",
+    "axios": "^0.21.1",
+    "clipboard": "^2.0.10",
+    "core-js": "^3.23.2",
+    "dingtalk-jsapi": "^3.0.35",
+    "echarts": "^5.3.2",
+    "echarts-stat": "^1.2.0",
+    "element-ui": "^2.15.6",
+    "file-saver": "^2.0.5",
+    "hotent-ui": "^1.0.13",
+    "html2canvas": "^1.3.2",
+    "image-conversion": "^2.1.1",
+    "jquery": "^3.6.0",
+    "jsencrypt": "^3.1.0",
+    "jspdf": "^2.4.0",
+    "jszip": "^3.7.1",
+    "lodash": "^4.17.21",
+    "mockjs": "^1.1.0",
+    "moment": "^2.29.1",
+    "nprogress": "^0.2.0",
+    "panzoom": "^9.4.2",
+    "pdfjs-dist": "2.5.207",
+    "print-js": "^1.6.0",
+    "qrcode": "^1.4.4",
+    "qs": "^6.10.1",
+    "screenfull": "^5.1.0",
+    "sortablejs": "^1.13.0",
+    "v-runtime-template": "^1.10.0",
+    "vue": "2.6.12",
+    "vue-amap": "^0.5.10",
+    "vue-clipboard2": "^0.3.1",
+    "vue-dompurify-html": "3.1.1",
+    "vue-draggable-resizable": "^2.3.0",
+    "vue-echarts": "5.0.0-beta.0",
+    "vue-fullscreen": "^2.2.0",
+    "vue-i18n": "^8.24.5",
+    "vue-pdf": "4.2.0",
+    "vue-print-nb": "^1.7.5",
+    "vue-qr": "^2.5.0",
+    "vue-quill-editor": "^3.0.6",
+    "vue-router": "^3.5.1",
+    "vuedraggable": "^2.24.3",
+    "vuex": "^3.6.2",
+    "wangeditor": "^4.7.10",
+    "swiper": "5.4.5",
+    "ant-design-vue": "^1.7.8",
+    "xlsx": "^0.16.6"
+  },
+  "devDependencies": {
+    "@babel/plugin-proposal-optional-chaining": "^7.17.12",
+    "@vue/cli-plugin-babel": "^4.5.12",
+    "@vue/cli-plugin-eslint": "^4.5.12",
+    "@vue/cli-service": "^4.5.12",
+    "@vue/eslint-config-prettier": "^6.0.0",
+    "babel-eslint": "^10.1.0",
+    "body-parser": "^1.19.0",
+    "current-script-polyfill": "^1.0.0",
+    "chalk": "^4.1.0",
+    "chokidar": "^3.5.1",
+    "compression-webpack-plugin": "^4.0.0",
+    "css-unicode-loader": "^1.0.3",
+    "eslint": "^7.24.0",
+    "eslint-plugin-prettier": "^3.4.0",
+    "eslint-plugin-vue": "^7.9.0",
+    "image-webpack-loader": "^8.1.0",
+    "lint-staged": "^10.5.4",
+    "plop": "^2.7.4",
+    "prettier": "^2.2.1",
+    "sass": "~1.32.10",
+    "sass-loader": "^10.1.1",
+    "stylelint": "^13.12.0",
+    "stylelint-config-prettier": "^8.0.2",
+    "stylelint-config-recess-order": "^2.3.0",
+    "svg-sprite-loader": "^6.0.5",
+    "vue-codemirror": "4.0.6",
+    "vue-template-compiler": "2.6.12",
+    "webpackbar": "^4.0.0"
+  },
+  "keywords": [
+    "vue",
+    "admin",
+    "element-ui",
+    "vue-admin",
+    "element-admin",
+    "boilerplate",
+    "admin-template",
+    "management-system"
+  ],
+  "engines": {
+    "node": ">=8.9",
+    "npm": ">= 3.0.0"
+  }
+}

+ 16 - 0
prettier.config.js

@@ -0,0 +1,16 @@
+module.exports = {
+  printWidth: 80,
+  tabWidth: 2,
+  useTabs: false,
+  semi: false,
+  singleQuote: true,
+  quoteProps: 'as-needed',
+  jsxSingleQuote: false,
+  trailingComma: 'es5',
+  bracketSpacing: true,
+  jsxBracketSameLine: false,
+  arrowParens: 'always',
+  htmlWhitespaceSensitivity: 'ignore',
+  vueIndentScriptAndStyle: true,
+  endOfLine: 'auto',
+}

Файловите разлики са ограничени, защото са твърде много
+ 335 - 0
public/calendar-converter.js


+ 45 - 0
public/config.js

@@ -0,0 +1,45 @@
+// var host = window.location.protocol + '//' + window.location.hostname
+// 当前后端不在同一个服务器时,需要指定host地址
+// var host = 'http://10.7.13.26'
+var host = 'http://localhost'
+// combine为true时五合一部署, 为false时分五个服务部署
+var combine = true
+var gateway = '8280/stage-api'
+var defaultModulePortMap = {
+  form: gateway +'/form',
+  portal: gateway +'/portal',
+  bpmRunTime: gateway +'/bpmRunTime',
+  bpmModel: gateway +'/bpmModel',
+  uc: gateway +'/uc',
+  auth: gateway +'/auth',
+  commonSign: gateway,
+}
+window.getModuleRootUrl = function (module) {
+  // 默认是全部服务合一的端口
+  var modulePort = '8089'
+  if (!combine) {
+    modulePort = defaultModulePortMap[module]
+  }
+  return host + ':' + modulePort
+}
+window.context = {
+  manage: host + ':8280/mvue', //管理端页面
+  front: host + ':8280/front', //前端页面
+  mobile: host + ':8280/mobile', //手机端页面
+  form: getModuleRootUrl('form'),
+  portal: getModuleRootUrl('portal'),
+  bpmRunTime: getModuleRootUrl('bpmRunTime'),
+  bpmModel: getModuleRootUrl('bpmModel'),
+  uc: getModuleRootUrl('uc'),
+  auth: getModuleRootUrl('auth'),
+  commonSign: 'http://10.7.14.215:8280/stage-api/',
+  //后台接口是新开的端口  8082
+  // costAudit: host + ':8082'
+}
+// 单点配置
+window.ssoConfig = {
+  // mode: 'oauth', // 空则不使用单点  支持的模式有  cas oauth basic
+  // url: 'http://10.7.14.215:8280/auth',
+  // clientId: 'workbench', // oauth模式下需要提供
+  // logout: 'http://10.7.14.215:8280/auth'
+}

+ 18 - 0
public/eip.js

@@ -0,0 +1,18 @@
+/**
+ * !Copyright (c) 2021 Hotent(http://www.hotent.com)
+ *
+ * Version: 1.0.0
+ */
+;(function () {
+  var eip = {}
+  window.eip = eip
+  // 打开新的tab页签
+  eip.openTab = function (url) {
+    var appDiv = window.document.body.querySelector('div#app')
+    if (appDiv && appDiv.__vue__ && appDiv.__vue__.$tabs) {
+      appDiv.__vue__.$tabs.open(url)
+    } else {
+      window.open(url)
+    }
+  }
+})()

BIN
public/favicon.ico


+ 98 - 0
public/hotent.helper.js

@@ -0,0 +1,98 @@
+/**
+ * !Copyright (c) 2021 Hotent(http://www.hotent.com)
+ *
+ * Version: 1.0.0
+ */
+;(function () {
+  var hotent = {
+    alreadyGetHeight: false,
+  }
+  window.hotent = hotent
+  setTimeout(function () {
+    // 如果url表单未传递高度消息时,会默认在300ms后传递
+    if (!hotent.alreadyGetHeight) {
+      hotent.getHeight()
+    }
+  }, 300)
+  // 是否现代浏览器
+  hotent.isModern = function () {
+    return window.addEventListener ? true : false
+  }
+  // 获取url参数
+  hotent.getUrlParam = function (key) {
+    var query = window.location.search.substring(1)
+    var vars = query.split('&')
+    for (var i = 0; i < vars.length; i++) {
+      var pair = vars[i].split('=')
+      if (pair[0] == key) {
+        return pair[1]
+      }
+    }
+    return false
+  }
+  // 添加事件监听
+  hotent.addListener = function (name, fn) {
+    if (!name || name.constructor != String) {
+      throw 'name could not be empty and must be String.'
+    }
+    if (!fn || fn.constructor != Function) {
+      throw 'fn could not be empty and must be Function.'
+    }
+    var eventMethod = hotent.isModern ? 'addEventListener' : 'attachEvent',
+      eventer = window[eventMethod]
+
+    var match = name.match(/^on(\w+)$/)
+    if (match && match.length == 2) {
+      name = match[1]
+    }
+    eventer(hotent.isModern ? name : 'on' + name, fn)
+  }
+  // 发送消息给父页面
+  hotent.sendMessage = function (params) {
+    window.parent && window.parent.postMessage(params, '*')
+  }
+
+  // 监听父页面发送过来的message
+  hotent.addListener('message', function (e) {
+    var type = e.data || 0
+    if (!type || type.type != 'roger') {
+      // 子页面先回复父页面:收到消息
+      hotent.sendMessage({ type: 'roger' })
+    }
+    switch (type) {
+      case 'getHeight' /*获取页面高度*/:
+        hotent.getHeight()
+        break
+      case 'saveData': /*保存页面数据*/
+      case 'modifyForm': /*打开新页面编辑数据*/
+      case 'printForm': /*打印*/
+      case 'validForm' /*验证数据*/:
+        hotent.invoke(type)
+        break
+    }
+  })
+
+  // 调用页面定义的方法
+  hotent.invoke = function (methodName) {
+    var r = window[methodName]
+    if (!r || r.constructor != Function) {
+      throw '页面未提供方法:' + methodName
+    } else {
+      r.apply()
+    }
+  }
+
+  // 获取页面高度
+  hotent.getHeight = function () {
+    var height = document.getElementsByTagName('body')[0].scrollHeight,
+      params = { type: 'height', height: height }
+    hotent.sendMessage(params)
+    hotent.alreadyGetHeight = true
+  }
+
+  // 监听鼠标滚动事件
+  hotent.addListener('wheel', function (e) {
+    var params = { type: 'wheel', wheelDeltaY: -e.deltaY }
+    hotent.sendMessage(params)
+  })
+})()

+ 56 - 0
public/index.html

@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="zh-cmn-Hans">
+  <head>
+    <meta charset="utf-8" />
+    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+    <!-- <link rel="icon" href="<%= BASE_URL %>favicon.ico" /> -->
+    <link rel="icon" href="<%= BASE_URL %>logo.png" />
+    <!--lj 修改-->
+    <title><%= VUE_APP_TITLE %></title>
+    <meta name="keywords" content="eip 企业信息平台 流程中心 门户平台" />
+    <meta
+      name="description"
+      content="<%= VUE_APP_TITLE %>,<%= VUE_APP_AUTHOR %>提供技术支持"
+    />
+    <meta name="author" content="<%= VUE_APP_AUTHOR %>" />
+    <script src="<%= BASE_URL %>config.js"></script>
+    <script src="<%= BASE_URL %>eip.js"></script>
+    <link rel="stylesheet" href="<%= BASE_URL %>static/css/loading.css" />
+    <script type="text/javascript">
+      window._AMapSecurityConfig = {
+        securityJsCode: '0b63a538e25f626fbfd6dbfe5bb2808a',
+      }
+    </script>
+    <script src="<%= BASE_URL %>calendar-converter.js"></script>
+    <script
+      type="text/javascript"
+      src="https://cdn.jsdelivr.net/npm/js-base64@3.6.0/base64.min.js"
+    ></script>
+  </head>
+  <body>
+    <noscript>
+      <strong>
+        We're sorry but system doesn't work properly without JavaScript enabled.
+        Please enable it to continue.
+      </strong>
+    </noscript>
+    <div id="app">
+      <div class="first-loading-wrp">
+        <div class="loading-wrp">
+          <span class="dot dot-spin">
+            <i></i>
+            <i></i>
+            <i></i>
+            <i></i>
+          </span>
+        </div>
+        <h1><%= VUE_APP_TITLE %></h1>
+      </div>
+    </div>
+    <script>
+      ;/^http(s*):\/\//.test(location.href) ||
+        alert('系统需要部署到服务器下访问')
+    </script>
+  </body>
+</html>

BIN
public/logo.png


+ 99 - 0
public/static/css/loading.css

@@ -0,0 +1,99 @@
+/**
+ * @description 雪花屏代码,基于ant-design修改
+ **/
+.first-loading-wrp {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  height: 90vh;
+  min-height: 90vh;
+}
+
+.first-loading-wrp > h1 {
+  font-size: 30px;
+  font-weight: bolder;
+}
+
+.first-loading-wrp .loading-wrp {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  padding: 98px;
+}
+
+.dot {
+  position: relative;
+  box-sizing: border-box;
+  display: inline-block;
+  width: 64px;
+  height: 64px;
+  font-size: 64px;
+  transform: rotate(45deg);
+  animation: antRotate 1.2s infinite linear;
+}
+
+.dot i {
+  position: absolute;
+  display: block;
+  width: 28px;
+  height: 28px;
+  background-color: #1890ff;
+  border-radius: 100%;
+  opacity: 0.3;
+  transform: scale(0.75);
+  transform-origin: 50% 50%;
+  animation: antSpinMove 1s infinite linear alternate;
+}
+
+.dot i:nth-child(1) {
+  top: 0;
+  left: 0;
+}
+
+.dot i:nth-child(2) {
+  top: 0;
+  right: 0;
+  -webkit-animation-delay: 0.4s;
+  animation-delay: 0.4s;
+}
+
+.dot i:nth-child(3) {
+  right: 0;
+  bottom: 0;
+  -webkit-animation-delay: 0.8s;
+  animation-delay: 0.8s;
+}
+
+.dot i:nth-child(4) {
+  bottom: 0;
+  left: 0;
+  -webkit-animation-delay: 1.2s;
+  animation-delay: 1.2s;
+}
+
+@keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+    transform: rotate(405deg);
+  }
+}
+
+@-webkit-keyframes antRotate {
+  to {
+    -webkit-transform: rotate(405deg);
+    transform: rotate(405deg);
+  }
+}
+
+@keyframes antSpinMove {
+  to {
+    opacity: 1;
+  }
+}
+
+@-webkit-keyframes antSpinMove {
+  to {
+    opacity: 1;
+  }
+}

+ 299 - 0
src/App.vue

@@ -0,0 +1,299 @@
+<template>
+  <div
+    id="app"
+    :style="{
+      background: variables[`${style}-container-background`],
+      '--background': variables[`${style}-top-bar-background`],
+      '--menuColor': variables[`${style}-menu-color`],
+      '--topColor': variables[`${style}-tab-color`],
+    }"
+  >
+    <keep-alive :include="keepaliveIncludes">
+      <router-view />
+    </keep-alive>
+  </div>
+</template>
+
+<script>
+  import { mapGetters } from 'vuex'
+  import { keepaliveIncludes } from '@/utils/handleRoutes.js'
+  import { getMainByDefKey, getCode } from '@/api/appCenter.js'
+  import variables from '@/styles/variables.scss'
+  import _ from 'lodash'
+  import * as dd from 'dingtalk-jsapi'
+  export default {
+    name: 'App',
+    computed: {
+      ...mapGetters({
+        style: 'settings/style',
+        themeColor: 'settings/themeColor',
+      }),
+      variables() {
+        return variables
+      },
+      keepaliveIncludes() {
+        return keepaliveIncludes
+      },
+    },
+    data() {
+      return {
+        isDingIntent: true,
+      }
+    },
+    created() {
+      // 因为resize事件在整个项目中只能监听一次,所以这里通过全局广播发送这个事件
+      window.onresize = _.debounce(() => {
+        this.$root.$emit('resize')
+      }, 300)
+      String.prototype.getValue = function (parm) {
+        var reg = new RegExp('(^|&)' + parm + '=([^&]*)(&|$)')
+        var r = this.substr(this.indexOf('?') + 1).match(reg)
+        if (r != null) return unescape(r[2])
+        return null
+      }
+
+      var url = decodeURI(window.location.href)
+      url = decodeURI(url)
+      console.log(url)
+      var corpId = url.getValue('corpId') //钉钉企业id
+      var taskId = url.getValue('taskId') //任务id
+      var instId = url.getValue('instId') //实例id
+      var todoId = url.getValue('todoId') //实例id
+      var messageId = url.getValue('messageId') //实例id
+      var appId = url.getValue('appId') //应用id
+      console.log('corpId======' + corpId)
+      console.log('taskId======' + taskId)
+      console.log('instId======' + instId)
+      console.log('todoId======' + todoId)
+      console.log('messageId======' + messageId)
+      console.log('appId======' + appId)
+      var dateEnti = {}
+      if (taskId || todoId || messageId || appId) {
+        dateEnti = {
+          corpId: corpId,
+          taskId: taskId,
+          instId: instId,
+          todoId: todoId,
+          messageId: messageId,
+          appId: appId,
+        }
+        var that = this
+        dd.runtime.permission.requestAuthCode({
+          corpId: corpId, // 企业id
+          onSuccess: function (info) {
+            console.log(info.code)
+            that.getDingUserInfo(info.code, corpId, appId, dateEnti)
+          },
+          onFail: function (error) {},
+        })
+      } else {
+        this.isDingIntent = false
+      }
+    },
+    methods: {
+      /**
+       * 获取用户信息并且写入缓存
+       * @param code
+       * @param corpId
+       * @param appId
+       */
+      getDingUserInfo(code, corpId, appId, dateEnti) {
+        console.log(dateEnti)
+        let url = `${window.context.auth}/sso/getDingUserByCode?code=${code}&corpId=${corpId}&appId=${appId}`
+        let _this = this
+        this.$http.get(url).then((resp) => {
+          console.log(resp)
+          let code = resp.code
+          if (code == '200') {
+            let value = resp.value
+            this.$store.dispatch('user/getDingUserByCodeFun', value)
+            if (dateEnti.taskId) {
+              this.$router.push({
+                path: '/matter/approvalForm',
+                query: {
+                  instId: dateEnti.instId,
+                  taskId: dateEnti.taskId,
+                  isGetApprovalBtn: true,
+                  type: 'fromTodoList',
+                  // key:'onlyOneTask'
+                },
+              })
+            }
+            if (dateEnti.appId) {
+              this.getAppInfo(appId)
+            }
+
+            if (dateEnti.todoId) {
+              this.getTodoDetailById(dateEnti)
+            }
+            if (dateEnti.messageId) {
+              this.messageReceiver(dateEnti)
+            }
+          }
+        })
+      },
+
+      /**
+       * 获取待办详细信息
+       * @param code
+       * @param corpId
+       * @param appId
+       */
+      getTodoDetailById(dateEnti) {
+        console.log(dateEnti)
+        let url = `${window.context.bpmRunTime}/runtime/todo/v1/getDetailById?id=${dateEnti.todoId}`
+        let _this = this
+        this.$http.get(url).then((resp) => {
+          console.log(resp)
+          let code1 = resp.code
+          if (code1 == '200') {
+            let value = resp.value
+            _this.getCodeFun(value, '0')
+          }
+        })
+      },
+      getCodeFun(resp, type) {
+        getCode().then((res) => {
+          if (res.code === 200) {
+            let code = res.value
+            if (type == '1') {
+              var sourceClient = 'PC'
+              var param = resp.messageParams
+              var preFlag = '?'
+              var url = resp.ownerSourceCurAppCallback
+              if (url.indexOf('?') > 0) {
+                preFlag = '&'
+              }
+              var resultUrl =
+                url +
+                preFlag +
+                'code=' +
+                code +
+                '&sourceClient=' +
+                sourceClient +
+                '&pageData=' +
+                encodeURIComponent(param)
+              window.location.href = resultUrl
+            }
+            if (type == '0') {
+              var sourceClient = 'PC'
+              var param = resp.messageParams
+              var preFlag = '?'
+              var url = resp.ownerSourceCurAppCallback
+              if (url.indexOf('?') > 0) {
+                preFlag = '&'
+              }
+              var resultUrl =
+                url +
+                preFlag +
+                'code=' +
+                code +
+                '&sourceClient=' +
+                sourceClient +
+                '&pageData=' +
+                encodeURIComponent(param)
+              window.location.href = resultUrl
+            }
+          }
+        })
+      },
+      /**
+       * 获取待办详细信息
+       * @param code
+       * @param corpId
+       * @param appId
+       */
+      messageReceiver(dateEnti) {
+        console.log(dateEnti)
+        let url = `${window.context.portal}/innermsg/messageReceiver/v1/get?id=${dateEnti.messageId}`
+        let _this = this
+        this.$http.get(url).then((resp) => {
+          console.log(resp)
+          let messageSourceType = resp.messageSourceType
+          if (messageSourceType == '1') {
+            window.location.href = resp.messageUrl
+          } else if (
+            messageSourceType == '3' ||
+            messageSourceType == '4' ||
+            messageSourceType == '5' ||
+            messageSourceType == '6'
+          ) {
+            _this.getCodeFun(resp, '1')
+          }
+        })
+      },
+      /**
+       * 根据appid获取app数据
+       * @param appId
+       */
+      getAppInfo(appId) {
+        let url = `${window.context.portal}/portal/sysApp/v1/getDetail?id=${appId}`
+        let _this = this
+        this.$http.get(url).then((resp) => {
+          console.log(resp)
+          let code = resp.status
+          if (code == '200') {
+            let value = resp.data
+            _this.clickGrid(value)
+          }
+        })
+      },
+      async startApp(app) {
+        //1常规应用 2数据报表 3自定义视图 4图表 6表单 7模块 8启动流程
+        ///appContent/:type/:id/:otherId/:appName
+        let url = ''
+        let prefix = window.context.front
+        if (app.type == 4) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.id}&appName=${app.name}`
+        } else if (app.type === 2) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.alias}&appName=${app.name}`
+        } else if (app.type === 3) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.id}&appName=${app.name}`
+        } else if (app.type === 1) {
+          url = `/appContent?type=${app.type}&id=${app.id}&appName=${app.name}`
+        } else if (app.type === 6) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.id}&appName=${app.name}`
+        } else if (app.type === 7) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.id}&appName=${app.name}`
+        } else if (app.type === 8) {
+          let content = JSON.parse(app.content)
+          let resp = {}
+          if (content.key) {
+            resp = await getMainByDefKey(content.key)
+            url = `/matter/startProcess?defId=${resp.id}&name=${content.name}`
+          } else {
+            url = `/matter/startProcess?defId=${content.id}&name=${content.name}`
+          }
+        } else if (app.type === 9) {
+          let content = JSON.parse(app.content)
+          url = `/appContent?type=${app.type}&id=${content.id}&appName=${app.name}&alias=${content.alias}`
+        } else if (app.type === 5) {
+          url = app.content
+          if (app.localAuthCode === 1) {
+            this.getCode(url)
+          } else {
+            window.open(url, '_blank')
+          }
+          return
+        }
+        if (url) {
+          this.$router.push({ path: url })
+        }
+      },
+    },
+  }
+</script>
+<style lang="scss">
+  #app {
+    height: 100%;
+  }
+  .el-button--primary {
+    background-color: #2563eb;
+    border-color: #2563eb;
+  }
+</style>

+ 94 - 0
src/api/annualReviewPlan.js

@@ -0,0 +1,94 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+export function getData(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/query',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function getDataList(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/pageList',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function getDetail(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/getDetail',
+    method: 'get',
+    params: data,
+  })
+}
+
+export function getDetailById(id) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/' + id,
+    method: 'get',
+  })
+}
+
+export function delProjectApprovalById(id) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/' + id,
+    method: 'delete',
+  })
+}
+
+export function addProjectApproval(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function editProjectApproval(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/',
+    method: 'put',
+    data: data,
+  })
+}
+
+export function delProjectApproval(data) {
+  return request({
+    url: url + '/api/costAnnualPlan/v1/',
+    method: 'delete',
+    params: data,
+  })
+}
+
+export function getOrgById(data) {
+  return request({
+    url: url + '/api/org/v2/org/get',
+    method: 'get',
+    params: data,
+  })
+}
+
+export function getDefaultDem() {
+  return request({
+    url: url + '/api/demension/v2/dem/getDefaultDem',
+    method: 'get',
+  })
+}
+
+export function getOrgMaster() {
+  return request({
+    url: url + '/api/org/v2/org/getOrgMaster',
+    method: 'get',
+  })
+}
+
+export function getOrgListByDemId(data) {
+  return request({
+    url: url + '/api/org/v2/org/getOrgListByDemId',
+    method: 'get',
+    params: data,
+  })
+}

+ 286 - 0
src/api/appCenter.js

@@ -0,0 +1,286 @@
+import request from '@/utils/request'
+
+//获取指定菜单的下级菜单
+export function getSubMenus(menuAlias) {
+  return request({
+    url: `${context.portal}/sys/sysMenu/v1/getCurrentUserMenu?menuAlias=${menuAlias}`,
+    method: 'get',
+  })
+}
+
+//根据当前用户授权应用获取应用分类菜单
+export function getSysMenuByAuthApp(menuAlias) {
+  return request({
+    url: `${context.portal}/sys/sysMenu/v1/getAppMenuByAuthApp?menuAlias=${menuAlias}`,
+    method: 'get',
+  })
+}
+export function getSysMenuByAlias(alias) {
+  return request({
+    url: `${context.portal}/sys/sysMenu/v1/getByAlias?alias=${alias}`,
+    method: 'get',
+  })
+}
+
+//获取有存在应用的菜单
+export function getValidMenu() {
+  return request({
+    url: `${context.portal}/portal/sysApp/v1/validMenu`,
+    method: 'get',
+  })
+}
+
+//获取应用标签分类列表
+export function getAppTagTypes() {
+  return request({
+    url: `${context.portal}/sys/sysType/v1/getTreeDateByTypeKey?typeKey=yybq`,
+    method: 'get',
+  })
+}
+
+//
+export function getSysTag(data) {
+  return request({
+    url: `${context.portal}/portal/sysTag/v1/query`,
+    method: 'post',
+    data,
+  })
+}
+
+export function getSysAppList(data) {
+  return request({
+    url: `${context.portal}/portal/sysApp/v1/authList`,
+    method: 'post',
+    data,
+  })
+}
+
+export function queryByTagIds(currentMenuId, data) {
+  return request({
+    url: `${context.portal}/portal/sysApp/v1/queryByTagIds/${currentMenuId}`,
+    method: 'post',
+    data,
+  })
+}
+
+export function queryByFilter(data) {
+  return request({
+    url: `${context.portal}/portal/sysApp/v1/queryByFilter`,
+    method: 'post',
+    data,
+  })
+}
+
+export function getAppByAppId(appId) {
+  return request({
+    url: `${context.portal}/portalAppParam/v1/getByAppId?appId=${appId}`,
+    method: 'get',
+  })
+}
+
+export function isAppHasDesc(appId) {
+  return request({
+    url: `${context.portal}/portalAppParam/v1/isAppHasDesc?appId=${appId}`,
+    method: 'get',
+  })
+}
+
+export function downloadFile(fileId) {
+  return request({
+    url: `${context.portal}/system/file/v1/downloadFile?fileId=${fileId}`,
+    responseType: 'arraybuffer',
+  })
+}
+
+export function getMainByDefKey(key) {
+  return request({
+    url: `${context.bpmModel}/flow/def/v1/getJson?defKey=${key}`,
+    method: 'get',
+  })
+}
+
+export function getSysAppTree(id) {
+  return request({
+    url: `${context.portal}/portal/sysAppMenu/v1/getTree?appId=${id}`,
+    method: 'get',
+  })
+}
+
+export function getListData(alias, data) {
+  return request({
+    url: `${context.form}/form/customChart/v1/getListData?alias=${alias}`,
+    method: 'post',
+    data,
+  })
+}
+
+export function getCustomChartById(id) {
+  return request({
+    url: `${context.form}/form/customChart/v1/get/${id}`,
+    method: 'get',
+  })
+}
+
+export function getByAlias(alias) {
+  return request({
+    url: `${context.form}/form/customDialog/v1/getByAlias?alias=${alias}`,
+    method: 'get',
+  })
+}
+
+export function getTreeDataTemplate(alias) {
+  return request({
+    url: `${context.form}/form/customDialog/v1/getTreeData?alias=${alias}`,
+    method: 'get',
+  })
+}
+
+//获取业务数据模板子表信息
+export function getSubEntsByFormKey(formKey) {
+  return request({
+    url: `${context.form}/form/form/v1/getSubEntsByFormKey?formKey=${formKey}`,
+    method: 'get',
+  })
+}
+
+export function mainImport(data) {
+  data.bindFilld = data.bindFilld || ''
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/tImportMain?alias=${data.alias}&bindFilld=${data.bindFilld}&fillValue=${data.fillValue}&refIdValue=${data.refIdValue}`,
+    method: 'post',
+    data: data.data,
+  })
+}
+
+export function subImport(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/importSub?refId=${data.refId}&alias=${data.alias}`,
+    method: 'post',
+    data: data.data,
+  })
+}
+
+export function subExport(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/exportSub`,
+    method: 'post',
+    data,
+    responseType: 'arraybuffer',
+  })
+}
+
+//获取业务数据模板信息
+export function getBpmDataTemplateInfo(data) {
+  let needDisplayFileds = !!data.needDisplayFileds
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/getBpmDataTemplateInfo?alias=${data.templateKey}&needDisplayFileds=${needDisplayFileds}`,
+    method: 'get',
+  })
+}
+
+//获取业务数据模板列表模板html
+export function getTemplateDataListForm(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/dataList_${data}`,
+    method: 'post',
+    data: {},
+  })
+}
+
+//获取业务数据列表
+export function getBpmTemplateByPagination(data) {
+  const dataTemplateQueryVo = {
+    templateId: data.templateId,
+    queryFilter: data.pagination,
+  }
+  if (data.isJoinFlow && data.taskType && data.defKey) {
+    dataTemplateQueryVo.isJoinFlow = data.isJoinFlow
+    dataTemplateQueryVo.taskType = data.taskType
+    dataTemplateQueryVo.defKey = data.defKey
+  }
+  if (data.selectField) {
+    dataTemplateQueryVo.selectField = data.selectField
+    dataTemplateQueryVo.selectValue = data.selectValue
+  }
+  if (data.selectList) {
+    dataTemplateQueryVo.selectList = data.selectList
+  }
+  dataTemplateQueryVo.refIdValue = data.refIdValue
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/listJson`,
+    method: 'post',
+    data: dataTemplateQueryVo,
+  })
+}
+
+//业务数据模板导出
+export function templateExport(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/export?formKey=${data.boAlias}&getType=${data.getType}&filterKey=${data.filterKey}&expField=${data.expField}`,
+    method: 'post',
+    data: data.query,
+    responseType: 'arraybuffer',
+  })
+}
+//业务数据模板导出
+export function exportByBtnSetting(data) {
+  return request({
+    url: `${form}/form/dataTemplate/v1/exportByBtnSetting?id=${data.id}`,
+    method: 'post',
+    data: data.params,
+    responseType: 'arraybuffer',
+  })
+}
+
+export function downloadMainTempFile(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/downloadMainTempFile/${data}`,
+    method: 'post',
+    data,
+    responseType: 'arraybuffer',
+  })
+}
+
+//删除业务数据模板bo数据
+export function deleteTemplateDataById(data) {
+  return request({
+    url: `${context.form}/form/dataTemplate/v1/boDel/${data.boAlias}?ids=${data.ids}`,
+    method: 'DELETE',
+  })
+}
+
+//通过bo数据发起流程
+export function startForm(data) {
+  return request({
+    url: `${context.bpmRunTime}/runtime/instance/v1/startForm?defKey=${data.defKey}&businessKey=${data.businessKey}&boAlias=${data.boAlias}&templateAlias=${data.templateAlias}`,
+    method: 'post',
+    data: {},
+  })
+}
+
+export function getTreeData(data) {
+  return request({
+    url: data.url,
+    method: 'get',
+  })
+}
+
+export function getlistJson(data) {
+  return request({
+    url: data.queryUrl,
+    method: 'post',
+    data: data.pageBean,
+  })
+}
+
+export function getCode(data) {
+  return request({
+    url: `${context.commonSign}auth/app/code/generate`,
+    method: 'post',
+    data,
+  })
+}
+
+export default {
+  getCode
+}

+ 38 - 0
src/api/auditDocManage.js

@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+export function getInfoList(data) {
+  return request({
+    url: url + '/api/costInformation/v1/pageList',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function addInfo(data) {
+  return request({
+    url: url + '/api/costInformation/v1/',
+    method: 'post',
+    data: data,
+  })
+}
+export function editInfo(data) {
+  return request({
+    url: url + '/api/costInformation/v1/',
+    method: 'put',
+    data: data,
+  })
+}
+export function deleteInfoByIds(data) {
+  return request({
+    url: url + '/api/costInformation/v1/',
+    method: 'delete',
+    params: data,
+  })
+}
+export function deleteInfo(id) {
+  return request({
+    url: url + `/api/costInformation/v1/${id}`,
+    method: 'delete',
+  })
+}

+ 77 - 0
src/api/auditDocNoManage.js

@@ -0,0 +1,77 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+/**
+ * 分页查询文书文号管理数据
+ * @param {Object} params 查询参数
+ * @returns {Promise}
+ */
+export function getData(params) {
+  return request({
+    url: url + '/api/costDocumentWh/v1/pageList',
+    method: 'post',
+    data: params,
+  })
+}
+
+/**
+ * 新增实体
+ * @param {Object} data 实体数据
+ * @returns {Promise}
+ */
+export function addEntity(data) {
+  return request({
+    url: url + '/api/costDocumentWh/v1/save',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新实体
+ * @param {Object} data 实体数据
+ * @returns {Promise}
+ */
+export function updateEntity(data) {
+  return request({
+    url: url + '/api/costDocumentWh/v1/save',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 根据id集合批量删除
+ * @param {Array} ids 实体ID集合
+ * @returns {Promise}
+ */
+export function batchDelete(ids) {
+  return request({
+    url: url + '/api/costDocumentWh/v1/',
+    method: 'post',
+    data: {
+      ids,
+    },
+  })
+}
+
+/**
+ * 根据id删除单个实体
+ * @param {string} id 实体ID
+ * @returns {Promise}
+ */
+export function deleteById(params) {
+  return request({
+    url: url + `/api/costDocumentWh/v1/delete`,
+    method: 'get',
+    params,
+  })
+}
+
+export function getDetail(data) {
+  return request({
+    url: url + `/api/costDocumentWh/v1/getDetail`,
+    method: 'get',
+    params: data,
+  })
+}

+ 105 - 0
src/api/auditEntityManage.js

@@ -0,0 +1,105 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+/**
+ * 查询单位列表
+ * @param {Object} data - 请求参数
+ * @param {String} data.regionCode - 所属区域代码,全部传空或全部
+ * @param {String} data.unitName - 单位名称关键词
+ * @returns {Promise} - 返回请求结果
+ */
+export function getAuditedUnitList(data) {
+  return request({
+    url: url + '/api/audited-unit/pageList',
+    method: 'post',
+    data,
+  })
+}
+export function getAllUnitList(data) {
+  return request({
+    url: url + '/api/audited-unit/list',
+    method: 'get',
+    params: data,
+  })
+}
+// /api/audited-unit/detail
+export function getAuditedUnitDetail(data) {
+  return request({
+    url: url + `/api/audited-unit/detail`,
+    method: 'get',
+    params: data,
+  })
+}
+
+/**
+ * 新增单位
+ * @param {Object} data - 单位信息
+ * @param {String} data.unitName - 单位名称
+ * @param {String} data.socialCreditCode - 社会信用代码
+ * @param {String} [data.regionCode] - 所属区域代码
+ * @param {String} [data.address] - 地址
+ * @param {String} [data.contactPerson] - 联系人
+ * @param {String} [data.contactPhone] - 联系电话
+ * @param {String} [data.remark] - 备注
+ * @returns {Promise} - 返回请求结果
+ * @description 按表单创建被监审单位,由后端填充isDeleted=false、status=1、createTime、updateTime、createBy=system、updateBy=system
+ */
+export function addAuditedUnit(data) {
+  return request({
+    url: url + '/api/audited-unit',
+    method: 'post',
+    data: data,
+  })
+}
+
+/**
+ * 修改单位
+ * @param {Object} data - 单位信息
+ * @param {String} data.unitId - 单位ID
+ * @param {String} [data.unitName] - 单位名称
+ * @param {String} [data.socialCreditCode] - 社会信用代码
+ * @param {String} [data.regionCode] - 所属区域代码
+ * @param {String} [data.address] - 地址
+ * @param {String} [data.contactPerson] - 联系人
+ * @param {String} [data.contactPhone] - 联系电话
+ * @param {String} [data.remark] - 备注
+ * @returns {Promise} - 返回请求结果
+ * @description 编辑被监审单位信息,由后端填充updateTime、updateBy=system
+ */
+export function editAuditedUnit(data) {
+  return request({
+    url: url + '/api/audited-unit',
+    method: 'put',
+    data: data,
+  })
+}
+
+/**
+ * 删除单位(逻辑删除)
+ * @param {String} id - 单位ID
+ * @returns {Promise} - 返回请求结果
+ * @description 逻辑删除单位
+ */
+export function deleteAuditedUnit(id) {
+  return request({
+    url: url + `/api/audited-unit/${id}`,
+    method: 'delete',
+  })
+}
+
+/**
+ * 启用/停用单位
+ * @param {String} id - 单位ID
+ * @param {Boolean} enable - true启用,false停用
+ * @returns {Promise} - 返回请求结果
+ * @description 企业账号启用/停用
+ */
+export function updateAuditedUnitStatus(id, enable) {
+  return request({
+    url: url + `/api/audited-unit/${id}/status`,
+    method: 'patch',
+    params: {
+      enable: enable,
+    },
+  })
+}

+ 80 - 0
src/api/auditInitiation.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+export function getData(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/query',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function getDataList(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/pageList',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function getDetail(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/getDetail',
+    method: 'get',
+    params: data,
+  })
+}
+
+export function getDetailById(id) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/' + id,
+    method: 'get',
+  })
+}
+
+export function delProjectApprovalById(id) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/' + id,
+    method: 'delete',
+  })
+}
+
+export function addProjectApproval(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function editProjectApproval(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/',
+    method: 'put',
+    data: data,
+  })
+}
+
+export function delProjectApproval(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/',
+    method: 'delete',
+    params: data,
+  })
+}
+
+export function getAuditTaskList(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/list',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function publishCostProjectApproval(data) {
+  return request({
+    url: url + '/api/costProjectApproval/v1/publish',
+    method: 'post',
+    data: data,
+  })
+}

+ 19 - 0
src/api/auditManage.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getWhCateList(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/getWhCateList',
+    method: 'get',
+    data: data,
+  })
+}
+
+export function getSupervisoryAuditing(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/pageList',
+    method: 'post',
+    data: data,
+  })
+}

+ 70 - 0
src/api/auditReviewDocManage.js

@@ -0,0 +1,70 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+// 获取文档分类列表
+export function getWhCateList() {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/getWhCateList',
+    method: 'get',
+  })
+}
+
+// 获取文档列表
+export function getDocList(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/pageList',
+    method: 'post',
+    data: data,
+  })
+}
+
+// 新增文书
+export function addDocumentTemplate(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/save',
+    method: 'post',
+    data: data,
+  })
+}
+
+// 更新实体
+export function updateDocumentTemplate(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/update',
+    method: 'put',
+    data: data,
+  })
+}
+
+// 根据ID集合批量删除实体
+export function batchDeleteDocumentTemplates(data) {
+  return request({
+    url: url + '/api/costDocumentTemplate/v1/',
+    method: 'post',
+    data: data,
+  })
+}
+
+// 根据ID删除实体
+export function deleteDocumentTemplateById(id) {
+  return request({
+    url: url + `/api/costDocumentTemplate/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+// 根据ID查询实体
+export function getDocumentTemplateById(id) {
+  return request({
+    url: url + `/api/costDocumentTemplate/v1/${id}`,
+    method: 'get',
+  })
+}
+// 根据ID查询数据项
+export function queryByDocumentId(params) {
+  return request({
+    url: url + `/costDocumentTemplateFile/v1/queryByDocumentId`,
+    method: 'get',
+    params,
+  })
+}

+ 30 - 0
src/api/base.js

@@ -0,0 +1,30 @@
+import request from '@/utils/request'
+
+const portal = context.portal
+
+export function getList(data) {
+  return request({
+    url: '/portal/sysApp/v1/authList',
+    method: 'post',
+    data,
+  })
+}
+
+export function getSystemOften(data) {
+  return request({
+    url: '/system/often',
+    method: 'post',
+    data,
+  })
+}
+
+export function getPinyin(word) {
+  return request.get(`${portal}/base/tools/v1/getPinyin?chinese=${word}&type=0`)
+}
+export function getFiles(fileId) {
+  return request({
+    url: `${portal}/file/onlinePreviewController/v1/getFileById_${fileId}`,
+    method: 'get',
+    responseType: 'blob',
+  })
+}

+ 262 - 0
src/api/catalogManage.js

@@ -0,0 +1,262 @@
+import request from '@/utils/request'
+const url = window.context.form
+export function getCatalogList(data) {
+  return request({
+    url: url + '/api/catalog/list',
+    method: 'post',
+    data,
+  })
+}
+export function getCategory(data) {
+  return request({
+    url: url + '/api/catalog/getCategory',
+    method: 'get',
+    params: data,
+  })
+}
+
+//  新增目录类别(非末级节点)
+export function addCatalogCategory(data) {
+  return request({
+    url: url + `/api/catalog/aadCategory`,
+    method: 'post',
+    data,
+  })
+}
+//  新增目录内容(末级节点)
+export function addCatalogContent(data) {
+  return request({
+    url: url + `/api/catalog/addContent`,
+    method: 'post',
+    data,
+  })
+}
+//  编辑目录类别
+export function editCatalogCategory(data) {
+  return request({
+    url: url + `/api/catalog/updateCategory`,
+    method: 'put',
+    data,
+  })
+}
+//  编辑目录内容详情
+export function editCatalogContent(data) {
+  return request({
+    url: url + `/api/catalog/updateContent`,
+    method: 'put',
+    data,
+  })
+}
+
+// 切换目录节点的启用/停用状态
+export function changeCatalogstatus(data) {
+  return request({
+    url: url + `/api/catalog/status`,
+    method: 'post',
+    data,
+  })
+}
+// 删除目录节点(含子节点校验)
+export function deleteCatalog(data) {
+  return request({
+    url: url + `/api/catalog/deleteById`,
+    method: 'post',
+    params: data,
+  })
+}
+// 更新目录扩展信息(如备注)
+export function updateCatalogMaintain(data) {
+  return request({
+    url: url + `/api/catalog/maintain`,
+    method: 'put',
+    data,
+  })
+}
+// 根据ID获取目录详情
+export function getCatalogDetail(id) {
+  return request({
+    url: url + `/api/catalog/detail?id=${id}`,
+    method: 'get',
+  })
+}
+// 验证目录名称是否重复
+export function validateName(data) {
+  return request({
+    url:
+      url +
+      `/api/catalog/validate-name?name=${data.name}&parentId=${data.parentId}`,
+    method: 'get',
+  })
+}
+// 获取目录名称列表
+export function getCatalogNmaes() {
+  return request({
+    url: url + `/api/catalog/names`,
+    method: 'get',
+  })
+}
+
+/**
+ * 查询政策文件列表
+ */
+export function getPolicyDoc(data = {}) {
+  return request({
+    url: url + '/api/costCatalogInformation/v1/pageList',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 关联政策文件
+ */
+export function associatePolicyDoc(data) {
+  return request({
+    url: url + '/api/costCatalogInformation/v1/',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 取消关联政策文件
+ */
+export function unassociatePolicyDoc(data) {
+  return request({
+    url: url + '/api/costCatalogInformation/v1/cleanByIds',
+    method: 'POST',
+    data,
+  })
+}
+
+/**
+ * 查询资料清单列表
+ */
+export function getDocumentCatalog(data = {}) {
+  return request({
+    url: url + '/api/costCatalogUnit/v1/pageList',
+    method: 'POST',
+    data,
+  })
+}
+
+/**
+ * 添加资料清单
+ */
+export function addDocumentCatalog(data) {
+  return request({
+    url: url + '/api/costCatalogUnit/v1/create',
+    method: 'post',
+    data,
+  })
+}
+/**
+ * 更新资料清单
+ */
+export function updateDocumentCatalog(data) {
+  return request({
+    url: url + '/api/costCatalogUnit/v1/update',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 删除资料清单
+ */
+export function deleteDocumentCatalog(id) {
+  return request({
+    url: url + `/api/costCatalogUnit/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+/**
+ * 批量删除资料清单
+ */
+export function batchDeleteDocumentCatalog(data) {
+  return request({
+    url: url + '/api/costCatalogUnit/v1/',
+    method: 'delete',
+    data,
+  })
+}
+
+/**
+ * 查询成本调查表列表
+ */
+export function getCostSurveyForms(data) {
+  return request({
+    url: url + '/api/costCatalogSurvey/v1/pageList',
+    method: 'POST',
+    data,
+  })
+}
+export function getallCurrentCostSurveyList(params) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/getallCurrentCostSurveyList',
+    method: 'get',
+    params,
+  })
+}
+export function addCostSurvey(data) {
+  return request({
+    url: url + '/api/costCatalogSurvey/v1/',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 查看成本调查表详情
+ * @param {Object} data - 请求参数
+ * @param {string} data.formId - 表单ID
+ * @returns {Promise} Promise对象
+ */
+export function getCostSurveyFormDetails(data) {
+  return request({
+    url: url + `/api/infomaintain/cost-survey-forms/${data.formId}/details`,
+    method: 'get',
+  })
+}
+
+/**
+ * 根据监管目录ID查询所有现行版本的成本调查表模板
+ */
+export function getCostSurveyTemplates(params) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/listByCatalogId',
+    method: 'get',
+    params,
+  })
+}
+/**
+ * 根据成本调查表现行模板id获取指标项数据列表(带key-value拼接)
+ */
+export function listByCurrentTemplateId(params) {
+  return request({
+    url: url + '/costSurveyTemplateItems/v1/listByCurrentTemplateId',
+    method: 'get',
+    params,
+  })
+}
+export function cleanByIds(data) {
+  return request({
+    url: url + '/api/costCatalogSurvey/v1/cleanByIds',
+    method: 'POST',
+    data,
+  })
+}
+
+/**
+ * 获取模版详情
+ * @param {Object} data - 请求参数
+ * @param {string} data.templateId - 模版ID
+ * @returns {Promise} Promise对象
+ */
+export function getTemplateDetails(data) {
+  return request({
+    url: url + `/api/infomaintain/templates/${data.templateId}`,
+    method: 'get',
+  })
+}

+ 18 - 0
src/api/commonWords.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+//保存常用语
+export function savaCommonWords(data) {
+  return request({
+    url: `${context.bpmModel}/flow/approvalItem/v1/save`,
+    method: 'post',
+    data,
+  })
+}
+
+//获取审批常用语
+export function getCommonWordsByDefKeyAndTypeId(defKey, cb) {
+  const url = `${context.bpmModel}/flow/approvalItem/v1/getApprovalByDefKeyAndTypeId?defKey=${defKey}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}

+ 168 - 0
src/api/costFormManage.js

@@ -0,0 +1,168 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+// 获取成本调查表模板列表
+export function getCostFormList(params) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/listAll`,
+    method: 'get',
+    params,
+  })
+}
+
+// 添加成本调查表模板
+export function addCostForm(data) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/`,
+    method: 'post',
+    data,
+  })
+}
+
+// 修改成本调查表模板
+export function editCostForm(data) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/`,
+    method: 'put',
+    data,
+  })
+}
+
+// 删除单个成本调查表模板
+export function deleteCostForm(id) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+// 批量删除成本调查表模板
+export function batchDeleteCostForm(data) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/`,
+    method: 'delete',
+    data,
+  })
+}
+
+// 切换成本调查表模板状态(启用/停用)
+export function changeCostFormStatus(id) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/enable`,
+    method: 'get',
+    params: { id: id },
+  })
+}
+
+// 获取数据存储表选项
+export function getDataStorageTableOptions() {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/dataStorageTables`,
+    method: 'get',
+  })
+}
+
+// 获取成本调查表模板详情
+export function getCostFormDetail(id) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/getDetail`,
+    method: 'get',
+    params: { id },
+  })
+}
+
+// 根据关联的成本调查表ID获取所有版本数据
+export function getCostFormVersionsByTemplateId(params) {
+  return request({
+    url: `${url}/costVerifyTemplateItems/v1/listByTemplateId`,
+    method: 'get',
+    params: {
+      surveyTemplateId: params.surveyTemplateId,
+    },
+  })
+}
+
+// 获取所有成本核定表模板数据
+export function getCostFormDataStorageTables(params) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/listAll`,
+    method: 'get',
+    params: { ...params },
+  })
+}
+
+// 添加成本核定表模板
+export function addCostVerifyForm(data) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/save`,
+    method: 'post',
+    data,
+  })
+}
+
+// 删除成本核定表模板
+export function deleteCostVerifyForm(id) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+// 批量删除成本核定表模板
+export function batchDeleteCostVerifyForm(data) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/`,
+    method: 'delete',
+    params: {
+      ids: data,
+    },
+  })
+}
+
+// 获取所有状态为启用的成本核定表模板数据
+export function getActiveCostVerifyFormList() {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/listEnabled`,
+    method: 'get',
+  })
+}
+
+// 获取所有模板类型为固定表的所有启用成本调查表数据
+export function getActiveCostVerifyFormListByType() {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/listFixedEnabled`,
+    method: 'get',
+  })
+}
+
+// 生成成本核定表模板数据
+export function generateCostVerifyFormData(data) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/generateTemplateData`,
+    method: 'get',
+    params: {
+      ...data,
+    },
+  })
+}
+
+// 生成成本核定表模板
+export function generateCostVerifyForm(data) {
+  return request({
+    url: `${url}/costSurveyTemplate/v1/generateVerifyTemplateData`,
+    method: 'get',
+    params: {
+      ...data,
+    },
+  })
+}
+
+// 添加成本核定表模板
+export function batchSaveOrUpdate(data) {
+  return request({
+    url: `${url}/costVerifyTemplateHeaders/v1/batchSaveOrUpdate`,
+    method: 'post',
+    data,
+  })
+}

+ 90 - 0
src/api/costSurveyFdTemplate.js

@@ -0,0 +1,90 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getSurveyFdTemplate(params) {
+  return request({
+    url: url + '/costSurveyFdTemplate/v1/listAll',
+    method: 'get',
+    params,
+  })
+}
+
+export function addSurveyFdTemplate(data) {
+  return request({
+    url: url + '/costSurveyFdTemplate/v1/save',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function delSurveyFdTemplateById(params) {
+  return request({
+    url: url + '/costSurveyFdTemplate/v1/remove',
+    method: 'get',
+    params,
+  })
+}
+export function delSurveyFdTemplates(ids) {
+  return request({
+    url: url + '/costSurveyFdTemplate/v1/batchRemove',
+    method: 'post',
+    data: ids,
+  })
+}
+
+export function deleteSurveyFd(id) {
+  return request({
+    url: `${url}/costSurveyFdTemplate/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+export function batchDeleteSurveyFd(data) {
+  return request({
+    url: `${url}/costSurveyFdTemplate/v1/`,
+    method: 'delete',
+    data,
+  })
+}
+
+export function getSurveyFdVersionsByTemplateId(params) {
+  return request({
+    url: `${url}/costSurveyFdTemplateVersion/v1/listByTemplateId`,
+    method: 'get',
+    params: {
+      surveyTemplateId: params.surveyTemplateId,
+    },
+  })
+}
+
+export function getSurveyFdList(params) {
+  return request({
+    url: `${url}/costSurveyFdTemplate/v1/listAll`,
+    method: 'get',
+    params,
+  })
+}
+
+export function editSurveyFdForm(data) {
+  return request({
+    url: `${url}/costSurveyFdTemplate/v1/`,
+    method: 'put',
+    data,
+  })
+}
+
+export function changeSurveyFdStatus(id) {
+  return request({
+    url: `${url}/costSurveyFdTemplate/v1/enable`,
+    method: 'get',
+    params: { id: id },
+  })
+}
+
+export function getListFixedEnabled() {
+  return request({
+    url: url + '/costSurveyFdTemplate/v1/listFixedEnabled',
+    method: 'get',
+  })
+}

+ 21 - 0
src/api/costSurveyFdTemplateHeaders.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getListBySurveyFdTemplateIdAndVersion(params) {
+  return request({
+    url:
+      url +
+      '/costSurveyFdTemplateHeaders/v1/getlistBySurveyTemplateIdAndVersion',
+    method: 'get',
+    params,
+  })
+}
+
+export function getFdBatchSaveOrUpdate(data) {
+  return request({
+    url: url + '/costSurveyFdTemplateHeaders/v1/batchSaveOrUpdate',
+    method: 'post',
+    data: data,
+  })
+}

+ 24 - 0
src/api/costSurveyFdTemplateItems.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function listByTemplateIdAndVersion(surveyTemplateId, versionId) {
+  return request({
+    url: url + '/costSurveyFdTemplateItems/v1/listByTemplateIdAndVersion',
+    method: 'get',
+    params: {
+      surveyTemplateId: surveyTemplateId,
+      version: versionId,
+    },
+  })
+}
+
+export function getCellCodesByTemplateId(surveyTemplateId) {
+  return request({
+    url: url + '/costSurveyFdTemplateItems/v1/cellCodesByTemplateId',
+    method: 'get',
+    params: {
+      surveyTemplateId: surveyTemplateId,
+    },
+  })
+}

+ 33 - 0
src/api/costSurveyFdTemplateVersion.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function addSurveyFdTemplateVersion(data) {
+  return request({
+    url: url + '/costSurveyFdTemplateVersion/v1/save',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function delSurveyFdTemplateVersionById(id) {
+  return request({
+    url: url + '/costSurveyFdTemplateVersion/v1/' + id,
+    method: 'delete',
+  })
+}
+
+export function delSurveyFdTemplateVersions(id) {
+  return request({
+    url: url + '/costSurveyFdTemplateVersion/v1/' + id,
+    method: 'delete',
+  })
+}
+
+export function putSurveyFdTemplatePublishVersion(data) {
+  return request({
+    url: url + '/costSurveyFdTemplateVersion/v1/publish-version',
+    method: 'post',
+    data: data,
+  })
+}

+ 41 - 0
src/api/costSurveyTemplate.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getSurveyTemplate(data) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/query',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function addSurveyTemplate(data) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/save',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function delSurveyTemplateById(params) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/remove',
+    method: 'get',
+    params,
+  })
+}
+export function delSurveyTemplates(ids) {
+  return request({
+    url: url + '/costSurveyTemplate/v1/batchRemove/',
+    method: 'post',
+    data: ids,
+  })
+}
+
+export function getListFixedEnabled() {
+  return request({
+    url: url + '/costSurveyTemplate/v1/listFixedEnabled',
+    method: 'get',
+  })
+}

+ 41 - 0
src/api/costSurveyTemplateHeaders.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getListBySurveyTemplateId(data) {
+  console.log(data)
+  return request({
+    url: url + '/costSurveyTemplateHeaders/v1/getlistBySurveyTemplateId',
+    method: 'get',
+    params: {
+      surveyTemplateId: data,
+    },
+  })
+}
+
+export function getListBySurveyTemplateIdAndVersion(params) {
+  return request({
+    url:
+      url + '/costSurveyTemplateHeaders/v1/getlistBySurveyTemplateIdAndVersion',
+    method: 'get',
+    params,
+  })
+}
+
+export function getBatchSaveOrUpdate(data) {
+  return request({
+    url: url + '/costSurveyTemplateHeaders/v1/batchSaveOrUpdate',
+    method: 'post',
+    data: data,
+  })
+}
+
+export function delBatchSaveOrUpdate(id) {
+  return request({
+    url: url + '/costSurveyTemplateHeaders/v1/remove',
+    method: 'delete',
+    params: {
+      id: id,
+    },
+  })
+}

+ 24 - 0
src/api/costSurveyTemplateItems.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function listByTemplateIdAndVersion(surveyTemplateId, versionId) {
+  return request({
+    url: url + '/costSurveyTemplateItems/v1/listByTemplateIdAndVersion',
+    method: 'get',
+    params: {
+      surveyTemplateId: surveyTemplateId,
+      version: versionId,
+    },
+  })
+}
+
+export function getCellCodesByTemplateId(surveyTemplateId) {
+  return request({
+    url: url + '/costSurveyTemplateItems/v1/cellCodesByTemplateId',
+    method: 'get',
+    params: {
+      surveyTemplateId: surveyTemplateId,
+    },
+  })
+}

+ 60 - 0
src/api/costSurveyTemplateVersion.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getSurveyTemplateVersion(data) {
+  return request({
+    url: url + '/costSurveyTemplateVersion/v1/listByTemplateId',
+    method: 'get',
+    data: data,
+  })
+}
+
+export function addSurveyTemplateVersion(data) {
+  return request({
+    url: url + '/costSurveyTemplateVersion/v1/save',
+    method: 'post',
+    data: data,
+  })
+}
+
+// 批量删除成本调查表模板
+export function batchDeleteCostForm(ids) {
+  return request({
+    url: `${url}/costSurveyTemplateVersion/v1/batchDelete`,
+    method: 'post',
+    data: ids,
+  })
+}
+//根据模板ID和状态查询版本数据
+export function getCostSurveyTemplateVersionsByTemplateId(params) {
+  return request({
+    url: `${url}/costSurveyTemplateVersion/v1/listByTemplateId`,
+    method: 'get',
+    params,
+  })
+}
+
+export function delSurveyTemplateVersionById(id) {
+  return request({
+    url: url + '/costSurveyTemplateVersion/v1/' + id,
+    method: 'delete',
+  })
+}
+
+export function delSurveyTemplateVersion(data) {
+  return request({
+    url: url + '/costSurveyTemplateVersion/v1/',
+    method: 'delete',
+    params: {
+      ids: data,
+    },
+  })
+}
+export function putSurveyTemplatePublishVersion(data) {
+  return request({
+    url: url + '/costSurveyTemplateVersion/v1/publish-version',
+    method: 'post',
+    data: data,
+  })
+}

+ 58 - 0
src/api/costVerifyManage.js

@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+// 新增,更新成本核定表模板表数据
+export function batchSave(data) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/`,
+    method: 'post',
+    data,
+  })
+}
+export function getlistBySurveyTemplateIdcurrentversion(params) {
+  return request({
+    url: `${url}/costSurveyTemplateHeaders/v1/getlistBySurveyTemplateIdcurrentversion`,
+    method: 'get',
+    params,
+  })
+}
+export function batchDeleteCostVerifyForm(data) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/batchRemove`,
+    method: 'post',
+    data,
+  })
+}
+
+// 根据成本核定表id获取成本核定表头子表数据列表
+export function getlistBySurveyTemplateId(params) {
+  return request({
+    url: `${url}/costVerifyTemplateHeaders/v1/getlistBySurveyTemplateId`,
+    method: 'get',
+    params,
+  })
+}
+// 状态切换
+export function enable(params) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/enable`,
+    method: 'post',
+    params,
+  })
+}
+
+// 计算公式-选择成本核定表
+export function getListFixedEnabled(params) {
+  return request({
+    url: `${url}/costVerifyTemplate/v1/listExcludeId`,
+    method: 'get',
+    params,
+  })
+}
+export function listByVerifyTemplateId(params) {
+  return request({
+    url: `${url}/costVerifyTemplateItems/v1/listByCurrentTemplateId`,
+    method: 'get',
+    params,
+  })
+}

+ 239 - 0
src/api/dictionaryManage.js

@@ -0,0 +1,239 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+export function getDistrictTree() {
+  return request({
+    url: `${url}/api/costDistrict/v1/getDistrictTree`,
+    method: 'get',
+  })
+}
+
+// 获取省级数据
+export function getProvinces() {
+  return request({
+    url: `${url}/api/costDistrict/v1/getProvinces`,
+    method: 'get',
+  })
+}
+// 根据pid获取市、区数据
+export function getCityListByPid(params) {
+  return request({
+    url: `${url}/api/costDistrict/v1/getListByPid`,
+    method: 'get',
+    params,
+  })
+}
+// 根据code获取数据
+export function getByCode(params) {
+  return request({
+    url: `${url}/api/costDistrict/v1/getByCode`,
+    method: 'get',
+    params,
+  })
+}
+// 根据分类key获取字典
+export function getByTypeKey(params) {
+  return request({
+    url: `${url}/sys/dataDict/v1/getByTypeKey`,
+    method: 'get',
+    params,
+  })
+}
+
+// 以下接口没有使用
+export function getDictTypeAll() {
+  return request({
+    url: `${url}/api/costDictType/v1/selectDictTypeAll`,
+    method: 'get',
+  })
+}
+export function selectDictDataByType(params) {
+  return request({
+    url: `${url}/api/costDictType/v1/selectDictDataByType`,
+    method: 'get',
+    params: params,
+  })
+}
+export function addDictType(data) {
+  return request({
+    url: `${url}/api/costDictType/v1/save`,
+    method: 'post',
+    data,
+  })
+}
+export function updateDictType(data) {
+  return request({
+    url: `${url}/api/costDictType/v1/update`,
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 字典数据分页查询
+ * @param {Object} data 查询参数
+ * @param {string} data.groupRelation 分组关系,如"AND"
+ * @param {Object} data.groupPre 前置分组条件
+ * @param {Object} data.pageBean 分页信息
+ * @param {number} data.pageBean.pageNum 当前页码
+ * @param {number} data.pageBean.pageSize 每页条数
+ * @param {boolean} data.pageBean.showTotal 是否显示总数
+ * @param {Object} data.params 额外参数
+ * @param {Array} data.queries 查询条件数组
+ * @param {Array} data.sorter 排序条件数组
+ * @param {Object} data.vo 视图对象
+ * @returns {Promise} 请求Promise
+ */
+export function queryDictionaryData(data) {
+  return request({
+    url: url + '/api/costDictData/v1/query',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 添加字典实体
+ * @param {Object} data 字典实体数据
+ * @param {string} data.createBy 创建人
+ * @param {string} data.createTime 创建时间
+ * @param {string} data.cssClass CSS类名
+ * @param {string} data.dictCode 字典编码
+ * @param {string} data.dictLabel 字典标签
+ * @param {string} data.dictSort 字典排序
+ * @param {string} data.dictType 字典类型
+ * @param {string} data.dictValue 字典值
+ * @param {string} data.isDefault 是否默认
+ * @param {string} data.listClass 列表类名
+ * @param {string} data.pkVal 主键值
+ * @param {string} data.remark 备注
+ * @param {string} data.status 状态
+ * @param {string} data.updateBy 更新人
+ * @param {string} data.updateTime 更新时间
+ * @returns {Promise} 请求Promise
+ */
+export function addDictionaryData(data) {
+  return request({
+    url: url + '/api/costDictData/v1/',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新字典实体
+ * @param {Object} data 字典实体数据
+ * @param {string} data.createBy 创建人
+ * @param {string} data.createTime 创建时间
+ * @param {string} data.cssClass CSS类名
+ * @param {string} data.dictCode 字典编码
+ * @param {string} data.dictLabel 字典标签
+ * @param {string} data.dictSort 字典排序
+ * @param {string} data.dictType 字典类型
+ * @param {string} data.dictValue 字典值
+ * @param {string} data.isDefault 是否默认
+ * @param {string} data.listClass 列表类名
+ * @param {string} data.pkVal 主键值
+ * @param {string} data.remark 备注
+ * @param {string} data.status 状态
+ * @param {string} data.updateBy 更新人
+ * @param {string} data.updateTime 更新时间
+ * @returns {Promise} 请求Promise
+ */
+export function updateDictionaryData(data) {
+  return request({
+    url: url + '/api/costDictData/v1/',
+    method: 'put',
+    data,
+  })
+}
+
+/**
+ * 删除字典实体
+ * @param {string} id 字典实体主键
+ * @returns {Promise} 请求Promise
+ */
+export function deleteDictionaryData(id) {
+  return request({
+    url: url + '/api/costDictData/v1/' + id,
+    method: 'delete',
+  })
+}
+/**
+ * 批量删除字典实体
+ * @param {Array} ids 字典实体主键数组
+ * @returns {Promise} 批量删除字典实体
+ */
+export function batchDeleteDictionaryData(ids) {
+  return request({
+    url: url + '/api/costDictData/v1',
+    method: 'delete',
+    data: ids,
+  })
+}
+
+/**
+ * 新增字典数据表数据
+ * @param {Object} data 字典实体数据
+ * @param {string} data.createBy 创建人
+ * @param {string} data.createTime 创建时间
+ * @param {string} data.cssClass CSS类名
+ * @param {string} data.dictCode 字典编码
+ * @param {string} data.dictLabel 字典标签
+ * @param {string} data.dictSort 字典排序
+ * @param {string} data.dictType 字典类型
+ * @param {string} data.dictValue 字典值
+ * @param {string} data.isDefault 是否默认
+ * @param {string} data.listClass 列表类名
+ * @param {string} data.pkVal 主键值
+ * @param {string} data.remark 备注
+ * @param {string} data.status 状态
+ * @param {string} data.updateBy 更新人
+ * @param {string} data.updateTime 更新时间
+ * @returns {Promise} 请求Promise
+ */
+export function saveDictionaryData(data) {
+  return request({
+    url: url + '/api/costDictData/v1/save',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 修改字典类型表数据
+ * @param {Object} data 字典类型数据
+ * @param {string} data.createBy 创建人
+ * @param {string} data.createTime 创建时间
+ * @param {string} data.dictId 字典ID
+ * @param {string} data.dictName 字典名称
+ * @param {string} data.dictType 字典类型
+ * @param {string} data.pkVal 主键值
+ * @param {string} data.remark 备注
+ * @param {string} data.status 状态
+ * @param {string} data.updateBy 更新人
+ * @param {string} data.updateTime 更新时间
+ * @returns {Promise} 请求Promise
+ */
+export function updateDictTypeData(data) {
+  return request({
+    url: url + '/api/costDictType/v1/update',
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 根据字典类型ids删除数据
+ * @param {Array} dictIds 字典id数组
+ * @returns {Promise} 请求Promise
+ */
+export function deleteDictTypeByIds(dictIds) {
+  return request({
+    url: url + '/api/costDictType/v1/deleteDictTypeByIds',
+    method: 'get',
+    params: {
+      dictIds: dictIds,
+    },
+  })
+}

+ 15 - 0
src/api/file.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+// 上传文件
+export function uploadFile(fileUrl, data, config) {
+  return request({
+    url: url + fileUrl,
+    method: 'post',
+    headers: {
+      'Content-Type': 'multipart/form-data',
+    },
+    data,
+    ...config,
+  })
+}

+ 19 - 0
src/api/financeSheetManage.js

@@ -0,0 +1,19 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+// 根据监管目录ID查询所有现行版本的财务数据表模板
+export function getListByCatalogId(params) {
+  return request({
+    url: url + `/costSurveyFdTemplate/v1/listByCatalogId`,
+    method: 'get',
+    params,
+  })
+}
+// 获取所有现行版启用的财务数据表模板数据
+export function allcurrentCostSurveyList(params) {
+  return request({
+    url: url + `/costSurveyFdTemplate/v1/allcurrentCostSurveyList`,
+    method: 'get',
+    params,
+  })
+}

+ 177 - 0
src/api/flow.js

@@ -0,0 +1,177 @@
+import request from '@/utils/request'
+
+const { bpmRunTime, bpmModel } = window.context
+
+export function getTodos(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getTodoList`,
+    method: 'post',
+    data,
+  })
+}
+
+export function getFillData(data) {
+  return request({
+    url: '/flow/todo',
+    method: 'post',
+    data,
+  })
+}
+
+export function getStartOften(data) {
+  return request({
+    url: '/flow/start/often',
+    method: 'post',
+    data,
+  })
+}
+//获取审批按钮
+export function getApprovalButtons(query, cb) {
+  const { taskId, leaderId } = query
+  const url = `${bpmRunTime}/runtime/task/v1/getButtonsBytaskId?taskId=${taskId}&leaderId=${leaderId}&reqParams=`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+
+//审批按钮挂起或者取消挂起
+export function hangUpOrCancelHangUp(query, cb) {
+  const { instId, type } = query
+  const url = `${bpmRunTime}/runtime/instance/v1/${type}?instId=${instId}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+
+//获取流程状态根据defId 实例id,任务id
+export function getFlowStatus(query, cb) {
+  const { instId, taskId } = query
+  const url = `${bpmRunTime}/runtime/instance/v1/getDefStatus?instId=${instId}&taskId=${taskId}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+//获取审批意见通过流程实例id和任务id
+export function getBpmSaveOpinionByTeam(instId, taskId, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/getBpmSaveOpinionByTeam?instId=${instId}&taskId=${taskId}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+//验证当前用户是否有该任务处理权限
+export function checkTaskAuth(taskId, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/checkTaskAuth?taskId=${taskId}`
+  return request.get(url)
+}
+//新增,修改或暂存审批意见
+export function savaApprovalComments(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/createBpmSaveOpinion`,
+    method: 'post',
+    data,
+  })
+}
+
+// 根据 taskId 获取任务明细
+export function getNotice(taskId) {
+  const url = `${bpmRunTime}/runtime/task/v1/getNotice?id=${taskId}`
+  return request.get(url)
+}
+
+// 获取流程图
+export function getBpmImage(instId, proInstId, defId, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getBpmImage?taskId=&proInstId=${proInstId}&defId=${defId}&bpmnInstId=${instId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 获取流程实例明细
+export function instanceFlowImage(data, cb) {
+  const { instId, nodeId, type, defId } = data
+  const url = `${bpmRunTime}/runtime/instance/v1/instanceFlowImage?proInstId=${instId}&nodeId=
+  ${nodeId || ''}&type=${type || ''}&defId=${defId || ''}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 获取审批意见
+export function getNodeOpinions(data, cb) {
+  const { instId, nodeIds, defId } = data
+  const url = `${bpmRunTime}/runtime/task/v1/nodeOpinion?instId=${instId}&nodeId=${nodeIds}&defId=${defId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 获取我的常用流程
+export function getMyOftenFlow() {
+  const url = `${bpmRunTime}/runtime/instance/v1/getMyOftenFlow`
+  return request.get(url)
+}
+
+// 获取所有流程
+export function getHasAuthFlowList(queryFilter = {}) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getHasAuthFlowList`
+  return request.post(url, queryFilter)
+}
+
+// 保存常用流程
+export function saveMyOftenFlow(data) {
+  const url = `${bpmModel}/bpmModel/BpmOftenFlow/v1/saveMyOftenFlow`
+  return request.post(url, data)
+}
+
+// 当前账号是否有启动该流程的权限
+export function flowHasStartRights(defKey) {
+  const url = `${bpmModel}/flow/def/v1/flowHasStartRights?defKey=${defKey}`
+  return request.get(url)
+}
+
+// 根据当前任务查询是否在第一个节点
+export function isTaskFirstNode(taskId) {
+  return request.get(
+    `${bpmRunTime}/runtime/task/v1/taskIsFirstNode?taskId=${taskId}`
+  )
+}
+
+// 获取流程全局打印模板
+export function getFlowGlobalTemplate(defId) {
+  return request({
+    url: `${bpmModel}/flow/wordPrint/v1/getGlobalPrintTemplate?defId=${defId}`,
+    method: 'get',
+  })
+}
+
+export function getBpmPrintRecordByInstId(instId, nodeId) {
+  return request({
+    url: `${bpmRunTime}/runtime/bpmPrintRecord/v1/getByProInstId?procInstId=${instId}&nodeId=${
+      nodeId || ''
+    }`,
+    method: 'get',
+  })
+}
+
+export function getBpmPrintRecord(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/bpmPrintRecord/v1/query`,
+    method: 'post',
+    data,
+  })
+}
+
+export function getWatermarkByInstId(id){
+  return request({
+    url: `${bpmModel}/bpmModel/bpmWatermark/v1/getByInstId?instId=${id}`,
+    method: 'get',
+  })
+}
+
+export function savePrintRecord(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/bpmPrintRecord/v1/printLog`,
+    data,
+    method: 'post',
+  })
+}

+ 57 - 0
src/api/form.js

@@ -0,0 +1,57 @@
+import request from '@/utils/request'
+const portal = window.context.portal
+//获取自定义sql视图数据
+export function getQuerySqlView(data) {
+  return request({
+    url: `${context.form}/form/query/queryView/getJson?sqlAlias=${data.sqlAlias}&alias=${data.alias}`,
+    method: 'get',
+  })
+}
+
+//获取自定义sql查询视图数据列表
+export function getQuerySqlViewByPagination(data) {
+  return request({
+    url: `${context.form}/form/query/queryView/data_${data.sqlAlias}/${data.alias}`,
+    method: 'post',
+    data: data.pagination,
+  })
+}
+////后台管理预览VUE表单
+export function previewDesignVue(id) {
+  return request({
+    url: `${context.form}/form/form/v1/previewDesignVue?formId=${id}`,
+    method: 'get',
+  })
+}
+
+// 获取表单的打印模板列表
+export function getFormPrintList(data) {
+  return request({
+    url: `${context.form}/form/printTemplate/v1/getPrintList`,
+    data,
+    method: 'post',
+  })
+}
+
+// 通过表单ID获取表单数据(包括bpmForm,permission,data)
+export function getFormById(formId) {
+  return request({
+    url: `${context.form}/form/form/v1/previewDesignVue?formId=${formId}`,
+  })
+}
+
+//word模板打印 data.id: 模板id
+export function wordPrint(data) {
+  return request({
+    url: `${context.form}/form/printTemplate/v1/formWordPrint`,
+    data,
+    method: 'post',
+  })
+}
+
+export function getCustomDataByAlias(alias) {
+  return request({
+    url: `${context.form}/form/customDialog/v1/getByAlias?alias=${alias}`,
+    method: 'get',
+  })
+}

+ 38 - 0
src/api/memoManage.js

@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+const url = window.context.form
+
+// 备忘录列表
+export function getMemoList(params) {
+  return request({
+    url: `${url}/api/costProjectMemo/v1/pageList`,
+    method: 'post',
+    data: params,
+  })
+}
+
+// 备忘录详情
+export function getMemoDetail(params) {
+  return request({
+    url: `${url}/api/costProjectMemo/v1/getDetail`,
+    method: 'get',
+    params: params,
+  })
+}
+
+// 添加备忘录
+export function addMemo(params) {
+  return request({
+    url: `${url}/api/costProjectMemo/v1/`,
+    method: 'post',
+    data: params,
+  })
+}
+
+// 更新备忘录
+export function updateMemo(params) {
+  return request({
+    url: `${url}/api/costProjectMemo/v1/update`,
+    method: 'post',
+    data: params,
+  })
+}

+ 135 - 0
src/api/newApi.js

@@ -0,0 +1,135 @@
+
+const { uc, form, portal, bpmModel, bpmRunTime, auth } = window.context
+import request from '@/utils/request'
+
+export function getPortalVisits(type) {
+  return request({
+    url: `${portal}/sys/sysLogs/v1/portal/visits?type=${type}`,
+    method: 'get',
+  })
+}
+//任务量分析
+export function getPortalInstnum(type) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/portal/instnum?type=${type}`,
+    method: 'get',
+  })
+}
+export function getPortalOrgnum(demId) {
+  return request({
+    url: `${uc}/api/org/v1/orgs/portal/orgnum${demId ? `?demId=${demId}` : ''}`,
+    method: 'get',
+  })
+}
+export function getPortalUsernum() {
+  return request({
+    url: `${uc}/api/org/v1/orgUsers/portal/usernum`,
+    method: 'get',
+  })
+}
+// 获取应用数量
+export function getPortalAppnum() {
+  return request({
+    url: `${portal}/portal/sysApp/v1/portal/appnum`,
+    method: 'get',
+  })
+}
+
+// 查询通知公告列表(现在没有已读、未读状态)
+export function getPortalGetNews(params) {
+  return request({
+    url: `${portal}/portalNewsNotice/v1/getNewsForRead?classifyId=${params.classifyId}&page=${params.page}&pageSize=${params.pageSize}`,
+    method: 'get',
+  })
+}
+//查询通知公告详情信息
+export function getNewsForReadById(id) {
+  return request({
+    url: `${portal}/portalNewsNotice/v1/getNewsForReadById?id=${id}`,
+    method: 'get',
+  })
+}
+export function portalNewsNoticeQuery(params) {
+  // return request({
+  //   url: `${uc}/portalNewsNotice/v1/query`,
+  //   method: 'post',
+  //   params,
+  // })
+  const url = `${portal}/portalNewsNotice/v1/query`
+  return request.post(url, params)
+}
+// 月办理量
+export function getPortalMonthinstnum() {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/portal/monthinstnum`,
+    method: 'get',
+  })
+}
+// 应用列表
+export function portalSysAppQuery(data) {
+  return request({
+    url: `${uc}/portal/sysApp/v1/query`,
+    method: 'post',
+    data,
+  })
+}
+
+// 常用应用
+export function loadMySysAppOften(data) {
+  return request({
+    url: `${portal}/portal/sysApp/v1/portal/loadMySysAppOften?type=${data.type}`,
+    method: 'get',
+  })
+}
+
+// 切换组织架构
+export function setCookie(post) {
+  return request({
+    // url: `${uc}/uc/ucGroup/v1/setCookie?postId=${post.postId}&orgId=${post.orgId}`,
+    url: `${uc}/uc/ucGroup/v1/setCookie?postId=${post.postId}`,
+    method: 'get',
+  })
+}
+
+// 全部应用
+export function getSysAppOften(searchWord) {
+  return request({
+    url: `${portal}/portal/sysApp/v1/portal/sysAppOften${searchWord ? `?searchWord=${searchWord}` : ''}`,
+    method: 'get',
+  })
+}
+
+// ${searchWord ? `?searchWord=${searchWord}` : ''}
+
+// 报存更多应用
+export function saveMySysAppOften(data) {
+  return request({
+    url: `${portal}/portal/sysApp/v1/portal/saveMySysAppOften`,
+    method: 'post',
+    data,
+  })
+}
+export function submitSysLog(data) {
+  return request({
+    url: `${portal}/sys/sysLogs/v1/submitSysLog`,
+    method: 'post',
+    data,
+  })
+}
+
+// 获取当前用户最近登录时间 http://localhost:8088/uc/loginLog/v1/queryLoginLogByUserId
+export function queryLoginLogByUserId(query) {
+  return request({
+    url: `${uc}/uc/loginLog/v1/queryLoginLogByUserId`,
+    method: 'get',
+    params: query,
+  })
+}
+
+// 免登:通过token生成临时code
+export function generate() {
+  return request({
+    url: '/auth/oauth/user/code/generate',
+    method: 'get',
+  })
+}

+ 18 - 0
src/api/openPlatform.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+const bpmModel = window.context.bpmModel
+const bpmRunTime = window.context.bpmRunTime
+const portal = window.context.portal
+const uc = window.context.uc;
+const qs = require('qs');
+export default {
+  getOpenApiData(){
+    //获取首页数据
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getOpenApiData').then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+}

+ 306 - 0
src/api/personal.js

@@ -0,0 +1,306 @@
+import request from '@/utils/request'
+
+const { uc, portal, bpmRunTime, bpmModel, form } = window.context
+
+// 保存常用语
+export function savaCommonWords(data) {
+  const url = `${bpmModel}/flow/approvalItem/v1/save`
+  return request.post(url, data)
+}
+
+// 获取常用语
+export function getCommonWords(data) {
+  const url = `${bpmModel}/flow/approvalItem/v1/listJson?isPersonal=true`
+  return request.post(url, data)
+}
+
+// 删除常用语
+export function delCommonWords(ids) {
+  const url = `${bpmModel}/flow/approvalItem/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+// 编辑委托
+export function agentSave(data) {
+  const url = `${bpmModel}/flow/agent/v1/save`
+  return request.post(url, data)
+}
+
+// 获取委托列表
+export function getAgentList(data) {
+  const url = `${bpmModel}/flow/agent/v1/listJson?isMgr=false`
+  return request.post(url, data)
+}
+
+// 查看委托详情
+export function getAgentDetail(id) {
+  const url = `${bpmModel}/flow/agent/v1/agentGet?id=${id}`
+  return request.get(url)
+}
+
+// 删除委托
+export function delAgentList(ids) {
+  const url = `${bpmModel}/flow/agent/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+// 获取流程列表
+export function getFlowList(data) {
+  const url = `${bpmModel}/flow/def/v1/listJson`
+  return request.post(url, data)
+}
+
+// 获取委托流程
+export function getFlowWithOutAuth(data) {
+  data.querys = data.querys || []
+  data.querys.push({
+    property: 'IS_MAIN_',
+    value: 'Y',
+    operation: 'EQUAL',
+    group: 'main',
+    relation: 'AND',
+  })
+  const url = `${bpmModel}/flow/def/v1/query`
+  return request.post(url, data)
+}
+
+// 获取领导秘书列表
+export function getSecretarylist(data) {
+  const url = `${bpmRunTime}/runtime/bpmSecretaryManage/v1/list?personal=true`
+  return request.post(url, data)
+}
+
+// 删除领导秘书
+export function delSecretary(ids) {
+  const url = `${bpmRunTime}/runtime/bpmSecretaryManage/v1/removes?ids=${ids}`
+  return request.delete(url)
+}
+
+// 保存领导秘书
+export function saveSecretary(data) {
+  const url = `${bpmRunTime}/runtime/bpmSecretaryManage/v1/save`
+  return request.post(url, data)
+}
+
+// 保存领导秘书
+export function getSecretaryDetail(userId) {
+  const url = `${bpmRunTime}/runtime/bpmSecretaryManage/v1/get/${userId}`
+  return request.get(url)
+}
+
+// 获取常用联系人
+export function getTopContacts(queryFilter) {
+  const url = `${uc}/uc/ucGroup/v1/query`
+  return request.post(url, queryFilter)
+}
+
+//保存常用联系人
+export function saveTopContacts(model) {
+  const url = `${uc}/uc/ucGroup/v1/save`
+  return request.post(url, model)
+}
+
+//删除常用联系人
+export function removeTopContactsBatch(ids) {
+  const url = `${uc}/uc/ucGroup/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+//获取常用联系人分组的用户
+export function getUcGroupUser(groupId, queryFilter) {
+  const url = `${uc}/uc/ucGroupUser/v1/getGroupUsers?groupId=${groupId}`
+  return request.post(url, queryFilter)
+}
+
+//删除常用联系人列表用户
+export function removeUcGroupUser(ids) {
+  const url = `${uc}/uc/ucGroupUser/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+//保存常用联系人列表用户
+export function saveUserGroup(param) {
+  const url = `${uc}/uc/ucGroupUser/v1/saveJson`
+  return request.post(url, param)
+}
+
+/**
+ * date: 2021/09/26
+ * @description 邮箱接口
+ *
+ */
+// 获取邮箱列表
+export function getMailTreeList() {
+  const url = `${portal}/mail/mail/mail/v1/getMailTreeData`
+  return request.get(url)
+}
+
+// 保存外部邮箱配置
+export function saveMailSetting(data) {
+  const url = `${portal}/mail/mail/mailSetting/v1/save?isOriginPwd=${data.isOriginPwd}`
+  return request.post(url, data)
+}
+
+// 测试邮箱连接(编辑/新增情况)
+export function testMailConnect(data) {
+  const url = `${portal}/mail/mail/mailSetting/v1/test?isOriginPwd=${data.isOriginPwd}`
+  return request.post(url, data)
+}
+
+// 测试邮箱连接(根据id)
+export function testMailConnectById(id) {
+  const url = `${portal}/mail/mail/mailSetting/v1/test?id=${id}`
+  return request.post(url)
+}
+
+// 获取外部邮箱配置列表
+export function getMailSettingList(queryFilter) {
+  const url = `${portal}/mail/mail/mailSetting/v1/listJson`
+  return request.post(url, queryFilter)
+}
+
+// 同步邮件
+export function getSysncById(id) {
+  const url = `${portal}/mail/mail/mail/v1/sync?id=${id}`
+  return request.post(url)
+}
+
+// 删除邮箱配置
+export function delMaliSettingById(ids) {
+  const url = `${portal}/mail/mail/mailSetting/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+// 获取邮件信息列表
+export function getMailList(queryFilter) {
+  const url = `${portal}/mail/mail/mail/v1/listJson`
+  return request.post(url, queryFilter)
+}
+
+// 获取邮件详细信息
+export function getMailDetail(id) {
+  const url = `${portal}/mail/mail/mail/v1/getJson?id=${id}`
+  return request.get(url)
+}
+
+// 删除邮件
+export function delMaliItemById({ ids, type }) {
+  const url = `${portal}/mail/mail/mail/v1/remove?ids=${ids}&type=${type}`
+  return request.get(url)
+}
+
+// 保存邮箱联系人
+export function saveContact(data) {
+  const url = `${portal}/mail/mail/mailLinkman/v1/save`
+  return request.post(url, data)
+}
+
+// 保存邮箱联系人列表
+export function getContactList(queryFilter) {
+  const url = `${portal}/mail/mail/mailLinkman/v1/listJson`
+  return request.post(url, queryFilter)
+}
+
+// 删除邮箱联系人
+export function delContactById(ids) {
+  const url = `${portal}/mail/mail/mailLinkman/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+// 模糊查询联系人和用户信息
+export function getMailUserList(query) {
+  const url = `${portal}/mail/mail/mailLinkman/v1/getMailAndUserData?query=${query}`
+  return request.get(url)
+}
+
+// 发送邮件(保存邮件信息)
+export function saveOrSendMail(data) {
+  const url = `${portal}/mail/mail/mail/v1/send`
+  return request.post(url, data)
+}
+
+// 设置邮件状态为已读
+export function setMailIsRead(id) {
+  const url = `${portal}/mail/mail/mail/v1/isRead?id=${id}`
+  return request.get(url)
+}
+
+/**  邮箱接口 结束 */
+
+//获取我的常用流程
+export function getMyOftenFlow(param) {
+  const url = `${bpmModel}/bpmMobileCategory/v1/getMyCommonFlow`
+  return request.post(url, param)
+}
+
+//删除我的常用流程
+export function removeOftenFlow(ids) {
+  const url = `${bpmModel}/bpmMobileCategory/v1/batchRemove?ids=${ids}`
+  return request.delete(url)
+}
+
+//保存我的常用流程
+export function addOftenFlow(defKyes) {
+  const url = `${bpmModel}/bpmMobileCategory/v1/customAddCommonFlow`
+  return request.post(url, defKyes)
+}
+
+// 常用联系人排序变更
+export function swapGroupUser(ids) {
+  const url = `${uc}/uc/ucGroupUser/v1/swap`
+  return request.post(url, ids)
+}
+
+/**
+ * date: 2021/11/17
+ * @description 内部消息接口
+ */
+// 获取内部消息
+export function getMessageList(queryFilter) {
+  const url = `${portal}/innermsg/messageReceiver/v1/list`
+  return request.post(url, queryFilter)
+}
+
+// 获取未读消息数
+export function getMsgBadge() {
+  const url = `${portal}/innermsg/messageReceiver/v1/getMsgbadge`
+  return request.get(url)
+}
+
+// 删除内部消息
+export function delInnerMessage(ids) {
+  const url = `${portal}/innermsg/messageReceiver/v1/remove?ids=${ids}`
+  return request.delete(url)
+}
+
+// 标记已读
+export function markInnerMessage(ids) {
+  const url = `${portal}/innermsg/messageReceiver/v1/mark?ids=${ids}`
+  return request.get(url)
+}
+
+// 获取内部消息详情
+export function getMessageDetail(id) {
+  const url = `${portal}/innermsg/messageReceiver/v1/get?id=${id}`
+  return request.get(url)
+}
+
+// 获取系统/个人消息_未读数量
+export function getNoReadMsgbadge(query) {
+  return request({
+    url: `${portal}/innermsg/messageReceiver/v1/getNoReadMsgbadge`,
+    method: 'get',
+    params: query,
+  })
+}
+
+/** 内部消息接口 结束 */
+
+//获取模板消息信息
+export function getModelMsg(query) {
+  return request({
+    url: `${form}/form/dataTemplate/v1/getForm/qzdef_xxmb/qzdef_xxmb`,
+    method: 'get',
+    params: query,
+  })
+}

+ 223 - 0
src/api/portal.js

@@ -0,0 +1,223 @@
+import req from '@/utils/request'
+import { saveAs } from 'file-saver'
+const { uc, form, portal, bpmModel, bpmRunTime, auth} = window.context
+const qs = require('qs')
+
+export default {
+  // 通过别名获取布局
+  getLayoutByAlias(alias) {
+    const url = `${portal}/portal/sysIndexLayoutManage/sysIndexLayoutManage/v1/getByAlias?alias=${alias}`
+    return req.get(url)
+  },
+
+  // 前端门户保存布局
+  setLayoutConfig(data) {
+    const url = `${portal}/portalUserLayoutConfig/v1/save`
+    return req.post(url, data)
+  },
+  getColumnByAlias(alias, cb) {
+    req
+      .get(
+        portal +
+          '/portal/sysIndexColumn/sysIndexColumn/v1/getByAlias?alias=' +
+          alias
+      )
+      .then((response) => {
+        cb(response)
+      })
+  },
+  batchGetColumnByAliases(aliases, cb) {
+    req
+      .post(
+        portal + '/portal/sysIndexColumn/sysIndexColumn/v1/getDatasByAlias',
+        aliases
+      )
+      .then((response) => {
+        cb(response)
+      })
+  },
+  getColumnData(column, cb) {
+    const reqUrl = column.dataFrom
+      .replace('${bpmModel}', bpmModel)
+      .replace('${bpmRunTime}', bpmRunTime)
+      .replace('${portal}', portal)
+      .replace('${uc}', uc)
+      .replace('${form}', form)
+    const requestType = column.requestType
+    var reqParam = column.dataParam
+    if (reqParam) {
+      reqParam = eval('(' + reqParam + ')')
+      var isMany = reqParam.length > 1
+      for (var i = 0; i < reqParam.length; i++) {
+        var value = reqParam[i]['value']
+        var name = reqParam[i]['name']
+        if (requestType == 'POST') {
+          try {
+            value = JSON.parse(value)
+          } catch (e) {}
+          if (isMany) {
+            reqParam[name] = value
+          } else {
+            reqParam = value
+          }
+        } else {
+          reqUrl =
+            i > 0 ? reqUrl + '&' + name + '=' + value : '?' + name + '=' + value
+        }
+      }
+    }
+    if (requestType == 'POST') {
+      req.post(reqUrl, reqParam).then((response) => {
+        cb(response.data)
+      })
+    } else {
+      req.get(reqUrl).then((response) => {
+        cb(response.data)
+      })
+    }
+  },
+  vueFrontHome(cb) {
+    req.get(portal + '/portal/main/v1/vueFrontHome').then((response) => {
+      cb(response.value)
+    })
+  },
+}
+
+export function getTagList(data) {
+  return request({
+    url: `${context.portal}/portal/sysTag/v1/query`,
+    method: 'post',
+    data,
+  })
+}
+
+export function saveTag(data) {
+  return request({
+    url: `${context.portal}/portal/sysTag/v1/save`,
+    method: 'post',
+    data,
+  })
+}
+//文件图片接口地址
+export function fileUrl(id) {
+  return `${portal}/system/file/v1/downloadFile?fileId=${id}`
+}
+
+// 获取新闻列表
+export function getNewsList(id) {
+  const url = `${portal}/portalNewsNotice/v1/getNews?classifyId=${id}`
+  return req.get(url)
+}
+
+// 获取新闻详情
+export function getNewsDetailById(id) {
+  const url = `${portal}/portalNewsNotice/v1/getNewsById?id=${id}`
+  return req.get(url)
+}
+
+export function getLongUrlByShortUrl(shortUrl) {
+  const url = `${portal}/portal/shorturlManage/v1/getLongUrlByShortUrl?shortUrl=${shortUrl}`
+  return req.get(url)
+}
+
+export function downloadFile(id, fileName) {
+  const url = fileUrl(id)
+  req({
+    url,
+    method: 'get',
+    responseType: 'arraybuffer',
+  }).then((response) => {
+    const blobData = new Blob([response.data])
+    saveAs(blobData, fileName)
+  })
+}
+
+export function wordPrint(data) {
+  //String.fromCharCode.apply(null, new Uint8Array(resp.data))
+  return new Promise((resolve, reject) => {
+    req({
+      url: `${portal}/system/file/v1/wordPrint`,
+      method: 'post',
+      data,
+      responseType: 'arraybuffer',
+    }).then((resp) => {
+      resolve(String.fromCharCode.apply(null, new Uint8Array(resp.data)))
+    })
+  })
+}
+
+export function getFileById(fileId) {
+  return req({
+    url: `${portal}/system/file/v1/${fileId}`,
+    method: 'get',
+  })
+}
+//获取表单模板信息
+export function getBpmDataTemplateInfo(param) {
+  return new Promise((resolve, reject) => {
+    req
+      .get(
+        form +
+          '/form/dataTemplate/v1/getBpmDataTemplateInfo?alias=' +
+          param.alias
+      )
+      .then(
+        (response) => {
+          resolve(response)
+        },
+        (error) => {
+          reject(error)
+        }
+      )
+  })
+}
+//工作台模板列表
+export function getLayoutTemplates(param) {
+  return new Promise((resolve, reject) => {
+    req.post(form + "/form/dataTemplate/v1/listJson", param).then(resp => {
+      resolve(resp);
+    }, error => {
+      reject(error);
+    })
+  })
+}
+
+//门户模板用户设置_查询
+export function getLayoutDetail(param) {
+  return new Promise((resolve, reject) => {
+    req.get(portal + "/portaltemplate/user/v1/getDetail?userId=" + param.userId+ "&orgId="+ param.orgId)
+      .then(function (rep) {
+        resolve(rep);
+      })
+      .catch(function (error) {
+        reject(error.message);
+      });
+  });
+}
+//门户模板用户设置_保存
+export function saveTemplate(param) {
+  return new Promise((resolve, reject) => {
+    req.request({
+      url: portal + '/portaltemplate/user/v1/save',
+      method: "POST",
+      data: qs.stringify(param),
+      headers: {'Content-type': 'application/x-www-form-urlencoded'}
+    }).then(response => {
+      resolve(response);
+    }, error => {
+      reject(error);
+    });
+  })
+}
+//门户模板用户设置_删除
+export function delTemplateUser(param) {
+  return new Promise((resolve, reject) => {
+    req.get(portal + "/portaltemplate/user/v1/delTemplateUser?userId=" + param.userId+ "&orgId="+ param.orgId)
+      .then(function (rep) {
+        resolve(rep);
+      })
+      .catch(function (error) {
+        reject(error.message);
+      });
+  });
+}

+ 775 - 0
src/api/process.js

@@ -0,0 +1,775 @@
+import request from '@/utils/request'
+
+const bpmModel = window.context.bpmModel
+const bpmRunTime = window.context.bpmRunTime
+const portal = window.context.portal
+
+export function getFlowTree() {
+  return request({
+    url: `${portal}/sys/sysType/v1/getTypesByKey?typeKey=FLOW_TYPE`,
+    method: 'get',
+  })
+}
+
+//获取新建流程列表
+export function getProcessList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/newProcess`,
+    method: 'post',
+    data,
+  })
+}
+
+//待办列表
+export function getTodoList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getTodoList`,
+    method: 'post',
+    data,
+  })
+}
+
+//已办列表
+export function getDoneList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getDoneInstList`,
+    method: 'post',
+    data,
+  })
+}
+//领导已办列表
+export function getDoneListLeader(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getDoneInstList?status=1`,
+    method: 'post',
+    data,
+  })
+}
+
+//已阅事项列表
+export function getNoticeDoneReadList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getNoticeDoneReadList`,
+    method: 'post',
+    data,
+  })
+}
+
+//我的请求
+export function getMyRequestList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/myRequest`,
+    method: 'post',
+    data,
+  })
+}
+
+//待阅事项
+export function getNoticeTodoReadList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getNoticeTodoReadList`,
+    method: 'post',
+    data,
+  })
+}
+
+//我传阅的
+export function getMyNoticeReadList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getMyNoticeReadList`,
+    method: 'post',
+    data,
+  })
+}
+
+//我转办的
+export function getDelegateList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getDelegate`,
+    method: 'post',
+    data,
+  })
+}
+
+//领导待办
+export function getLeaderTodoList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getLeaderTodoList`,
+    method: 'post',
+    data,
+  })
+}
+//根据实例id获取当前实例的办理环节
+export function getDoneByInstId(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getDoneList?isCheckRevoke=true`,
+    method: 'post',
+    data,
+  })
+}
+//传阅事项-我收到的 需要根据传阅人ownerId过滤数据
+export function getDoneByInstIdAndAccount(data,ownerId) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getDoneList?isCheckRevoke=true&ownerId=${ownerId}`,
+    method: 'post',
+    data,
+  })
+}
+//根据知会任务id获取当前任务的真实操作人
+export function getNoticeTodoReadById(noticeId) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getNoticeTodoReadById?noticeId=${noticeId}`,
+    method: 'get',
+  })
+}
+//提交批量处理
+export function batchHandle(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/batchHandle`,
+    method: 'post',
+    data,
+  })
+}
+
+//过滤非批量处理类型任务
+export function filterUnBatchable(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/filterUnBatchable?taskIds=${id}`,
+    method: 'get',
+  })
+}
+
+//根据用户获取各分类下的新建流程列表
+export function getNewProcessCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/newProcessCount`,
+    method: 'post',
+    data,
+  })
+}
+
+//逻辑删除草稿的流程实例
+export function deleteProcessInstanceById(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/removeDraftById?ids=${id}`,
+    method: 'delete',
+  })
+}
+// 逻辑删除流程实例
+export function deleteProcInstById(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/remove?ids=${id}`,
+    method: 'delete',
+  })
+}
+// 删除流程实例
+export function deleteInstById(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/instRemove?id=${id}`,
+    method: 'delete',
+  })
+}
+//终止流程
+export function terminationProcess(id, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/doEndProcessById?id=${id}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+//获取流程节点配置信息
+export function getCurNodeProperties(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getCurNodeProperties?defId=${data.defId}&instId=${data.instId}&taskId=${data.taskId}`,
+    method: 'get',
+  })
+}
+
+//获取任务是否能锁定
+export function canLock(query, cb) {
+  const hasTaskId = query.taskId
+  const hasTaskIdUrl = `${bpmRunTime}/runtime/task/v1/canLock?taskId=${query.taskId}&leaderId=${query.leaderId}`
+  const notTaskIdUrl = `${bpmRunTime}/runtime/task/v1/canLock?taskId=${query.taskId}`
+  const url = hasTaskId ? hasTaskIdUrl : notTaskIdUrl
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+// 获取任务锁定状态
+export function getTaskLockStatus(query, cb) {
+  const { taskId, leaderId } = query
+  const url = `${bpmRunTime}/runtime/task/v1/lockUnlock?taskId=${taskId}&leaderId=${leaderId}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+//处理任务
+export function savaTaskComplete(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/complete`,
+    method: 'post',
+    data,
+  })
+}
+//根据流程定义ID获取该流程的其它待办,如果获取不到,则返回其它待办(返回一条)
+export function getNextTaskByDefId(query) {
+  const { defKey, defId } = query
+  const url = `${bpmRunTime}/runtime/task/v1/nextTask?defId=${defId}&defKey=${defKey}`
+  return request.get(url)
+}
+//获取驳回任务页面参数
+export function getRejectTaskParams(query, cb) {
+  const { taskId, backModel } = query
+  const url = `${bpmRunTime}/runtime/task/v1/taskToReject?taskId=${taskId}&backModel=${backModel}`
+  request.get(url).then((response) => {
+    cb(response)
+  })
+}
+
+export function getTaskInfo(procIds) {
+  const url = `${bpmRunTime}/runtime/task/v1/instanceDetail`
+  return request.post(url, procIds)
+}
+export function getMyRequestTask(procId) {
+  const url = `${bpmRunTime}/runtime/task/v1/getMyRequestTask`
+  return request.post(url, procId)
+}
+
+export function getCandidatesListByTaskId(taskId) {
+  const url = `${bpmRunTime}/runtime/task/v1/getCandidatesListByTaskId?taskId=${taskId}`
+  return request.get(url)
+}
+//征询设置
+export function savaInquiry(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/taskToInqu`,
+    method: 'post',
+    data,
+  })
+}
+//征询回复
+export function savaInquiryReply(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/taskToInquReply`,
+    method: 'post',
+    data,
+  })
+}
+//保存表单为草稿(审批页面保存按钮)
+export function savaTaskDraft(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/saveDraft`,
+    method: 'post',
+    data,
+  })
+}
+
+//传阅回复提交
+export function savaCirculationReply(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/doNextCopyto`,
+    method: 'post',
+    data,
+  })
+}
+//加签反馈
+export function savaCountersignFeedback(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/userAddSignFeedback`,
+    method: 'post',
+    data,
+  })
+}
+//会签任务加签
+export function savaCountersign(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/taskSignUsers`,
+    method: 'post',
+    data,
+  })
+}
+//用户任务加签
+export function savaUserTaskCountersign(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/userTaskToSign`,
+    method: 'post',
+    data,
+  })
+}
+
+//沟通反馈
+export function savaCommunicateFeedback(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/doNextcommu`,
+    method: 'post',
+    data,
+  })
+}
+//转办设置
+export function savaTransfer(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/delegate`,
+    method: 'post',
+    data,
+  })
+}
+//流程终止
+export function savaTermination(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/doEndProcess`,
+    method: 'post',
+    data,
+  })
+}
+
+//流程启动时获取表单和bo
+export function getProcessFormAndBo(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getFormAndBO`,
+    method: 'post',
+    data,
+  })
+}
+//启动流程
+export function startProcess(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/start`,
+    method: 'post',
+    data,
+  })
+}
+//保存草稿
+export function savaProcessDraft(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/saveDraft`,
+    method: 'post',
+    data,
+  })
+}
+//获取后续可跳转节点
+export function getAfterJumpNodesByDefId(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getAfterJumpNodes`,
+    method: 'post',
+    data,
+  })
+}
+// 获取可跟踪的任务节点
+export function getTaskNode(data, cb) {
+  const { defId } = data
+  const url = `${bpmRunTime}/runtime/task/v1/taskNode?defId=${defId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 根据流程实例id获取已跟踪的节点
+export function getFollowedNode(data, cb) {
+  const { proInst } = data
+  const url = `${bpmRunTime}/runtime/taskFollow/v1/getFollowedNode?instId=${proInst}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 更新任务跟踪表数据
+export function taskFollowSave(data, cb) {
+  const url = `${bpmRunTime}/runtime/taskFollow/v1/save`
+  request.post(url, data).then((res) => {
+    cb(res)
+  })
+}
+
+// 根据实例ID判断流程是否结束
+export function processIsOver(procInstId, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/isEnd?procInstId=${procInstId}`
+  request.post(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 根据实例id获取实例对象
+export function getInstanceByInstId(instId, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getInstanceByInstId?instId=${instId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 根据流程实例ID获取当前任务节点审批人
+export function getExcutorByInstId(instId, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getExcutorNameByInstId?instId=${instId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 根据流程定义id获取流程信息
+export function defGet(defId, cb) {
+  const url = `${bpmModel}/flow/def/v1/defGet?defId=${defId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+
+// 发送人工催办
+export function sendBpmTaskUrgent(data, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/sendBpmTaskUrgent`
+  request.post(url, data).then((res) => {
+    cb(res)
+  })
+}
+
+// 流程抄送
+export function transToMore(data, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/transToMore`
+  request.post(url, data).then((res) => {
+    cb(res)
+  })
+}
+
+// 沟通设置
+export function communicate(data, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/communicate`
+  request.post(url, data).then((res) => {
+    cb(res)
+  })
+}
+//根据流程流程实例id获取该流程在发起节点的任务
+export function getStartNodeTaskByInstId(instId, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getStartNodeTaskByInstId?instId=${instId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+//流转设置
+export function savaExchange(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/taskToTrans`,
+    method: 'post',
+    data,
+  })
+}
+//根据defId或者procInstId或者taskId获取flowKey
+export function getFlowKey(query, cb) {
+  const key = Object.keys(query)[0]
+  const url = `${bpmRunTime}/runtime/instance/v1/getFlowKey?${key}=${query[key]}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+//获取任务详情
+export function getTaskDetailBo(query) {
+  return request.get(
+    `${bpmRunTime}/runtime/task/v1/taskDetailBo?taskId=${query.taskId}&reqParams=${query.reqParams}&leaderId=${query.leaderId}`
+  )
+}
+//获取流程实例表单
+export function getInstFormAndBO(query) {
+  let url = `${bpmRunTime}/runtime/instance/v1/getInstFormAndBO?proInstId=${query.instId}&myApplication=${query.myApplication||false}`
+  query.nodeId && (url += `&nodeId=${query.nodeId}`)
+  query.formId && (url += `&formId=${query.formId}`)
+  query.includData != null &&
+    query.includData != undefined &&
+    (url += `&includData=${query.includData}`)
+  query.getStartForm != null &&
+    query.getStartForm != undefined &&
+    (url += `&getStartForm=${query.getStartForm}`)
+  return request.get(url)
+}
+//根据流程实例id获取是否允许发起人撤回
+export function getSponsorRevoke(instId, cb) {
+  const url = `${bpmRunTime}/runtime/instance/v1/getSponsorRevokeByInstId?instId=${instId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+//撤回设置
+export function savaRevoke(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/revokeInstance`,
+    method: 'post',
+    data,
+  })
+}
+//获取顺序签署下一步执行人
+export function getNextExecutor(taskId, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/nextExecutor?taskId=${taskId}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+//获取各事项流程分类数量
+export function getTodoProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getTodoCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取领导待办流程分类数量
+export function getLeaderTodoProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getLeaderTodoCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取已办流程分类数量
+export function getDoneProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getDoneInstCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取领导已办流程分类数量
+export function getLeaderDoneProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getLeaderDoneCount`,
+    method: 'get',
+    data,
+  })
+}
+//获取我的转办流程分类数量
+export function getDelegateProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getDelegateCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取新建流程流程分类数量
+export function getNewProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/newProcessCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取我的收藏流程分类数量
+export function getCollectionProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/bpmFlowCollect/v1/myCollectCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取我的请求流程分类数量
+export function getRequestProcessClassifyCount(query) {
+  const url = `${bpmRunTime}/runtime/instance/v1/myRequestCount`
+  return request.get(url)
+}
+//获取我的收藏流程分类数量
+export function getDraftProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getMyDraftCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取我传阅的流程分类数量
+export function getCirculatedProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getMyNoticeReadCount`,
+    method: 'post',
+    data,
+  })
+}
+//获取我收到的流程分类数量
+export function getReceivedProcessClassifyCount(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getNoticeTodoReadCount`,
+    method: 'post',
+    data,
+  })
+}
+//我的传阅根据流程id撤回流程
+export function revokeProcessById(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/delBpmTaskNoticeById?id=${id}`,
+    method: 'post',
+  })
+}
+//批量处理接口
+export function savaPatchProcessing(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/batchHandle`,
+    method: 'post',
+    data,
+  })
+}
+//过滤未配置批量审批任务
+export function filterUnBatchTask(taskIds, cb) {
+  const url = `${bpmRunTime}/runtime/task/v1/filterUnBatchable?taskIds=${taskIds}`
+  request.get(url).then((res) => {
+    cb(res)
+  })
+}
+//获取待办卡片列表
+export function getTodoCard(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getTodoCard?size=21`,
+    method: 'post',
+    data,
+  })
+}
+//获取卡片模式时待办数量
+export function getTodoCardCount() {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getTodoCardCount`,
+    method: 'get',
+  })
+}
+//获取新建流程卡片模式流程列表
+export function getProcessCard(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/newProcessCard?size=11`,
+    method: 'post',
+    data,
+  })
+}
+
+//获取当前用户的领导
+export function getCurrentAccountLeader() {
+  return request({
+    url: `${bpmRunTime}/runtime/bpmSecretaryManage/v1/getSecretaryByUserId`,
+    method: 'get',
+  })
+}
+//流程收藏或者取消
+export function collectionProcessOrCancel(data, type) {
+  return request({
+    url: `${bpmRunTime}/bpmFlowCollect/v1/${type}`,
+    method: 'post',
+    data,
+  })
+}
+//获取已收藏流程
+export function getCollectionProcess(data) {
+  return request({
+    url: `${bpmRunTime}/bpmFlowCollect/v1/myCollect`,
+    method: 'post',
+    data,
+  })
+}
+//根据流程实例id获取流程实例信息
+export function getProcessInfo(instId) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/get?id=${instId}`,
+    method: 'get',
+  })
+}
+//获取领导待办卡片列表
+export function getLeaderTodoCard(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getLeaderTodoCard?size=6`,
+    method: 'post',
+    data,
+  })
+}
+//获取已阅列表
+export function getReadList(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/getNoticeDoneReadList`,
+    method: 'post',
+    data,
+  })
+}
+//标记已阅
+export function setRead(taskId) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/noticeTurnDode?taskId=${taskId}`,
+    method: 'post',
+    data: {},
+  })
+}
+//根据id删除任务
+export function deleteTask(ids) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/remove?ids=${ids}`,
+    method: 'delete',
+  })
+}
+//流程转办收回
+export function takeBackTask(taskId) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/retrieveBpmTask?taskId=${taskId}`,
+    method: 'get',
+  })
+}
+//获取待办表头数据
+export function getTodoExtendField() {
+  const url = `${portal}/sys/sysProperties/v1/getDecryptByAlias?alias=taskListFiledConf`
+  return request.get(url)
+}
+//获取紧急状态配置
+export function getUrgentStateConf(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getUrgentStateConf`,
+    method: 'post',
+    data: data,
+  })
+}
+//根据所传任务id标记该任务为已阅
+export function markTaskAsRead(taskId) {
+  return request({
+    url: `${bpmRunTime}/runtime/task/v1/addReadRecord?taskId=${taskId}`,
+    method: 'post',
+    data: {},
+  })
+}
+//根据流程定义id获取流程标题
+export function getProcessTitle(defId) {
+  const url = `${bpmModel}/flow/def/v1/getDefDesignByDefId?defId=${defId}`
+  return request.get(url)
+}
+
+//根据流程key获取流程的主版本
+export function getMainByDefIdOrKey(defId, defKey) {
+  defId = defId || ''
+  defKey = defKey || ''
+  const url = `${bpmModel}/flow/def/v1/getMainByDefIdOrKey?defId=${defId}&&defKey=${defKey}`
+  return request.get(url)
+}
+
+//任务延后处理
+export function taskDelayById(taskId) {
+  const url = `${bpmRunTime}/runtime/task/v1/taskDelayById?taskId=${taskId}`
+  return request.get(url)
+}
+
+// 获取用户是否拥有指定流程的发起权限
+export function checkStartRight(userId, defId, leaderId) {
+  return request.get(
+    `${bpmModel}/flow/defAuthorize/v1/startRight?userId=${userId}&defId=${defId}&leadId=${leaderId}`
+  )
+}
+
+// 获取待办消息_列表
+export function getTodoListJson(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/todo/v1/listJson`,
+    method: 'post',
+    data,
+  })
+}
+
+// 获取待办数量 http://localhost:8088/runtime/todo/v1/getMyTodoCount?todoState=0
+export function getMyTodoCount(query) {
+  return request({
+    url: `${bpmRunTime}/runtime/todo/v1/getMyTodoCount`,
+    method: 'get',
+    params: query,
+  })
+}
+
+export default {
+  getNewProcessCount,
+  getFlowTree,
+  getCurNodeProperties,
+  getNoticeDoneReadList,
+  getNoticeDoneReadList,
+  getStartNodeTaskByInstId,
+  batchHandle,
+  filterUnBatchable,
+}

+ 8 - 0
src/api/publicKey.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export function getPublicKey() {
+  return request({
+    url: `${window.context.uc}/base/tools/v1/getPublicKey`,
+    method: 'get',
+  })
+}

+ 10 - 0
src/api/router.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+export function getRouterList() {
+  return request({
+    url:
+      context.portal +
+      '/sys/sysMenu/v1/getCurrentUserMenu?menuAlias=front_menu',
+    method: 'get',
+  })
+}

+ 234 - 0
src/api/statistics.js

@@ -0,0 +1,234 @@
+import request from '@/utils/request'
+const bpmModel = window.context.bpmModel
+const bpmRunTime = window.context.bpmRunTime
+const portal = window.context.portal
+const uc = window.context.uc;
+const qs = require('qs');
+export default {
+  getAllOrgAuth(){
+    //获取组织树的下拉列表
+    return new Promise((resolve, reject) => {
+      request.get(uc + '/api/orgAuth/v1/orgAuths/getAllOrgAuth').then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //获取消息统计_消息数量
+  queryMsgUserCount(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/innermsg/messageReceiver/v1/queryMsgUserCount?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //获取消息统计_消息类型数量
+  queryMsgUserCountBySource(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/innermsg/messageReceiver/v1/queryMsgUserCountBySource?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //消息统计_消息发送排名
+  queryMsgUserByAppRank(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/innermsg/messageReceiver/v1/queryMsgUserByAppRank?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //消息统计_消息统计图表
+  queryMsgUserChart(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/innermsg/messageReceiver/v1/queryMsgUserChart?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //待办统计_待办数量
+  queryTodoMsgCount(param){
+    return new Promise((resolve, reject) => {
+      request.get(bpmRunTime + '/runtime/todo/v1/queryTodoMsgCount?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //待办统计_待办类型数量
+  queryTodoMsgCountBySource(param){
+    return new Promise((resolve, reject) => {
+      request.get(bpmRunTime + '/runtime/todo/v1/queryTodoMsgCountBySource?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //待办统计_待办发送排名
+  queryTodoMsgByAppRank(param){
+    return new Promise((resolve, reject) => {
+      request.get(bpmRunTime + '/runtime/todo/v1/queryTodoMsgByAppRank?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //待办统计_待办统计图表
+  queryTodoMsgChart(param){
+    return new Promise((resolve, reject) => {
+      request.get(bpmRunTime + '/runtime/todo/v1/queryTodoMsgChart?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //组织首页统计数字
+  getOrgStatic(){
+    return new Promise((resolve, reject) => {
+      request.get(uc + '/api/org/v1/getOrgStatic').then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //按时间组织获取用户登陆排名信息
+  getUserLogin(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getUserLogin?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //用户登录趋势图
+  getLoginLogTrend(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getLoginLogTrend?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //流程统计总数
+  getBpmProInstStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getBpmProInstStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //流程排行统计
+  getBpmProInstCountStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getBpmProInstCountStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+
+  //api总数统计
+  getApiStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getApiStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //api分类调用记录
+  getApiTypeStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getApiTypeStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //api时间维度调用记录
+  getApiTimeStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysLogs/v1/getApiTimeStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //应用分类数量统计
+  getAppStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysAppLogs/v1/getAppStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //应用分类调用记录
+  getAppTypeStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysAppLogs/v1/getAppTypeStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+  //应用时间维度调用记录
+  getAppTimeStatic(param){
+    return new Promise((resolve, reject) => {
+      request.get(portal + '/sys/sysAppLogs/v1/getAppTimeStatic?' + param).then(rep => {
+        resolve(rep);
+      }).catch(error => {
+        reject(error.message);
+      })
+    })
+  },
+}
+//应用调用记录
+export function linkEventLog(param) {
+  return new Promise((resolve, reject) => {
+    request.request({
+      url: portal + '/sys/sysAppLogs/v1/linkEventLog',
+      method: "POST",
+      data: qs.stringify(param),
+      headers: {'Content-type': 'application/x-www-form-urlencoded'}
+    }).then(response => {
+      resolve(response);
+    }, error => {
+      reject(error);
+    });
+  })
+}

+ 47 - 0
src/api/storeProcess.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+
+const bpmModel = window.context.bpmModel
+const bpmRunTime = window.context.bpmRunTime
+const portal = window.context.portal
+
+//根据流程实例ID获取相关信息
+export function getRelatedInformationById(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getRelatedInformationById?id=${id}`,
+    method: 'get',
+  })
+}
+
+//获取相关信息的阅读记录列表
+export function getByRecordInstId(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getByRecordInstId`,
+    method: 'post',
+    data,
+  })
+}
+
+//获取催办记录列表
+export function getUrgentById(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/getUrgrntById`,
+    method: 'post',
+    data,
+  })
+}
+
+//获取处理记录列表
+export function getOpinionsById(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/instance/v1/instanceFlowOpinions`,
+    method: 'get',
+    params: data,
+  })
+}
+
+export default {
+  getRelatedInformationById,
+  getUrgentById,
+  getOpinionsById,
+  getByRecordInstId,
+}

+ 11 - 0
src/api/superviseMattersManage.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+export function getSupervisorList(data) {
+  return request({
+    url: url + '/api/costProjectTask/v1/supervisorList',
+    method: 'post',
+    data: data,
+  })
+}

+ 8 - 0
src/api/sysModule.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export function getSysModule(id) {
+  return request({
+    method: 'get',
+    url: `${window.context.portal}/sys/sysModule/v1/getJson?id=${id}`,
+  })
+}

+ 253 - 0
src/api/taskCustomizedRelease.js

@@ -0,0 +1,253 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+/**
+ * 根据id获取监审工作方案数据详情
+ * @param {Object} params - 请求参数
+ * @param {String} params.id - 监审工作方案ID
+ * @returns {Promise} - 返回请求结果
+ */
+export function getCostProjectScenarioDetail(params) {
+  return request({
+    url: `${url}/api/costProjectScenario/v1/getDetail`,
+    method: 'get',
+    params,
+  })
+}
+
+/**
+ * 添加监审工作方案实体
+ * @param {Object} data - 监审工作方案数据
+ * @returns {Promise} - 返回请求结果
+ */
+export function addCostProjectScenario(data) {
+  return request({
+    url: `${url}/api/costProjectScenario/v1/`,
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新监审工作方案实体
+ * @param {Object} data - 监审工作方案更新数据
+ * @returns {Promise} - 返回请求结果
+ */
+export function updateCostProjectScenario(data) {
+  return request({
+    url: `${url}/api/costProjectScenario/v1/`,
+    method: 'put',
+    data,
+  })
+}
+
+/**
+ * 根据id获取报送资料要求数据详情
+ * @param {string} id - 数据ID
+ * @returns {Promise}
+ */
+export function getCostProjectMaterialDetail(params) {
+  return request({
+    url: `${url}/api/costProjectMaterial/v1/getDetail`,
+    method: 'get',
+    params,
+  })
+}
+
+/**
+ * 添加实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function addCostProjectMaterial(data) {
+  return request({
+    url: `${url}/api/costProjectMaterial/v1/`,
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function updateCostProjectMaterial(data) {
+  return request({
+    url: `${url}/api/costProjectMaterial/v1/`,
+    method: 'put',
+    data,
+  })
+}
+
+/**
+ * 分页查询pageList
+ * @param {Object} params - 查询参数
+ * @returns {Promise}
+ */
+export function getCostProjectMaterialPageList(params) {
+  return request({
+    url: `${url}/api/costProjectMaterial/v1/pageList`,
+    method: 'post',
+    data: params,
+  })
+}
+
+/**
+ * 根据id删除
+ * @param {string} id - 数据ID
+ * @returns {Promise}
+ */
+export function deleteCostProjectMaterial(id) {
+  return request({
+    url: `${url}/api/costProjectMaterial/v1/${id}`,
+    method: 'delete',
+  })
+}
+
+/**
+ * 根据id获取立任务成本调查表数据详情
+ * @param {string} id - 数据ID
+ * @returns {Promise}
+ */
+export function getCostProjectSurveyDetail(id) {
+  return request({
+    url: `${url}/api/costProjectSurvey/v1/getDetail`,
+    method: 'get',
+    params: {
+      id,
+    },
+  })
+}
+
+/**
+ * 添加实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function addCostProjectSurvey(data) {
+  return request({
+    url: `${url}/api/costProjectSurvey/v1`,
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function updateCostProjectSurvey(data) {
+  return request({
+    url: `${url}/api/costProjectSurvey/v1`,
+    method: 'put',
+    data,
+  })
+}
+
+/**
+ * 分页查询pageList
+ * @param {Object} params - 查询参数
+ * @returns {Promise}
+ */
+export function getCostProjectSurveyPageList(params) {
+  return request({
+    url: `${url}/api/costProjectSurvey/v1/pageList`,
+    method: 'post',
+    data: params,
+  })
+}
+
+/**
+ * 根据id获取监审项目文书表数据详情
+ * @param {string} id - 数据ID
+ * @returns {Promise}
+ */
+export function getCostProjectDocumentDetail(id) {
+  return request({
+    url: `${url}/api/costProjectDocument/v1/getDetail`,
+    method: 'get',
+    params: {
+      id,
+    },
+  })
+}
+
+/**
+ * 添加实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function addCostProjectDocument(data) {
+  return request({
+    url: `${url}/api/costProjectDocument/v1/save`,
+    method: 'post',
+    data,
+  })
+}
+
+/**
+ * 更新实体
+ * @param {Object} data - 实体数据
+ * @returns {Promise}
+ */
+export function updateCostProjectDocument(data) {
+  return request({
+    url: `${url}/api/costProjectDocument/v1/update`,
+    method: 'put',
+    data,
+  })
+}
+
+/**
+ * 分页查询pageList
+ * @param {Object} params - 查询参数
+ * @returns {Promise}
+ */
+export function getCostProjectDocumentPageList(params) {
+  return request({
+    url: `${url}/api/costProjectDocument/v1/pageList`,
+    method: 'post',
+    data: params,
+  })
+}
+
+/**
+ * 根据id删除
+ * @param {string} id - 数据ID
+ * @returns {Promise}
+ */
+export function deleteCostProjectDocument(id) {
+  return request({
+    url: `${url}/api/costProjectDocument/v1/${id}`,
+    method: 'delete',
+  })
+}
+/**
+ * 根据流程节id获取节点模板数据
+ */
+export function getCostProjectNodeTmpletePageList(params) {
+  return request({
+    url: `${url}/api/costProjectProccess/v1/nodeTmpletePageList`,
+    method: 'post',
+    data: params,
+  })
+}
+// 根据项目id获取详情
+export function getCostProjectNodeTmpleteGetDetail(params) {
+  return request({
+    url: `${url}/api/costProjectProccess/v1/getDetail`,
+    method: 'GET',
+    params,
+  })
+}
+
+export function saveProcess(data) {
+  return request({
+    url: `${url}/api/costProjectProccess/v1/createProcess`,
+    method: 'post',
+    data,
+  })
+}

+ 14 - 0
src/api/taskProgressManage.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request'
+
+const url = window.context.form
+
+/**
+ * 任务进度管理列表
+ */
+export function taskList(data) {
+  return request({
+    url: `${url}/api/costProjectTask/v1/taskList`,
+    method: 'POST',
+    data,
+  })
+}

+ 34 - 0
src/api/todoList.js

@@ -0,0 +1,34 @@
+import request from '@/utils/request'
+const bpmModel = window.context.bpmModel
+const bpmRunTime = window.context.bpmRunTime
+const portal = window.context.portal
+
+//待办列表-新版
+
+export function getTodoListNew(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/todo/v1/listJson`,
+    method: 'post',
+    data,
+  })
+}
+//待办消息-设置已读
+export function submitTodoRead(id) {
+  return request({
+    url: `${bpmRunTime}/runtime/todo/v1/submitTodoRead?id=${id}`,
+    method: 'get',
+  })
+}
+//获取待办消息_已办列表
+export function getDoneListNew(data) {
+  return request({
+    url: `${bpmRunTime}/runtime/todo/v1/listDoneJson`,
+    method: 'post',
+    data,
+  })
+}
+export default {
+  getTodoListNew,
+  getDoneListNew,
+  submitTodoRead
+}

+ 109 - 0
src/api/uc.js

@@ -0,0 +1,109 @@
+import request from '@/utils/request'
+const uc = window.context.uc
+
+// 用户选择器 获取用户列表
+export function getUserSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/user/v1/users/queryByType`,
+    method: 'post',
+    data,
+  })
+}
+// 用户选择器
+export function getByParentAndDem(data) {
+  return request({
+    url: `${context.uc}/api/org/v1/orgs/getByParentAndDem`,
+    method: 'post',
+    data,
+  })
+}
+// 用户选择器 获取权限
+export function getUserSelectorDem() {
+  return request({
+    url: `${context.uc}/api/demension/v1/dems/getAll`,
+    method: 'get',
+  })
+}
+// 组织选择器 获取列表
+export function getOrgSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/org/v1/orgs/getOrgPage`,
+    method: 'post',
+    data,
+  })
+}
+
+// 角色选择器 获取列表
+export function getRoleSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/role/v1/roles/getRolePage`,
+    method: 'post',
+    data,
+  })
+}
+// 职务选择器 获取列表
+export function getJobSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/job/v1/jobs/getJobPage`,
+    method: 'post',
+    data,
+  })
+}
+// 岗位选择器 获取列表
+export function getOrgPostSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/org/v1/orgPosts/getOrgPostPage`,
+    method: 'post',
+    data,
+  })
+}
+// 维度选择器 获取列表
+export function getDemSelectorList(data) {
+  return request({
+    url: `${context.uc}/api/demension/v1/dems/getDemListAll`,
+    method: 'post',
+    data,
+  })
+}
+
+//获取租户信息
+export function getTenantInfo(tenant, cb) {
+  return request({
+    url: `${uc}/uc/tenantManage/v1/getTenantByCode?code=${tenant}`,
+    method: 'get',
+  })
+}
+
+// 校验当前登录用户的电子签章密码
+export function getCurrentSeal(password, secretFree) {
+  return request({
+    url: `${uc}/uc/electronicSeal/v1/getElectronicSeal?password=${password}&secretFree=${secretFree}`,
+    method: 'get',
+  })
+}
+
+// 获取签章信息
+export function getSealByCurrentUserId() {
+  return request({
+    url: `${uc}/uc/electronicSeal/v1/getSealByCurrentUserId`,
+    method: 'get',
+  })
+}
+export function getDefaultPwdStrategy() {
+  return request.get(`${uc}/api/pwdStrategy/v1/getDefault`)
+}
+export function resetPassword(params) {
+  return request({
+    url: `${uc}/api/user/v1/user/modifiUserPsd`,
+    method: 'post',
+    data: params,
+  })
+}
+
+//获取系统中所有用户
+export function getAllUserList() {
+  return request({
+    url: `${uc}/api/user/v2/users/getAllUser`,
+    method: 'get',
+  })
+}

+ 75 - 0
src/api/user.js

@@ -0,0 +1,75 @@
+import request from '@/utils/request'
+import { encryptedData } from '@/utils/encrypt'
+import { loginRSA, tokenName } from '@/config'
+const qs = require('qs')
+const commonSign = window.context.commonSign
+
+export async function login(data) {
+  const params = { ...data }
+  if (loginRSA) {
+    const { password } = params
+    params['password'] = await encryptedData(password)
+  }
+  return request({
+    url: `${context.auth}/auth?tenantId=${data.tenantId || '-1'}`,
+    method: 'post',
+    data: params,
+  })
+}
+
+export async function ssoLogin(data) {
+  let url = ''
+  if (window.ssoConfig.mode == 'cas') {
+    url = `${context.auth}/sso/auth?ssoMode=cas&ticket=${data.ticket}&service=${data.service}`
+  } else if (window.ssoConfig.mode == 'oauth') {
+    let params = {
+      code: data.code
+    }
+    return request({
+      url: `${commonSign}auth/sso/exchangeCode`,
+      method: 'post',
+      data: qs.stringify(params),
+      headers: {'Content-type': 'application/x-www-form-urlencoded'}
+    })
+    // url = `${context.auth}/sso/auth?ssoMode=oauth&code=${data.code}&service=${data.service}`
+  } else {
+    console.error('当前非单点登录模式,不能请求后台单点登录接口。')
+  }
+  return request({
+    url,
+  })
+}
+
+export function getUserInfo(accessToken) {
+  const params = {
+    url: `${context.uc}/api/user/v1/user/getByAccount`,
+    method: 'post',
+  }
+  if (accessToken) {
+    params.headers = {
+      Authorization: `Bearer ${accessToken}`,
+    }
+  }
+  return request(params)
+}
+
+export function logout() {
+  return request({
+    url: `${context.auth}/signout`,
+    method: 'get',
+  })
+}
+
+// 通过 account 获取用户详细信息
+export function getDetailByAccountOrId(account) {
+  const url = `${context.uc}/api/user/v1/user/getDetailByAccountOrId`
+  return request.post(url, {
+    accountOrId: account,
+  })
+}
+
+// 修改密码
+export function updatePassword(data) {
+  const url = `${context.uc}/api/user/v1/user/changUserPsd`
+  return request.post(url, data)
+}

BIN
src/assets/datav_images/datav_bg1.png


BIN
src/assets/datav_images/datav_bg2.png


BIN
src/assets/datav_images/datav_bg3.png


BIN
src/assets/datav_images/flylineChart/map.jpg


BIN
src/assets/datav_images/flylineChart/mapCenterPoint.png


BIN
src/assets/datav_images/flylineChart/mapPoint.png


BIN
src/assets/datav_images/icon-bar.png


BIN
src/assets/datav_images/icon-border.png


BIN
src/assets/datav_images/icon-capsule-chart.png


BIN
src/assets/datav_images/icon-decoration1.png


BIN
src/assets/datav_images/icon-decoration10.png


BIN
src/assets/datav_images/icon-decoration11.png


BIN
src/assets/datav_images/icon-decoration12.png


BIN
src/assets/datav_images/icon-decoration2.png


BIN
src/assets/datav_images/icon-decoration3.png


BIN
src/assets/datav_images/icon-decoration4.png


BIN
src/assets/datav_images/icon-decoration5.png


BIN
src/assets/datav_images/icon-decoration6.png


BIN
src/assets/datav_images/icon-decoration7.png


BIN
src/assets/datav_images/icon-decoration8.png


BIN
src/assets/datav_images/icon-decoration9.png


BIN
src/assets/datav_images/icon-flyline-chart.png


BIN
src/assets/datav_images/icon-gauge.png


BIN
src/assets/datav_images/icon-line.png


BIN
src/assets/datav_images/icon-percent-pond.png


BIN
src/assets/datav_images/icon-pie.png


BIN
src/assets/datav_images/icon-radar.png


BIN
src/assets/datav_images/icon-ring-chart.png


BIN
src/assets/datav_images/icon-scatter.png


BIN
src/assets/datav_images/icon-span.png


BIN
src/assets/datav_images/icon-water-level-pond.png


BIN
src/assets/datav_images/tp-bar.png


BIN
src/assets/datav_images/tp-gauge.png


BIN
src/assets/datav_images/tp-line.png


Някои файлове не бяха показани, защото твърде много файлове са промени