zq940222 2 months ago
commit
586f4d34c9
100 changed files with 13798 additions and 0 deletions
  1. 17 0
      .babelrc
  2. 14 0
      .editorconfig
  3. 3 0
      .eslintignore
  4. 206 0
      .eslintrc.js
  5. 10 0
      .postcssrc.js
  6. 5 0
      .travis.yml
  7. 78 0
      LICENSE
  8. 36 0
      README.en.md
  9. 121 0
      README.md
  10. 45 0
      build/build.js
  11. 64 0
      build/check-versions.js
  12. BIN
      build/logo.png
  13. 119 0
      build/utils.js
  14. 5 0
      build/vue-loader.conf.js
  15. 118 0
      build/webpack.base.conf.js
  16. 98 0
      build/webpack.dev.conf.js
  17. 181 0
      build/webpack.prod.conf.js
  18. 8 0
      config/dev.env.js
  19. 101 0
      config/index.js
  20. 5 0
      config/prod.env.js
  21. BIN
      favicon.ico
  22. 17 0
      index.html
  23. 121 0
      package.json
  24. 91 0
      src/App.vue
  25. 31 0
      src/api/admin/application.js
  26. 28 0
      src/api/admin/config.js
  27. 559 0
      src/api/admin/crm.js
  28. 235 0
      src/api/admin/employeeDep.js
  29. 118 0
      src/api/admin/file.js
  30. 386 0
      src/api/admin/hrm.js
  31. 31 0
      src/api/admin/init.js
  32. 65 0
      src/api/admin/log.js
  33. 55 0
      src/api/admin/oa.js
  34. 109 0
      src/api/admin/other.js
  35. 52 0
      src/api/admin/project.js
  36. 173 0
      src/api/admin/role.js
  37. 120 0
      src/api/admin/update.js
  38. 55 0
      src/api/admin/user.js
  39. 128 0
      src/api/bi/achievement.js
  40. 64 0
      src/api/bi/bi.js
  41. 50 0
      src/api/bi/business.js
  42. 326 0
      src/api/bi/customer.js
  43. 50 0
      src/api/bi/customerPortrayal.js
  44. 80 0
      src/api/bi/oa.js
  45. 15 0
      src/api/bi/product.js
  46. 250 0
      src/api/bi/ranking.js
  47. 240 0
      src/api/calendar/index.js
  48. 322 0
      src/api/common.js
  49. 29 0
      src/api/config.js
  50. 327 0
      src/api/crm/business.js
  51. 451 0
      src/api/crm/common.js
  52. 276 0
      src/api/crm/contacts.js
  53. 299 0
      src/api/crm/contract.js
  54. 713 0
      src/api/crm/customer.js
  55. 198 0
      src/api/crm/invoice.js
  56. 211 0
      src/api/crm/leads.js
  57. 225 0
      src/api/crm/message.js
  58. 13 0
      src/api/crm/nearby.js
  59. 194 0
      src/api/crm/product.js
  60. 215 0
      src/api/crm/receivables.js
  61. 145 0
      src/api/crm/receivablesPlan.js
  62. 70 0
      src/api/crm/visit.js
  63. 271 0
      src/api/crm/workbench.js
  64. 193 0
      src/api/examine/index.js
  65. 18 0
      src/api/hrm/actionRecord.js
  66. 49 0
      src/api/hrm/attendance.js
  67. 34 0
      src/api/hrm/clock.js
  68. 91 0
      src/api/hrm/dept.js
  69. 699 0
      src/api/hrm/employee.js
  70. 60 0
      src/api/hrm/employeeContract.js
  71. 90 0
      src/api/hrm/employeePost.js
  72. 143 0
      src/api/hrm/employeeSocialSecurity.js
  73. 210 0
      src/api/hrm/insuranceScheme.js
  74. 145 0
      src/api/hrm/money.js
  75. 192 0
      src/api/hrm/performance.js
  76. 234 0
      src/api/hrm/recruit/candidate.js
  77. 113 0
      src/api/hrm/recruit/post.js
  78. 621 0
      src/api/hrm/salary.js
  79. 65 0
      src/api/hrm/salaryConfig.js
  80. 24 0
      src/api/hrm/selfService/myArchives.js
  81. 247 0
      src/api/hrm/selfService/performance.js
  82. 15 0
      src/api/hrm/selfService/salarySlip.js
  83. 181 0
      src/api/hrm/workbench.js
  84. 127 0
      src/api/login.js
  85. 43 0
      src/api/oa/addressBook.js
  86. 33 0
      src/api/oa/common.js
  87. 140 0
      src/api/oa/examine.js
  88. 203 0
      src/api/oa/journal.js
  89. 64 0
      src/api/oa/notice.js
  90. 16 0
      src/api/pm/archive.js
  91. 338 0
      src/api/pm/project.js
  92. 302 0
      src/api/pm/projectTask.js
  93. 38 0
      src/api/pm/recycle.js
  94. 12 0
      src/api/pm/statistics.js
  95. 92 0
      src/api/pm/tag.js
  96. 143 0
      src/api/pm/task.js
  97. 126 0
      src/api/task/task.js
  98. 55 0
      src/api/user/personCenter.js
  99. BIN
      src/assets/401_images/1.gif
  100. BIN
      src/assets/401_images/401.gif

+ 17 - 0
.babelrc

@@ -0,0 +1,17 @@
+{
+  "presets": [
+    ["env", {
+      "modules": false,
+      "targets": {
+        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
+      }
+    }],
+    "stage-2"
+  ],
+  "plugins":["transform-vue-jsx", "transform-runtime"],
+  "env": {
+    "development": {
+      "plugins": ["dynamic-import-node"]
+    }
+  }
+}

+ 14 - 0
.editorconfig

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

+ 3 - 0
.eslintignore

@@ -0,0 +1,3 @@
+build/*.js
+config/*.js
+src/assets

+ 206 - 0
.eslintrc.js

@@ -0,0 +1,206 @@
+module.exports = {
+  root: true,
+  parserOptions: {
+    parser: 'babel-eslint',
+    sourceType: 'module'
+  },
+  env: {
+    browser: true,
+    node: true,
+    es6: true,
+  },
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
+  globals: {
+    "BMap": "readonly",
+    "BMAP_STATUS_SUCCESS": "readonly",
+    "fullcalendar": "readonly",
+    "WKConfig": "readonly"
+  },
+
+  // add your custom rules here
+  //it is base on https://github.com/vuejs/eslint-config-vue
+  rules: {
+    "vue/max-attributes-per-line": [2, {
+      "singleline": 10,
+      "multiline": {
+        "max": 10,
+        "allowFirstLine": false
+      }
+    }],
+    "vue/html-closing-bracket-newline": [
+      "off"
+    ],
+    "vue/name-property-casing": ["error", "PascalCase"],
+    'vue/no-v-html': 0,
+    'vue/require-default-prop': 0,
+    'accessor-pairs': 2,
+    'arrow-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'block-spacing': [2, 'always'],
+    'brace-style': [2, '1tbs', {
+      'allowSingleLine': true
+    }],
+    'camelcase': [0, {
+      'properties': 'always'
+    }],
+    'comma-dangle': [2, 'never'],
+    'comma-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'comma-style': [2, 'last'],
+    'constructor-super': 2,
+    'curly': [2, 'multi-line'],
+    'dot-location': [2, 'property'],
+    'eol-last': 2,
+    'eqeqeq': [0, 'allow-null'],
+    'generator-star-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'handle-callback-err': [2, '^(err|error)$'],
+    'indent': [2, 2, {
+      'SwitchCase': 1
+    }],
+    'jsx-quotes': [2, 'prefer-single'],
+    'key-spacing': [2, {
+      'beforeColon': false,
+      'afterColon': true
+    }],
+    'keyword-spacing': [2, {
+      'before': true,
+      'after': true
+    }],
+    'new-cap': [2, {
+      'newIsCap': true,
+      'capIsNew': false
+    }],
+    'new-parens': 2,
+    'no-array-constructor': 2,
+    'no-caller': 2,
+    'no-console': 'off',
+    'no-class-assign': 2,
+    'no-cond-assign': 2,
+    'no-const-assign': 2,
+    'no-control-regex': 2,
+    'no-delete-var': 0,
+    'no-dupe-args': 2,
+    'no-dupe-class-members': 2,
+    'no-dupe-keys': 2,
+    'no-duplicate-case': 2,
+    'no-empty-character-class': 2,
+    'no-empty-pattern': 2,
+    'no-eval': 2,
+    'no-ex-assign': 2,
+    'no-extend-native': 2,
+    'no-extra-bind': 2,
+    'no-extra-boolean-cast': 2,
+    'no-extra-parens': [2, 'functions'],
+    'no-fallthrough': 2,
+    'no-floating-decimal': 2,
+    'no-func-assign': 2,
+    'no-implied-eval': 2,
+    'no-inner-declarations': [2, 'functions'],
+    'no-invalid-regexp': 2,
+    'no-irregular-whitespace': 2,
+    'no-iterator': 2,
+    'no-label-var': 2,
+    'no-labels': [2, {
+      'allowLoop': false,
+      'allowSwitch': false
+    }],
+    'no-lone-blocks': 2,
+    'no-mixed-spaces-and-tabs': 2,
+    'no-multi-spaces': 2,
+    'no-multi-str': 2,
+    'no-multiple-empty-lines': [1, {
+      'max': 10
+    }],
+    'no-native-reassign': 2,
+    'no-negated-in-lhs': 2,
+    'no-new-object': 2,
+    'no-new-require': 2,
+    'no-new-symbol': 2,
+    'no-new-wrappers': 2,
+    'no-obj-calls': 2,
+    'no-octal': 2,
+    'no-octal-escape': 2,
+    'no-path-concat': 2,
+    'no-proto': 2,
+    'no-redeclare': 0,
+    'no-regex-spaces': 2,
+    'no-return-assign': [2, 'except-parens'],
+    'no-self-assign': 2,
+    'no-self-compare': 2,
+    'no-sequences': 2,
+    'no-shadow-restricted-names': 2,
+    'no-spaced-func': 2,
+    'no-sparse-arrays': 2,
+    'no-this-before-super': 2,
+    'no-throw-literal': 2,
+    'no-trailing-spaces': 2,
+    'no-undef': 2,
+    'no-undef-init': 2,
+    'no-unexpected-multiline': 2,
+    'no-unmodified-loop-condition': 2,
+    'no-unneeded-ternary': [2, {
+      'defaultAssignment': false
+    }],
+    'no-unreachable': 2,
+    'no-unsafe-finally': 2,
+    'no-unused-vars': [2, {
+      'vars': 'all',
+      'args': 'none'
+    }],
+    'no-useless-call': 2,
+    'no-useless-computed-key': 2,
+    'no-useless-constructor': 2,
+    'no-useless-escape': 0,
+    'no-whitespace-before-property': 2,
+    'no-with': 2,
+    'one-var': [2, {
+      'initialized': 'never'
+    }],
+    'operator-linebreak': [2, 'after', {
+      'overrides': {
+        '?': 'before',
+        ':': 'before'
+      }
+    }],
+    'padded-blocks': [2, 'never'],
+    'quotes': [2, 'single', {
+      'avoidEscape': true,
+      'allowTemplateLiterals': true
+    }],
+    'semi': [2, 'never'],
+    'semi-spacing': [2, {
+      'before': false,
+      'after': true
+    }],
+    'space-before-blocks': [2, 'always'],
+    'space-before-function-paren': [2, 'never'],
+    'space-in-parens': [2, 'never'],
+    'space-infix-ops': 2,
+    'space-unary-ops': [2, {
+      'words': true,
+      'nonwords': false
+    }],
+    'spaced-comment': [2, 'always', {
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
+    }],
+    'template-curly-spacing': [2, 'never'],
+    'use-isnan': 2,
+    'valid-typeof': 2,
+    'wrap-iife': [2, 'any'],
+    'yield-star-spacing': [2, 'both'],
+    'yoda': [2, 'never'],
+    'prefer-const': 2,
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
+    'object-curly-spacing': [2, 'always', {
+      objectsInObjects: false
+    }],
+    'array-bracket-spacing': [2, 'never'],
+  }
+}

+ 10 - 0
.postcssrc.js

@@ -0,0 +1,10 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+  "plugins": {
+    "postcss-import": {},
+    "postcss-url": {},
+    // to edit target browsers: use "browserslist" field in package.json
+    "autoprefixer": {}
+  }
+}

+ 5 - 0
.travis.yml

@@ -0,0 +1,5 @@
+language: node_js
+node_js: stable
+script: npm run test
+notifications:
+  email: false

+ 78 - 0
LICENSE

@@ -0,0 +1,78 @@
+悟空CRM开源版使用协议
+
+悟空CRM(CustomerRelationshipManagement)即:悟空客户关系管理软件(以
+下简称悟空CRM)由郑州卡卡罗特软件科技有限公司(以下简称卡卡罗特)开发。卡卡罗特
+依法拥有悟空CRM的所有版权和所有权益。本着共享开放的角度,卡卡罗特以开放源代码的
+形式发布悟空CRM,您可以在遵守该协议的前提下使用悟空CRM。
+
+自您安装悟空CRM开始,您和卡卡罗特之间的合同关系自动成立,成为卡卡罗特用户
+(以下简称为用户)。除非您停止使用悟空CRM或与卡卡罗特有签署额外合同,您须认真遵
+循该用户协议约定的每一项条款。
+
+官方地址:www.5kcrm.com/www.72crm.com
+官方电话:400-0812-558
+官方邮箱:service@5kcrm.com
+官方社区:bbs.72crm.net
+官方社群:悟空CRM交流10群(486745026)
+
+一、协议中提到的名词约定
+
+1.1下述条款中所指悟空CRM的标志包括如下方面:
+悟空CRM源代码及文档中关于悟空CRM的版权提示、文字、图片和链接。
+悟空CRM运行时界面上呈现出来的有关悟空CRM的文字、图片和链接。
+
+1.2不包括如下方面:
+悟空CRM提供的演示数据中关于悟空CRM的文字、图片和链接。
+
+二、免责声明
+
+2.1用户出于自愿而使用本软件,必须了解使用本软件的风险,在尚未购买产品技术服务或
+商业授权之前,我们不承诺对免费用户提供任何形式的技术支持、使用担保,也不承担任何因
+使用本软件而产生问题的相关责任。
+
+2.2电子文本形式的使用协议如同双方书面签署的协议一样,具有完全的和等同的法律效力。
+您一旦开始确认本协议并安装悟空CRM,即被视为完全理解并接受本协议的各项条款,在享
+有以下条款授予的权力的同时,受到相关的约束和限制。
+
+2.3协议许可范围以外的行为,将直接违反本授权协议并构成侵权,我们有权随时终止授权,
+责令停止损害,并保留追究相关责任的权利。
+
+三、协议许可的权利
+
+3.1如果您以学习或研究为目的使用悟空CRM,卡卡罗特不对您做任何限制。
+
+3.2您可以在您个人任意数量的电脑上运行悟空CRM,卡卡罗特不对电脑的数量做任何限
+制。
+
+3.3您可以对悟空CRM源代码进行修改以适应您个人学习研究的要求,您做的改动无需对
+外发布。
+
+3.4卡卡罗特依法拥有悟空CRM的所有版权和软件权益,未经商业授权,您无任何版权及
+软件相关权益。
+
+四、协议规定的约束和限制
+
+4.1当您开始将悟空CRM用于企业内部管理使用,意味着已经商用,需购买相应的商业授
+权
+
+4.2未获得商业授权之前,不得将本软件用于商业用途(包括但不限于企业内部使用、二次
+开发后进行销售、以营利为目的或实现盈利等形式)。
+
+4.3未经官方许可,禁止在悟空CRM的整体或任何部分基础上发展任何派生版本、修改版
+本或第三方版本用于重新分发,包括但不限于基于悟空CRM开发SAAS平台等相关服务。
+
+4.4如果您未能遵守本协议的条款,您的授权将被终止,所被许可的权利将被收回,并承担
+相应法律责任。
+
+4.5您使用悟空CRM时,必须保留悟空CRM的所有标志,不得以任何方式隐藏或遮掩任
+一标志。
+
+五、未尽事项
+
+如果上述条款无法满足您使用悟空CRM的要求,可联系卡卡罗特签署额外的合同以获得
+更灵活的授权许可。
+
+六、合同约束
+
+如果您违反了该协议的任一条款,该用户协议将自动终止,您必须停止使用,卡卡罗特保
+留通过法律手段追究责任的权利。

+ 36 - 0
README.en.md

@@ -0,0 +1,36 @@
+# 72crm-11-WEB
+
+#### Description
+{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### Instructions
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### Contribution
+
+1.  Fork the repository
+2.  Create Feat_xxx branch
+3.  Commit your code
+4.  Create Pull Request
+
+
+#### Gitee Feature
+
+1.  You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2.  Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3.  Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4.  The most valuable open source project [GVP](https://gitee.com/gvp)
+5.  The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6.  The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)

+ 121 - 0
README.md

@@ -0,0 +1,121 @@
+# 悟空CRM-11.0
+ **最新资讯: :collision: 悟空CRM云服务免费试用。悟空云正式上线,包含客户关系管理系统(CRM)人力资源管理系统(CRM)、财务管理系统(FS)、无代码平台、SCRM** 
+
+体验地址:[https://www.72crm.com](http://www.72crm.com)
+
+## 悟空CRM介绍
+
+
+悟空CRM在中国的开源管理软件行业有较高的知名度。目前软件已达到千万级的用户量,开源系统下载量达到200多万次,已覆盖设计制造业、服务业、金融业、政府机构等多种行业。与阿里巴巴、腾讯、OPPO、航天信息、CCTV等多家知名企业达成战略合作。
+
+公司先后获得河南省高新技术企业、国家3A信用企业、IOS9001软件产品认证等20多项荣誉奖项。拥有50余项软件著作权。 获得20余家国内媒体报道。公司自成立以来,以高科技为起点,以技术为核心、 以完善的售后服务为后盾,秉承稳固与发展、求实与创新的精神,已为国内外上万家企业提供了服务。 在为实现企业价值最大化的过程中, 实现了自身的价值的提升,取得了最大程度的双赢合作,并获得了社会各界的广泛赞誉和认同。
+
+官网地址:[http://www.5kcrm.com](http://www.5kcrm.com/)
+
+演示地址:(https://demo10.72crm.com/#/crm)  
+帐号:18688888888   密码:123456a
+
+Github下载地址:[https://github.com/72wukong](https://github.com/72wukong)  
+
+QQ群交流群⑩群:[1026560336](http:////shang.qq.com/wpa/qunwpa?idkey=13d5e5809eb9feb350336e55c8b7a00b9cb472078b09b4441222a52dd76b278e)
+
+
+扫码添加小悟官方客服微信,邀您加入千人微信交流群:
+
+<img src="https://images.gitee.com/uploads/images/2019/1231/115927_f9c580c8_345098.png" width="200">
+
+关注悟空CRM公众号,了解更多悟空资讯
+
+<img src="https://images.gitee.com/uploads/images/2019/1202/135713_d3566c6a_345098.jpeg" width="200">
+
+
+
+```
+
+注:悟空CRM采用全新的前后端分离模式,本仓库代码中已集成前端vue打包后文件,可免去打包操作。如需调整前端代码,请单独下载前端代码
+
+```
+
+(<a href="https://gitee.com/wukongcrm/crm_pro" target="_blank">查看JAVA后端仓库</a>) 
+
+
+#### 项目目录
+``` lua
+├── build -- webpack 配置文件
+├── config -- 项目配置文件
+├── src -- 源码目录
+│   ├── api -- axios请求接口
+│   ├── assets -- 静态图片资源文件
+│   ├── components -- 通用组件
+│   ├── directives -- 通用指令
+│   ├── filters -- 通用过滤器
+│   ├── mixins -- 通用混入
+│   ├── router -- vue-router路由配置
+│   ├── store -- vuex状态管理
+│   ├── styles -- 全局css样式
+│   ├── utils -- 工具类
+│   └── views -- 前端页面
+│       ├── addressBook -- 通讯录
+│       ├── admin -- 系统管理
+│       ├── bi -- 商业智能
+│       ├── calendar -- 日历
+│       ├── crm -- 客户管理
+│       ├── email -- 邮箱
+│       ├── hrm -- 人力资源
+│       ├── jxc -- 进销存
+│       ├── knowledge -- 知识库
+│       ├── layout -- 模块框架
+│       ├── login -- 登录
+│       ├── oa -- 办公
+│       ├── pm -- 项目管理
+│       ├── taskExamine -- 任务审批
+│       ├── user -- 个人中心
+│       └── workLog -- 工作日志
+└── static -- 静态资源
+```
+
+#### 项目运行
+
+- 下载node并安装(LTS):https://nodejs.org/;
+- 该项目为前后端分离项目,本地访问需搭建后台环境,请参考[后端项目](https://gitee.com/wukongcrm/crm_pro);
+- 访问线上接口无需搭建后台环境,只需将config/index.js文件中的dev下的proxyTable中的target改为线上地址即可;
+- 克隆源代码到本地,使用VSCode打开,并搜索”百度key“,将其替换为自己申请的。申请地址:[百度key](http://lbsyun.baidu.com/index.php?title=jspopularGL/guide/getkey);
+- 执行 npm install,下载相关依赖;
+- 执行 npm run dev,运行项目;
+- 执行成功,即可访问http://localhost:8090,查看悟空CRM;
+
+#### 项目打包
+
+- 需将config/prod.env.js文件中的BASE_API,调整为自己需要的
+- 执行 npm run build
+- 打包完成,将自动生成dist文件夹
+
+
+#### 技术栈
+
+| 技术 | 说明 | 版本 |
+| --- | --- | --- |
+| [Vue](https://vuejs.org) | 框架 | 2.5.17 |
+| [Vue-router](https://router.vuejs.org) | 路由框架 | 3.0.1 |
+| [Vuex](https://vuex.vuejs.org) | 全局状态管理框架 | 3.0.1 |
+| [Element](https://element.eleme.io) | UI框架 | 2.12.0 |
+| [Axios](https://github.com/axios/axios) | HTTP框架 | 0.18.0 |
+
+#### 更新日志
+
+<a href="https://www.72crm.com/upgrade_log" target="_blank">点击查看更新日志</a>
+
+### 悟空CRM功能模块预览
+
+
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172541_efed65bd_345098.png "01.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172557_c001d047_345098.png "02.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172612_97363074_345098.png "03.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172625_47a2798b_345098.png "04.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172636_ae5cad59_345098.png "05.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172648_c7928c60_345098.png "06.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172704_ac4c3308_345098.png "07.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172714_84b7ee29_345098.png "08.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172726_4552bddb_345098.png "10.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172736_da77deec_345098.png "11.png")
+![输入图片说明](https://images.gitee.com/uploads/images/2020/0928/172745_e22b7a4a_345098.png "12.png")

+ 45 - 0
build/build.js

@@ -0,0 +1,45 @@
+'use strict'
+require('./check-versions')()
+
+process.env.NODE_ENV = 'production'
+
+const ora = require('ora')
+const rm = require('rimraf')
+const path = require('path')
+const chalk = require('chalk')
+const webpack = require('webpack')
+const config = require('../config')
+const webpackConfig = require('./webpack.prod.conf')
+
+const spinner = ora('building for production...')
+spinner.start()
+
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
+  if (err) throw err
+  webpack(webpackConfig, (err, stats) => {
+    spinner.stop()
+    if (err) throw err
+    process.stdout.write(
+      stats.toString({
+        colors: true,
+        modules: false,
+        children: false,
+        chunks: false,
+        chunkModules: false
+      }) + '\n\n'
+    )
+
+    if (stats.hasErrors()) {
+      console.log(chalk.red('  Build failed with errors.\n'))
+      process.exit(1)
+    }
+
+    console.log(chalk.cyan('  Build complete.\n'))
+    console.log(
+      chalk.yellow(
+        '  Tip: built files are meant to be served over an HTTP server.\n' +
+          "  Opening index.html over file:// won't work.\n"
+      )
+    )
+  })
+})

+ 64 - 0
build/check-versions.js

@@ -0,0 +1,64 @@
+'use strict'
+const chalk = require('chalk')
+const semver = require('semver')
+const packageConfig = require('../package.json')
+const shell = require('shelljs')
+
+function exec(cmd) {
+  return require('child_process')
+    .execSync(cmd)
+    .toString()
+    .trim()
+}
+
+const versionRequirements = [
+  {
+    name: 'node',
+    currentVersion: semver.clean(process.version),
+    versionRequirement: packageConfig.engines.node
+  }
+]
+
+if (shell.which('npm')) {
+  versionRequirements.push({
+    name: 'npm',
+    currentVersion: exec('npm --version'),
+    versionRequirement: packageConfig.engines.npm
+  })
+}
+
+module.exports = function() {
+  const warnings = []
+
+  for (let i = 0; i < versionRequirements.length; i++) {
+    const mod = versionRequirements[i]
+
+    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
+      warnings.push(
+        mod.name +
+          ': ' +
+          chalk.red(mod.currentVersion) +
+          ' should be ' +
+          chalk.green(mod.versionRequirement)
+      )
+    }
+  }
+
+  if (warnings.length) {
+    console.log('')
+    console.log(
+      chalk.yellow(
+        'To use this template, you must update following to modules:'
+      )
+    )
+    console.log()
+
+    for (let i = 0; i < warnings.length; i++) {
+      const warning = warnings[i]
+      console.log('  ' + warning)
+    }
+
+    console.log()
+    process.exit(1)
+  }
+}

BIN
build/logo.png


+ 119 - 0
build/utils.js

@@ -0,0 +1,119 @@
+'use strict'
+const path = require('path')
+const config = require('../config')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const packageConfig = require('../package.json')
+
+exports.assetsPath = function (_path) {
+  const assetsSubDirectory =
+    process.env.NODE_ENV === 'production' ?
+    config.build.assetsSubDirectory :
+    config.dev.assetsSubDirectory
+
+  return path.posix.join(assetsSubDirectory, _path)
+}
+
+exports.cssLoaders = function (options) {
+  options = options || {}
+
+  const cssLoader = {
+    loader: 'css-loader',
+    options: {
+      sourceMap: options.sourceMap
+    }
+  }
+
+  const postcssLoader = {
+    loader: 'postcss-loader',
+    options: {
+      sourceMap: options.sourceMap
+    }
+  }
+
+  // generate loader string to be used with extract text plugin
+  function generateLoaders(loader, loaderOptions) {
+    const loaders = []
+
+    // Extract CSS when that option is specified
+    // (which is the case during production build)
+    if (options.extract) {
+      // loaders.push(MiniCssExtractPlugin.loader)
+      loaders.push({
+        loader: MiniCssExtractPlugin.loader,
+        options: {
+          publicPath: '../../'
+        }
+      })
+    } else {
+      loaders.push('vue-style-loader')
+    }
+
+    loaders.push(cssLoader)
+
+    if (options.usePostCSS) {
+      loaders.push(postcssLoader)
+    }
+
+    if (loader) {
+      loaders.push({
+        loader: loader + '-loader',
+        options: Object.assign({}, loaderOptions, {
+          sourceMap: options.sourceMap
+        })
+      })
+    }
+
+    return loaders
+  }
+  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
+  return {
+    css: generateLoaders(),
+    postcss: generateLoaders(),
+    less: generateLoaders('less'),
+    sass: generateLoaders('sass', {
+      indentedSyntax: true
+    }),
+    scss: generateLoaders('sass').concat({
+      loader: 'sass-resources-loader',
+      options: {
+        resources: path.resolve(__dirname, '../src/styles/xr-theme.scss')
+      }
+    }),
+    stylus: generateLoaders('stylus'),
+    styl: generateLoaders('stylus')
+  }
+}
+
+// Generate loaders for standalone style files (outside of .vue)
+exports.styleLoaders = function (options) {
+  const output = []
+  const loaders = exports.cssLoaders(options)
+
+  for (const extension in loaders) {
+    const loader = loaders[extension]
+    output.push({
+      test: new RegExp('\\.' + extension + '$'),
+      use: loader
+    })
+  }
+
+  return output
+}
+
+exports.createNotifierCallback = () => {
+  const notifier = require('node-notifier')
+
+  return (severity, errors) => {
+    if (severity !== 'error') return
+
+    const error = errors[0]
+    const filename = error.file && error.file.split('!').pop()
+
+    notifier.notify({
+      title: packageConfig.name,
+      message: severity + ': ' + error.name,
+      subtitle: filename || '',
+      icon: path.join(__dirname, 'logo.png')
+    })
+  }
+}

+ 5 - 0
build/vue-loader.conf.js

@@ -0,0 +1,5 @@
+'use strict'
+
+module.exports = {
+  //You can set the vue-loader configuration by yourself.
+}

+ 118 - 0
build/webpack.base.conf.js

@@ -0,0 +1,118 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const config = require('../config')
+const {
+  VueLoaderPlugin
+} = require('vue-loader')
+const vueLoaderConfig = require('./vue-loader.conf')
+// el-bigdata-table babel-loader 配置
+const fs = require('fs')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const createLintingRule = () => ({
+  test: /\.(js|vue)$/,
+  loader: 'eslint-loader',
+  enforce: 'pre',
+  include: [resolve('src'), resolve('test')],
+  options: {
+    formatter: require('eslint-friendly-formatter'),
+    emitWarning: !config.dev.showEslintErrorsInOverlay
+  }
+})
+
+// el-bigdata-table babel-loader 配置
+let bigTableDirName = fs.readdirSync(resolve('node_modules')).filter(dirName => /el-bigdata-table/.test(dirName))
+const bigTableDirs = bigTableDirName.map(dir => resolve(`node_modules/${dir}/src`))
+
+module.exports = {
+  context: path.resolve(__dirname, '../'),
+  entry: {
+    app: ["babel-polyfill", "./src/main.js"]
+  },
+  output: {
+    path: config.build.assetsRoot,
+    filename: '[name].js',
+    publicPath:
+      process.env.NODE_ENV === 'production'
+        ? config.build.assetsPublicPath
+        : config.dev.assetsPublicPath
+  },
+  resolve: {
+    extensions: ['.js', '.vue', '.json'],
+    alias: {
+      '@': resolve('src')
+    }
+  },
+  module: {
+    rules: [
+      ...(config.dev.useEslint ? [createLintingRule()] : []),
+      {
+        test: /\.vue$/,
+        loader: 'vue-loader',
+        options: vueLoaderConfig
+      },
+      {
+        test: /\.js$/,
+        loader: 'babel-loader',
+        include: [
+          resolve('src'),
+          resolve('test'),
+          resolve('node_modules/webpack-dev-server/client'),
+          resolve('node_modules/element-ui/src'),
+          resolve('node_modules/element-ui/packages'),
+          ...bigTableDirs
+        ]
+      },
+      {
+        test: /\.svg$/,
+        loader: 'svg-sprite-loader',
+        include: [resolve('src/icons')],
+        options: {
+          symbolId: 'icon-[name]'
+        }
+      },
+      {
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
+        loader: 'url-loader',
+        exclude: [resolve('src/icons')],
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('img/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('media/[name].[hash:7].[ext]')
+        }
+      },
+      {
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
+        loader: 'url-loader',
+        options: {
+          limit: 10000,
+          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
+        }
+      }
+    ]
+  },
+  plugins: [new VueLoaderPlugin()],
+  node: {
+    // prevent webpack from injecting useless setImmediate polyfill because Vue
+    // source contains it (although only uses it if it's native).
+    setImmediate: false,
+    // prevent webpack from injecting mocks to Node native modules
+    // that does not make sense for the client
+    dgram: 'empty',
+    fs: 'empty',
+    net: 'empty',
+    tls: 'empty',
+    child_process: 'empty'
+  }
+}

+ 98 - 0
build/webpack.dev.conf.js

@@ -0,0 +1,98 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
+const portfinder = require('portfinder')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const HOST = process.env.HOST
+const PORT = process.env.PORT && Number(process.env.PORT)
+
+const devWebpackConfig = merge(baseWebpackConfig, {
+  mode: 'development',
+  optimization: {
+    removeAvailableModules: false
+  },
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.dev.cssSourceMap,
+      usePostCSS: true
+    })
+  },
+  // cheap-module-eval-source-map is faster for development
+  devtool: config.dev.devtool,
+
+  // these devServer options should be customized in /config/index.js
+  devServer: {
+    clientLogLevel: 'warning',
+    historyApiFallback: true,
+    hot: true,
+    compress: true,
+    host: HOST || config.dev.host,
+    port: PORT || config.dev.port,
+    open: config.dev.autoOpenBrowser,
+    overlay: config.dev.errorOverlay
+      ? { warnings: false, errors: true }
+      : false,
+    publicPath: config.dev.assetsPublicPath,
+    proxy: config.dev.proxyTable,
+    quiet: true, // necessary for FriendlyErrorsPlugin
+    watchOptions: {
+      poll: config.dev.poll
+    }
+  },
+  plugins: [
+    new webpack.DefinePlugin({
+      'process.env': require('../config/dev.env')
+    }),
+    new webpack.HotModuleReplacementPlugin(),
+    // https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: 'index.html',
+      template: 'index.html',
+      inject: true,
+      favicon: resolve('favicon.ico'),
+      title: 'wukong'
+    })
+  ]
+})
+
+module.exports = new Promise((resolve, reject) => {
+  portfinder.basePort = process.env.PORT || config.dev.port
+  portfinder.getPort((err, port) => {
+    if (err) {
+      reject(err)
+    } else {
+      // publish the new Port, necessary for e2e tests
+      process.env.PORT = port
+      // add port to devServer config
+      devWebpackConfig.devServer.port = port
+
+      // Add FriendlyErrorsPlugin
+      devWebpackConfig.plugins.push(
+        new FriendlyErrorsPlugin({
+          compilationSuccessInfo: {
+            messages: [
+              `Your application is running here: http://${
+                devWebpackConfig.devServer.host
+              }:${port}`
+            ]
+          },
+          onErrors: config.dev.notifyOnErrors
+            ? utils.createNotifierCallback()
+            : undefined
+        })
+      )
+
+      resolve(devWebpackConfig)
+    }
+  })
+})

+ 181 - 0
build/webpack.prod.conf.js

@@ -0,0 +1,181 @@
+'use strict'
+const path = require('path')
+const utils = require('./utils')
+const webpack = require('webpack')
+const config = require('../config')
+const merge = require('webpack-merge')
+const baseWebpackConfig = require('./webpack.base.conf')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
+
+function resolve(dir) {
+  return path.join(__dirname, '..', dir)
+}
+
+const env = require('../config/prod.env')
+
+// For NamedChunksPlugin
+const seen = new Set()
+const nameLength = 4
+
+const webpackConfig = merge(baseWebpackConfig, {
+  mode: 'production',
+  module: {
+    rules: utils.styleLoaders({
+      sourceMap: config.build.productionSourceMap,
+      extract: true,
+      usePostCSS: true
+    })
+  },
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
+  output: {
+    path: config.build.assetsRoot,
+    filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
+    chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
+  },
+  plugins: [
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
+    new webpack.DefinePlugin({
+      'process.env': env
+    }),
+    // extract css into its own file
+    new MiniCssExtractPlugin({
+      filename: utils.assetsPath('css/[name].[contenthash:8].css'),
+      chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
+    }),
+    // generate dist index.html with correct asset hash for caching.
+    // you can customize output by editing /index.html
+    // see https://github.com/ampedandwired/html-webpack-plugin
+    new HtmlWebpackPlugin({
+      filename: config.build.index,
+      template: 'index.html',
+      inject: true,
+      favicon: resolve('favicon.ico'),
+      title: 'wukong',
+      minify: {
+        removeComments: true,
+        collapseWhitespace: true,
+        removeAttributeQuotes: true
+        // more options:
+        // https://github.com/kangax/html-minifier#options-quick-reference
+      }
+      // default sort mode uses toposort which cannot handle cyclic deps
+      // in certain cases, and in webpack 4, chunk order in HTML doesn't
+      // matter anyway
+    }),
+    new ScriptExtHtmlWebpackPlugin({
+      //`runtime` must same as runtimeChunk name. default is `runtime`
+      inline: /runtime\..*\.js$/
+    }),
+    // keep chunk.id stable when chunk has no name
+    new webpack.NamedChunksPlugin(chunk => {
+      if (chunk.name) {
+        return chunk.name
+      }
+      const modules = Array.from(chunk.modulesIterable)
+      if (modules.length > 1) {
+        const hash = require('hash-sum')
+        const joinedHash = hash(modules.map(m => m.id).join('_'))
+        let len = nameLength
+        while (seen.has(joinedHash.substr(0, len))) len++
+        seen.add(joinedHash.substr(0, len))
+        return `chunk-${joinedHash.substr(0, len)}`
+      } else {
+        return modules[0].id
+      }
+    }),
+    // keep module.id stable when vender modules does not change
+    new webpack.HashedModuleIdsPlugin(),
+    // copy custom static assets
+    new CopyWebpackPlugin([
+      {
+        from: path.resolve(__dirname, '../static'),
+        to: config.build.assetsSubDirectory,
+        ignore: ['.*']
+      }
+    ])
+  ],
+  optimization: {
+    splitChunks: {
+      chunks: 'all',
+      cacheGroups: {
+        libs: {
+          name: 'chunk-libs',
+          test: /[\\/]node_modules[\\/]/,
+          priority: 10,
+          chunks: 'initial' // 只打包初始时依赖的第三方
+        },
+        elementUI: {
+          name: 'chunk-elementUI', // 单独将 elementUI 拆包
+          priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
+          test: /[\\/]node_modules[\\/]element-ui[\\/]/
+        }
+      }
+    },
+    runtimeChunk: 'single',
+    minimizer: [
+      new UglifyJsPlugin({
+        uglifyOptions: {
+          mangle: {
+            safari10: true
+          },
+          compress: {
+            drop_console: true
+          }
+        },
+        sourceMap: config.build.productionSourceMap,
+        cache: true,
+        parallel: true
+      }),
+      // Compress extracted CSS. We are using this plugin so that possible
+      // duplicated CSS from different components can be deduped.
+      new OptimizeCSSAssetsPlugin()
+    ]
+  }
+})
+
+if (config.build.productionGzip) {
+  const CompressionWebpackPlugin = require('compression-webpack-plugin')
+
+  webpackConfig.plugins.push(
+    new CompressionWebpackPlugin({
+      asset: '[path].gz[query]',
+      algorithm: 'gzip',
+      test: new RegExp(
+        '\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
+      ),
+      threshold: 10240,
+      minRatio: 0.8
+    })
+  )
+}
+
+if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
+    .BundleAnalyzerPlugin
+
+  if (config.build.bundleAnalyzerReport) {
+    webpackConfig.plugins.push(
+      new BundleAnalyzerPlugin({
+        analyzerPort: 8080,
+        generateStatsFile: false
+      })
+    )
+  }
+
+  if (config.build.generateAnalyzerReport) {
+    webpackConfig.plugins.push(
+      new BundleAnalyzerPlugin({
+        analyzerMode: 'static',
+        reportFilename: 'bundle-report.html',
+        openAnalyzer: false
+      })
+    )
+  }
+}
+
+module.exports = webpackConfig

+ 8 - 0
config/dev.env.js

@@ -0,0 +1,8 @@
+'use strict'
+const merge = require('webpack-merge')
+const prodEnv = require('./prod.env')
+
+module.exports = merge(prodEnv, {
+  NODE_ENV: '"development"',
+  BASE_API: '"/api/"',
+})

+ 101 - 0
config/index.js

@@ -0,0 +1,101 @@
+'use strict'
+// Template version: 1.2.6
+// see http://vuejs-templates.github.io/webpack for documentation.
+
+const path = require('path')
+
+module.exports = {
+  dev: {
+    // Paths
+    assetsSubDirectory: 'static',
+    assetsPublicPath: '/',
+    proxyTable: {
+      '/api': {
+        target: 'http://192.168.1.116:8443/',
+        changeOrigin: true,
+        pathRewrite: {
+          '^/api': ''
+        }
+      },
+      '/file': {
+        target: 'http://192.168.1.116:8012/',
+        changeOrigin: true,
+        pathRewrite: {
+          '^/file': ''
+        }
+      }
+    },
+
+    // Various Dev Server settings
+    host: '0.0.0.0', // can be overwritten by process.env.HOST
+    port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
+    autoOpenBrowser: false,
+    errorOverlay: true,
+    notifyOnErrors: false,
+    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
+
+    // Use Eslint Loader?
+    // If true, your code will be linted during bundling and
+    // linting errors and warnings will be shown in the console.
+    useEslint: true,
+    // If true, eslint errors and warnings will also be shown in the error overlay
+    // in the browser.
+    showEslintErrorsInOverlay: false,
+
+    /**
+     * Source Maps
+     */
+
+    // https://webpack.js.org/configuration/devtool/#development
+    devtool: 'cheap-source-map',
+
+    // CSS Sourcemaps off by default because relative paths are "buggy"
+    // with this option, according to the CSS-Loader README
+    // (https://github.com/webpack/css-loader#sourcemaps)
+    // In our experience, they generally work as expected,
+    // just be aware of this issue when enabling this option.
+    cssSourceMap: false
+  },
+
+  build: {
+    // Template for index.html
+    index: path.resolve(__dirname, '../dist/index.html'),
+
+    // Paths
+    assetsRoot: path.resolve(__dirname, '../dist'),
+    assetsSubDirectory: 'static',
+
+    /**
+     * You can set by youself according to actual condition
+     * You will need to set this if you plan to deploy your site under a sub path,
+     * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
+     * then assetsPublicPath should be set to "/bar/".
+     * In most cases please use '/' !!!
+     */
+    assetsPublicPath: './',
+
+    /**
+     * Source Maps
+     */
+
+    productionSourceMap: false,
+    // https://webpack.js.org/configuration/devtool/#production
+    devtool: 'source-map',
+
+    // Gzip off by default as many popular static hosts such as
+    // Surge or Netlify already gzip all static assets for you.
+    // Before setting to `true`, make sure to:
+    // npm install --save-dev compression-webpack-plugin
+    productionGzip: false,
+    productionGzipExtensions: ['js', 'css'],
+
+    // Run the build command with an extra argument to
+    // View the bundle analyzer report after build finishes:
+    // `npm run build --report`
+    // Set to `true` or `false` to always turn it on or off
+    bundleAnalyzerReport: process.env.npm_config_report || false,
+
+    // `npm run build:prod --generate_report`
+    generateAnalyzerReport: process.env.npm_config_generate_report || false
+  }
+}

+ 5 - 0
config/prod.env.js

@@ -0,0 +1,5 @@
+'use strict'
+module.exports = {
+  NODE_ENV: '"production"',
+  BASE_API: '""',
+}

BIN
favicon.ico


+ 17 - 0
index.html

@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+  <meta charset="utf-8">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+  <title>悟空CRM</title>
+  <script src="./static/client.js"></script>
+</head>
+
+<body>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>

+ 121 - 0
package.json

@@ -0,0 +1,121 @@
+{
+  "name": "5kcrm",
+  "version": "11.0.0",
+  "description": "",
+  "author": "5kcrm <service@5kcrm.com>",
+  "scripts": {
+    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
+    "start": "npm run dev",
+    "build": "node build/build.js",
+    "build:report": "npm_config_report=true npm run build",
+    "lint": "eslint --ext .js,.vue src --fix",
+    "test": "npm run lint"
+  },
+  "dependencies": {
+    "@chenfengyuan/vue-qrcode": "^1.0.2",
+    "@fullcalendar/core": "^4.3.1",
+    "@fullcalendar/daygrid": "^4.3.0",
+    "@fullcalendar/interaction": "^4.3.0",
+    "@fullcalendar/list": "^4.3.0",
+    "@fullcalendar/timegrid": "^4.3.0",
+    "@fullcalendar/timeline": "^4.3.0",
+    "@fullcalendar/vue": "^4.3.1",
+    "@tinymce/tinymce-vue": "^3.2.0",
+    "axios": "0.18.0",
+    "babel-polyfill": "^6.26.0",
+    "clipboard": "^2.0.4",
+    "echarts": "^4.3.0",
+    "el-bigdata-table": "^1.0.32",
+    "element-ui": "^2.12.0",
+    "file-saver": "^2.0.1",
+    "id-validator": "^1.3.0",
+    "js-cookie": "2.2.1",
+    "js-md5": "^0.7.3",
+    "lockr": "^0.8.5",
+    "normalize.css": "7.0.0",
+    "nprogress": "0.2.0",
+    "number-precision": "^1.5.0",
+    "numeral": "^2.0.6",
+    "nzh": "^1.0.4",
+    "pinyin-match": "1.0.9",
+    "qrcodejs2": "0.0.2",
+    "signature_pad": "3.0.0-beta.4",
+    "throttle-debounce": "^2.1.0",
+    "v-calendar": "2.3.0",
+    "vue": "2.5.17",
+    "vue-bus": "^1.1.0",
+    "vue-calendar-component": "^2.8.2",
+    "vue-cropper": "^0.4.8",
+    "vue-i18n": "^8.7.0",
+    "vue-moment": "^4.0.0",
+    "vue-radial-progress": "^0.2.10",
+    "vue-router": "3.0.1",
+    "vue2-animate": "^2.1.2",
+    "vuedraggable": "2.24.3",
+    "vuex": "3.0.1",
+    "xlsx": "^0.14.1",
+    "xss": "^1.0.6"
+  },
+  "devDependencies": {
+    "autoprefixer": "8.5.0",
+    "babel-core": "6.26.0",
+    "babel-eslint": "8.2.6",
+    "babel-helper-vue-jsx-merge-props": "2.0.3",
+    "babel-loader": "7.1.5",
+    "babel-plugin-dynamic-import-node": "^2.3.3",
+    "babel-plugin-syntax-jsx": "6.18.0",
+    "babel-plugin-transform-runtime": "6.23.0",
+    "babel-plugin-transform-vue-jsx": "3.7.0",
+    "babel-preset-env": "1.7.0",
+    "babel-preset-stage-2": "6.24.1",
+    "chalk": "2.4.1",
+    "copy-webpack-plugin": "4.5.2",
+    "css-loader": "1.0.0",
+    "eslint": "4.19.1",
+    "eslint-friendly-formatter": "4.0.1",
+    "eslint-loader": "2.0.0",
+    "eslint-plugin-vue": "4.7.1",
+    "eventsource-polyfill": "0.9.6",
+    "file-loader": "1.1.11",
+    "friendly-errors-webpack-plugin": "1.7.0",
+    "html-webpack-plugin": "4.0.0-alpha",
+    "less": "3.0.0",
+    "less-loader": "4.1.0",
+    "mini-css-extract-plugin": "0.4.1",
+    "node-notifier": "5.2.1",
+    "node-sass": "^4.7.2",
+    "optimize-css-assets-webpack-plugin": "5.0.0",
+    "ora": "3.0.0",
+    "path-to-regexp": "2.4.0",
+    "portfinder": "1.0.16",
+    "postcss-import": "12.0.0",
+    "postcss-loader": "2.1.6",
+    "postcss-url": "7.3.2",
+    "rimraf": "2.6.2",
+    "sass-loader": "7.0.3",
+    "sass-resources-loader": "^2.0.0",
+    "script-ext-html-webpack-plugin": "2.0.1",
+    "semver": "5.5.0",
+    "shelljs": "0.8.2",
+    "svg-sprite-loader": "^4.1.3",
+    "uglifyjs-webpack-plugin": "1.2.7",
+    "url-loader": "1.0.1",
+    "vue-loader": "15.3.0",
+    "vue-style-loader": "4.1.2",
+    "vue-template-compiler": "2.5.17",
+    "webpack": "4.16.5",
+    "webpack-bundle-analyzer": "^2.13.1",
+    "webpack-cli": "3.1.0",
+    "webpack-dev-server": "3.1.5",
+    "webpack-merge": "4.1.4"
+  },
+  "engines": {
+    "node": ">= 6.0.0",
+    "npm": ">= 3.0.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie <= 8"
+  ]
+}

+ 91 - 0
src/App.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="app">
+    <router-view class="router-view" />
+  </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import cache from '@/utils/cache'
+
+
+export default {
+  name: 'App',
+  components: {},
+  mixins: [],
+  data() {
+    return {}
+  },
+  computed: {
+    ...mapGetters(['activeIndex', 'userInfo'])
+  },
+  watch: {
+    $route(to, from) {
+      this.$wkPreviewFile.closeViewer() // 切换页面隐藏图片预览
+    }
+  },
+  mounted() {
+    this.addDocumentVisibilityChange()
+    this.setMinHeight()
+  },
+  methods: {
+    addDocumentVisibilityChange() {
+      // 网页当前状态判断
+      // hidden,
+      var state, visibilityChange
+      if (typeof document.hidden !== 'undefined') {
+        // hidden = 'hidden'
+        visibilityChange = 'visibilitychange'
+        state = 'visibilityState'
+      } else if (typeof document.mozHidden !== 'undefined') {
+        // hidden = 'mozHidden'
+        visibilityChange = 'mozvisibilitychange'
+        state = 'mozVisibilityState'
+      } else if (typeof document.msHidden !== 'undefined') {
+        // hidden = 'msHidden'
+        visibilityChange = 'msvisibilitychange'
+        state = 'msVisibilityState'
+      } else if (typeof document.webkitHidden !== 'undefined') {
+        // hidden = 'webkitHidden'
+        visibilityChange = 'webkitvisibilitychange'
+        state = 'webkitVisibilityState'
+      }
+      // 添加监听器,在title里显示状态变化
+      document.addEventListener(visibilityChange, () => {
+        if (document[state] == 'visible') {
+          if (cache.updateAxiosHeaders() && this.$route.name === 'login') {
+            window.location.reload()
+          }
+        }
+        this.$bus.emit('document-visibility', document[state])
+      }, false)
+    },
+
+    setMinHeight() {
+      this.$nextTick(() => {
+        const dpr = window.devicePixelRatio || 1
+        const clientWidth = document.body.clientWidth
+        const dom = document.getElementById('app')
+        if (dpr !== 1 && clientWidth > 1600) {
+          dom.style.minHeight = '800px'
+        } else if (dpr === 1 && clientWidth > 1600) {
+          dom.style.minWidth = '1650px'
+        } else {
+          // dom.style.minWidth = '1200px'
+          dom.style.minHeight = '605px'
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style>
+#app {
+  width: 100%;
+  position: relative;
+  height: 100%;
+  min-width: 1200px;
+  min-height: 605px;
+}
+</style>

+ 31 - 0
src/api/admin/application.js

@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+/**
+ * 应用列表接口
+ * @param {*} data
+ *
+ */
+export function adminConfigsetIndexAPI(data) {
+  return request({
+    url: 'adminConfig/queryModuleSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 应用状态改变
+ * @param {*} data
+ * id 应用ID
+ * status 1开启 0关闭
+ */
+export function adminConfigsetUpdateAPI(data) {
+  return request({
+    url: 'adminConfig/setModuleSetting',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 28 - 0
src/api/admin/config.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+/**
+ * 企业首页
+ * @param {*} data
+ */
+export function adminSystemSaveAPI(data) {
+  return request({
+    url: 'adminConfig/setAdminConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 企业首页
+ * @param {*} data
+ */
+export function adminSystemIndexAPI(data) {
+  return request({
+    url: 'adminConfig/queryAdminConfig',
+    method: 'post',
+    data: data
+  })
+}

+ 559 - 0
src/api/admin/crm.js

@@ -0,0 +1,559 @@
+import request from '@/utils/request'
+
+export function businessGroupListAPI(data) {
+  return request({
+    url: 'crmBusinessType/queryBusinessTypeList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function businessGroupAddAPI(data) {
+  return request({
+    url: 'crmBusinessType/setBusinessType',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 商机状态组状态修改
+ * @param {*} data
+ */
+export function businessGroupUpdateStatusAPI(data) {
+  return request({
+    url: 'crmBusinessType/updateStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 商机状态组详情
+ * @param {*} data
+ */
+export function businessGroupReadAPI(data) {
+  return request({
+    url: 'crmBusinessType/getBusinessType',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 商机状态组编辑
+ * @param {*} data
+ */
+export function businessGroupUpdateAPI(data) {
+  return request({
+    url: 'crmBusinessType/setBusinessType',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 商机状态组删除
+ * @param {*} data
+ */
+export function businessGroupDeleteAPI(data) {
+  return request({
+    url: 'crmBusinessType/deleteById',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 自定义字段(字段数据)的添加编辑操作
+ * @param {*} data
+ */
+export function customFieldHandleAPI(data) {
+  return request({
+    url: 'crmField/saveField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 自定义字段(字段数据)的详情
+ * @param {*} data
+ */
+export function customFieldListAPI(data) {
+  return request({
+    url: `crmField/list/${data.label}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 办公审批的自定义字段
+ * @param {*} data
+ */
+export function oaExamineFieldListAPI(data) {
+  return request({
+    url: `oaExamineField/queryField/${data.categoryId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 办公审批自定义字段保存
+ * @param {*} data
+ */
+export function oaFieldHandleAPI(data) {
+  return request({
+    url: 'oaExamineField/saveField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 自定义字段(字段数据)的列表更新时间
+ * @param {*} data
+ */
+export function customFieldIndexAPI(data) {
+  return request({
+    url: 'crmField/queryFields',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 产品类别 数据获取
+ * @param {*} data
+ */
+export function productCategoryIndexAPI(data) {
+  return request({
+    url: 'crmProductCategory/queryList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 产品分类添加
+ * @param {*} data
+ */
+export function productCategorySaveAPI(data) {
+  const url = data.categoryId ? 'update' : 'save'
+  return request({
+    url: 'crmProductCategory/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品分类删除
+ * @param {*} data
+ */
+export function productCategoryDeleteAPI(data) {
+  return request({
+    url: `crmProductCategory/deleteById/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 客户保护规则
+ * @param {*} data
+ */
+export function crmSettingConfigAPI(data) {
+  return request({
+    url: 'crmCustomer/updateRulesSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户保护规则
+ * @param {*} data
+ */
+export function crmSettingConfigDataAPI(data) {
+  return request({
+    url: 'crmCustomer/getRulesSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 部门业绩目标列表
+ * @param {*} data
+ */
+export function crmAchievementIndex(data) {
+  return request({
+    url: 'biAchievement/queryAchievementList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 业绩目标编辑接口
+ * @param {*} data
+ */
+export function crmAchievementUpdate(data) {
+  return request({
+    url: 'biAchievement/setAchievement',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+
+/**
+ * 新增业绩目标
+ * @param {*} data
+ */
+export function crmAchievementAdd(data) {
+  return request({
+    url: 'biAchievement/addAchievement',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+
+/**
+ * 删除业绩目标
+ * @param {*} data
+ */
+export function crmAchievementDelete(data) {
+  return request({
+    url: 'biAchievement/deleteAchievement',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 记录类型 数据
+ * @param {*} data
+ */
+export function crmSettingRecordListAPI(data) {
+  return request({
+    url: 'crmActionRecord/queryRecordOptions',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 记录类型 编辑
+ * @param {*} data
+ */
+export function crmSettingRecordEditAPI(data) {
+  return request({
+    url: 'adminConfig/setRecordOptions',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 合同到期提醒 设置
+ * @param {*} data
+ */
+export function crmSettingContractDayAPI(data) {
+  return request({
+    url: 'crmContract/setContractConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 拥有、锁定客户数限制
+ * @param {*} data
+ */
+export function crmSettingCustomerConfigListAPI(data) {
+  return request({
+    url: 'crmCustomer/queryCustomerSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 拥有、锁定客户数限制 - 创建 编辑
+ * @param {*} data
+ */
+export function crmSettingCustomerConfigSetAPI(data) {
+  return request({
+    url: 'crmCustomer/customerSetting',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 拥有、锁定客户数限制 - 删除
+ * @param {*} data
+ */
+export function crmSettingCustomerConfigDelAPI(data) {
+  return request({
+    url: 'crmCustomer/deleteCustomerSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户回访查询
+ * @param {*} data
+ */
+export function returnVisitConfigQueryAPI(data) {
+  return request({
+    url: 'crmReturnVisit/queryReturnVisitRemindConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户回访设置
+ * @param {*} data
+ */
+export function returnVisitConfigSetAPI(data) {
+  return request({
+    url: 'crmReturnVisit/updateReturnVisitRemindConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 编号查询
+ * @param {*} data
+ */
+export function sysConfigNumberQueryAPI(data) {
+  return request({
+    url: 'crmNumberSetting/queryNumberSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 编号设置
+ * @param {*} data
+ */
+export function sysConfigNumberSetAPI(data) {
+  return request({
+    url: 'crmNumberSetting/setNumberSetting',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/** ****************自定义模板***********************/
+
+/**
+ * 查询 打印模板列表
+ * @param {*} data
+ */
+export function printTemplateListAPI(data) {
+  return request({
+    url: 'crmPrint/queryPrintTemplateList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询指定打印模板
+ * templateId
+ * @param {*} data
+ */
+export function printTemplateByIdAPI(data) {
+  return request({
+    url: 'crmPrint/queryPrintTemplateById',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 添加模板 打印模板
+ * templateName 模板名称
+ * type 关联对象
+ * content模板
+ * @param {*} data
+ */
+export function printAddTemplateAPI(data) {
+  return request({
+    url: 'crmPrint/addPrintTemplate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 编辑模板 打印模板
+ * templateName 模板名称
+ * type 关联对象
+ * content模板
+ * @param {*} data
+ */
+export function printUpdateTemplateAPI(data) {
+  return request({
+    url: 'crmPrint/updatePrintTemplate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除指定打印模板
+ * templateId
+ * @param {*} data
+ */
+export function printDeleteTemplateAPI(data) {
+  return request({
+    url: 'crmPrint/deletePrintTemplate',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 模块对应字段查询
+ * type
+ * @param {*} data
+ */
+export function printQueryFieldsAPI(data) {
+  return request({
+    url: 'crmPrint/queryFields',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 模板校准为内容
+ * type
+ * @param {*} data
+ */
+export function printPrintAPI(data) {
+  return request({
+    url: 'crmPrint/print',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 模板复制
+ * type
+ * @param {*} data
+ */
+export function printCopyTemplateAPI(data) {
+  return request({
+    url: 'crmPrint/copyTemplate',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 保存打印记录
+ * type
+ * @param {*} data
+ */
+export function printSaveRecordAPI(data) {
+  return request({
+    url: 'crmPrint/savePrintRecord',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询打印记录
+ * type
+ * @param {*} data
+ */
+export function printQueryPrintRecordAPI(data) {
+  return request({
+    url: 'crmPrint/queryPrintRecord',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 打印记录详情
+ * type
+ * @param {*} data
+ */
+export function printRecordDetailAPI(data) {
+  return request({
+    url: 'crmPrint/queryPrintRecordById',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 打印预览
+ * type
+ * @param {*} data
+ */
+export function printPreviewAPI(data) {
+  return request({
+    url: 'crmPrint/preview',
+    method: 'post',
+    data: data
+  })
+}

+ 235 - 0
src/api/admin/employeeDep.js

@@ -0,0 +1,235 @@
+import request from '@/utils/request'
+
+export function depDeleteAPI(data) {
+  return request({
+    url: 'adminDept/deleteDept/' + data.id,
+    method: 'post'
+  })
+}
+
+export function depEditAPI(data) {
+  return request({
+    url: 'adminDept/setDept',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function depSaveAPI(data) {
+  return request({
+    url: 'adminDept/addDept',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function userEditAPI(params) {
+  return request({
+    url: 'adminUser/setUser',
+    method: 'post',
+    data: params,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function userAddAPI(params) {
+  return request({
+    url: 'adminUser/addUser',
+    method: 'post',
+    data: params,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// 角色列表
+export function roleListAPI(data) {
+  return request({
+    url: 'adminRole/getAllRoleList',
+    method: 'post',
+    data: data
+  })
+}
+
+// 部分角色列表
+export function adminRoleGetRoleListAPI(data) {
+  return request({
+    url: 'adminRole/getRoleList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询配置的角色范围
+ * @param {*} data
+ * @returns
+ */
+export function adminRoleQueryAuthRoleAPI(roleId) {
+  return request({
+    url: `adminRole/queryAuthRole/${roleId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 更新配置的角色范围
+ * @param {*} data
+ * @returns
+ */
+export function adminRoleUpdateAuthRoleAPI(roleId, data) {
+  return request({
+    url: `adminRole/updateAuthRole/${roleId}`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量修改密码接口
+ * @param {*} data
+ * password
+ * id 用户数组
+ */
+export function adminUsersUpdatePwdAPI(data) {
+  return request({
+    url: 'adminUser/resetPassword',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 编辑登录名
+ * @param {*} data
+ * username
+ * password
+ * id
+ */
+export function adminUsersUsernameEditAPI(data) {
+  return request({
+    url: 'adminUser/usernameEdit',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 编辑登录名
+ * @param {*} data
+ * username
+ * password
+ * id
+ * 可修改管理员
+ */
+export function adminUsersManagerUsernameEditAPI(data) {
+  return request({
+    url: 'adminUser/usernameEditByManager',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 用户状态修改
+ * @param {*} data
+ */
+export function usersEditStatusAPI(data) {
+  return request({
+    url: 'adminUser/setUserStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 用户导入模板
+ * @param {*} data
+ */
+export const userImportTemplateURL = 'https://www.72crm.com/npm/static/user_import.xlsx'
+export function userImportTemplateAPI(data) {
+  return request({
+    url: 'adminUser/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 用户导入
+ * @param {*} data
+ */
+export function userExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'adminUser/excelImport',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    },
+    timeout: 60000
+  })
+}
+
+/**
+ * 下载用户导入错误数据
+ * @param {*} data
+ *
+ */
+export function userErrorExcelDownAPI(data) {
+  return request({
+    url: 'adminUser/downExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 重置部门
+ * @param {*} data
+ */
+export function adminUserSetUserDeptPI(data) {
+  return request({
+    url: 'adminUser/setUserDept',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工数量
+ * @param {*} data
+ */
+export function adminUserCountNumOfUserAPI() {
+  return request({
+    url: 'adminUser/countNumOfUser',
+    method: 'post'
+  })
+}

+ 118 - 0
src/api/admin/file.js

@@ -0,0 +1,118 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-06-03 09:10:23
+ * @LastEditTime: 2020-07-01 10:23:57
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 通过批次ID删除文件
+ */
+export function adminFileDeleteByBatchIdAPI(data) {
+  return request({
+    url: 'adminFile/deleteByBatchId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 通过ID删除文件
+ */
+export function adminFileDeleteByIdAPI(id) {
+  return request({
+    url: `adminFile/deleteById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 下载文件接口
+ */
+export function adminFileDownAPI(id) {
+  return request({
+    url: `adminFile/down/${id}`,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 通过adminFile/down/${id}下载文件接口
+ * 后期使用 暂用 downloadFileAPI
+ */
+export function adminFileDownByUrlAPI(url) {
+  return request({
+    url: url,
+    method: 'post',
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 通过ID查询文件
+ */
+export function adminFileQueryByIdAPI(id) {
+  return request({
+    url: `adminFile/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 通过批次ID查询文件列表
+ */
+export function adminFileQueryFileListAPI(id) {
+  return request({
+    url: `adminFile/queryFileList/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 通过批次ID查询单个文件
+ */
+export function adminFileQueryOneByBatchIdAPI(id) {
+  return request({
+    url: `adminFile/queryOneByBatchId/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改附件名称
+ * @param {*} data
+ */
+export function adminFileRenameFileAPI(data) {
+  return request({
+    url: 'adminFile/renameFileById',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 上传文件
+ */
+export function adminFileUploadAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'adminFile/upload',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}

+ 386 - 0
src/api/admin/hrm.js

@@ -0,0 +1,386 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-06-02 11:26:03
+ * @LastEditTime: 2020-07-01 10:17:00
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 根据类型查询配置列表
+ * @param {*} data
+ */
+export function hrmConfigQueryRecruitChannelAPI(data) {
+  return request({
+    url: 'hrmConfig/queryRecruitChannelList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 保存招聘渠道
+ * @param {*} data
+ */
+export function hrmConfigSaveRecruitChannelAPI(data) {
+  return request({
+    url: 'hrmConfig/saveRecruitChannel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除招聘渠道
+ * @param {*} data
+ */
+export function hrmConfigDeleteRecruitChannelAPI(data) {
+  return request({
+    url: 'hrmConfig/deleteRecruitChannel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询后台配置自定义字段列表
+ * @param {*} data
+ */
+export function hrmConfigQueryFieldsAPI(data) {
+  return request({
+    url: 'hrmConfig/queryFields',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询后台配置自定义字段列表
+ * @param {*} data
+ */
+export function hrmConfigQueryFieldByLabelAPI(id) {
+  return request({
+    url: `hrmConfig/queryFieldByLabel/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 保存后台自定义字段
+ * @param {*} data
+ */
+export function hrmConfigSaveFieldAPI(data) {
+  return request({
+    url: 'hrmConfig/saveField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询淘汰原因
+ * @param {*} data
+ */
+export function hrmConfigQueryRecruitEliminateAPI(data) {
+  return request({
+    url: 'hrmConfig/queryRecruitEliminateList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ *
+保存淘汰原因
+ * @param {*} data
+ */
+export function hrmConfigSaveRecruitEliminateAPI(data) {
+  return request({
+    url: 'hrmConfig/saveRecruitEliminate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询考核模板列表
+ * @param {*} data
+ */
+export function hrmConfigQueryAchievementListAPI(data) {
+  return request({
+    url: 'hrmConfig/queryAchievementTableList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 根据类型查询考核模板
+ * @param {*} data
+ */
+export function hrmConfigQueryAchievementAPI(id) {
+  return request({
+    url: `hrmConfig/queryAchievementTableById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加或修改考核模板考核模板
+ * @param {*} data
+ */
+export function hrmConfigSetAchievementAPI(data) {
+  return request({
+    url: 'hrmConfig/setAchievementTable',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询参保方案列表
+ * @param {*} data
+ */
+export function hrmConfigInsuranceSchemListAPI(data) {
+  return request({
+    url: 'hrmConfig/queryInsuranceSchemePageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询参保方案详情
+ * @param {*} data
+ */
+export function hrmConfigInsuranceSchemeDetailAPI(id) {
+  return request({
+    url: `hrmConfig/queryInsuranceSchemeById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加社保方案
+ * @param {*} data
+ */
+export function hrmConfigAddInsuranceSchemAPI(data) {
+  return request({
+    url: 'hrmConfig/addInsuranceScheme',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除社保方案
+ * @param {*} data
+ */
+export function hrmConfigDeleteInsuranceSchemeAPI(id) {
+  return request({
+    url: `hrmConfig/deleteInsuranceScheme/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加薪资组
+ * @param {*} data
+ */
+export function hrmSalaryGroupAddAPI(data) {
+  return request({
+    url: 'hrmSalaryGroup/addSalaryGroup',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询薪资组列表
+ * @param {*} data
+ */
+export function hrmSalaryGroupListAPI(data) {
+  return request({
+    url: 'hrmSalaryGroup/querySalaryGroupPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改薪资组
+ * @param {*} data
+ */
+export function hrmSalaryGroupUpdateAPI(data) {
+  return request({
+    url: 'hrmSalaryGroup/setSalaryGroup',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除薪资组
+ * @param {*} data
+ */
+export function hrmSalaryGroupDeleteAPI(id) {
+  return request({
+    url: `hrmSalaryGroup/delete/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询计税规则列表
+ * @param {*} data
+ */
+export function hrmSalaryTaxRuleListAPI(data) {
+  return request({
+    url: 'hrmSalaryTaxRule/queryTaxRuleList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 修改计规则
+ * @param {*} data
+ */
+export function hrmSalaryTaxRuleUpdateAPI(data) {
+  return request({
+    url: 'hrmSalaryTaxRule/setTaxRule',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 查询薪资项详情
+ * @param {*} data
+ */
+export function hrmSalaryOptionDetailAPI(data) {
+  return request({
+    url: 'hrmSalaryOption/querySalaryOptionDetail',
+    method: 'post',
+    data: data
+  })
+}
+
+
+/**
+ * 修改薪资项
+ * @param {*} data
+ */
+export function hrmSalaryOptionUpdateAPI(data) {
+  return request({
+    url: 'hrmSalaryOption/setSalaryOption',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询员工档案设置字段列表
+ * @param {*} data
+ */
+export function hrmEmployeeArchivesQueryFieldAPI() {
+  return request({
+    url: 'hrmEmployeeArchives/queryEmployeeArchivesField',
+    method: 'post'
+  })
+}
+
+/**
+ * 发送填写档案信息
+ * @param {*} data
+ */
+export function hrmEmployeeArchivesSendAPI(data) {
+  return request({
+    url: 'hrmEmployeeArchives/sendWriteArchives',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改员工档案字段
+ * @param {*} data
+ */
+export function hrmEmployeeArchivesSetFieldAPI(data) {
+  return request({
+    url: 'hrmEmployeeArchives/setEmployeeArchivesField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询管理可设置员工字段列表
+ * @param {*} data
+ */
+export function hrmEmployeeFieldManageQueryAPI(data) {
+  return request({
+    url: 'hrmEmployeeFieldManage/queryEmployeeManageField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 修改管理可以设置员工字段
+ * @param {*} data
+ */
+export function hrmEmployeeFieldManageSetAPI(data) {
+  return request({
+    url: 'hrmEmployeeFieldManage/setEmployeeManageField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 31 - 0
src/api/admin/init.js

@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+/**
+ * 验证密码
+ * @param {*} data
+ */
+export function adminConfigVerifyPasswordAPI(data) {
+  return request({
+    url: 'adminConfig/verifyPassword',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 模块初始化
+ * @param {*} data
+ */
+export function adminConfigModuleInitDataAPI(data) {
+  return request({
+    url: 'adminConfig/moduleInitData',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}

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

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+/**
+ * 查询系统登录日志列表页接口
+ * @param {*} data
+ */
+export function queryLoginLogListAPI(data) {
+  return request({
+    url: 'adminSysLog/queryLoginLogPageList',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 系统登录日志导出
+ * @param {*} data
+ */
+export function loginLogExportAPI(data) {
+  return request({
+    url: 'adminSysLog/exportLoginLog',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    timeout: 60000
+  })
+}
+
+/**
+ * 查看系统操作日志接口
+ * @param {*} data
+ */
+export function querySystemLogListAPI(data) {
+  return request({
+    url: 'adminSysLog/querySysLogPageList',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 系统操作日志导出
+ * @param {*} data
+ */
+export function systemLogExportAPI(data) {
+  return request({
+    url: 'adminSysLog/exportSysLog',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    timeout: 60000
+  })
+}

+ 55 - 0
src/api/admin/oa.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+
+/**
+ * 审批类型列表
+ * @param {*} data
+ */
+export function oaExamineCategoryListAPI(data) {
+  return request({
+    url: 'oaExamineCategory/queryExamineCategoryList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批类型的创建
+ * @param {*} data
+ */
+export function oaExamineCategorySaveAPI(data) {
+  return request({
+    url: 'oaExamineCategory/setExamineCategory',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 审批删除
+ * @param {*} data
+ */
+export function oaExamineCategoryDeleteAPI(data) {
+  return request({
+    url: 'oaExamineCategory/deleteExamineCategory',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批状态(启用、停用)
+ * @param {*} data
+ */
+export function oaExamineCategoryEnablesAPI(data) {
+  return request({
+    url: 'oaExamineCategory/updateStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 109 - 0
src/api/admin/other.js

@@ -0,0 +1,109 @@
+import request from '@/utils/request'
+
+/**
+ * 设置日志欢迎语 oaCalendar/addOrUpdate
+ * @param {*} data
+ */
+export function sysSetLogWelcomeAPI(data) {
+  return request({
+    url: 'adminConfig/setLogWelcomeSpeech',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 设置日志欢迎语
+ * @param {*} data
+ */
+export function sysGetLogWelcomeListAPI(data) {
+  return request({
+    url: 'adminConfig/getLogWelcomeSpeechList',
+    method: 'post',
+    data: data
+  })
+}
+
+// /**
+//  * 根据id删除日志欢迎语
+//  * @param {*} data
+//  */
+// export function sysDeleteConfigByIdAPI(data) {
+//   return request({
+//     url: 'sysConfig/deleteConfigById',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+/**
+ * 添加/修改日程类型
+ * @param {*} data
+ */
+export function calendarAddOrUpdateAPI(data) {
+  return request({
+    url: 'oaCalendar/addOrUpdate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询日程类型
+ * @param {*} data
+ */
+export function calendarQueryTypeListAPI(data) {
+  return request({
+    url: 'oaCalendar/queryTypeList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除日程类型
+ * @param {*} typeId
+ */
+export function calendarDeleteAPI(typeId) {
+  return request({
+    url: `oaCalendar/delete/${typeId}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 查询日志规则接口
+ * @param {*} data
+ */
+export function oaLogRuleQueryAPI(data) {
+  return request({
+    url: 'oaLog/queryOaLogRuleList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 设置日志规则接口
+ * @param {*} data
+ */
+export function oaLogRuleSetAPI(data) {
+  return request({
+    url: 'oaLog/setOaLogRule',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data
+  })
+}

+ 52 - 0
src/api/admin/project.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function systemRoleQueryProjectRoleListAPI(data) {
+  return request({
+    url: 'adminRole/queryProjectRoleList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 角色
+ * @param {*} data
+ */
+export function systemMenuGetWorkMenuListAPI(data) {
+  return request({
+    url: 'adminMenu/getWorkMenuList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 设置
+ * @param {*} data
+ */
+export function systemRoleSetWorkRoleAPI(data) {
+  return request({
+    url: 'adminRole/setWorkRole',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 删除项目角色
+ */
+export function systemRoleDeleteWorkRoleAPI(data) {
+  return request({
+    url: 'adminRole/deleteWorkRole',
+    method: 'post',
+    data: data
+  })
+}
+

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

@@ -0,0 +1,173 @@
+import request from '@/utils/request'
+
+// export function roleListFun(data) {
+//   return request({
+//     url: 'adminRole/getAllRoleList',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+// export function rulesList(data) {
+//   return request({
+//     url: 'adminMenu/getAllMenuList',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+export function roleAddAPI(data) {
+  return request({
+    url: 'adminRole/add',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function roleDeleteAPI(data) {
+  return request({
+    url: 'adminRole/delete',
+    method: 'post',
+    data: data
+  })
+}
+
+export function roleUpdateAPI(data) {
+  return request({
+    url: 'adminRole/update',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function updateRoleMenuAPI(data) {
+  return request({
+    url: 'adminRole/updateRoleMenu',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 角色复制
+ * @param {*} data
+ */
+export function roleCopyAPI(data) {
+  return request({
+    url: 'adminRole/copy',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 复制员工角色
+ * @param {*} data
+ */
+export function adminRoleRelatedDeptUserAPI(data) {
+  return request({
+    url: 'adminRole/relatedDeptUser',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 添加编辑员工
+ * @param {*} data
+ */
+export function adminRoleRelatedUserAPI(data) {
+  return request({
+    url: 'adminRole/relatedUser',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 删除员工
+ * @param {*} data
+ */
+export function unbindingUserAPI(data) {
+  return request({
+    url: 'adminRole/unbindingUser',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 角色分类列表
+ * @param {*} data
+ */
+export function adminGroupsTypeListAPI(data) {
+  return request({
+    url: 'adminRole/getRoleTypeList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 参数 roleType   根据角色类型查询角色列表
+ * @param {*} roleType
+ */
+export function systemRoleByTypeAPI(roleType) {
+  return request({
+    url: `adminRole/getRoleByType/${roleType}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 规则
+ * @param {*} roleType
+ */
+export function systemRuleByTypeAPI(roleType) {
+  return request({
+    url: `adminMenu/getMenuListByType/${roleType}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询字段授权设置
+ * @param {*} data
+ */
+export function systemRoleGetFieldAPI(data) {
+  return request({
+    url: 'crmField/queryRoleField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 模块设置字段授权
+ * @param {*} data
+ */
+export function systemRoleSetFieldAPI(data) {
+  return request({
+    url: 'crmField/saveRoleField',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}

+ 120 - 0
src/api/admin/update.js

@@ -0,0 +1,120 @@
+import request from '@/utils/request'
+
+/**
+ * 查询版本
+ * @param {*} data
+ */
+export function crmCheckVersionAPI() {
+  return request({
+    url: 'checkVersion',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询数据库
+ * @param {*} data
+ */
+export function crmQueryDatabaseAPI() {
+  return request({
+    url: 'queryDatabase',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 数据备份
+ * @param {*} data
+ */
+export function crmBackupDatabaseAPI(data) {
+  return request({
+    url: 'backupDatabase',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  }).then(
+    res => {
+      return res
+    },
+    err => {
+      return err
+    }
+  )
+}
+
+
+
+/**
+ * 更新进度
+ * @param {*} data
+ */
+export function crmUpdateAPI(data) {
+  return request({
+    url: 'projectUpdate',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  }).then(
+    res => {
+      return res
+    },
+    err => {
+      return err
+    }
+  )
+}
+
+
+/**
+ * 更新进度
+ * @param {*} data
+ */
+export function updateProgressAPI() {
+  return request({
+    url: 'getProgress',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  }).then(
+    res => {
+      return res
+    },
+    err => {
+      return err
+    }
+  )
+}
+
+/**
+ * 登录悟空CRM
+ * @param {*} data
+ */
+export function loginWKAPI(data) {
+  return request({
+    url: 'updates/login',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  }).then(
+    res => {
+      return res
+    },
+    err => {
+      return err
+    }
+  )
+}
+

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

@@ -0,0 +1,55 @@
+/**
+ * Created by yxk at 2020/6/5
+ */
+import request from '@/utils/request'
+
+/**
+ * 从人力资源添加员工
+ */
+export function hrmAddUserAPI(data) {
+  return request({
+    url: 'adminUser/hrmAddUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询部门用户列表
+ */
+export function adminUserQueryDeptUserByHrmAPI(data) {
+  return request({
+    url: 'adminUser/queryDeptUserListByHrm',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询部门员工列表
+ * @param {*} data
+ */
+export function adminUserQueryByDeptAPI(deptId) {
+  return request({
+    url: `adminUser/queryDeptUserList/${deptId}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 查询部门员工列表
+ * @param {*} data
+ */
+export function adminUserQueryDeptUserByExamineAPI(deptId) {
+  return request({
+    url: `adminUser/queryDeptUserByExamine/${deptId}`,
+    method: 'post'
+  })
+}

+ 128 - 0
src/api/bi/achievement.js

@@ -0,0 +1,128 @@
+import request from '@/utils/request'
+
+/**
+ * 合同数量分析/金额分析/回款金额分析
+ * count:合同数量分析;money:金额分析;back:回款金额分析
+ */
+export function biAchievementAnalysisAPI(data) {
+  if (data.type === 'count') {
+    return request({
+      url: 'biEmployee/contractNumStats',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (data.type === 'money') {
+    return request({
+      url: 'biEmployee/contractMoneyStats',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (data.type === 'back') {
+    return request({
+      url: 'biEmployee/receivablesMoneyStats',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  }
+}
+
+export function biAchievementAnalysisExportAPI(data) {
+  if (data.type === 'count') {
+    return request({
+      url: 'biEmployee/contractNumStatsExport',
+      method: 'post',
+      data: data,
+      responseType: 'blob',
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (data.type === 'money') {
+    return request({
+      url: 'biEmployee/contractMoneyStatsExport',
+      method: 'post',
+      data: data,
+      responseType: 'blob',
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (data.type === 'back') {
+    return request({
+      url: 'biEmployee/receivablesMoneyStatsExport',
+      method: 'post',
+      data: data,
+      responseType: 'blob',
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  }
+}
+
+/**
+ * 合同汇总表
+ * @param {*} data
+ */
+export function biAchievementSummaryAPI(data) {
+  return request({
+    url: 'biEmployee/totalContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biAchievementSummaryExportAPI(data) {
+  return request({
+    url: 'biEmployee/totalContractExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 发票统计分析
+ * @param {*} data
+ */
+export function biAchievementInvoiceAPI(data) {
+  return request({
+    url: 'biEmployee/invoiceStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 发票统计分析导出
+ * @param {*} data
+ */
+export function biAchievementInvoiceExportAPI(data) {
+  return request({
+    url: 'biEmployee/invoiceStatsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 64 - 0
src/api/bi/bi.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+/**
+ * 业绩目标完成情况
+ * @param {*} data
+ */
+export function biAchievementStatisticsAPI(data) {
+  return request({
+    url: 'bi/bi/taskCompleteStatistics',
+    method: 'post',
+    data: data
+  })
+}
+
+export function biAchievementStatisticsExportAPI(data) {
+  return request({
+    url: 'bi/bi/taskCompleteStatisticsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 产品销售情况统计
+ * @param {*} data
+ */
+export function biProductStatisticsAPI(data) {
+  return request({
+    url: 'bi/bi/productStatistics',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biProductStatisticsExportAPI(data) {
+  return request({
+    url: 'bi/bi/productStatisticsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 销售漏斗
+ * @param {*} data
+ */
+export function biBusinessFunnelAPI(data) {
+  return request({
+    url: 'biFunnel/sellFunnel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 50 - 0
src/api/bi/business.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+/**
+ * 新增商机数与金额趋势分析
+ * @param {*} data
+ * year 年
+ * status 1销售(目标)2回款(目标)
+ * user_id 员工ID
+ * structure_id 部门ID
+ */
+export function biBusinessTrendAPI(data) {
+  return request({
+    url: 'biFunnel/addBusinessAnalyze',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 新增商机数与金额趋势分析 详情列表
+ * @param {*} data
+ */
+export function biBusinessTrendListAPI(data) {
+  return request({
+    url: 'biFunnel/sellFunnelList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 赢单机会转化率趋势分析
+ * @param {*} data
+ */
+export function biBusinessWinAPI(data) {
+  return request({
+    url: 'biFunnel/win',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 326 - 0
src/api/bi/customer.js

@@ -0,0 +1,326 @@
+import request from '@/utils/request'
+
+/**
+ * 员工客户总量分析
+ */
+export function biCustomerTotalAPI(data) {
+  return request({
+    url: 'biCustomer/totalCustomerStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerTotalListAPI(data) {
+  return request({
+    url: 'biCustomer/totalCustomerTable',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerTotalListExportAPI(data) {
+  return request({
+    url: 'biCustomer/totalCustomerTableExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工客户跟进次数分析
+ * @param {*} data
+ */
+export function biCustomerRecordTimesAPI(data) {
+  return request({
+    url: 'biCustomer/customerRecordStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工客户跟进次数分析 具体员工列表
+ * @param {*} data
+ */
+export function biCustomerRecordListAPI(data) {
+  return request({
+    url: 'biCustomer/customerRecordInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerRecordListExportAPI(data) {
+  return request({
+    url: 'biCustomer/customerRecordInfoExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工跟进方式分析
+ * @param {*} data
+ */
+export function biCustomerRecordModeAPI(data) {
+  return request({
+    url: 'biCustomer/customerRecodCategoryStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerRecordModeExportAPI(data) {
+  return request({
+    url: 'biCustomer/customerRecodCategoryStatsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户转化率分析具体数据
+ * @param {*} data
+ */
+export function biCustomerConversionInfoAPI(data) {
+  return request({
+    url: 'biCustomer/customerConversionInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户转化率分析
+ * @param {*} data
+ */
+export function biCustomerConversionAPI(data) {
+  return request({
+    url: 'biCustomer/customerConversionStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 公海客户分析
+ * @param {*} data
+ */
+export function biCustomerPoolAPI(data) {
+  return request({
+    url: 'biCustomer/poolStats',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海客户分析
+ * @param {*} data
+ */
+export function biCustomerPoolListAPI(data) {
+  return request({
+    url: 'biCustomer/poolTable',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerPoolListExportAPI(data) {
+  return request({
+    url: 'biCustomer/poolTableExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工客户成交周期
+ * @param {*} data
+ */
+export function biCustomerUserCycleAPI(data) {
+  return request({
+    url: 'biCustomer/employeeCycle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerUserCycleExportAPI(data) {
+  return request({
+    url: 'biCustomer/employeeCycleInfoExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function employeeCycleInfoAPI(data) {
+  return request({
+    url: 'biCustomer/employeeCycleInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 地区成交周期
+ * @param {*} data
+ */
+export function biCustomerAddressCycleAPI(data) {
+  return request({
+    url: 'biCustomer/districtCycle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerAddressCycleExportAPI(data) {
+  return request({
+    url: 'biCustomer/districtCycleExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品成交周期
+ * @param {*} data
+ */
+export function biCustomerProductCycleAPI(data) {
+  return request({
+    url: 'biCustomer/productCycle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerProductCycleExportAPI(data) {
+  return request({
+    url: 'biCustomer/productCycleExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工客户满意度分析
+ * @param {*} data
+ */
+export function biCustomerSatisfactionTableAPI(data) {
+  return request({
+    url: 'biCustomer/customerSatisfactionTable',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerSatisfactionTableExportAPI(data) {
+  return request({
+    url: 'biCustomer/customerSatisfactionExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工客户满意度分析
+ * @param {*} data
+ */
+export function biCustomerProductSatisfactionTableAPI(data) {
+  return request({
+    url: 'biCustomer/productSatisfactionTable',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biCustomerProductSatisfactionExportAPI(data) {
+  return request({
+    url: 'biCustomer/productSatisfactionExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 50 - 0
src/api/bi/customerPortrayal.js

@@ -0,0 +1,50 @@
+import request from '@/utils/request'
+
+/**
+ * 城市分布分析
+ */
+export function biAchievementAnalysisAPI(data) {
+  return request({
+    url: 'biRanking/addressAnalyse',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biAchievementPortraitAPI(data) {
+  const type = data.type_analyse
+  if (type === 'industry') {
+    return request({
+      url: 'biRanking/portrait',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (type === 'level') {
+    return request({
+      url: 'biRanking/portraitLevel',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  } else if (type === 'source') {
+    return request({
+      url: 'biRanking/portraitSource',
+      method: 'post',
+      data: data,
+      headers: {
+        'Content-Type': 'application/json;charset=UTF-8'
+      }
+    })
+  }
+}
+
+
+

+ 80 - 0
src/api/bi/oa.js

@@ -0,0 +1,80 @@
+import request from '@/utils/request'
+
+/**
+ * 日志统计
+ * @param {*} data
+ */
+export function biLogStatisticsAPI(data) {
+  return request({
+    url: 'biWork/logStatistics',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 日志统计导出
+ * @param {*} data
+ */
+export function biLogExcelExportAPI(data) {
+  return request({
+    url: 'biWork/logStatisticsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    timeout: 600000,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 审批统计
+ * @param {*} data
+ */
+export function biExamineStatisticsAPI(data) {
+  return request({
+    url: 'biWork/examineStatistics',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+* 审批统计详情列表
+* @param {*} data
+*/
+export function biExamineIndexAPI(data) {
+  return request({
+    url: 'biWork/examineInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 审批统计导出
+ * @param {*} data
+ */
+export function biExamineExcelExportAPI(data) {
+  return request({
+    url: 'biWork/examineStatisticsExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    timeout: 600000,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 15 - 0
src/api/bi/product.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+/**
+ * 产品分类销量分析
+ */
+export function biProductCategoryAPI(data) {
+  return request({
+    url: 'biRanking/contractProductRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 250 - 0
src/api/bi/ranking.js

@@ -0,0 +1,250 @@
+import request from '@/utils/request'
+
+/**
+ * 合同金额
+ * @param {*} data
+ * year 年
+ * status 1销售(目标)2回款(目标)
+ * user_id 员工ID
+ * structure_id 部门ID
+ */
+export function biRankingContractAPI(data) {
+  return request({
+    url: 'biRanking/contractRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingContractExportAPI(data) {
+  return request({
+    url: 'biRanking/contractRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 回款金额排行
+ * @param {*} data
+ */
+export function biRankingReceivablesAPI(data) {
+  return request({
+    url: 'biRanking/receivablesRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingReceivablesExportAPI(data) {
+  return request({
+    url: 'biRanking/receivablesRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 签约合同排行
+ * @param {*} data
+ */
+export function biRankingSigningAPI(data) {
+  return request({
+    url: 'biRanking/contractCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingSigningExportAPI(data) {
+  return request({
+    url: 'biRanking/contractCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品销量排行
+ * @param {*} data
+ */
+export function biRankingProductAPI(data) {
+  return request({
+    url: 'biRanking/productCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingProductExportAPI(data) {
+  return request({
+    url: 'biRanking/productCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 新增客户数排行
+ * @param {*} data
+ */
+export function biRankingAddCustomerAPI(data) {
+  return request({
+    url: 'biRanking/customerCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingAddCustomerExportAPI(data) {
+  return request({
+    url: 'biRanking/customerCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 新增联系人数排行
+ * @param {*} data
+ */
+export function biRankingAddContactsAPI(data) {
+  return request({
+    url: 'biRanking/contactsCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingAddContactsExportAPI(data) {
+  return request({
+    url: 'biRanking/contactsCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 跟进次数排行
+ * @param {*} data
+ */
+export function biRankingRecordNunAPI(data) {
+  return request({
+    url: 'biRanking/recordCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingRecordNunExportAPI(data) {
+  return request({
+    url: 'biRanking/recordCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 跟进客户数排行
+ * @param {*} data
+ */
+export function biRankingRecordCustomerAPI(data) {
+  return request({
+    url: 'biRanking/customerGenjinCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingRecordCustomerExportAPI(data) {
+  return request({
+    url: 'biRanking/customerGenjinCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 出差次数排行
+ * @param {*} data
+ */
+export function biRankingExamineAPI(data) {
+  return request({
+    url: 'biRanking/travelCountRanKing',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function biRankingExamineExportAPI(data) {
+  return request({
+    url: 'biRanking/travelCountRanKingExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 240 - 0
src/api/calendar/index.js

@@ -0,0 +1,240 @@
+import request from '@/utils/request'
+
+/**
+ * 新增日程
+ *
+ */
+export function canlendarSaveAPI(data) {
+  return request({
+    url: 'oaEvent/save',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 删除日程
+ *
+ */
+export function canlendarDeleteAPI(data) {
+  return request({
+    url: 'oaEvent/delete',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 查询日程
+ *
+ */
+export function canlendarQueryListAPI(data) {
+  return request({
+    url: 'oaEvent/queryList',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 编辑日程 oaEvent/queryById
+ *
+ */
+export function canlendarUpdateAPI(data) {
+  return request({
+    url: 'oaEvent/update',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 查询日程详情
+ *
+ */
+export function canlendarQueryByIdAPI(data) {
+  return request({
+    url: 'oaEvent/queryById',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 查询自定义列表
+ */
+export function canlendarQueryTypeListAPI(data) {
+  return request({
+    url: 'oaCalendar/queryTypeListByUser',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 编辑自定义列表 oaCalendar/todayTask
+ */
+export function canlendarUpdateTypeAPI(data) {
+  return request({
+    url: 'oaCalendar/updateTypeUser',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+// /**
+//  * 今日需联系任务
+//  */
+// export function canlendarTodayTaskAPI(data) {
+//   return request({
+//     url: 'oaCalendar/todayTask',
+//     method: 'post',
+//     headers: {
+//       'Content-Type': 'application/json;charset=UTF-8'
+//     },
+//     data: data
+//   })
+// }
+
+/**
+ * 今日到期的合同(type: 1 当日到期合同 2 当日回款合同)
+ */
+export function canlendarTodayContractAPI(data) {
+  return request({
+    url: 'oaCalendar/eventContract',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 需联系客户
+ */
+export function canlendarTodayCustomerAPI(data) {
+  return request({
+    url: 'oaCalendar/eventCustomer',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+
+/**
+ * 需联系线索
+ */
+export function canlendarTodayLeadsAPI(data) {
+  return request({
+    url: 'oaCalendar/eventLeads',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+
+/**
+ * 需联系商机
+ */
+export function canlendarTodayBusinessAPI(data) {
+  return request({
+    url: 'oaCalendar/eventBusiness',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 预计成交商机
+ */
+export function canlendarTodayDealBusinessAPI(data) {
+  return request({
+    url: 'oaCalendar/eventDealBusiness',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 小日历标记
+ */
+export function canlendarQueryListStatusAPI(data) {
+  return request({
+    url: 'oaEvent/queryListStatus',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 今日crm状态提醒
+ */
+export function canlendarEventCrmAPI(data) {
+  return request({
+    url: 'oaCalendar/eventCrm',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 即将到期的任务
+ */
+export function canlendarEventTaskAPI(data) {
+  return request({
+    url: 'oaCalendar/eventTask',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ *  日程员工列表
+ */
+export function systemUserQueryAuthUserList(data) {
+  return request({
+    url: 'adminUser/queryAuthUserList',
+    method: 'post',
+    data: data
+  })
+}

+ 322 - 0
src/api/common.js

@@ -0,0 +1,322 @@
+import request from '@/utils/request'
+
+/**
+ * 员工
+ * @param {*} data
+ */
+export function userListAPI(data) {
+  return request({
+    url: 'adminUser/queryUserList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 部门
+ * @param {*} data
+ */
+export function depListAPI(data) {
+  return request({
+    url: 'adminDept/queryDeptTree',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取权限范围内部门接口
+ * @param {*} data
+ */
+export function adminStructuresSubIndexAPI(data) {
+  return request({
+    url: 'adminDept/queryDeptByAuth',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 获取权限范围内部门接口
+ * @param {*} data
+ */
+export function getUserByDeptIdAPI(data) {
+  return request({
+    url: 'adminUser/queryUserByDeptId',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 部门下的员工
+ * @param {*} data
+ */
+export function userListByStructidAPI(data) {
+  return request({
+    url: 'adminUser/userListByStructidAPI',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 附件
+ * @param {*} data
+ */
+export const crmFileSaveUrl = process.env.BASE_API + 'adminFile/upload'
+
+export function crmFileSaveAPI(data, config = {}) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'adminFile/upload',
+    method: 'post',
+    data: param,
+    ...config,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+export function crmFileSingleSaveAPI(data, config = {}) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'adminFile/uploadBySingle',
+    method: 'post',
+    data: param,
+    ...config,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 公共web文件上传
+ * @param data
+ */
+export function webFileSaveAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+    param.append('isPublic', '1')
+  })
+  return request({
+    url: 'adminFile/upload',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 唯一图
+ * @param {*} data
+ */
+export function crmFileSaveByBatchIdAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'adminFile/upload',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/** 暂时客户管理里面也有 */
+/**
+ * 附件删除接口
+ * @param {*} data
+ */
+export function crmFileDeleteAPI(data) {
+  return request({
+    url: `adminFile/deleteById/${data.id}`,
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 根据批次ID删除文件
+ * @param {*} data
+ */
+export function crmFileRemoveByBatchIdAPI(data) {
+  return request({
+    url: 'adminFile/deleteByBatchId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件重命名
+ * @param {*} data
+ */
+export function crmFileUpdateAPI(data) {
+  return request({
+    url: 'adminFile/renameFileById',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 通过path 下载
+ * @param {*} data
+ */
+export function crmFileDownByPathAPI(data) {
+  return request({
+    url: 'crmPrint/down',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 权限数据返回
+ * @param {*} data
+ */
+export function adminIndexAuthListAPI(data) {
+  return request({
+    url: 'adminRole/auth',
+    method: 'post',
+    data: data
+  })
+}
+
+
+/**
+ * 系统消息列表
+ * label 1 任务 2 日志 3 oa审批 4公告 5 日程 6 客户管理
+ * isRead 0 未读 1 已读
+ * @param {*} data
+ */
+export function systemMessageListAPI(data) {
+  return request({
+    url: 'adminMessage/queryList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 未读消息数
+ * @param {*} data
+ */
+export function systemMessageUnreadCountAPI(data) {
+  return request({
+    url: 'adminMessage/queryUnreadCount',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 读消息
+ * @param {*} data
+ */
+export function systemMessageReadAPI(data) {
+  return request({
+    url: 'adminMessage/readMessage',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 读全部消息
+ * @param {*} data
+ */
+export function systemMessageReadAllAPI(data) {
+  return request({
+    url: 'adminMessage/readAllMessage',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 用户信息
+ * @param {*} data
+ */
+export function systemUserInfoAPI(data) {
+  return request({
+    url: 'adminUser/queryUserInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 系统消息按类别删除
+ * @param {*} data
+ */
+export function systemMessageClearAPI(data) {
+  return request({
+    url: 'adminMessage/clear',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 系统消息删除
+ * @param {*} data
+ */
+export function systemMessageDeleteByIdAPI(id) {
+  return request({
+    url: `adminMessage/deleteById/${id}`,
+    method: 'post'
+  })
+}
+
+export function downloadFileAPI(url) {
+  return request({
+    url: url,
+    method: 'post',
+    data: {},
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 已读更新通知
+ * @param {*} data
+ */
+export function readUpdateNoticeAPI(data) {
+  return request({
+    url: 'adminUser/readNotice',
+    method: 'post',
+    data: data
+  })
+}

+ 29 - 0
src/api/config.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+/**
+ * 查询客户管理导航栏设置接口
+ * @param {*} data
+ */
+export function configHeaderModelSortAPI(data) {
+  return request({
+    url: 'adminConfig/queryHeaderModelSort',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 修改首页顶部导航栏设置接口
+ * @param {*} data
+ */
+export function configSetHeaderModelSortAPI(data) {
+  return request({
+    url: 'adminConfig/setHeaderModelSort',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+

+ 327 - 0
src/api/crm/business.js

@@ -0,0 +1,327 @@
+import request from '@/utils/request'
+
+/**
+ * 新建商机
+ * @param {*} data
+ */
+export function crmBusinessSaveAPI(data) {
+  const url = data.entity && data.entity.businessId ? 'update' : 'add'
+  return request({
+    url: `crmBusiness/${url}`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmBusinessIndexAPI(data) {
+  return request({
+    url: 'crmBusiness/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmBusinessDeleteAPI(data) {
+  return request({
+    url: 'crmBusiness/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 商机状态组
+ * @param {*} data
+ */
+export function crmBusinessStatusListAPI(data) {
+  return request({
+    url: 'crmBusiness/queryBusinessStatusOptions',
+    method: 'post',
+    data: data
+  })
+}
+
+
+/**
+ * 商机下的状态组
+ * @param {*} data
+ */
+export function crmBusinessStatusByIdAPI(data) {
+  return request({
+    url: `crmBusiness/queryBusinessStatus/${data.businessId}`,
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function crmBusinessReadAPI(data) {
+  return request({
+    url: `crmBusiness/queryById/${data.businessId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 商机转移
+ * @param {*} data
+ */
+export function crmBusinessTransferAPI(data) {
+  return request({
+    url: 'crmBusiness/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 商机转移
+ * @param {*} data
+ */
+export function crmBusinessAdvanceAPI(data) {
+  return request({
+    url: 'crmBusiness/boostBusinessStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 商机相关产品
+ * @param {*} data
+ */
+export function crmBusinessProductAPI(data) {
+  return request({
+    url: 'crmBusiness/queryProduct',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 合同
+ * @param {*} data
+ */
+export function crmBusinessQueryContractAPI(data) {
+  return request({
+    url: 'crmBusiness/queryContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// 团队操作
+/**
+ * 团队成员创建
+ * @param {*} data
+ */
+export function crmBusinessSettingTeamSaveAPI(data) {
+  return request({
+    url: 'crmBusiness/addMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmBusinessSettingTeamDeleteAPI(data) {
+  return request({
+    url: 'crmBusiness/deleteMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmBusinessTeamMembersAPI(data) {
+  return request({
+    url: `crmBusiness/getMembers/${data.id}`,
+    method: 'post'
+  })
+}
+
+export function crmBusinessUpdateMembersAPI(data) {
+  return request({
+    url: 'crmBusiness/updateMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出团队
+ * @param {*} data
+ */
+export function crmBusinessExitTeamAPI(data) {
+  return request({
+    url: `crmBusiness/exitTeam/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 商机关联联系人
+ * @param {*} data
+ */
+export function crmBusinessRelateContactsAPI(data) {
+  return request({
+    url: 'crmBusiness/relateContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 商机取消关联联系人
+ * @param {*} data
+ */
+export function crmBusinessUnrelateContactsAPI(data) {
+  return request({
+    url: 'crmBusiness/unrelateContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 商机下联系人
+ * @param {*} data
+ */
+export function crmBusinessQueryContactsAPI(data) {
+  return request({
+    url: 'crmBusiness/queryContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 设置首要联系人
+ * @param {*} data
+ *
+ */
+export function crmBusinessSetContactsAPI(data) {
+  return request({
+    url: 'crmBusiness/setContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmBusinessFileListAPI(data) {
+  return request({
+    url: 'crmBusiness/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmBusinessNumAPI(data) {
+  return request({
+    url: 'crmBusiness/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 商机导出
+ * @param {*} data
+ */
+export function crmBusinessExcelExportAPI(data) {
+  return request({
+    url: 'crmBusiness/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob',
+    timeout: 60000
+  })
+}
+
+export function crmBusinessExcelAllExportAPI(data) {
+  return request({
+    url: 'crmBusiness/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 标星
+ * @param {*} data
+ *
+ */
+export function crmBusinessStarAPI(data) {
+  return request({
+    url: `crmBusiness/star/${data.id}`,
+    method: 'post'
+  })
+}

+ 451 - 0
src/api/crm/common.js

@@ -0,0 +1,451 @@
+import request from '@/utils/request'
+import crmTypeModel from '@/views/crm/model/crmTypeModel'
+
+/**
+ *crm 自定义字段的添加
+ * @param {*} data
+ */
+export function filedGetFieldAPI(data) {
+  const label = data.label
+  let url
+  if (label === 10) {
+    url = '/oaExamineField/queryField/' + data.id
+  } else {
+    url = crmTypeModel.labelToType[label] + '/field/' + (data.id ? data.id : '')
+  }
+
+  return request({
+    url: url,
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 详情页基本信息
+ * data 会包含poolId 需保留
+ * @param {*} data
+ */
+export function filedGetInformationAPI(data) {
+  return request({
+    url: crmTypeModel.labelToType[data.types] + '/information/' + data.id,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 表头
+ * @param {*} data
+ */
+export function filedGetTableFieldAPI(data) {
+  return request({
+    url: 'crmField/queryListHead/' + data.label,
+    method: 'post',
+    data: data
+  })
+}
+
+
+/**
+ * 基本信息编辑
+ * @param {*} data
+ */
+export function filedUpdateTableFieldAPI(data) {
+  return request({
+    url: `${crmTypeModel.labelToType[data.label]}/updateInformation`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海表头
+ * @param {*} data
+ */
+export function filedGetPoolTableFieldAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolListHead',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 自定义字段验重
+ * @param {*} data
+ */
+export function filedValidatesAPI(data) {
+  return request({
+    url: 'crmField/verify',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 自定义字段(高级筛选)
+ * @param {*} data
+ */
+export function filterIndexfieldsAPI(data) {
+  return request({
+    url: 'crmScene/queryField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公海自定义字段(高级筛选)
+ * @param {*} data
+ */
+export function filterIndexPoolfieldsAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 场景列表
+ * @param {*} data
+ */
+export function crmSceneIndexAPI(data) {
+  return request({
+    url: 'crmScene/queryScene',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 场景设置列表
+ * @param {*} data
+ */
+export function crmSceneSetIndexAPI(data) {
+  return request({
+    url: 'crmScene/querySceneConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 场景创建
+ * @param {*} data
+ */
+export function crmSceneSaveAPI(data) {
+  return request({
+    url: 'crmScene/addScene',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 场景编辑
+ * @param {*} data
+ */
+export function crmSceneUpdateAPI(data) {
+  return request({
+    url: 'crmScene/updateScene',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 场景默认
+ * @param {*} data
+ */
+export function crmSceneDefaultsAPI(data) {
+  return request({
+    url: 'crmScene/setDefaultScene',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 场景删除
+ * @param {*} data
+ */
+export function crmSceneDeleteAPI(data) {
+  return request({
+    url: 'crmScene/deleteScene',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 场景排序
+ * @param {*} data
+ */
+export function crmSceneSortAPI(data) {
+  return request({
+    url: 'crmScene/sceneConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表字段排序数据
+ * @param {*} data
+ */
+export function crmFieldConfigAPIIndexAPI(data) {
+  return request({
+    url: 'crmField/queryFieldConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公海列表字段排序数据
+ * @param {*} data
+ */
+export function crmPoolFieldConfigIndexAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolFieldConfig',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 列表排序编辑
+ * @param {*} data
+ */
+export function crmFieldConfigAPI(data) {
+  return request({
+    url: 'crmField/setFieldConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海列表排序编辑
+ * @param {*} data
+ */
+export function crmPoolFieldConfigAPI(data) {
+  return request({
+    url: 'crmCustomerPool/poolFieldConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表宽度设置
+ * @param {*} data
+ */
+export function crmFieldColumnWidthAPI(data) {
+  return request({
+    url: 'crmField/setFieldStyle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海 列表宽度设置
+ * @param {*} data
+ */
+export function crmPoolFieldColumnWidthAPI(data) {
+  return request({
+    url: 'crmField/setPoolFieldStyle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 操作记录
+ * @param {*} data
+ */
+export function crmIndexFieldRecordAPI(data) {
+  return request({
+    url: 'crmActionRecord/queryRecordList',
+    method: 'post',
+    data: data
+  })
+}
+
+// /**
+//  * 客户管理下 合同回款的待审批
+//  * @param {*} data
+//  */
+// export function crmExamineMyExamineAPI(data) {
+//   return request({
+//     url: 'crmExamine/myExamine',
+//     method: 'post',
+//     data: data,
+//     headers: {
+//       'Content-Type': 'application/json;charset=UTF-8'
+//     }
+//   })
+// }
+
+/**
+ * 查询活动分页列表
+ * @param {*} data
+ */
+export function crmActivityListAPI(data) {
+  return request({
+    url: 'crmActivity/getCrmActivityPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除跟进记录
+ * @param {*} data
+ */
+export function crmActivityDeleteAPI(data) {
+  return request({
+    url: `crmActivity/deleteCrmActivityRecord/${data.activityId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除外勤签到
+ * @param {*} data
+ */
+export function crmActivityOutworkSignDeleteAPI(data) {
+  return request({
+    url: 'crmActivity/deleteOutworkSign',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 添加跟进记录
+ * @param {*} data
+ */
+export function crmActivityAddAPI(data) {
+  return request({
+    url: 'crmActivity/addCrmActivityRecord',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 编辑跟进记录
+ * @param {*} data
+ */
+export function crmActivityUpdateAPI(data) {
+  return request({
+    url: 'crmActivity/updateActivityRecord',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查看当前导入数量
+ * @param {*} data
+ */
+export function crmQueryImportNumAPI(data) {
+  return request({
+    url: 'adminMessage/queryImportNum',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询导入结果
+ * @param {*} data
+ */
+export function crmQueryImportInfoAPI(data) {
+  return request({
+    url: 'adminMessage/queryImportInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查看错误数据接口
+ * @param {*} data
+ */
+export function crmDownImportErrorAPI(data) {
+  return request({
+    url: 'adminMessage/downImportError',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 查询跟进记录常用语
+ * @param {*} data
+ */
+export function sysConfigQueryPhraseAPI(data) {
+  return request({
+    url: 'adminConfig/queryActivityPhrase',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 设置跟进记录常用语
+ * @param {*} data
+ */
+export function sysConfigSetPhraseAPI(data) {
+  return request({
+    url: 'adminConfig/setActivityPhrase',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 276 - 0
src/api/crm/contacts.js

@@ -0,0 +1,276 @@
+import request from '@/utils/request'
+
+/**
+ * 新建联系人
+ * @param {*} data
+ */
+export function crmContactsSaveAPI(data) {
+  var url = data.entity && data.entity.contactsId ? 'update' : 'add'
+  return request({
+    url: 'crmContacts/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmContactsIndexAPI(data) {
+  return request({
+    url: 'crmContacts/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmContactsDeleteAPI(data) {
+  return request({
+    url: 'crmContacts/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function crmContactsReadAPI(data) {
+  return request({
+    url: `crmContacts/queryById/${data.contactsId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 联系人转移
+ * @param {*} data
+ */
+export function crmContactsTransferAPI(data) {
+  return request({
+    url: 'crmContacts/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 联系人下商机
+ * @param {*} data
+ */
+export function crmContactsQueryBusinessAPI(data) {
+  return request({
+    url: 'crmContacts/queryBusiness',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 联系人导出
+ * @param {*} data
+ * Contacts_id 联系人ID
+ */
+export function crmContactsExcelExportAPI(data) {
+  return request({
+    url: 'crmContacts/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+export function crmContactsExcelAllExportAPI(data) {
+  return request({
+    url: 'crmContacts/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 联系人导入
+ * @param {*} data
+ *
+ */
+export function crmContactsExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmContacts/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 联系人导入模板下载
+ * @param {*} data
+ *
+ */
+export const crmContactsExcelDownloadURL = process.env.BASE_API + 'crmContacts/downloadExcel'
+export function crmContactsDownloadExcelAPI(data) {
+  return request({
+    url: 'crmContacts/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 联系人关联商机
+ * @param {*} data
+ */
+export function crmContactsRelateBusinessAPI(data) {
+  return request({
+    url: 'crmContacts/relateBusiness',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 联系人取消关联商机
+ * @param {*} data
+ */
+export function crmContactsUnrelateBusinessAPI(data) {
+  return request({
+    url: 'crmContacts/unrelateBusiness',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmContactsFileListAPI(data) {
+  return request({
+    url: 'crmContacts/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmContactsNumAPI(data) {
+  return request({
+    url: 'crmContacts/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 标星
+ * @param {*} data
+ *
+ */
+export function crmContactsStarAPI(data) {
+  return request({
+    url: `crmContacts/star/${data.id}`,
+    method: 'post'
+  })
+}
+
+// 团队操作
+/**
+ * 团队成员创建
+ * @param {*} data
+ */
+export function crmContactsSettingTeamSaveAPI(data) {
+  return request({
+    url: 'crmContacts/addMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmContactsSettingTeamDeleteAPI(data) {
+  return request({
+    url: 'crmContacts/deleteMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmContactsTeamMembersAPI(data) {
+  return request({
+    url: `crmContacts/getMembers/${data.id}`,
+    method: 'post'
+  })
+}
+
+export function crmContactsUpdateMembersAPI(data) {
+  return request({
+    url: 'crmContacts/updateMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出团队
+ * @param {*} data
+ */
+export function crmContactsExitTeamAPI(data) {
+  return request({
+    url: `crmContacts/exitTeam/${data.id}`,
+    method: 'post'
+  })
+}

+ 299 - 0
src/api/crm/contract.js

@@ -0,0 +1,299 @@
+import request from '@/utils/request'
+
+/**
+ * 新建合同
+ * @param {*} data
+ */
+export function crmContractSaveAPI(data) {
+  const url = data.entity && data.entity.contractId ? 'update' : 'add'
+  return request({
+    url: 'crmContract/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmContractIndexAPI(data) {
+  return request({
+    url: 'crmContract/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmContractDeleteAPI(data) {
+  return request({
+    url: 'crmContract/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function crmContractReadAPI(data) {
+  return request({
+    url: `crmContract/queryById/${data.contractId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 合同相关产品
+ * @param {*} data
+ * contract_id
+ */
+export function crmContractProductAPI(data) {
+  return request({
+    url: 'crmContract/queryProductListByContractId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 转移
+ * @param {*} data
+ */
+export function crmContractTransferAPI(data) {
+  return request({
+    url: 'crmContract/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 合同下回款
+ * @param {*} data
+ */
+export function crmContractQueryReceivablesAPI(data) {
+  return request({
+    url: 'crmContract/qureyReceivablesListByContractId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 合同下回款计划
+ * @param {*} data
+ */
+export function crmContractQueryReceivablesPlanAPI(data) {
+  return request({
+    url: 'crmContract/queryReceivablesPlanListByContractId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// 团队操作
+/**
+ * 团队成员创建
+ * @param {*} data
+ */
+export function crmContractSettingTeamSaveAPI(data) {
+  return request({
+    url: 'crmContract/addMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmContractSettingTeamDeleteAPI(data) {
+  return request({
+    url: 'crmContract/deleteMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmContractTeamMembersAPI(data) {
+  return request({
+    url: `crmContract/getMembers/${data.id}`,
+    method: 'post'
+  })
+}
+
+export function crmContractUpdateMembersAPI(data) {
+  return request({
+    url: 'crmContract/updateMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出团队
+ * @param {*} data
+ */
+export function crmContractExitTeamAPI(data) {
+  return request({
+    url: `crmContract/exitTeam/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 新建回款查询回款计划
+ * @param {*} data
+ */
+export function crmQueryReceivablesPlansByContractIdAPI(data) {
+  return request({
+    url: 'crmContract/queryReceivablesPlansByContractId',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 作废
+ * @param {*} data
+ */
+export function crmContractCancelAPI(data) {
+  return request({
+    url: 'crmContract/contractDiscard',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmContractFileListAPI(data) {
+  return request({
+    url: 'crmContract/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmContractNumAPI(data) {
+  return request({
+    url: 'crmContract/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 合同导出
+ * @param {*} data
+ */
+export function crmContractExcelExportAPI(data) {
+  return request({
+    url: 'crmContract/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob',
+    timeout: 60000
+  })
+}
+
+export function crmContractExcelAllExportAPI(data) {
+  return request({
+    url: 'crmContract/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 回访
+ * @param {*} data
+ */
+export function crmContractQueryVisitAPI(data) {
+  return request({
+    url: 'crmContract/queryReturnVisit',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品下合同
+ * @param {*} data
+ */
+export function crmContractQueryListByProductIdAPI(data) {
+  return request({
+    url: 'crmContract/queryListByProductId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 分页查询发票
+ * @param {*} data
+ */
+export function crmContractInvoiceAPI(data) {
+  return request({
+    url: 'crmContract/queryInvoiceByContractId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 713 - 0
src/api/crm/customer.js

@@ -0,0 +1,713 @@
+import request from '@/utils/request'
+
+/**
+ * 新建编辑
+ * @param {*} data
+ */
+export function crmCustomerSaveAPI(data) {
+  const url = data.entity && data.entity.customerId ? 'update' : 'add'
+  return request({
+    url: 'crmCustomer/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmCustomerIndexAPI(data) {
+  return request({
+    url: 'crmCustomer/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmCustomerDeleteAPI(data) {
+  return request({
+    url: 'crmCustomer/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海列表
+ * @param {*} data
+ */
+export function crmCustomerPoolListAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmCustomerPoolDeleteAPI(data) {
+  return request({
+    url: 'crmCustomerPool/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 设置公海
+ * @param {*} data
+ */
+export function crmCustomerPoolSetAPI(data) {
+  return request({
+    url: 'crmCustomerPool/setCustomerPool',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海设置列表
+ * @param {*} data
+ */
+export function crmCustomerPoolSetListAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolSettingList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海设置删除
+ */
+export function crmCustomerPoolSetDeleteAPI(data) {
+  return request({
+    url: 'crmCustomerPool/deleteCustomerPool',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公海设置详情
+ * @param {*} data
+ */
+export function crmCustomerPoolSetDetailAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolById',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公海启停
+ * @param {*} data
+ */
+export function crmCustomerPoolSetChangeStatusAPI(data) {
+  return request({
+    url: 'crmCustomerPool/changeStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公海客户转移
+ * prePoolId 转出公海id
+ * postPoolId 转入公海id
+ * @param {*} data
+ */
+export function crmCustomerPoolSetTransferAPI(data) {
+  return request({
+    url: 'crmCustomerPool/transfer',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 转移数据源
+ * @param {*} data
+ */
+export function crmCustomerPoolSetNameListAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolNameList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户管理用到的公海列表
+ * @param {*} data
+ */
+export function crmCustomerPoolNameListAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolNameListByAuth',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 获取客户级别选项接口
+ * @param {*} data
+ */
+export function crmCustomerPoolQueryLevelAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryCustomerLevel',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 详情
+ */
+export function crmCustomerReadAPI(data) {
+  return request({
+    url: `crmCustomer/queryById/${data.customerId}`,
+    method: 'post',
+    data: data
+  })
+}
+
+// 操作
+/**
+ * 客户锁定,解锁
+ * @param {*} data
+ */
+export function crmCustomerLockAPI(data) {
+  return request({
+    url: 'crmCustomer/lock',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户放入公海
+ * @param {*} data
+ * customer_id 	客户数组
+ */
+export function crmCustomerPutInPoolAPI(data) {
+  return request({
+    url: 'crmCustomer/updateCustomerByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户转移
+ * @param {*} data
+ */
+export function crmCustomerTransferAPI(data) {
+  return request({
+    url: 'crmCustomer/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户导出
+ * @param {*} data
+ * customer_id 客户ID
+ */
+export function crmCustomerExcelExportAPI(data) {
+  return request({
+    url: 'crmCustomer/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 全部导出
+ * @param {*} data
+ */
+export function crmCustomerExcelAllExportAPI(data) {
+  return request({
+    url: 'crmCustomer/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户导入
+ * @param {*} data
+ * customer_id 客户ID
+ */
+export function crmCustomerExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmCustomer/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 公海客户导入
+ * @param {*} data
+ * customer_id 客户ID
+ */
+export function crmCustomerPoolExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmCustomerPool/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 客户导入模板下载
+ * @param {*} data
+ *
+ */
+export const crmCustomerExcelDownloadURL = process.env.BASE_API + 'crmCustomer/downloadExcel'
+export function crmCustomerDownloadExcelAPI(data) {
+  return request({
+    url: 'crmCustomer/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 公海模板
+ * @param {*} data
+ * @returns
+ */
+export function crmCustomerPoolDownloadExcelAPI(data) {
+  return request({
+    url: 'crmCustomerPool/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 公海导出
+ * @param {*} data
+ */
+export function crmCustomerPoolExcelExportAPI(data) {
+  return request({
+    url: 'crmCustomerPool/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob',
+    timeout: 60000
+  })
+}
+
+/**
+ * 公海全部导出
+ * @param {*} data
+ */
+export function crmCustomerPoolExcelAllExport(data) {
+  return request({
+    url: 'crmCustomerPool/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公海字段查询
+ * @param {*} data
+ */
+export function crmCustomerPoolQueryPoolFieldAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryPoolField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 获取公海池 操作权限
+ * @param {*} data
+ */
+export function crmCustomerPoolQueryAuthAPI(data) {
+  return request({
+    url: 'crmCustomerPool/queryAuthByPoolId',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户分配
+ * @param {*} data
+ */
+export function crmCustomerDistributeAPI(data) {
+  return request({
+    url: 'crmCustomer/distributeByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户领取
+ * @param {*} data
+ */
+export function crmCustomerReceiveAPI(data) {
+  return request({
+    url: 'crmCustomer/receiveByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下联系人
+ * @param {*} data
+ */
+export function crmCustomerQueryContactsAPI(data) {
+  return request({
+    url: 'crmCustomer/queryContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下回访
+ * @param {*} data
+ */
+export function crmCustomerQueryVisitAPI(data) {
+  return request({
+    url: 'crmCustomer/queryReturnVisit',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下商机
+ * @param {*} data
+ */
+export function crmCustomerQueryBusinessAPI(data) {
+  return request({
+    url: 'crmCustomer/queryBusiness',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下合同
+ * @param {*} data
+ */
+export function crmCustomerQueryContractAPI(data) {
+  return request({
+    url: 'crmCustomer/queryContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下回款计划
+ * @param {*} data
+ */
+export function crmCustomerQueryReceivablesPlanAPI(data) {
+  return request({
+    url: 'crmCustomer/queryReceivablesPlan',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户下回款
+ * @param {*} data
+ */
+export function crmCustomerQueryReceivablesAPI(data) {
+  return request({
+    url: 'crmCustomer/queryReceivables',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// 团队操作
+/**
+ * 团队成员创建
+ * @param {*} data
+ * types crm_leads
+ * typesId 分类ID
+ */
+export function crmCustomerSettingTeamSaveAPI(data) {
+  return request({
+    url: 'crmCustomer/addMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmCustomerSettingTeamDeleteAPI(data) {
+  return request({
+    url: 'crmCustomer/deleteMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmCustomerTeamMembersAPI(data) {
+  return request({
+    url: `crmCustomer/getMembers/${data.id}`,
+    method: 'post'
+  })
+}
+
+export function crmCustomerUpdateMembersAPI(data) {
+  return request({
+    url: 'crmCustomer/updateMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出团队
+ * @param {*} data
+ */
+export function crmCustomerExitTeamAPI(data) {
+  return request({
+    url: `crmCustomer/exitTeam/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 客户标记跟进
+ * @param {*} data
+ * id 客户IDs
+ */
+export function crmCustomerSetFollowAPI(data) {
+  return request({
+    url: 'crmBackLog/setCustomerFollowup',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 客户成交状态修改
+ * @param {*} data
+ * id 客户IDs
+ */
+export function crmCustomerDealStatusAPI(data) {
+  return request({
+    url: 'crmCustomer/setDealStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 设置首要联系人
+ * @param {*} data
+ *
+ */
+export function crmCustomerSetContactsAPI(data) {
+  return request({
+    url: 'crmCustomer/setContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 数据查重
+ * @param {*} data
+ *
+ */
+export function crmCustomerDataCheckAPI(data) {
+  return request({
+    url: 'crmCustomer/dataCheck',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmCustomerFileListAPI(data) {
+  return request({
+    url: 'crmCustomer/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmCustomerNumAPI(data) {
+  return request({
+    url: 'crmCustomer/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 客户标星
+ * @param {*} data
+ *
+ */
+export function crmCustomerStarAPI(data) {
+  return request({
+    url: `crmCustomer/star/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 发票信息
+ * @param {*} data
+ */
+export function crmCustomerInvoiceAPI(data) {
+  return request({
+    url: 'crmCustomer/queryInvoice',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除发票信息
+ * @param {*} data
+ */
+export function crmCustomerInvoiceInfoAPI(data) {
+  return request({
+    url: 'crmCustomer/queryInvoiceInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 198 - 0
src/api/crm/invoice.js

@@ -0,0 +1,198 @@
+import request from '@/utils/request'
+
+/**
+ * 新建编辑
+ * @param {*} data
+ */
+export function crmInvoiceSaveAPI(data) {
+  const url = data.entity && data.entity.invoiceId ? 'update' : 'add'
+  return request({
+    url: 'crmInvoice/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 编辑
+ * @param {*} data
+ */
+export function crmInvoiceUpdateAPI(data) {
+  return request({
+    url: 'crmInvoice/update',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 标注已开发票
+ * @param {*} data
+ */
+export function crmInvoiceStatusUpdateAPI(data) {
+  return request({
+    url: 'crmInvoice/updateInvoiceStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 标注已开发票
+ * @param {*} data
+ */
+export function crmInvoiceStatusResetAPI(data) {
+  return request({
+    url: 'crmInvoice/resetInvoiceStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 分页查询发票
+ * @param {*} data
+ */
+export function crmInvoiceIndexAPI(data) {
+  return request({
+    url: 'crmInvoice/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// 发票详情
+export function crmInvoiceReadAPI(invoiceId) {
+  return request({
+    url: `crmInvoice/queryById/${invoiceId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmInvoiceFileListAPI(data) {
+  return request({
+    url: 'crmInvoice/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 转移
+ * @param {*} data
+ */
+export function crmInvoiceTransferAPI(data) {
+  return request({
+    url: 'crmInvoice/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmInvoiceDeleteIdsAPI(data) {
+  return request({
+    url: 'crmInvoice/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 发票规则信息
+ * @param {*} data
+ */
+export function crmInvoiceNumberConfigAPI(data) {
+  return request({
+    url: 'crmNumberSetting/queryInvoiceNumberSetting',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 新建发票信息
+ * @param {*} data
+ */
+export function crmInvoiceSaveInvoiceInfoAPI(data) {
+  return request({
+    url: 'crmInvoice/saveInvoiceInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 编辑发票信息
+ * @param {*} data
+ */
+export function crmInvoiceUpdateInvoiceInfoAPI(data) {
+  return request({
+    url: 'crmInvoice/updateInvoiceInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除发票信息
+ * @param {*} data
+ */
+export function crmInvoiceDeleteInvoiceInfoAPI(data) {
+  return request({
+    url: 'crmInvoice/deleteInvoiceInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 全部导出
+ * @param {*} data
+ */
+export function crmInvoiceExcelAllExportAPI(data) {
+  return request({
+    url: 'crmInvoice/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 211 - 0
src/api/crm/leads.js

@@ -0,0 +1,211 @@
+import request from '@/utils/request'
+
+/**
+ * 新建 编辑
+ * @param {*} data
+ */
+export function crmLeadsSaveAPI(data) {
+  const url = data.entity && data.entity.leadsId ? 'update' : 'add'
+  return request({
+    url: 'crmLeads/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmLeadsIndexAPI(data) {
+  return request({
+    url: 'crmLeads/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmLeadsDeleteAPI(data) {
+  return request({
+    url: 'crmLeads/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 详情
+ * @param {*} id
+ */
+export function crmLeadsReadAPI(id) {
+  return request({
+    url: `crmLeads/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 线索转移
+ * @param {*} data
+ */
+export function crmLeadsTransferAPI(data) {
+  return request({
+    url: 'crmLeads/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 线索转换为客户
+ * @param {*} data
+ */
+export function crmLeadsTransformAPI(data) {
+  return request({
+    url: 'crmLeads/transfer',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 线索导出
+ * @param {*} data
+ *
+ */
+export function crmLeadsExcelExportAPI(data) {
+  return request({
+    url: 'crmLeads/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 线索全部导出
+ * @param {*} data
+ */
+export function crmLeadsExcelAllExportAPI(data) {
+  return request({
+    url: 'crmLeads/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 线索导入
+ * @param {*} data
+ *
+ */
+export function crmLeadsExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmLeads/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 线索导入模板下载
+ * @param {*} data
+ *
+ */
+export const crmLeadsExcelDownloadURL = process.env.BASE_API + 'CrmLeads/downloadExcel'
+export function crmLeadsDownloadExcelAPI(data) {
+  return request({
+    url: 'crmLeads/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 线索标记跟进
+ * @param {*} data
+ * id 客户IDs
+ */
+export function crmLeadsSetFollowAPI(data) {
+  return request({
+    url: 'crmBackLog/setLeadsFollowup',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmLeadsFileListAPI(data) {
+  return request({
+    url: 'crmLeads/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmLeadsNumAPI(data) {
+  return request({
+    url: 'crmLeads/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 标星
+ * @param {*} data
+ *
+ */
+export function crmLeadsStarAPI(data) {
+  return request({
+    url: `crmLeads/star/${data.id}`,
+    method: 'post',
+    data: data
+  })
+}

+ 225 - 0
src/api/crm/message.js

@@ -0,0 +1,225 @@
+import request from '@/utils/request'
+
+/**
+ * 待审核合同
+ * @param {*} data
+ */
+export function crmMessageCheckContractAPI(data) {
+  return request({
+    url: 'crmBackLog/checkContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待审核回款
+ * @param {*} data
+ */
+export function crmMessageCheckReceivablesAPI(data) {
+  return request({
+    url: 'crmBackLog/checkReceivables',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 今日需联系客户
+ * @param {*} data
+ */
+export function crmMessageTodayCustomerAPI(data) {
+  return request({
+    url: 'crmBackLog/todayCustomer',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 今日需联系线索
+ * @param {*} data
+ */
+export function crmMessageTodayLeadsAPI(data) {
+  return request({
+    url: 'crmBackLog/todayLeads',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 今日需联系商机
+ * @param {*} data
+ */
+export function crmMessageTodayBusinessAPI(data) {
+  return request({
+    url: 'crmBackLog/todayBusiness',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 待跟进线索
+ * @param {*} data
+ */
+export function crmMessageFollowLeadsAPI(data) {
+  return request({
+    url: 'crmBackLog/followLeads',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 待跟进客户
+ * @param {*} data
+ */
+export function crmMessageFollowCustomerAPI(data) {
+  return request({
+    url: 'crmBackLog/followCustomer',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 即将到期合同
+ * @param {*} data
+ */
+export function crmMessagEndContractAPI(data) {
+  return request({
+    url: 'crmBackLog/endContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待回款合同
+ * @param {*} data
+ */
+export function crmMessagRemindreceivablesplanAPI(data) {
+  return request({
+    url: 'crmBackLog/remindReceivables',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待办消息数
+ * @param {*} data
+ */
+export function crmMessagNumAPI(data) {
+  return request({
+    url: 'crmBackLog/num',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待进入客户池
+ * @param {*} data
+ */
+export function crmMessagRemindCustomerAPI(data) {
+  return request({
+    url: 'crmBackLog/putInPoolRemind',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待回访合同
+ * @param {*} data
+ */
+export function crmMessagVisitRemindAPI(data) {
+  return request({
+    url: 'crmBackLog/returnVisitRemind',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 待审核发票
+ * @param {*} data
+ */
+export function crmMessageCheckInvoiceAPI(data) {
+  return request({
+    url: 'crmBackLog/checkInvoice',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 全部标为已处理接口
+ * @param {*} data
+ */
+export function crmMessagAllDealAPI(data) {
+  return request({
+    url: 'crmBackLog/allDeal',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 标为已处理接口
+ * @param {*} data
+ */
+export function crmMessagzealByIdAPI(data) {
+  return request({
+    url: 'crmBackLog/dealById',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 13 - 0
src/api/crm/nearby.js

@@ -0,0 +1,13 @@
+import request from '@/utils/request'
+
+/**
+ * 地图查询接口
+ * @param {*} data
+ */
+export function crmCrmCustomerNearbyCustomerAPI(data) {
+  return request({
+    url: 'crmCustomer/nearbyCustomer',
+    method: 'post',
+    data: data
+  })
+}

+ 194 - 0
src/api/crm/product.js

@@ -0,0 +1,194 @@
+import request from '@/utils/request'
+
+/**
+ * 新建产品
+ * @param {*} data
+ */
+export function crmProductSaveAPI(data) {
+  const url = data.entity && data.entity.productId ? 'update' : 'add'
+  return request({
+    url: 'crmProduct/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmProductIndexAPI(data) {
+  return request({
+    url: 'crmProduct/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品上架列表
+ * @param {*} data
+ */
+export function crmProductSaleIndexAPI(data) {
+  return request({
+    url: 'crmProduct/querySaleProductPageList ',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function crmProductReadAPI(data) {
+  return request({
+    url: `crmProduct/queryById/${data.productId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 产品上架、下架
+ * @param {*} data
+ */
+export function crmProductStatusAPI(data) {
+  return request({
+    url: 'crmProduct/updateStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 产品导出
+ * @param {*} data
+ * product_id 产品ID
+ */
+export function crmProductExcelExportAPI(data) {
+  return request({
+    url: 'crmProduct/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+export function crmProductExcelAllExportAPI(data) {
+  return request({
+    url: 'crmProduct/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品导入
+ * @param {*} data
+ *
+ */
+export function crmProductExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmProduct/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 产品导入模板下载
+ * @param {*} data
+ *
+ */
+export const crmProductExcelDownloadURL = process.env.BASE_API + 'crmProduct/downloadExcel'
+export function crmProductDownloadExcelAPI(data) {
+  return request({
+    url: 'crmProduct/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmProductFileListAPI(data) {
+  return request({
+    url: 'crmProduct/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmProductNumAPI(data) {
+  return request({
+    url: 'crmProduct/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 产品转移
+ * @param {*} data
+ */
+export function crmProductTransferAPI(data) {
+  return request({
+    url: 'crmProduct/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 产品删除
+ * @param {*} data
+ */
+export function crmProductDeleteAPI(data) {
+  return request({
+    url: 'crmProduct/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 215 - 0
src/api/crm/receivables.js

@@ -0,0 +1,215 @@
+import request from '@/utils/request'
+
+/**
+ * 新建回款
+ * @param {*} data
+ */
+export function crmReceivablesSaveAPI(data) {
+  const url = data.entity && data.entity.receivablesId ? 'update' : 'add'
+  return request({
+    url: 'crmReceivables/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 回款列表
+ * @param {*} data
+ */
+export function crmReceivablesIndexAPI(data) {
+  return request({
+    url: 'crmReceivables/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ *
+ */
+export function crmReceivablesDeleteAPI(data) {
+  return request({
+    url: 'crmReceivables/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 回款详情
+ * @param {*} data
+ */
+export function crmReceivablesReadAPI(data) {
+  return request({
+    url: `crmReceivables/queryById/${data.id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 回款计划删除
+ * @param {*} data
+ */
+export function crmReceivablesPlanDeleteAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 回款列表
+ * @param {*} data
+ *
+ */
+export function crmReceivablesFileListAPI(data) {
+  return request({
+    url: 'crmReceivables/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmReceivablesNumAPI(data) {
+  return request({
+    url: 'crmReceivables/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 导出
+ * @param {*} data
+ */
+export function crmReceivablesExcelExportAPI(data) {
+  return request({
+    url: 'crmReceivables/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob',
+    timeout: 60000
+  })
+}
+
+export function crmReceivablesExcelAllExportAPI(data) {
+  return request({
+    url: 'crmReceivables/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 转移
+ * @param {*} data
+ */
+export function crmReceivablesTransferAPI(data) {
+  return request({
+    url: 'crmReceivables/changeOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 回款计划创建
+ * @param {*} data
+ */
+export function crmReceivablesPlanSaveAPI(data) {
+  const url = data.entity && data.entity.receivablesPlanId ? 'update' : 'add'
+  return request({
+    url: 'crmReceivablesPlan/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+// 团队操作
+/**
+ * 团队成员创建
+ * @param {*} data
+ */
+export function crmReceivablesSettingTeamSaveAPI(data) {
+  return request({
+    url: 'crmReceivables/addMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmReceivablesSettingTeamDeleteAPI(data) {
+  return request({
+    url: 'crmReceivables/deleteMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function crmReceivablesTeamMembersAPI(data) {
+  return request({
+    url: `crmReceivables/getMembers/${data.id}`,
+    method: 'post'
+  })
+}
+
+export function crmReceivablesUpdateMembersAPI(data) {
+  return request({
+    url: 'crmReceivables/updateMembers',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出团队
+ * @param {*} data
+ */
+export function crmReceivablesExitTeamAPI(data) {
+  return request({
+    url: `crmReceivables/exitTeam/${data.id}`,
+    method: 'post'
+  })
+}

+ 145 - 0
src/api/crm/receivablesPlan.js

@@ -0,0 +1,145 @@
+import request from '@/utils/request'
+
+/**
+ * 新建 编辑
+ * @param {*} data
+ */
+export function crmReceivablesPlanSaveAPI(data) {
+  const url = data.entity && data.entity.receivablesPlanId ? 'update' : 'add'
+  return request({
+    url: 'crmReceivablesPlan/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量保存数据
+ * @param {*} data
+ */
+export function crmReceivablesPlanBatchSaveAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/batchSave',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmReceivablesPlanIndexAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmReceivablesPlanDeleteAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 详情
+ * @param {*} id
+ */
+export function crmReceivablesPlanReadAPI(id) {
+  return request({
+    url: `crmReceivablesPlan/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 回款计划导出
+ * @param {*} data
+ *
+ */
+export function crmReceivablesPlanExcelExportAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/batchExportExcel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 回款计划全部导出
+ * @param {*} data
+ */
+export function crmReceivablesPlanExcelAllExportAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/allExportExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件列表
+ * @param {*} data
+ *
+ */
+export function crmReceivablesPlanFileListAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * tab数量
+ * @param {*} data
+ *
+ */
+export function crmReceivablesPlanNumAPI(data) {
+  return request({
+    url: 'crmReceivablesPlan/num',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 标星
+ * @param {*} data
+ *
+ */
+export function crmReceivablesPlanStarAPI(data) {
+  return request({
+    url: `crmReceivablesPlan/star/${data.id}`,
+    method: 'post',
+    data: data
+  })
+}

+ 70 - 0
src/api/crm/visit.js

@@ -0,0 +1,70 @@
+import request from '@/utils/request'
+
+/**
+ * 新建
+ * @param {*} data
+ */
+export function crmReturnVisitSaveAPI(data) {
+  const url = data.entity && data.entity.visitId ? 'update' : 'add'
+  return request({
+    url: 'crmReturnVisit/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function crmReturnVisitIndexAPI(data) {
+  return request({
+    url: 'crmReturnVisit/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function crmReturnVisitDeleteAPI(data) {
+  return request({
+    url: 'crmReturnVisit/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 附件
+ * @param {*} data
+ */
+export function crmReturnVisitFileAPI(data) {
+  return request({
+    url: 'crmReturnVisit/queryFileList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 详情
+ * @param {*} visitId
+ */
+export function crmReturnVisitReadAPI(visitId) {
+  return request({
+    url: `crmReturnVisit/queryById/${visitId}`,
+    method: 'post'
+  })
+}

+ 271 - 0
src/api/crm/workbench.js

@@ -0,0 +1,271 @@
+import request from '@/utils/request'
+
+/**
+ * 销售简报
+ * @param {*} data
+ */
+export function crmQueryBulletinAPI(data) {
+  return request({
+    url: 'crmInstrument/queryBulletin',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 数据汇总
+ * @param {*} data
+ */
+export function queryDataInfo(data) {
+  return request({
+    url: 'crmInstrument/queryDataInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 销售简报列表
+ */
+export function crmIndexIndexListAPI(data) {
+  return request({
+    url: 'crmInstrument/queryBulletinInfo',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 简报跟进记录数量
+ * @param {*} data
+ */
+export function crmQueryRecordConuntAPI(data) {
+  return request({
+    url: 'crmInstrument/queryRecordCount',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 业绩指标
+ * @param {*} data
+ */
+export function crmIndexAchievementDataAPI(data) {
+  return request({
+    url: 'crmInstrument/queryPerformance',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 销售漏斗
+ * @param {*} data
+ */
+export function crmIndexFunnelAPI(data) {
+  return request({
+    url: 'crmInstrument/sellFunnel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 销售漏斗详情
+ * @param {*} data
+ */
+export function crmInstrumentSellFunnelBusinessListAPI(data) {
+  return request({
+    url: 'crmInstrument/sellFunnelBusinessList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 销售趋势
+ * @param {*} data
+ */
+export function crmIndexSaletrendAPI(data) {
+  return request({
+    url: 'crmInstrument/salesTrend',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取简报 跟进记录信息
+ * @param {*} data
+ */
+export function crmIndexGetRecordListAPI(data) {
+  data.label = data.crmType
+  return request({
+    url: 'crmInstrument/queryRecordList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 遗忘提醒
+ * @param {*} data
+ */
+export function crmIndexForgottenCustomerAPI(data) {
+  return request({
+    url: 'crmInstrument/forgottenCustomerCount',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 遗忘提醒详情
+ * @param {*} data
+ */
+export function crmIndexForgottenCustomerListAPI(data) {
+  return request({
+    url: 'crmInstrument/forgottenCustomerPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 排行榜
+ * @param {*} data
+ */
+export function crmIndexRankingAPI(data) {
+  return request({
+    url: 'biRanking/ranking',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 仪表盘排序
+ * @param {*} data
+ */
+export function crmIndexSortAPI(data) {
+  return request({
+    url: 'crmInstrument/queryModelSort',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 仪表盘排序设置
+ * @param {*} data
+ */
+export function crmIndexSetSortAPI(data) {
+  return request({
+    url: 'crmInstrument/setModelSort',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 逾期未联系客户接口
+ * @param {*} data
+ */
+export function crmIndexUnContactCustomerAPI(data) {
+  return request({
+    url: 'crmInstrument/unContactCustomerPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 跟进记录导出
+ * @param {*} data
+ */
+export function crmInstrumentExportRecordListAPI(data) {
+  return request({
+    url: 'crmInstrument/exportRecordList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 跟进记录导入
+ * @param {*} data
+ */
+export function crmInstrumentImportRecordListAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'crmInstrument/importRecordList',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 跟进记录导入模板
+ * @param {*} data
+ */
+export function crmInstrumentDownloadRecordExcelAPI(data) {
+  return request({
+    url: 'crmInstrument/downloadRecordExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}

+ 193 - 0
src/api/examine/index.js

@@ -0,0 +1,193 @@
+/**
+ * Create by yxk at 2020/6/22
+ */
+import request from '@/utils/request'
+
+/**
+ * 进行审批
+ */
+export function crmExamineRecordAuditAPI(data) {
+  return request({
+    url: 'examineRecord/auditExamine',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询审批记录
+ */
+export function crmExamineRecordLogListAPI(data) {
+  return request({
+    url: 'examineRecord/queryExamineRecordLog',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询审批流程列表
+ */
+export function crmExamineRecordRecordListAPI(data) {
+  return request({
+    url: 'crmExamineRecord/queryExamineRecordList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询审批可供设置的字段
+ * @param {*} data
+ *
+ */
+export function examinesQueryFieldAPI(data) {
+  return request({
+    url: 'examines/queryField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 保存审批数据
+ * @param {*} data
+ */
+export function examinesAddAPI(data) {
+  return request({
+    url: 'examines/addExamine',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询审批列表
+ * @param {*} data
+ */
+export function examinesQueryListAPI(data) {
+  return request({
+    url: 'examines/queryList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改审批状态
+ * @param {*} data
+ */
+export function examinesUpdateStatusAPI(data) {
+  return request({
+    url: 'examines/updateStatus',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批详情
+ * @param {*} data
+ */
+export function examinesQueryExamineFlowAPI(data) {
+  return request({
+    url: 'examines/queryExamineFlow',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 获取审批流程有效字段
+ * @param {*} data
+ */
+export function examinesPreviewFiledNameAPI(data) {
+  return request({
+    url: 'examines/previewFiledName',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 预览审批流程
+ * @param {*} data
+ */
+export function examinesPreviewExamineFlowAPI(data) {
+  return request({
+    url: 'examines/previewExamineFlow',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取审批详情
+ */
+export function examineRecordQueryListAPI(data) {
+  return request({
+    url: 'examineRecord/queryExamineRecordList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询正常审批流列表
+ * @param {*} data
+ */
+export function examinesQueryPartListAPI(data) {
+  return request({
+    url: 'examines/queryPartList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询全部审批流列表
+ * @param {*} data
+ */
+export function examineWaitingQueryCrmExamineListAPI(data) {
+  return request({
+    url: 'examineWaiting/queryCrmExamineList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询全部审批流列表
+ * @param {*} data
+ */
+export function examineWaitingQueryOaExamineListAPI(data) {
+  return request({
+    url: 'examineWaiting/queryOaExamineList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 18 - 0
src/api/hrm/actionRecord.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+/**
+ * 查询操作记录列表
+ * type 1 员工
+ * typeId 操作对象id
+ * @param {*} data
+ */
+export function hrmActionRecordQueryAPI(data) {
+  return request({
+    url: 'hrmActionRecord/queryRecordList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 49 - 0
src/api/hrm/attendance.js

@@ -0,0 +1,49 @@
+import request from '@/utils/request'
+
+/**
+ * 报表统计
+ * @param {*} data
+ */
+export function hrmAttendanceClockReportAPI(data) {
+  return request({
+    url: 'hrm/attendance/clockReport',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 报表详情
+ * @param {*} data
+ */
+export function hrmAttendanceDetailsReportAPI(data) {
+  return request({
+    url: 'hrm/attendance/detailsReport',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 打卡统计
+ * @param {*} data
+ */
+export function hrmAttendanceClockCardingAPI(data) {
+  return request({
+    url: 'hrm/attendance/clockCarding',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 打卡详情/打卡日历
+ * @param {*} data
+ */
+export function hrmAttendanceClockDetailsAPI(data) {
+  return request({
+    url: 'hrm/attendance/clockDetails',
+    method: 'post',
+    data: data
+  })
+}

+ 34 - 0
src/api/hrm/clock.js

@@ -0,0 +1,34 @@
+
+
+import request from '@/utils/request'
+
+/**
+ * 分页查询打卡记录列表
+ * @param {*} data
+ */
+export function hrmClockQueryPageListAPI(data) {
+  return request({
+    url: 'hrmAttendanceClock/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 导出
+ * @param {*} data
+ */
+export function hrmAttendanceClockExportAPI(data) {
+  return request({
+    url: 'hrmAttendanceClock/excelExport',
+    method: 'post',
+    responseType: 'blob',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 91 - 0
src/api/hrm/dept.js

@@ -0,0 +1,91 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-05-14 13:58:52
+ * @LastEditTime: 2020-07-01 10:02:41
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 部门列表
+ * @param {*} data
+ */
+export function hrmDeptQueryTreeListAPI(data) {
+  return request({
+    url: 'hrmDept/queryTreeList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 部门新建
+ * @param {*} data
+ */
+export function hrmDeptAddDeptAPI(data) {
+  return request({
+    url: 'hrmDept/addDept',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 部门部门
+ * @param {*} data
+ */
+export function hrmDeptSetDeptAPI(data) {
+  return request({
+    url: 'hrmDept/setDept',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询部门详情
+ * @param {*} data
+ */
+export function hrmDeptQueryByIdAPI(id) {
+  return request({
+    url: `hrmDept/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询部门删除
+ * @param {*} data
+ */
+export function hrmDeptDeleteByIdAPI(id) {
+  return request({
+    url: `hrmDept/deleteDeptById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 通过部门id查询员工列表
+ * @param {*} data
+ */
+export function hrmDeptQueryEmployeeAPI(data) {
+  return request({
+    url: 'hrmDept/queryEmployeeByDeptId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 699 - 0
src/api/hrm/employee.js

@@ -0,0 +1,699 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-05-14 13:58:52
+ * @LastEditTime: 2020-07-20 17:31:55
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 查询所用员工(表单选择使用)
+ * status 1 在职 2 离职 3 删除
+ * @param {*} data
+ */
+export function hrmEmployeeAllListAPI(data) {
+  return request({
+    url: 'hrmEmployee/queryAllEmployeeList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 分页查询员工列表
+ * @param {*} data
+ */
+export function hrmEmployeeQueryPageListAPI(data) {
+  return request({
+    url: 'hrmEmployee/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询在职员工(表单选择使用)
+ * @param {*} data
+ */
+export function hrmEmployeeQueryInAPI(data) {
+  return request({
+    url: 'hrmEmployee/queryInEmployeeList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询部门用户列表
+ */
+export function hrmEmployeeQueryByUserDeptAPI(data) {
+  return request({
+    url: 'hrmEmployee/queryDeptEmpListByUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询员工表字段
+ * @param {*} data
+ */
+export function hrmEmployeeFieldListHeadsAPI(data) {
+  return request({
+    url: 'hrmEmployeeField/queryListHeads',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 批量修改字段表头配置
+ * @param {*} data
+ */
+export function hrmEmployeeFieldUpdateConfigAPI(data) {
+  return request({
+    url: 'hrmEmployeeField/updateFieldConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 修改字段宽度
+ * @param {*} data
+ */
+export function hrmEmployeeFieldUpdateWidthAPI(data) {
+  return request({
+    url: 'hrmEmployeeField/updateFieldWidth',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 验证唯一
+ * @param {*} data
+ */
+export function hrmEmployeeFieldVerifyAPI(data) {
+  return request({
+    url: 'hrmEmployeeField/verify',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 新建员工
+ * @param {*} data
+ */
+export function hrmEmployeeAddEmployeeAPI(data) {
+  return request({
+    url: 'hrmEmployee/addEmployee',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取各个状态数量
+ * @param {*} data
+ */
+export function hrmEmployeeQueryStatusNumAPI(data) {
+  return request({
+    url: 'hrmEmployee/queryEmployeeStatusNum',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 查询员工详情
+ * @param {*} data
+ */
+export function hrmEmployeeQueryByIdAPI(id) {
+  return request({
+    url: `hrmEmployee/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除员工
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteByIdsAPI(data) {
+  return request({
+    url: 'hrmEmployee/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 个人基本信息
+ * @param {*} data
+ */
+export function hrmEmployeePersonalInfoAPI(id) {
+  return request({
+    url: `hrmEmployee/personalInformation/${id}`,
+    method: 'post'
+  })
+}
+
+/** *** 教育 */
+/**
+ * 添加教育经历
+ * @param {*} data
+ */
+export function hrmEmployeeAddEduAPI(data) {
+  return request({
+    url: 'hrmEmployee/addExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改教育经历
+ * @param {*} data
+ */
+export function hrmEmployeeSetEduAPI(data) {
+  return request({
+    url: 'hrmEmployee/setEduExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除教育经历
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteEduAPI(id) {
+  return request({
+    url: `hrmEmployee/deleteEduExperience/${id}`,
+    method: 'post'
+  })
+}
+
+/** *** 工作 */
+/**
+ * 添加工作经历
+ * @param {*} data
+ */
+export function hrmEmployeeAddWorkAPI(data) {
+  return request({
+    url: 'hrmEmployee/addWorkExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改工作经历
+ * @param {*} data
+ */
+export function hrmEmployeeSetWorkeAPI(data) {
+  return request({
+    url: 'hrmEmployee/setWorkExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除工作经历
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteWorkAPI(id) {
+  return request({
+    url: `hrmEmployee/deleteWorkExperience/${id}`,
+    method: 'post'
+  })
+}
+
+/** *** 证书 */
+/**
+ * 添加证书
+ * @param {*} data
+ */
+export function hrmEmployeeAddCertificateAPI(data) {
+  return request({
+    url: 'hrmEmployee/addCertificate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改证书
+ * @param {*} data
+ */
+export function hrmEmployeeSetCertificateeAPI(data) {
+  return request({
+    url: 'hrmEmployee/setCertificate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除证书
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteCertificateAPI(id) {
+  return request({
+    url: `hrmEmployee/deleteCertificate/${id}`,
+    method: 'post'
+  })
+}
+
+/** *** 培训 */
+/**
+ * 添加培训经历
+ * @param {*} data
+ */
+export function hrmEmployeeAddTrainingAPI(data) {
+  return request({
+    url: 'hrmEmployee/addTrainingExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改培训经历
+ * @param {*} data
+ */
+export function hrmEmployeeSetTrainingAPI(data) {
+  return request({
+    url: 'hrmEmployee/setTrainingExperience',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除培训经历
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteTrainingAPI(id) {
+  return request({
+    url: `hrmEmployee/deleteTrainingExperience/${id}`,
+    method: 'post'
+  })
+}
+
+/** *** 联系人 */
+
+/**
+ * 查询联系人添加字段
+ * @param {*} data
+ */
+export function hrmEmployeeQueryContactsAddFieldAPI() {
+  return request({
+    url: `hrmEmployee/queryContactsAddField`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加联系人经历
+ * @param {*} data
+ */
+export function hrmEmployeeAddContactsAPI(data) {
+  return request({
+    url: 'hrmEmployee/addContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改联系人经历
+ * @param {*} data
+ */
+export function hrmEmployeeSetContactsAPI(data) {
+  return request({
+    url: 'hrmEmployee/setContacts',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除联系人经历
+ * @param {*} data
+ */
+export function hrmEmployeeDeleteContactsAPI(id) {
+  return request({
+    url: `hrmEmployee/deleteContacts/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 修改员工状态(转正/调整部门/岗位/晋升/降级) *失效* 拆成以下三个接口
+ * @param {*} data
+ */
+export function hrmEmployeeSetChangeAPI(data) {
+  return request({
+    url: 'hrmEmployee/change',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 转正
+ * @param {*} data
+ */
+export function hrmEmployeeSetBecomeAPI(data) {
+  return request({
+    url: 'hrmEmployee/become',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 调整部门/岗位
+ * @param {*} data
+ */
+export function hrmEmployeeSetChangePostAPI(data) {
+  return request({
+    url: 'hrmEmployee/changePost',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 晋升/降级
+ * @param {*} data
+ */
+export function hrmEmployeeSetPromotionAPI(data) {
+  return request({
+    url: 'hrmEmployee/promotion',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 再入职
+ * @param {*} data
+ */
+export function hrmEmployeeAgainOnboardingAPI(data) {
+  return request({
+    url: 'hrmEmployee/againOnboarding',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 确认入职
+ * @param {*} data
+ */
+export function hrmEmployeeConfirmEntryAPI(data) {
+  return request({
+    url: 'hrmEmployee/confirmEntry',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改员工基本信息
+ * @param {*} data
+ */
+export function hrmEmployeeUpdateInformationAPI(data) {
+  return request({
+    url: 'hrmEmployee/updateInformation',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 修改通讯信息
+ * @param {*} data
+ */
+export function hrmEmployeeUpdateCommunicationAPI(data) {
+  return request({
+    url: 'hrmEmployee/updateCommunication',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/** *** 附件 */
+/**
+ * 添加附件
+ * @param {*} data
+ */
+export function hrmEmployeeFileAddAPI(data) {
+  return request({
+    url: 'hrmEmployeeFile/addFile',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除附件
+ * @param {*} data
+ */
+export function hrmEmployeeFileDeleteAPI(id) {
+  return request({
+    url: `hrmEmployeeFile/deleteFile/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询员工总体附件
+ * @param {*} data
+ */
+export function hrmEmployeeFileQueryNumAPI(id) {
+  return request({
+    url: `hrmEmployeeFile/queryFileNum/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 根据附件类型查询附件详情
+ * @param {*} data
+ */
+export function hrmEmployeeFileQueryBySubTypeAPI(data) {
+  return request({
+    url: 'hrmEmployeeFile/queryFileBySubType',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询部门员工列表
+ * @param {*} data
+ */
+export function hrmEmployeeQueryByDeptAPI(deptId) {
+  return request({
+    url: `hrmEmployee/queryDeptEmployeeList/${deptId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 从系统用户添加员工
+ * @param {*} data
+ */
+export function hrmEmployeeAdminAddAPI(data) {
+  return request({
+    url: 'hrmEmployee/adminAddEmployee',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 导出员工
+ * @param {*} data
+ */
+export function hrmEmployeeExportAPI(data) {
+  return request({
+    url: 'hrmEmployee/export',
+    method: 'post',
+    responseType: 'blob',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取导入模板
+ * @param {*} data
+ */
+export function hrmEmployeeDownloadExportAPI() {
+  return request({
+    url: 'hrmEmployee/downloadExcel',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 员工导入
+ * @param {*} data
+ */
+export function hrmEmployeeUploadExportAPI(data) {
+  const param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'hrmEmployee/uploadExcel',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 当前员工信息
+ * @param {*} data
+ */
+export function hrmEmployeeQueryLoginEmployeeAPI() {
+  return request({
+    url: 'hrmEmployee/queryLoginEmployee',
+    method: 'post'
+  })
+}
+
+
+/**
+ * 新建员工字段获取
+ * @param {*} data
+ */
+export function hrmEmployeeAddFieldsAPI(data) {
+  return request({
+    url: 'hrmEmployee/field',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 新建自定义字段员工
+ * @param {*} data
+ */
+export function hrmEmployeeFieldsAddAPI(data) {
+  return request({
+    url: 'hrmEmployee/addEmployeeField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 60 - 0
src/api/hrm/employeeContract.js

@@ -0,0 +1,60 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-05-14 13:58:52
+ * @LastEditTime: 2020-07-01 10:14:41
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 合同基本信息
+ * @param {*} data
+ */
+export function hrmEmployeeContractInformationAPI(id) {
+  return request({
+    url: `hrmEmployeeContract/contractInformation/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加合同
+ * @param {*} data
+ */
+export function hrmEmployeeContractaddContractAPI(data) {
+  return request({
+    url: 'hrmEmployeeContract/addContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改合同
+ * @param {*} data
+ */
+export function hrmEmployeeContractSetContractAPI(data) {
+  return request({
+    url: 'hrmEmployeeContract/setContract',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除合同
+ * @param {*} data
+ */
+export function hrmEmployeeContractDeleteAPI(id) {
+  return request({
+    url: `hrmEmployeeContract/deleteContract/${id}`,
+    method: 'post'
+  })
+}

+ 90 - 0
src/api/hrm/employeePost.js

@@ -0,0 +1,90 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-05-14 13:58:52
+ * @LastEditTime: 2020-07-16 14:41:12
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 岗位信息
+ * @param {*} data
+ */
+export function hrmEmployeePostQueryByIdAPI(id) {
+  return request({
+    url: `hrmEmployeePost/postInformation/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 办理离职
+ * @param {*} data
+ */
+export function hrmEmployeePostAddLeaveAPI(data) {
+  return request({
+    url: 'hrmEmployeePost/addLeaveInformation',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改离职信息
+ * @param {*} data
+ */
+export function hrmEmployeePostSetLeaveAPI(data) {
+  return request({
+    url: 'hrmEmployeePost/setLeaveInformation',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改岗位信息
+ * @param {*} data
+ */
+export function hrmEmployeePostUpdatePostAPI(data) {
+  return request({
+    url: 'hrmEmployeePost/updatePostInformation',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 岗位信息
+ * @param {*} data
+ */
+export function hrmEmployeePostDeleteLeaveAPI(data) {
+  return request({
+    url: `hrmEmployeePost/deleteLeaveInformation`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询招聘渠道列表
+ * @param {*} data
+ */
+export function hrmRecruitChannelQueryAPI() {
+  return request({
+    url: `hrmRecruitChannel/queryRecruitChannelList`,
+    method: 'post'
+  })
+}

+ 143 - 0
src/api/hrm/employeeSocialSecurity.js

@@ -0,0 +1,143 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-05-14 13:58:52
+ * @LastEditTime: 2020-07-04 17:45:54
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 工资社保基本信息
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecurityQueryByIdAPI(id) {
+  return request({
+    url: `hrmEmployee/SocialSecurity/salarySocialSecurityInformation/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加工资卡
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecurityAddSalaryCardAPI(data) {
+  return request({
+    url: 'hrmEmployee/SocialSecurity/addSalaryCard',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加社保信息
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecurityAddSocialAPI(data) {
+  return request({
+    url: 'hrmEmployee/SocialSecurity/addSocialSecurity',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除工资卡
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecurityDeleteSalaryCardAPI(id) {
+  return request({
+    url: `hrmEmployee/SocialSecurity/deleteSalaryCard/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 删除社保信息
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecuritDeleteSocialAPI(id) {
+  return request({
+    url: `hrmEmployee/SocialSecurity/deleteSocialSecurity/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改工资卡
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecuritySetSalaryCardAPI(data) {
+  return request({
+    url: 'hrmEmployee/SocialSecurity/setSalaryCard',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改社保信息
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecuritySetSocialAPI(data) {
+  return request({
+    url: 'hrmEmployee/SocialSecurity/setSocialSecurity',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改社保信息
+ * @param {*} data
+ */
+export function hrmEmployeeUpdateInsuranceSchemeAPI(data) {
+  return request({
+    url: 'hrmEmployee/updateInsuranceScheme',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询薪资列表
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecuritySalaryListAPI(data) {
+  return request({
+    url: 'hrmEmployee/SocialSecurity/querySalaryList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询薪资详情
+ * @param {*} data
+ */
+export function hrmEmployeeSocialSecuritySalaryDetailAPI(id) {
+  return request({
+    url: `hrmEmployee/SocialSecurity/querySalaryDetail/${id}`,
+    method: 'post'
+  })
+}

+ 210 - 0
src/api/hrm/insuranceScheme.js

@@ -0,0 +1,210 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @LastEditors: yang
+ */
+
+// 社保
+import request from '@/utils/request'
+
+/**
+ * 查询社保统计数据列表
+ * @param {*} data
+ */
+export function hrmInsuranceMonthRecordQueryAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthRecord/queryInsuranceRecordList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询社保数据列表
+ * @param {*} data
+ */
+export function hrmInsuranceMonthRecordQueryListAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthRecord/queryInsurancePageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 核算社保数据
+ * @param {*} data
+ */
+export function hrmInsuranceMonthRecordComputeDataAPI() {
+  return request({
+    url: 'hrmInsuranceMonthRecord/computeInsuranceData',
+    method: 'post'
+  })
+}
+
+
+/**
+ * 查询社保详情统计数据(详情统计)
+ * @param {*} data
+ */
+export function hrmInsuranceMonthRecordQueryDetailAPI(id) {
+  return request({
+    url: `hrmInsuranceMonthRecord/queryInsuranceRecordList/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 停止参保
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordStopAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthEmpRecord/stop',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询员工社保详情
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordQueryAPI(id) {
+  return request({
+    url: `hrmInsuranceMonthEmpRecord/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改参保方案项目
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordUpdateProjectAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthEmpRecord/updateInsuranceProject',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加参保人员
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordAddInsuranceEmpAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthEmpRecord/addInsuranceEmp',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量修改参保方案项目
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordBatchUpdateInsuranceAPI(data) {
+  return request({
+    url: 'hrmInsuranceMonthEmpRecord/batchUpdateInsuranceProject',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询本月没有参保人员
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordQueryNoInsuranceEmpAPI(data) {
+  return request({
+    url: `hrmInsuranceMonthEmpRecord/queryNoInsuranceEmp/${data.irecordId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除社保记录
+ * @param {*} data
+ */
+export function hrmInsuranceMonthRecordDeleteAPI(irecordId) {
+  return request({
+    url: `hrmInsuranceMonthRecord/deleteInsurance/${irecordId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询社保比例(调用社保100)
+ * @param {*} data
+ */
+export function hrmInsuranceSchemeScaleAPI(data) {
+  return request({
+    url: `hrmInsuranceScheme/queryInsuranceScale`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询社保类型(调用社保100)
+ * @param {*} data
+ */
+export function hrmInsuranceSchemeTypeAPI(data) {
+  return request({
+    url: `hrmInsuranceScheme/queryInsuranceType`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 我的社保详情
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordMyDetailAPI(iempRecordId) {
+  return request({
+    url: `hrmInsuranceMonthEmpRecord/myInsuranceDetail/${iempRecordId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 我的社保
+ * @param {*} data
+ */
+export function hrmInsuranceMonthEmpRecordMyAPI(data) {
+  return request({
+    url: `hrmInsuranceMonthEmpRecord/myInsurance`,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 145 - 0
src/api/hrm/money.js

@@ -0,0 +1,145 @@
+import request from '@/utils/request'
+
+/**
+ * 薪资字段列表
+ * @param {*} data
+ */
+export function hrmParrollFieldListAPI(data) {
+  return request({
+    url: 'hrm/parroll/fieldList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资列表表头展示内容
+ * @param {*} data
+ */
+export function hrmParrollReadTitleAPI(data) {
+  return request({
+    url: 'hrm/parroll/readTitle',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资字段添加
+ * @param {*} data
+ */
+export function hrmParrollFieldSaveAPI(data) {
+  return request({
+    url: 'hrm/parroll/fieldSave',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资设置系统事项状态获取
+ * @param {*} data
+ */
+export function hrmParrollSystemFieldAPI(data) {
+  return request({
+    url: 'hrm/parroll/systemField',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资设置系统事项设置
+ * @param {*} data
+ */
+export function hrmParrollSystemFieldSaveAPI(data) {
+  return request({
+    url: 'hrm/parroll/systemFieldSave',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 员工薪资设置保存
+ * @param {*} data
+ */
+export function hrmParrollSaveAPI(data) {
+  return request({
+    url: 'hrm/parroll/save',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 员工薪资 薪资列表 编辑
+ * @param {*} data
+ */
+export function hrmParrollUpdateAPI(data) {
+  return request({
+    url: 'hrm/parroll/update',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 固定工资 编辑
+ * @param {*} data
+ */
+export function hrmParrollSaveForlistAPI(data) {
+  return request({
+    url: 'hrm/parroll/saveForlist',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 员工薪资删除
+ * @param {*} data
+ */
+export function hrmParrollDeleteAPI(data) {
+  return request({
+    url: 'hrm/parroll/delete',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资列表审核
+ * @param {*} data
+ */
+export function hrmParrollCheckParrollAPI(data) {
+  return request({
+    url: 'hrm/parroll/checkParroll',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 薪资列表
+ * @param {*} data
+ */
+export function hrmParrollIndexAPI(data) {
+  return request({
+    url: 'hrm/parroll/index',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 固定薪资设置列表
+ * @param {*} data
+ */
+export function hrmParrollStopfieldListAPI(data) {
+  return request({
+    url: 'hrm/parroll/stopfieldList',
+    method: 'post',
+    data: data
+  })
+}

+ 192 - 0
src/api/hrm/performance.js

@@ -0,0 +1,192 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 查询绩效考核列表
+ * @param {*} data
+ */
+export function hrmPerformanceQueryListAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/queryAppraisalPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 查询每个绩效状态的数量
+ * @param {*} data
+ */
+export function hrmPerformanceQueryStatusNumPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/queryAppraisalStatusNum',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 添加考核
+ * @param {*} data
+ */
+export function hrmPerformanceAddAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/addAppraisal',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改考核
+ * @param {*} data
+ */
+export function hrmPerformanceSetAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/setAppraisal',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改考核状态
+ * @param {*} data
+ */
+export function hrmPerformanceUpdateStatusAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/updateAppraisalStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除考核
+ * @param {*} data
+ */
+export function hrmPerformanceDeleteAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/delete/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 终止考核
+ * @param {*} data
+ */
+export function hrmPerformanceStopAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/stopAppraisal/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询考核详情
+ * @param {*} data
+ */
+export function hrmPerformanceDetailAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/queryAppraisalById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改考核状态
+ * @param {*} data
+ */
+export function hrmPerformanceQuerylEmployeeListAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/queryAppraisalEmployeeList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询员工考核详情
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeDetailAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/queryEmployeeDetail/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 绩效档案详情统计
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryAppraisalNumAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/queryEmployeeAppraisalCount/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询考核详情
+ * @param {*} data
+ */
+export function hrmPerformanceAppraisalDetailAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisal/queryEmployeeDetail/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 绩效档案详情列表
+ * @param {*} data
+ */
+export function hrmPerformanceQueryEmployeeAppraisalAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/queryEmployeeAppraisal',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 通过绩效id查询员工列表
+ * @param {*} data
+ */
+export function hrmPerformanceQueryEmployeeByAppraisalIdAPI(data) {
+  return request({
+    url: 'hrmAchievementAppraisal/queryEmployeeListByAppraisalId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 234 - 0
src/api/hrm/recruit/candidate.js

@@ -0,0 +1,234 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-06-06 11:02:48
+ * @LastEditTime: 2020-07-01 10:01:19
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function hrmRecruitCandidateQueryByIdAPI(id) {
+  return request({
+    url: `hrmRecruitCandidate/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function hrmRecruitCandidateDeleteByIdAPI(id) {
+  return request({
+    url: `hrmRecruitCandidate/deleteById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除
+ * @param {*} data
+ */
+export function hrmRecruitCandidateDeleteByIdsAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/deleteByIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 数量
+ * @param {*} data
+ */
+export function hrmRecruitCandidateQueryNumAPI(id) {
+  return request({
+    url: `hrmRecruitCandidate/queryCandidateStatusNum`,
+    method: 'post'
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function hrmRecruitCandidateQueryListAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/queryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加
+ * @param {*} data
+ */
+export function hrmRecruitCandidateAddAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/addCandidate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改
+ * @param {*} data
+ */
+export function hrmRecruitCandidateSetAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/setCandidate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询一键清理候选人,查询完之后调用修改状态接口
+ * @param {*} data
+ */
+export function hrmRecruitCandidateQueryCleanDataAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/queryCleanCandidateIds',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量修改候选人职位
+ * @param {*} data
+ */
+export function hrmRecruitCandidateUpdatePostAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/updateCandidatePost',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量修改候选人招聘渠道
+ * @param {*} data
+ */
+export function hrmRecruitCandidateUpdateChannelAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/updateCandidateRecruitChannel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 批量修改候选人状态
+ * @param {*} data
+ */
+export function hrmRecruitCandidateUpdateStatusAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/updateCandidateStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 淘汰/流失候选人
+ * @param {*} data
+ */
+export function hrmRecruitCandidateEliminateAPI(data) {
+  return request({
+    url: 'hrmRecruitCandidate/eliminateCandidate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 安排面试
+ * @param {*} data
+ */
+export function hrmRecruitInterviewAddAPI(data) {
+  return request({
+    url: 'hrmRecruitInterview/addInterview',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 安排面试
+ * @param {*} data
+ */
+export function hrmRecruitInterviewAddBatchAPI(data) {
+  return request({
+    url: 'hrmRecruitInterview/addBatchInterview',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 填写面试结果
+ * @param {*} data
+ * result 面试情况 1面试未完成 2面试通过 3面试未通过 4 面试取消
+ */
+export function hrmRecruitInterviewSetResultAPI(data) {
+  return request({
+    url: 'hrmRecruitInterview/setInterviewResult',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询候选人附件
+ * @param {*} data
+ */
+export function hrmRecruitCandidateQueryFileAPI(id) {
+  return request({
+    url: `hrmRecruitCandidate/queryFile/${id}`,
+    method: 'post'
+  })
+}

+ 113 - 0
src/api/hrm/recruit/post.js

@@ -0,0 +1,113 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @Date: 2020-06-04 10:40:32
+ * @LastEditTime: 2020-07-01 10:02:16
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 详情
+ * @param {*} data
+ */
+export function hrmRecruitPostQueryByIdAPI(id) {
+  return request({
+    url: `hrmRecruitPost/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询所有职位列表(表单使用)
+ * @param {*} data
+ */
+export function hrmRecruitPostQuerAllListAPI() {
+  return request({
+    url: `hrmRecruitPost/queryAllRecruitPostList`,
+    method: 'post'
+  })
+}
+
+/**
+ * 数量
+ * @param {*} data
+ */
+export function hrmRecruitPostQueryNumAPI(id) {
+  return request({
+    url: `hrmRecruitPost/queryPostStatusNum`,
+    method: 'post'
+  })
+}
+
+/**
+ * 列表
+ * @param {*} data
+ */
+export function hrmRecruitPostQueryListAPI(data) {
+  return request({
+    url: 'hrmRecruitPost/queryRecruitPostPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加
+ * @param {*} data
+ */
+export function hrmRecruitPostAddAPI(data) {
+  return request({
+    url: 'hrmRecruitPost/addRecruitPost',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改
+ * @param {*} data
+ */
+export function hrmRecruitPostSetAPI(data) {
+  return request({
+    url: 'hrmRecruitPost/setRecruitPost',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 状态
+ * @param {*} data
+ */
+export function hrmRecruitPostUpdateStatusAPI(data) {
+  return request({
+    url: 'hrmRecruitPost/updateRecruitPostStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询职位类型
+ * @param {*} data
+ */
+export function hrmRecruitPostTypeQueryAPI() {
+  return request({
+    url: `hrmRecruitPostType/queryPostType`,
+    method: 'post'
+  })
+}

+ 621 - 0
src/api/hrm/salary.js

@@ -0,0 +1,621 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 创建下月薪资表
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordAddNextAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/addNextMonthSalary',
+    method: 'post'
+  })
+}
+
+/**
+ * 核算薪资数据
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordComputeAPI(data) {
+  const param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'hrmSalaryMonthRecord/computeSalaryData',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 查询计薪人员数量 0 未计薪 1 计薪
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordNumAPI(type) {
+  return request({
+    url: `hrmSalaryMonthRecord/queryPaySalaryNumByType/${type}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询未计薪人员列表
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordQueryNoEmployeeAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/queryNoPaySalaryEmployee',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询计薪列表员工异动数量
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordChangeNumAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/queryEmployeeChangeNum',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询薪资项表头
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordHeadAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/querySalaryOptionHead',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询薪资列表
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordListAPI(data) {
+  return request({
+    url: 'hrmSalaryMonthRecord/querySalaryPageList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询最新的薪资记录
+ * @param {*} data
+ */
+export function hrmSalaryMonthLastRecordAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/queryLastSalaryMonthRecord',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询薪资项合计
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordSumOptionAPI(srecordId) {
+  return request({
+    url: `hrmSalaryMonthRecord/querySalaryOptionCount/${srecordId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询历史薪资列表
+ * @param {*} data
+ */
+export function hrmSalaryHistoryRecordListAPI(data) {
+  return request({
+    url: 'hrmSalaryHistoryRecord/queryHistorySalaryList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询历史薪资详情
+ * @param {*} data
+ */
+export function hrmSalaryHistoryRecordDetailAPI(data) {
+  return request({
+    url: 'hrmSalaryHistoryRecord/queryHistorySalaryDetail',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 在线修改薪资
+ * @param {*} data
+ */
+export function hrmSalaryMonthRecordUpdateAPI(data) {
+  return request({
+    url: 'hrmSalaryMonthRecord/updateSalary',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 考勤模板
+ */
+export function hrmSalaryDownloadAttendanceTempAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/downloadAttendanceTemp',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 下载上月个税累计导入模板
+ */
+export function hrmSalaryDownCumulativeOfLastMonthTempAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/downCumulativeTaxOfLastMonthTemp',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 下载个税专项附加扣除累计导入模板
+ */
+export function hrmSalaryDownAdditionalTempAPI() {
+  return request({
+    url: 'hrmSalaryMonthRecord/downloadAdditionalDeductionTemp',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 提交审核
+ */
+export function hrmSalaryMonthRecordSubmitExamineAPI(data) {
+  return request({
+    url: 'hrmSalaryMonthRecord/submitExamine',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除薪资记录
+ */
+export function hrmSalaryMonthRecordDeleteAPI(srecordId) {
+  return request({
+    url: `hrmSalaryMonthRecord/deleteSalary/${srecordId}`,
+    method: 'post'
+  })
+}
+
+/** 工资条 */
+/**
+ * 查询工资条模板列表
+ */
+export function hrmSalarySlipTemplateListAPI() {
+  return request({
+    url: 'hrmSalarySlipTemplate/querySlipTemplateList',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询工资模板项
+ */
+export function hrmSalarySlipTemplateDetailAPI(id) {
+  return request({
+    url: `hrmSalarySlipTemplateOption/queryTemplateOptionByTemplateId/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 工资模板删除
+ */
+export function hrmSalarySlipTemplateDeleteAPI(id) {
+  return request({
+    url: `hrmSalarySlipTemplate/deleteSlipTemplate/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 添加工资条模板
+ */
+export function hrmSalarySlipTemplateAddAPI(data) {
+  return request({
+    url: 'hrmSalarySlipTemplate/addSlipTemplate',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询工资条选择发送员工列表
+ */
+export function hrmSalarySlipRecordQueryEmployeeAPI(data) {
+  return request({
+    url: 'hrmSalarySlipRecord/querySlipEmployeePageList',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 发工资条
+ */
+export function hrmSalarySlipRecordSendAPI(data) {
+  return request({
+    url: 'hrmSalarySlipRecord/sendSalarySlip',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询发放工资条记录列表
+ */
+export function hrmSalarySlipRecordSendListAPI(data) {
+  return request({
+    url: 'hrmSalarySlipRecord/querySendRecordList',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询发放工资条记录详情列表
+ */
+export function hrmSalarySlipRecordSendDetailListAPI(data) {
+  return request({
+    url: 'hrmSalarySlipRecord/querySendDetailList',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加修改工资条备注
+ */
+export function hrmSalarySlipRecordSetRemarksAPI(data) {
+  return request({
+    url: 'hrmSalarySlipRecord/setSlipRemarks',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询工资条明细
+ */
+export function hrmSalarySlipRecordQueryDetailAPI(id) {
+  return request({
+    url: `hrmSalarySlipRecord/querySlipDetail/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 删除工资条明细
+ */
+export function hrmSalarySlipRecordDeleteAPI(id) {
+  return request({
+    url: `hrmSalarySlipRecord/deleteSendRecord/${id}`,
+    method: 'post'
+  })
+}
+
+/** 薪资档案 */
+
+/**
+ * 查询薪资档案列表
+ */
+export function hrmSalaryArchivesQueryListAPI(data) {
+  return request({
+    url: 'hrmSalaryArchives/querySalaryArchivesList',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/** 调薪模板 */
+
+/**
+ * 删除模板
+ */
+export function hrmSalaryChangeTemplateDeleteAPI(id) {
+  return request({
+    url: `hrmSalaryChangeTemplate/deleteChangeTemplate/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询调薪默认项
+ */
+export function hrmSalaryChangeTemplateQueryOptionAPI() {
+  return request({
+    url: 'hrmSalaryChangeTemplate/queryChangeSalaryOption',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询模板列表
+ */
+export function hrmSalaryChangeTemplateQueryListAPI() {
+  return request({
+    url: 'hrmSalaryChangeTemplate/queryChangeTemplateList',
+    method: 'post'
+  })
+}
+
+/**
+ * 设置定薪模板
+ */
+export function hrmSalaryArchivesSetAPI(data) {
+  return request({
+    url: 'hrmSalaryChangeTemplate/setChangeTemplate',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 单个定薪
+ */
+export function hrmSalaryArchivesSetFixAPI(data) {
+  return request({
+    url: 'hrmSalaryArchives/setFixSalaryRecord',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 单个调薪
+ */
+export function hrmSalaryArchivesSetChangeAPI(data) {
+  return request({
+    url: 'hrmSalaryArchives/setChangeSalaryRecord',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询调薪项的值(单个调薪使用)
+ */
+export function hrmSalaryArchivesQueryChangeOptionByIdAPI(data) {
+  return request({
+    url: 'hrmSalaryArchives/queryChangeOptionByTemplateId',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询批量调薪项
+ */
+export function hrmSalaryArchivesQueryBatchChangeOptionAPI() {
+  return request({
+    url: 'hrmSalaryArchives/queryBatchChangeOption',
+    method: 'post'
+  })
+}
+
+/**
+ * 批量调薪
+ */
+export function hrmSalaryArchivesBatchSetChangeAPI(data) {
+  return request({
+    url: 'hrmSalaryArchives/batchChangeSalaryRecord',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询薪资档案信息
+ */
+export function hrmSalaryArchivesQueryByIdAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/querySalaryArchivesById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询调薪记录列表
+ */
+export function hrmSalaryArchivesQueryRecordAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/queryChangeRecordList/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询定薪记录详情
+ */
+export function hrmSalaryArchivesQueryFixRecordAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/queryFixSalaryRecordById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询调薪记录详情
+ */
+export function hrmSalaryArchivesQueryChangeRecordAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/queryChangeSalaryRecordById/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询调薪记录详情
+ */
+export function hrmSalaryArchivesCancelChangeSalaryAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/cancelChangeSalary/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 删除调薪
+ */
+export function hrmSalaryArchivesDeleteChangeSalaryAPI(id) {
+  return request({
+    url: `hrmSalaryArchives/deleteChangeSalary/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 下载调薪模板
+ * @param {*} data
+ */
+export function hrmSalaryArchivesDownLoadChangeTemplateAPI() {
+  return request({
+    url: 'hrmSalaryArchives/downLoadChangeTemplate',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 下载定薪模板
+ * @param {*} data
+ */
+export function hrmSalaryArchivesDownLoadFixTemplateAPI() {
+  return request({
+    url: 'hrmSalaryArchives/downLoadFixTemplate',
+    method: 'post',
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 导入调薪
+ * @param {*} data
+ */
+export function hrmSalaryArchivesChangeRecordExportAPI(data) {
+  const param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'hrmSalaryArchives/exportChangeSalaryRecord',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 导入定薪
+ * @param {*} data
+ */
+export function hrmSalaryArchivesFixRecordExportAPI(data) {
+  const param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'hrmSalaryArchives/exportFixSalaryRecord',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+

+ 65 - 0
src/api/hrm/salaryConfig.js

@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+/**
+ * 查询薪资/社保初始化配置是否存在
+ * @param {*} data
+ */
+export function hrmSalaryConfigQueryInItConfigAPI() {
+  return request({
+    url: 'hrmSalaryConfig/queryInItConfig',
+    method: 'post'
+  })
+}
+
+/**
+ * 保存初始化配置
+ * @param {*} data
+ */
+export function hrmSalaryConfigSaveInItConfigAPI(data) {
+  return request({
+    url: 'hrmSalaryConfig/saveInitConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改初始化配置状态为已配置
+ * @param {*} data
+ */
+export function hrmSalaryConfigUpdateInItConfigAPI(type) {
+  return request({
+    url: `/hrmSalaryConfig/updateInitStatus/${type}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询薪资设置
+ * @param {*} data
+ */
+export function hrmSalaryConfigQueryConfigAPI() {
+  return request({
+    url: `/hrmSalaryConfig/querySalaryConfig`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 修改薪资对应社保月设置
+ * @param {*} data
+ */
+export function hrmSalaryConfigUpdateConfigAPI(data) {
+  return request({
+    url: 'hrmSalaryConfig/updateSalaryConfig',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 24 - 0
src/api/hrm/selfService/myArchives.js

@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+/**
+ * 个人档案信息
+ * @param {*} data
+ */
+export function hrmEmployeeArchivesPersonalAPI() {
+  return request({
+    url: 'hrmEmployeeArchives/personalArchives',
+    method: 'post'
+  })
+}
+
+/**
+ * 岗位档案信息
+ * @param {*} data
+ */
+export function hrmEmployeeArchivesPostAPI() {
+  return request({
+    url: 'hrmEmployeeArchives/postArchives',
+    method: 'post'
+  })
+}
+

+ 247 - 0
src/api/hrm/selfService/performance.js

@@ -0,0 +1,247 @@
+/*
+ * @Description: 悟空软件
+ * @Author: 悟空
+ * @LastEditors: yang
+ */
+import request from '@/utils/request'
+
+/**
+ * 查询绩效档案数量
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryNumAPI() {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryAppraisalNum',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询我的绩效
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeMyListAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryMyAppraisal',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询结果确认列表
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeResultListAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryResultConfirmList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询目标确认列表
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeTargetListAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryTargetConfirmList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询结果评定列表
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeEvaluatoListAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryEvaluatoList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询考核详情
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeAppraisalDetailAPI(id) {
+  return request({
+    url: `hrmAchievementEmployeeAppraisal/queryEmployeeAppraisalDetail/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 填写绩效
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeWriteAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/writeAppraisal',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改目标进度
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeUpdateScheduleAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/updateSchedule',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 目标确认
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeTargetConfirmAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/targetConfirm',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 结果评定
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeResultEvaluatoAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/resultEvaluato',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改考评分数
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeUpdateScoreLevelAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/updateScoreLevel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询分数配置列表 绩效档案id
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryLevelListAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisalScoreLevel/queryScoreLevelList/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询分数配置列表 绩效id
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryLevelByAppraisalIdAPI(id) {
+  return request({
+    url: `hrmAchievementAppraisalScoreLevel/queryScoreLevelListByAppraisalId/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询绩效结果确认
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryResultConfirmAPI(id) {
+  return request({
+    url: `hrmAchievementEmployeeAppraisal/queryResultConfirmByAppraisalId/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 绩效结果确认
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeResultConfirmAPI(id) {
+  return request({
+    url: `hrmAchievementEmployeeAppraisal/resultConfirm/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询目标确认列表的绩效筛选条件
+ * @param {*} data
+ */
+export function hrmPEQueryTargetConfirmScreenAPI() {
+  return request({
+    url: `hrmAchievementEmployeeAppraisal/queryTargetConfirmScreen`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 查询结果评定列表的绩效筛选条件
+ * @param {*} data
+ */
+export function hrmPEQueryEvaluatoScreenAPI(data) {
+  return request({
+    url: `hrmAchievementEmployeeAppraisal/queryEvaluatoScreen`,
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 根据得分获取等级
+ * @param {*} data
+ */
+export function hrmPerformanceEmployeeQueryLevelAPI(data) {
+  return request({
+    url: 'hrmAchievementEmployeeAppraisal/queryLevelIdByScore',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 15 - 0
src/api/hrm/selfService/salarySlip.js

@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+/**
+ * 查询工资条列表
+ */
+export function hrmSalarySlipQueryMyListAPI(data) {
+  return request({
+    url: 'hrmSalarySlip/querySalarySlipList',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 181 - 0
src/api/hrm/workbench.js

@@ -0,0 +1,181 @@
+import request from '@/utils/request'
+
+/**
+ * 人事概况
+ * @param {*} data
+ */
+export function hrmDashboardEmployeeSurveyAPI() {
+  return request({
+    url: 'hrmDashboard/employeeSurvey',
+    method: 'post'
+  })
+}
+
+/**
+ * 招聘动态
+ * @param {*} data
+ */
+export function hrmDashboardRecruitSurveyAPI() {
+  return request({
+    url: 'hrmDashboard/recruitSurvey',
+    method: 'post'
+  })
+}
+
+/**
+ * 上月薪资概况
+ * @param {*} data
+ */
+export function hrmDashboardLastSalarySurveyAPI() {
+  return request({
+    url: 'hrmDashboard/lastSalarySurvey',
+    method: 'post'
+  })
+}
+
+/**
+ * 绩效概况统计
+ * @param {*} data
+ */
+export function hrmDashboardAppraisalCountSurveyAPI() {
+  return request({
+    url: 'hrmDashboard/appraisalCountSurvey',
+    method: 'post'
+  })
+}
+
+/**
+ * 绩效概况
+ * @param {*} data
+ */
+export function hrmDashboardAppraisalSurveyAPI(status) {
+  return request({
+    url: `hrmDashboard/appraisalSurvey/${status}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 查询时间段事项
+ */
+export function hrmDashboardQueryNotesStatusAPI(data) {
+  return request({
+    url: 'hrmDashboard/queryNotesStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询当日事项
+ */
+export function hrmDashboardQueryNotesByTimeAPI(data) {
+  return request({
+    url: 'hrmDashboard/queryNotesByTime',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 添加备忘
+ */
+export function hrmDashboardAddNotesAPI(data) {
+  return request({
+    url: 'hrmDashboard/addNotes',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 删除备忘
+ * @param {*} data
+ */
+export function hrmDashboardDeleteNotesAPI(notesId) {
+  return request({
+    url: `hrmDashboard/deleteNotes/${notesId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 待办提醒
+ * @param {*} data
+ */
+export function hrmDashboardToDoRemindAPI() {
+  return request({
+    url: 'hrmDashboard/toDoRemind',
+    method: 'post'
+  })
+}
+
+/**
+ * 我的概况(员工端)
+ * @param {*} data
+ */
+export function hrmDashboardMySurveyAPI() {
+  return request({
+    url: 'hrmDashboard/mySurvey',
+    method: 'post'
+  })
+}
+
+/**
+ * 查询当日事项(员工端)
+ */
+export function hrmDashboardMyNotesByTimeAPI(data) {
+  return request({
+    url: 'hrmDashboard/myNotesByTime',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询当日事项(员工端)
+ */
+export function hrmDashboardMyNotesStatusAPI(data) {
+  return request({
+    url: 'hrmDashboard/myNotesStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 我的团队(上级角色)
+ * @param {*} data
+ */
+export function hrmDashboardMyTeamAPI() {
+  return request({
+    url: 'hrmDashboard/myTeam',
+    method: 'post'
+  })
+}
+
+/**
+ * 团队概况(上级角色)
+ * @param {*} data
+ */
+export function hrmDashboardTeamSurveyAPI() {
+  return request({
+    url: 'hrmDashboard/teamSurvey',
+    method: 'post'
+  })
+}

+ 127 - 0
src/api/login.js

@@ -0,0 +1,127 @@
+import request from '@/utils/request'
+
+export function loginAPI(params) {
+  return request({
+    url: '/login',
+    method: 'post',
+    data: params,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function logoutAPI() {
+  return request({
+    url: '/logout',
+    method: 'post'
+  })
+}
+
+/**
+ * 获取短信验证码
+ * @param params
+ */
+export function sendSmsAPI(params) {
+  return request({
+    url: 'cloud/sendSms',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 注册
+ * @param params
+ */
+export function registerAPI(params) {
+  return request({
+    url: 'cloud/register',
+    method: 'post',
+    data: params,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 多公司选择登陆
+ * @param params
+ */
+export function chooseLoginAPI(params) {
+  return request({
+    url: 'reLogin',
+    method: 'post',
+    data: params,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 找回密码
+ * @param params
+ */
+export function forgetPwdAPI(params) {
+  return request({
+    url: 'cloud/findpwd',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 重置密码
+ * @param params
+ */
+export function resetPwdAPI(params) {
+  return request({
+    url: 'cloud/resetpwd',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 验证短信验证码
+ * @param params
+ */
+export function verfySmsAPI(params) {
+  return request({
+    url: 'cloud/verifySms',
+    method: 'post',
+    data: params
+  })
+}
+
+/**
+ * 验证
+ * @param params
+ */
+export function verfyCodeAPI(params) {
+  return request({
+    url: 'verfyCode',
+    method: 'post',
+    data: params
+  })
+}
+
+export function querySystemStatusAPI() {
+  return request({
+    url: 'adminUser/querySystemStatus',
+    method: 'post'
+  })
+}
+
+export function initUserAPI(data) {
+  return request({
+    url: 'adminUser/initUser',
+    method: 'post',
+    data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 43 - 0
src/api/oa/addressBook.js

@@ -0,0 +1,43 @@
+import request from '@/utils/request'
+
+/**
+ * 通讯录列表
+ * @param {*} data
+ */
+export function addressListAPI(data) {
+  return request({
+    url: 'adminUser/queryListName',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// /**
+//  * 通讯录部门列表
+//  * @param {*} data
+//  */
+// export function queryListNameByDept(data) {
+//   return request({
+//     url: 'adminUser/queryListNameByDept',
+//     method: 'post',
+//     data: data,
+//     headers: {
+//       'Content-Type': 'application/json;charset=UTF-8'
+//     }
+//   })
+// }
+
+/**
+ * 通讯录关注状态切换
+ * @param {*} data
+ */
+export function toggleAttentionAPI(data) {
+  return request({
+    url: 'adminUser/attention',
+    method: 'post',
+    data: data
+  })
+}

+ 33 - 0
src/api/oa/common.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+/**
+ * 评论添加
+ * @param {*} data
+ */
+export function setCommentAPI(data) {
+  return request({
+    url: 'workTaskComment/setComment',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+export function deleteCommentAPI(data) {
+  return request({
+    url: 'workTaskComment/deleteComment',
+    method: 'post',
+    data: data
+  })
+}
+
+
+export function queryCommentListAPI(data) {
+  return request({
+    url: 'workTaskComment/queryCommentList',
+    method: 'post',
+    data
+  })
+}

+ 140 - 0
src/api/oa/examine.js

@@ -0,0 +1,140 @@
+import request from '@/utils/request'
+
+/**
+ * 审批类型前台排序
+ * @param {*} data
+ */
+export function oaAllExamineCategorySortAPI(data) {
+  return request({
+    url: 'oaExamineCategory/saveOrUpdateOaExamineSort',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 审批新建
+ * @param {*} data
+ */
+export function oaExamineSaveAndUpdateAPI(data) {
+  return request({
+    url: 'oaExamine/setOaExamine',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 我发起的审批
+ * @param {*} data
+ */
+export function oaExamineMyCreateIndexAPI(data) {
+  return request({
+    url: 'oaExamine/myInitiate',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 我审批的
+ * @param {*} data
+ */
+export function oaExamineMyExamineIndexAPI(data) {
+  return request({
+    url: 'oaExamine/myOaExamine',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 审批删除
+ * @param {*} data
+ */
+export function oaExamineDeleteAPI(data) {
+  return request({
+    url: 'oaExamine/deleteOaExamine',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批详情
+ * @param {*} examineId
+ */
+export function oaExamineReadAPI(examineId) {
+  return request({
+    url: `oaExamine/queryOaExamineInfo/${examineId}`,
+    method: 'post'
+  })
+}
+
+// 新建的审批流
+/**
+ * CRM合同回款创建时候的审批流
+ * @param {*} data
+ */
+export function oaCreateExamineFlowAPI(data) {
+  return request({
+    url: 'oaExamine/queryExaminStep',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批详情 基本信息
+ * @param {*} data
+ */
+export function oaExamineGetFieldAPI(data) {
+  return request({
+    url: 'oaExamine/getField',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 办公下 审批的审批信息
+ * @param {*} data
+ */
+export function oaExamineFlowStepListAPI(data) {
+  return request({
+    url: 'oaExamine/queryExamineRecordList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 审批导出
+ * @param {*} data
+ */
+export function oaExamineExportAPI(data) {
+  return request({
+    url: 'oaExamine/export ',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}

+ 203 - 0
src/api/oa/journal.js

@@ -0,0 +1,203 @@
+import request from '@/utils/request'
+
+/**
+ * 日志列表
+ * @param {*} data
+ */
+export function journalListAPI(data) {
+  return request({
+    url: 'oaLog/queryList',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 新建日志
+ * @param {*} data
+ */
+export function journalAddAPI(data) {
+  return request({
+    url: 'oaLog/addOrUpdate',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data
+  })
+}
+
+/**
+ * 日志编辑
+ * @param {*} data
+ */
+export function journalEditAPI(data) {
+  return request({
+    url: 'oaLog/addOrUpdate',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data
+  })
+}
+
+/**
+ * 日志删除
+ * @param {*} data
+ */
+export function journalDeleteAPI(data) {
+  return request({
+    url: 'oaLog/deleteById',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 日志标记已读
+ * @param {*} data
+ */
+export function journalSetReadAPI(data) {
+  return request({
+    url: 'oaLog/readLog',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 日志详情
+ * @param {*} data
+ */
+export function journalQueryByIdAPI(data) {
+  return request({
+    url: 'oaLog/queryById',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 日志概要
+ * @param {*} data
+ */
+export function journalQueryBulletinAPI(data) {
+  return request({
+    url: 'oaLog/queryLogBulletin',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 日志简报预览
+ * @param {*} data
+ */
+export function journalQueryBulletinByTypeAPI(data) {
+  return request({
+    url: 'oaLog/queryLogBulletinByType',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 日志简报跟进记录预览
+ * @param {*} data
+ */
+export function journalQueryRecordCountAPI(data) {
+  return request({
+    url: 'oaLog/queryLogRecordCount',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 随机返回一条
+ * @param {*} data
+ */
+export function journalGetLogWelcomeAPI(data) {
+  return request({
+    url: 'oaLog/getLogWelcomeSpeech',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 日志导出
+ * @param {*} data
+ */
+export function oaLogExportAPI(data) {
+  return request({
+    url: 'oaLog/export',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 查询日志完成概要
+ * @param {*} data
+ */
+export function oaLogCompleteStatsAPI(data) {
+  return request({
+    url: 'oaLog/queryCompleteStats',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 查询日志完成情况
+ * @param {*} data
+ */
+export function oaLogCompleteListAPI(data) {
+  return request({
+    url: 'oaLog/queryCompleteOaLogList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 查询日志未完成情况
+ * @param {*} data
+ */
+export function oaLogUnCompleteListAPI(data) {
+  return request({
+    url: 'oaLog/queryIncompleteOaLogList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 点赞
+ * @param {*} data
+ */
+export function oaLogFavourOrCancelAPI(data) {
+  return request({
+    url: 'oaLog/favourOrCancel',
+    method: 'post',
+    data: data
+  })
+}

+ 64 - 0
src/api/oa/notice.js

@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+/**
+ * 公告添加
+ * @param {*} data
+ */
+export function noticeListAPI(data) {
+  return request({
+    url: 'oaAnnouncement/queryList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 公告添加或编辑
+ * @param {*} data
+ */
+export function noticeAddOrUpateAPI(data) {
+  var url = data.announcementId ? 'setAnnouncement' : 'addAnnouncement'
+  return request({
+    url: 'oaAnnouncement/' + url,
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公告删除
+ * @param {*} data
+ */
+export function noticeDeleteAPI(id) {
+  return request({
+    url: `oaAnnouncement/delete/${id}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 公告详情
+ * @param {*} data
+ */
+export function noticeQueryByIdAPI(id) {
+  return request({
+    url: `oaAnnouncement/queryById/${id}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 公告设为已读
+ * @param {*} data
+ */
+export function noticeIsReadAPI(data) {
+  return request({
+    url: 'oaAnnouncement/readAnnouncement',
+    method: 'post',
+    data: data
+  })
+}

+ 16 - 0
src/api/pm/archive.js

@@ -0,0 +1,16 @@
+import request from '@/utils/request'
+
+/**
+ * 归档项目列表
+ * @param {*} data
+ */
+export function workWorkArchiveListAPI(data) {
+  return request({
+    url: 'work/work/queryArchiveWorkList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 338 - 0
src/api/pm/project.js

@@ -0,0 +1,338 @@
+import request from '@/utils/request'
+
+/**
+ * 归档任务列表
+ * @param {*} data
+ */
+export function workTaskArchListAPI(workId) {
+  return request({
+    url: `work/work/archList/${workId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 项目详情
+ * @param {*} data
+ */
+export function workWorkReadAPI(data) {
+  return request({
+    url: 'work/work/getWorkById',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 项目删除
+ * @param {*} data
+ */
+export function workWorkDeleteAPI(workId) {
+  return request({
+    url: `work/work/deleteWork/${workId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 新建项目
+ * @param {*} data
+ */
+export function workWorkSaveAPI(data) {
+  return request({
+    url: 'work/work/addWork',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+
+/**
+ * 编辑项目
+ * @param {*} data
+ */
+export function workWorkUpdateAPI(data) {
+  return request({
+    url: 'work/work/updateWork',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 退出项目
+ * @param {*} data
+ */
+export function workWorkLeaveAPI(workId) {
+  return request({
+    url: `work/work/leave/${workId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 任务板列表
+ * @param {*} data
+ */
+export function workTaskIndexAPI(data) {
+  return request({
+    url: 'work/work/queryTaskByWorkId',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 任务板列表
+ * @param {*} data
+ */
+export function workTaskOwnerIndexAPI(data) {
+  return request({
+    url: 'work/work/queryOwnerTaskListByWorkId',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+// /**
+//  * 设置任务类别 改为 saveWorkTaskClass
+//  * @param {*} data
+//  */
+// export function workTaskClassSetAPI(data) {
+//   return request({
+//     url: 'task/setTaskClass',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+/**
+ * 分类删除
+ * @param {*} data
+ */
+export function workTaskclassDeleteAPI(data) {
+  return request({
+    url: 'work/work/deleteTaskList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取附件列表
+ * @param {*} data
+ */
+export function workWorkFileListAPI(data) {
+  return request({
+    url: 'work/work/queryTaskFileByWorkId',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 项目 -- 成员列表
+ * @param {*} data
+ */
+export function workWorkOwnerListAPI(data) {
+  return request({
+    url: 'work/work/queryOwnerRoleList/' + data.workId,
+    method: 'post'
+  })
+}
+
+/**
+ * 项目 -- 成员删除
+ * @param {*} data
+ */
+export function workWorkOwnerDelAPI(data) {
+  return request({
+    url: 'work/work/removeWorkOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 项目 -- 归档已完成任务
+ * @param {*} data
+ */
+export function workTaskArchiveTaskAPI(data) {
+  return request({
+    url: `work/work/archiveTask/${data.classId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 项目 -- 归档负责人已完成任务
+ * @param {*} data
+ */
+export function workTaskArchiveOwnerTaskAPI(data) {
+  return request({
+    url: 'work/work/archiveTaskByOwner',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 拖拽改变分类
+ * @param {*} data
+ */
+export function workTaskUpdateOrderAPI(data) {
+  return request({
+    url: 'work/work/updateOrder',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 拖拽改变分类列表
+ * @param {*} data
+ */
+export function workTaskUpdateClassOrderAPI(data) {
+  return request({
+    url: 'work/work/updateClassOrder',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 项目成员添加角色
+ * @param {*} data
+ */
+export function workWorkAddUserGroupAPI(data) {
+  return request({
+    url: 'work/work/setOwnerRole',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 项目成员角色列表
+ * @param {*} data
+ */
+export function workWorkGroupListAPI(data) {
+  return request({
+    url: 'adminRole/queryWorkRoleList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 项目收藏
+ * @param {*} data
+ */
+export function workWorkCollectAPI(workId) {
+  return request({
+    url: `workCollect/collect/${workId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改标签排序
+ * @param {*} data
+ */
+export function workUpdateWorkOrderAPI(data) {
+  return request({
+    url: 'workOrder/updateWorkOrder',
+    method: 'post',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: data
+  })
+}
+
+/**
+ * 项目任务导出
+ * @param {*} data
+ */
+export function workTaskExportAPI(data) {
+  return request({
+    url: 'work/work/workTaskExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 获取导入模板
+ * @param {*} data
+ */
+export function workDownloadExcelAPI(data) {
+  return request({
+    url: 'work/work/downloadExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+
+/**
+ * 项目任务导入
+ * @param {*} data
+ */
+export function workExcelImportAPI(data) {
+  var param = new FormData()
+  Object.keys(data).forEach(key => {
+    param.append(key, data[key])
+  })
+  return request({
+    url: 'work/work/excelImport',
+    method: 'post',
+    data: param,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 项目任务下载错误模板
+ * @param {*} data
+ */
+export function workDownloadErrorExcelAPI(data) {
+  return request({
+    url: 'work/work/downloadErrorExcel',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}

+ 302 - 0
src/api/pm/projectTask.js

@@ -0,0 +1,302 @@
+import request from '@/utils/request'
+
+/**
+ *
+ * 新建任务列表
+ * @param {*} data
+ */
+export function workTaskClassSaveAPI(data) {
+  return request({
+    url: 'workTaskClass/saveWorkTaskClass',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 删除任务
+ * @param {*} data
+ */
+export function workTaskDeleteAPI(taskId) {
+  return request({
+    url: `workTask/deleteWorkTask/${taskId}`,
+    method: 'post'
+  })
+}
+
+/**
+ *
+ * 编辑任务列表
+ * @param {*} data
+ */
+export function workTaskClassUpateAPI(data) {
+  return request({
+    url: 'workTaskClass/updateWorkTaskClass',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 新建任务
+ * 同 setTaskAPI
+ * @param {*} data
+ */
+export function workTaskSaveAPI(data) {
+  return request({
+    url: 'workTask/saveWorkTask',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 完成任务状态
+ * @param {*} data
+ */
+export function workTaskStatusSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 完成子任务状态
+ * @param {*} data
+ */
+export function workTaskChildStatusSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkChildTaskStatus',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 编辑任务标题
+ * @param {*} data
+ */
+export function workTaskTitleSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskTitle',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 编辑任务描述
+ * @param {*} data
+ */
+export function workTaskDescriptionSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskDescription',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 分配任务(负责人)
+ * @param {*} data
+ */
+export function workTaskMainUserSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskMainUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 设置任务时间
+ * @param {*} data
+ */
+export function workTaskTimeSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskTime',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 设置任务标签
+ * @param {*} data
+ */
+export function workTaskLabelSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskLabel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 添加任务参与人
+ * @param {*} data
+ */
+export function workTaskOwnerUserSetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 添加任务参与人
+ * @param {*} data
+ */
+export function workTaskOwnerUserDeleteAPI(data) {
+  return request({
+    url: 'workTask/deleteWorkTaskOwnerUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 设置任务优先级
+ * @param {*} data
+ */
+export function workTaskPrioritySetAPI(data) {
+  return request({
+    url: 'workTask/setWorkTaskPriority',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 新建子任务
+ * @param {*} data
+ */
+export function workSubTaskAddAPI(data) {
+  return request({
+    url: 'workTask/addWorkChildTask',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 编辑子任务
+ * @param {*} data
+ */
+export function workSubTaskUpdateAPI(data) {
+  return request({
+    url: 'workTask/updateWorkChildTask',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ *
+ * 删除子任务
+ * @param {*} data
+ */
+export function workSubTaskDeleteAPI(taskId) {
+  return request({
+    url: `workTask/deleteWorkChildTask/${taskId}`,
+    method: 'post'
+  })
+}
+
+
+// /**
+//  * 任务添加附件
+//  * @param {*} data
+//  */
+// export function workTaskFileUploadAPI(data) {
+//   var param = new FormData()
+//   Object.keys(data).forEach(key => {
+//     param.append(key, data[key])
+//   })
+//   return request({
+//     url: 'workTask/uploadWorkTaskFile',
+//     method: 'post',
+//     data: param,
+//     headers: {
+//       'Content-Type': 'multipart/form-data'
+//     }
+//   })
+// }
+
+// /**
+//  *
+//  * 任务删除附件
+//  * @param {*} data
+//  */
+// export function workTaskFileDeleteAPI(data) {
+//   return request({
+//     url: 'oaTask/deleteWorkTaskFile',
+//     method: 'post',
+//     data: data,
+//     headers: {
+//       'Content-Type': 'application/json;charset=UTF-8'
+//     }
+//   })
+// }

+ 38 - 0
src/api/pm/recycle.js

@@ -0,0 +1,38 @@
+import request from '@/utils/request'
+
+/**
+ * 回收站列表
+ * @param {*} data
+ */
+export function workTrashIndexAPI(data) {
+  return request({
+    url: 'workTask/queryTrashList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 回收站彻底删除
+ * @param {*} data
+ */
+export function workTrashDeleteAPI(taskId) {
+  return request({
+    url: `workTask/deleteTask/${taskId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 回收站恢复
+ * @param {*} data
+ */
+export function workTrashRecoverAPI(taskId) {
+  return request({
+    url: `workTask/restore/${taskId}`,
+    method: 'post'
+  })
+}
+
+
+

+ 12 - 0
src/api/pm/statistics.js

@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+/**
+ * 项目任务统计
+ * @param {*} data
+ */
+export function workWorkStatisticAPI(workId) {
+  return request({
+    url: `work/work/workStatistics/${workId}`,
+    method: 'post'
+  })
+}

+ 92 - 0
src/api/pm/tag.js

@@ -0,0 +1,92 @@
+import request from '@/utils/request'
+
+/**
+ * 标签左侧列表
+ * @param {*} data
+ */
+export function workTasklableIndexAPI(data) {
+  return request({
+    url: 'workTaskLabel/getLabelList',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 单个标签详情
+ * @param {*} data
+ */
+export function workTasklableReadAPI(data) {
+  return request({
+    url: `workTaskLabel/queryById/${data.labelId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 标签删除
+ * @param {*} data
+ */
+export function workTasklableDeleteAPI(data) {
+  return request({
+    url: 'workTaskLabel/deleteLabel',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 创建标签
+ * @param {*} data
+ */
+export function workTasklableSaveAPI(data) {
+  return request({
+    url: 'workTaskLabel/saveLabel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 标签编辑
+ * @param {*} data
+ */
+export function workTasklableSetAPI(data) {
+  return request({
+    url: 'workTaskLabel/setLabel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 获取项目及任务表
+ * @param {*} data
+ */
+export function workTasklableGetWokListAPI(data) {
+  return request({
+    url: `workTaskLabel/getTaskList/${data.labelId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 修改标签排序
+ * @param {*} data
+ */
+export function workTasklableUpdateOrderAPI(data) {
+  return request({
+    url: 'taskLabel/updateOrder',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}

+ 143 - 0
src/api/pm/task.js

@@ -0,0 +1,143 @@
+import request from '@/utils/request'
+
+/**
+ * 我的任务列表
+ * @param {*} data
+ */
+export function workTaskMyTaskAPI(data) {
+  return request({
+    url: 'workTask/myTask',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 参与项目的成员
+ * @param {*} data
+ */
+export function workQueryMemberListAPI() {
+  return request({
+    url: 'work/work/queryMemberList',
+    method: 'post'
+  })
+}
+
+/**
+ * 拖拽改变分类
+ * @param {*} data
+ */
+export function workTaskUpdateTopAPI(data) {
+  return request({
+    url: 'workTask/updateTop',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 项目列表
+ * @param {*} data
+ */
+export function workIndexWorkListAPI(data) {
+  return request({
+    url: 'work/work/queryWorkNameList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 公共搜索任务
+ * @param {*} data
+ */
+export function workQueryWorkTaskListAPI(data) {
+  return request({
+    url: 'work/work/queryWorkTaskList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// /**
+//  * 任务详情
+//  * @param {*} data
+//  */
+// export function workTaskReadAPI(data) {
+//   return request({
+//     url: 'task/queryTaskById',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+// /**
+//  * 编辑任务名
+//  * @param {*} data
+//  */
+// export function workTaskUpdateNameAPI(data) {
+//   return request({
+//     url: 'work/task/updateName',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+/**
+ * 任务归档
+ * @param {*} data
+ */
+export function workTaskArchiveAPI(taskId) {
+  return request({
+    url: `workTask/archiveByTaskId/${taskId}`,
+    method: 'post'
+  })
+}
+
+/**
+ * 归档任务激活
+ * @param {*} data
+ */
+export function workTaskRecoverAPI(taskId) {
+  return request({
+    url: `work/work/activation/${taskId}`,
+    method: 'post'
+  })
+}
+
+// /**
+//  * 编辑相关信息
+//  * @param {*} data
+//  */
+// export function taskSvaeTaskRelationAPI(data) {
+//   return request({
+//     url: 'task/saveTaskRelation',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+/**
+ * 工作台任务导出
+ * @param {*} data
+ */
+export function taskWorkbenchExportAPI(data) {
+  return request({
+    url: 'workTask/workBenchTaskExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}

+ 126 - 0
src/api/task/task.js

@@ -0,0 +1,126 @@
+import request from '@/utils/request'
+
+/**
+ * 我下属的任务列表
+ * @param {*} data
+ */
+export function taskListAPI(data) {
+  return request({
+    url: 'oaTask/queryTaskList',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 新增任务
+ * @param {*} data
+ */
+export function setTaskAPI(data) {
+  return request({
+    url: 'workTask/saveWorkTask',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+// /**
+//  * 删除任务
+//  * @param {*} data
+//  */
+// export function deleteTaskAPI(data) {
+//   return request({
+//     url: 'task/deleteTask',
+//     method: 'post',
+//     data: data
+//   })
+// }
+
+/**
+ * 任务详情
+ * @param {*} data
+ */
+export function detailsTaskAPI(data) {
+  return request({
+    url: `workTask/queryTaskInfo/${data.taskId}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 回收站任务详情
+ * @param {*} data
+ */
+export function detailsTrashTaskAPI(data) {
+  return request({
+    url: 'workTask/queryTrashTaskInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 任务活动
+ * @param {*} data
+ */
+export function queryLogTaskAPI(data) {
+  return request({
+    url: `workTaskLog/queryTaskLog/${data.taskId}`,
+    method: 'post'
+  })
+}
+
+
+/**
+ * 编辑相关信息
+ * @param {*} data
+ */
+export function editTaskRelationAPI(data) {
+  return request({
+    url: 'workTaskRelation/saveWorkTaskRelation',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 取消选择的标签 taskId  label
+ * @param {*} data
+ */
+export function taskDeleteLabelAPI(data) {
+  return request({
+    url: 'oaTask/deleteWorkTaskLabel',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 办公任务导出
+ * @param {*} data
+ */
+export function taskOaExportAPI(data) {
+  return request({
+    url: 'oaTask/oaTaskExport',
+    method: 'post',
+    data: data,
+    responseType: 'blob',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+

+ 55 - 0
src/api/user/personCenter.js

@@ -0,0 +1,55 @@
+import request from '@/utils/request'
+
+/**
+ * 修改头像
+ * @param {*} data
+ */
+export function adminUsersUpdateImgAPI(data) {
+  return request({
+    url: 'adminUser/updateImg',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    }
+  })
+}
+
+/**
+ * 个人详情
+ * @param {*} data
+ */
+export function adminUsersReadAPI(data) {
+  return request({
+    url: 'adminUser/queryLoginUser',
+    method: 'post',
+    data: data
+  })
+}
+
+/**
+ * 修改个人信息
+ * @param {*} data
+ */
+export function adminUsersUpdateAPI(data) {
+  return request({
+    url: 'adminUser/updateUser',
+    method: 'post',
+    data: data,
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * 修改密码
+ * @param {*} data
+ */
+export function adminUsersResetPasswordAPI(data) {
+  return request({
+    url: 'adminUser/updatePassword',
+    method: 'post',
+    data: data
+  })
+}

BIN
src/assets/401_images/1.gif


BIN
src/assets/401_images/401.gif


Some files were not shown because too many files changed in this diff