yang 5 лет назад
Родитель
Сommit
1a65c0044e
100 измененных файлов: 10778 добавлений и 0 удалений
  1. 12
    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. 45
    0
      build/build.js
  9. 64
    0
      build/check-versions.js
  10. Двоичные данные
      build/logo.png
  11. 119
    0
      build/utils.js
  12. 5
    0
      build/vue-loader.conf.js
  13. 118
    0
      build/webpack.base.conf.js
  14. 98
    0
      build/webpack.dev.conf.js
  15. 181
    0
      build/webpack.prod.conf.js
  16. 8
    0
      config/dev.env.js
  17. 101
    0
      config/index.js
  18. 5
    0
      config/prod.env.js
  19. Двоичные данные
      favicon.ico
  20. 17
    0
      index.html
  21. 115
    0
      package.json
  22. 129
    0
      src/App.vue
  23. 31
    0
      src/api/admin/application.js
  24. 28
    0
      src/api/admin/config.js
  25. 563
    0
      src/api/admin/crm.js
  26. 173
    0
      src/api/admin/employeeDep.js
  27. 118
    0
      src/api/admin/file.js
  28. 31
    0
      src/api/admin/init.js
  29. 55
    0
      src/api/admin/oa.js
  30. 110
    0
      src/api/admin/other.js
  31. 52
    0
      src/api/admin/project.js
  32. 175
    0
      src/api/admin/role.js
  33. 120
    0
      src/api/admin/update.js
  34. 15
    0
      src/api/admin/user.js
  35. 128
    0
      src/api/bi/achievement.js
  36. 64
    0
      src/api/bi/bi.js
  37. 50
    0
      src/api/bi/business.js
  38. 326
    0
      src/api/bi/customer.js
  39. 50
    0
      src/api/bi/customerPortrayal.js
  40. 80
    0
      src/api/bi/oa.js
  41. 15
    0
      src/api/bi/product.js
  42. 250
    0
      src/api/bi/ranking.js
  43. 240
    0
      src/api/calendar/index.js
  44. 361
    0
      src/api/common.js
  45. 29
    0
      src/api/config.js
  46. 325
    0
      src/api/crm/business.js
  47. 474
    0
      src/api/crm/common.js
  48. 219
    0
      src/api/crm/contacts.js
  49. 266
    0
      src/api/crm/contract.js
  50. 723
    0
      src/api/crm/customer.js
  51. 190
    0
      src/api/crm/invoice.js
  52. 203
    0
      src/api/crm/leads.js
  53. 225
    0
      src/api/crm/message.js
  54. 13
    0
      src/api/crm/nearby.js
  55. 192
    0
      src/api/crm/product.js
  56. 158
    0
      src/api/crm/receivables.js
  57. 68
    0
      src/api/crm/visit.js
  58. 250
    0
      src/api/crm/workbench.js
  59. 151
    0
      src/api/examine/index.js
  60. 124
    0
      src/api/login.js
  61. 43
    0
      src/api/oa/addressBook.js
  62. 47
    0
      src/api/oa/common.js
  63. 195
    0
      src/api/oa/examine.js
  64. 202
    0
      src/api/oa/journal.js
  65. 66
    0
      src/api/oa/notice.js
  66. 16
    0
      src/api/pm/archive.js
  67. 385
    0
      src/api/pm/project.js
  68. 304
    0
      src/api/pm/projectTask.js
  69. 40
    0
      src/api/pm/recycle.js
  70. 13
    0
      src/api/pm/statistics.js
  71. 94
    0
      src/api/pm/tag.js
  72. 145
    0
      src/api/pm/task.js
  73. 146
    0
      src/api/task/task.js
  74. 55
    0
      src/api/user/personCenter.js
  75. Двоичные данные
      src/assets/401_images/1.gif
  76. Двоичные данные
      src/assets/401_images/401.gif
  77. Двоичные данные
      src/assets/404_images/404.png
  78. Двоичные данные
      src/assets/404_images/404_cloud.png
  79. Двоичные данные
      src/assets/activity/activity_five.jpg
  80. Двоичные данные
      src/assets/activity/activity_four.jpg
  81. Двоичные данные
      src/assets/activity/activity_one.jpg
  82. Двоичные данные
      src/assets/activity/activity_six.jpg
  83. Двоичные данные
      src/assets/activity/activity_three.jpg
  84. Двоичные данные
      src/assets/activity/activity_two.jpg
  85. Двоичные данные
      src/assets/android_10.png
  86. Двоичные данные
      src/assets/icon_light.png
  87. 345
    0
      src/assets/iconfont/iconfont.css
  88. Двоичные данные
      src/assets/iconfont/iconfont.eot
  89. 704
    0
      src/assets/iconfont/iconfont.svg
  90. Двоичные данные
      src/assets/iconfont/iconfont.ttf
  91. Двоичные данные
      src/assets/iconfont/iconfont.woff
  92. Двоичные данные
      src/assets/iconfont/iconfont.woff2
  93. Двоичные данные
      src/assets/img/1.png
  94. Двоичные данные
      src/assets/img/2.png
  95. Двоичные данные
      src/assets/img/3.png
  96. Двоичные данные
      src/assets/img/add_examine.png
  97. Двоичные данные
      src/assets/img/addressBook/address_logo.png
  98. Двоичные данные
      src/assets/img/browse_count.png
  99. Двоичные данные
      src/assets/img/c_filtrate.png
  100. 0
    0
      src/assets/img/calendar_cus.png

+ 12
- 0
.babelrc Просмотреть файл

@@ -0,0 +1,12 @@
1
+{
2
+  "presets": [
3
+    ["env", {
4
+      "modules": false,
5
+      "targets": {
6
+        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7
+      }
8
+    }],
9
+    "stage-2"
10
+  ],
11
+  "plugins":["transform-vue-jsx", "transform-runtime"]
12
+}

+ 14
- 0
.editorconfig Просмотреть файл

@@ -0,0 +1,14 @@
1
+# http://editorconfig.org
2
+root = true
3
+
4
+[*]
5
+charset = utf-8
6
+indent_style = space
7
+indent_size = 2
8
+end_of_line = lf
9
+insert_final_newline = true
10
+trim_trailing_whitespace = true
11
+
12
+[*.md]
13
+insert_final_newline = false
14
+trim_trailing_whitespace = false

+ 3
- 0
.eslintignore Просмотреть файл

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

+ 206
- 0
.eslintrc.js Просмотреть файл

@@ -0,0 +1,206 @@
1
+module.exports = {
2
+  root: true,
3
+  parserOptions: {
4
+    parser: 'babel-eslint',
5
+    sourceType: 'module'
6
+  },
7
+  env: {
8
+    browser: true,
9
+    node: true,
10
+    es6: true,
11
+  },
12
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
13
+  globals: {
14
+    "BMap": "readonly",
15
+    "BMAP_STATUS_SUCCESS": "readonly",
16
+    "fullcalendar": "readonly",
17
+    "WKConfig": "readonly"
18
+  },
19
+
20
+  // add your custom rules here
21
+  //it is base on https://github.com/vuejs/eslint-config-vue
22
+  rules: {
23
+    "vue/max-attributes-per-line": [2, {
24
+      "singleline": 10,
25
+      "multiline": {
26
+        "max": 10,
27
+        "allowFirstLine": false
28
+      }
29
+    }],
30
+    "vue/html-closing-bracket-newline": [
31
+      "off"
32
+    ],
33
+    "vue/name-property-casing": ["error", "PascalCase"],
34
+    'vue/no-v-html': 0,
35
+    'vue/require-default-prop': 0,
36
+    'accessor-pairs': 2,
37
+    'arrow-spacing': [2, {
38
+      'before': true,
39
+      'after': true
40
+    }],
41
+    'block-spacing': [2, 'always'],
42
+    'brace-style': [2, '1tbs', {
43
+      'allowSingleLine': true
44
+    }],
45
+    'camelcase': [0, {
46
+      'properties': 'always'
47
+    }],
48
+    'comma-dangle': [2, 'never'],
49
+    'comma-spacing': [2, {
50
+      'before': false,
51
+      'after': true
52
+    }],
53
+    'comma-style': [2, 'last'],
54
+    'constructor-super': 2,
55
+    'curly': [2, 'multi-line'],
56
+    'dot-location': [2, 'property'],
57
+    'eol-last': 2,
58
+    'eqeqeq': [0, 'allow-null'],
59
+    'generator-star-spacing': [2, {
60
+      'before': true,
61
+      'after': true
62
+    }],
63
+    'handle-callback-err': [2, '^(err|error)$'],
64
+    'indent': [2, 2, {
65
+      'SwitchCase': 1
66
+    }],
67
+    'jsx-quotes': [2, 'prefer-single'],
68
+    'key-spacing': [2, {
69
+      'beforeColon': false,
70
+      'afterColon': true
71
+    }],
72
+    'keyword-spacing': [2, {
73
+      'before': true,
74
+      'after': true
75
+    }],
76
+    'new-cap': [2, {
77
+      'newIsCap': true,
78
+      'capIsNew': false
79
+    }],
80
+    'new-parens': 2,
81
+    'no-array-constructor': 2,
82
+    'no-caller': 2,
83
+    'no-console': 'off',
84
+    'no-class-assign': 2,
85
+    'no-cond-assign': 2,
86
+    'no-const-assign': 2,
87
+    'no-control-regex': 2,
88
+    'no-delete-var': 0,
89
+    'no-dupe-args': 2,
90
+    'no-dupe-class-members': 2,
91
+    'no-dupe-keys': 2,
92
+    'no-duplicate-case': 2,
93
+    'no-empty-character-class': 2,
94
+    'no-empty-pattern': 2,
95
+    'no-eval': 2,
96
+    'no-ex-assign': 2,
97
+    'no-extend-native': 2,
98
+    'no-extra-bind': 2,
99
+    'no-extra-boolean-cast': 2,
100
+    'no-extra-parens': [2, 'functions'],
101
+    'no-fallthrough': 2,
102
+    'no-floating-decimal': 2,
103
+    'no-func-assign': 2,
104
+    'no-implied-eval': 2,
105
+    'no-inner-declarations': [2, 'functions'],
106
+    'no-invalid-regexp': 2,
107
+    'no-irregular-whitespace': 2,
108
+    'no-iterator': 2,
109
+    'no-label-var': 2,
110
+    'no-labels': [2, {
111
+      'allowLoop': false,
112
+      'allowSwitch': false
113
+    }],
114
+    'no-lone-blocks': 2,
115
+    'no-mixed-spaces-and-tabs': 2,
116
+    'no-multi-spaces': 2,
117
+    'no-multi-str': 2,
118
+    'no-multiple-empty-lines': [1, {
119
+      'max': 10
120
+    }],
121
+    'no-native-reassign': 2,
122
+    'no-negated-in-lhs': 2,
123
+    'no-new-object': 2,
124
+    'no-new-require': 2,
125
+    'no-new-symbol': 2,
126
+    'no-new-wrappers': 2,
127
+    'no-obj-calls': 2,
128
+    'no-octal': 2,
129
+    'no-octal-escape': 2,
130
+    'no-path-concat': 2,
131
+    'no-proto': 2,
132
+    'no-redeclare': 0,
133
+    'no-regex-spaces': 2,
134
+    'no-return-assign': [2, 'except-parens'],
135
+    'no-self-assign': 2,
136
+    'no-self-compare': 2,
137
+    'no-sequences': 2,
138
+    'no-shadow-restricted-names': 2,
139
+    'no-spaced-func': 2,
140
+    'no-sparse-arrays': 2,
141
+    'no-this-before-super': 2,
142
+    'no-throw-literal': 2,
143
+    'no-trailing-spaces': 2,
144
+    'no-undef': 2,
145
+    'no-undef-init': 2,
146
+    'no-unexpected-multiline': 2,
147
+    'no-unmodified-loop-condition': 2,
148
+    'no-unneeded-ternary': [2, {
149
+      'defaultAssignment': false
150
+    }],
151
+    'no-unreachable': 2,
152
+    'no-unsafe-finally': 2,
153
+    'no-unused-vars': [2, {
154
+      'vars': 'all',
155
+      'args': 'none'
156
+    }],
157
+    'no-useless-call': 2,
158
+    'no-useless-computed-key': 2,
159
+    'no-useless-constructor': 2,
160
+    'no-useless-escape': 0,
161
+    'no-whitespace-before-property': 2,
162
+    'no-with': 2,
163
+    'one-var': [2, {
164
+      'initialized': 'never'
165
+    }],
166
+    'operator-linebreak': [2, 'after', {
167
+      'overrides': {
168
+        '?': 'before',
169
+        ':': 'before'
170
+      }
171
+    }],
172
+    'padded-blocks': [2, 'never'],
173
+    'quotes': [2, 'single', {
174
+      'avoidEscape': true,
175
+      'allowTemplateLiterals': true
176
+    }],
177
+    'semi': [2, 'never'],
178
+    'semi-spacing': [2, {
179
+      'before': false,
180
+      'after': true
181
+    }],
182
+    'space-before-blocks': [2, 'always'],
183
+    'space-before-function-paren': [2, 'never'],
184
+    'space-in-parens': [2, 'never'],
185
+    'space-infix-ops': 2,
186
+    'space-unary-ops': [2, {
187
+      'words': true,
188
+      'nonwords': false
189
+    }],
190
+    'spaced-comment': [2, 'always', {
191
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
192
+    }],
193
+    'template-curly-spacing': [2, 'never'],
194
+    'use-isnan': 2,
195
+    'valid-typeof': 2,
196
+    'wrap-iife': [2, 'any'],
197
+    'yield-star-spacing': [2, 'both'],
198
+    'yoda': [2, 'never'],
199
+    'prefer-const': 2,
200
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
201
+    'object-curly-spacing': [2, 'always', {
202
+      objectsInObjects: false
203
+    }],
204
+    'array-bracket-spacing': [2, 'never'],
205
+  }
206
+}

+ 10
- 0
.postcssrc.js Просмотреть файл

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

+ 5
- 0
.travis.yml Просмотреть файл

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

+ 78
- 0
LICENSE Просмотреть файл

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

+ 45
- 0
build/build.js Просмотреть файл

@@ -0,0 +1,45 @@
1
+'use strict'
2
+require('./check-versions')()
3
+
4
+process.env.NODE_ENV = 'production'
5
+
6
+const ora = require('ora')
7
+const rm = require('rimraf')
8
+const path = require('path')
9
+const chalk = require('chalk')
10
+const webpack = require('webpack')
11
+const config = require('../config')
12
+const webpackConfig = require('./webpack.prod.conf')
13
+
14
+const spinner = ora('building for production...')
15
+spinner.start()
16
+
17
+rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18
+  if (err) throw err
19
+  webpack(webpackConfig, (err, stats) => {
20
+    spinner.stop()
21
+    if (err) throw err
22
+    process.stdout.write(
23
+      stats.toString({
24
+        colors: true,
25
+        modules: false,
26
+        children: false,
27
+        chunks: false,
28
+        chunkModules: false
29
+      }) + '\n\n'
30
+    )
31
+
32
+    if (stats.hasErrors()) {
33
+      console.log(chalk.red('  Build failed with errors.\n'))
34
+      process.exit(1)
35
+    }
36
+
37
+    console.log(chalk.cyan('  Build complete.\n'))
38
+    console.log(
39
+      chalk.yellow(
40
+        '  Tip: built files are meant to be served over an HTTP server.\n' +
41
+          "  Opening index.html over file:// won't work.\n"
42
+      )
43
+    )
44
+  })
45
+})

+ 64
- 0
build/check-versions.js Просмотреть файл

@@ -0,0 +1,64 @@
1
+'use strict'
2
+const chalk = require('chalk')
3
+const semver = require('semver')
4
+const packageConfig = require('../package.json')
5
+const shell = require('shelljs')
6
+
7
+function exec(cmd) {
8
+  return require('child_process')
9
+    .execSync(cmd)
10
+    .toString()
11
+    .trim()
12
+}
13
+
14
+const versionRequirements = [
15
+  {
16
+    name: 'node',
17
+    currentVersion: semver.clean(process.version),
18
+    versionRequirement: packageConfig.engines.node
19
+  }
20
+]
21
+
22
+if (shell.which('npm')) {
23
+  versionRequirements.push({
24
+    name: 'npm',
25
+    currentVersion: exec('npm --version'),
26
+    versionRequirement: packageConfig.engines.npm
27
+  })
28
+}
29
+
30
+module.exports = function() {
31
+  const warnings = []
32
+
33
+  for (let i = 0; i < versionRequirements.length; i++) {
34
+    const mod = versionRequirements[i]
35
+
36
+    if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
37
+      warnings.push(
38
+        mod.name +
39
+          ': ' +
40
+          chalk.red(mod.currentVersion) +
41
+          ' should be ' +
42
+          chalk.green(mod.versionRequirement)
43
+      )
44
+    }
45
+  }
46
+
47
+  if (warnings.length) {
48
+    console.log('')
49
+    console.log(
50
+      chalk.yellow(
51
+        'To use this template, you must update following to modules:'
52
+      )
53
+    )
54
+    console.log()
55
+
56
+    for (let i = 0; i < warnings.length; i++) {
57
+      const warning = warnings[i]
58
+      console.log('  ' + warning)
59
+    }
60
+
61
+    console.log()
62
+    process.exit(1)
63
+  }
64
+}

Двоичные данные
build/logo.png Просмотреть файл


+ 119
- 0
build/utils.js Просмотреть файл

@@ -0,0 +1,119 @@
1
+'use strict'
2
+const path = require('path')
3
+const config = require('../config')
4
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
5
+const packageConfig = require('../package.json')
6
+
7
+exports.assetsPath = function (_path) {
8
+  const assetsSubDirectory =
9
+    process.env.NODE_ENV === 'production' ?
10
+    config.build.assetsSubDirectory :
11
+    config.dev.assetsSubDirectory
12
+
13
+  return path.posix.join(assetsSubDirectory, _path)
14
+}
15
+
16
+exports.cssLoaders = function (options) {
17
+  options = options || {}
18
+
19
+  const cssLoader = {
20
+    loader: 'css-loader',
21
+    options: {
22
+      sourceMap: options.sourceMap
23
+    }
24
+  }
25
+
26
+  const postcssLoader = {
27
+    loader: 'postcss-loader',
28
+    options: {
29
+      sourceMap: options.sourceMap
30
+    }
31
+  }
32
+
33
+  // generate loader string to be used with extract text plugin
34
+  function generateLoaders(loader, loaderOptions) {
35
+    const loaders = []
36
+
37
+    // Extract CSS when that option is specified
38
+    // (which is the case during production build)
39
+    if (options.extract) {
40
+      // loaders.push(MiniCssExtractPlugin.loader)
41
+      loaders.push({
42
+        loader: MiniCssExtractPlugin.loader,
43
+        options: {
44
+          publicPath: '../../'
45
+        }
46
+      })
47
+    } else {
48
+      loaders.push('vue-style-loader')
49
+    }
50
+
51
+    loaders.push(cssLoader)
52
+
53
+    if (options.usePostCSS) {
54
+      loaders.push(postcssLoader)
55
+    }
56
+
57
+    if (loader) {
58
+      loaders.push({
59
+        loader: loader + '-loader',
60
+        options: Object.assign({}, loaderOptions, {
61
+          sourceMap: options.sourceMap
62
+        })
63
+      })
64
+    }
65
+
66
+    return loaders
67
+  }
68
+  // https://vue-loader.vuejs.org/en/configurations/extract-css.html
69
+  return {
70
+    css: generateLoaders(),
71
+    postcss: generateLoaders(),
72
+    less: generateLoaders('less'),
73
+    sass: generateLoaders('sass', {
74
+      indentedSyntax: true
75
+    }),
76
+    scss: generateLoaders('sass').concat({
77
+      loader: 'sass-resources-loader',
78
+      options: {
79
+        resources: path.resolve(__dirname, '../src/styles/xr-theme.scss')
80
+      }
81
+    }),
82
+    stylus: generateLoaders('stylus'),
83
+    styl: generateLoaders('stylus')
84
+  }
85
+}
86
+
87
+// Generate loaders for standalone style files (outside of .vue)
88
+exports.styleLoaders = function (options) {
89
+  const output = []
90
+  const loaders = exports.cssLoaders(options)
91
+
92
+  for (const extension in loaders) {
93
+    const loader = loaders[extension]
94
+    output.push({
95
+      test: new RegExp('\\.' + extension + '$'),
96
+      use: loader
97
+    })
98
+  }
99
+
100
+  return output
101
+}
102
+
103
+exports.createNotifierCallback = () => {
104
+  const notifier = require('node-notifier')
105
+
106
+  return (severity, errors) => {
107
+    if (severity !== 'error') return
108
+
109
+    const error = errors[0]
110
+    const filename = error.file && error.file.split('!').pop()
111
+
112
+    notifier.notify({
113
+      title: packageConfig.name,
114
+      message: severity + ': ' + error.name,
115
+      subtitle: filename || '',
116
+      icon: path.join(__dirname, 'logo.png')
117
+    })
118
+  }
119
+}

+ 5
- 0
build/vue-loader.conf.js Просмотреть файл

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

+ 118
- 0
build/webpack.base.conf.js Просмотреть файл

@@ -0,0 +1,118 @@
1
+'use strict'
2
+const path = require('path')
3
+const utils = require('./utils')
4
+const config = require('../config')
5
+const {
6
+  VueLoaderPlugin
7
+} = require('vue-loader')
8
+const vueLoaderConfig = require('./vue-loader.conf')
9
+// el-bigdata-table babel-loader 配置
10
+const fs = require('fs')
11
+
12
+function resolve(dir) {
13
+  return path.join(__dirname, '..', dir)
14
+}
15
+
16
+const createLintingRule = () => ({
17
+  test: /\.(js|vue)$/,
18
+  loader: 'eslint-loader',
19
+  enforce: 'pre',
20
+  include: [resolve('src'), resolve('test')],
21
+  options: {
22
+    formatter: require('eslint-friendly-formatter'),
23
+    emitWarning: !config.dev.showEslintErrorsInOverlay
24
+  }
25
+})
26
+
27
+// el-bigdata-table babel-loader 配置
28
+let bigTableDirName = fs.readdirSync(resolve('node_modules')).filter(dirName => /el-bigdata-table/.test(dirName))
29
+const bigTableDirs = bigTableDirName.map(dir => resolve(`node_modules/${dir}/src`))
30
+
31
+module.exports = {
32
+  context: path.resolve(__dirname, '../'),
33
+  entry: {
34
+    app: ["babel-polyfill", "./src/main.js"]
35
+  },
36
+  output: {
37
+    path: config.build.assetsRoot,
38
+    filename: '[name].js',
39
+    publicPath:
40
+      process.env.NODE_ENV === 'production'
41
+        ? config.build.assetsPublicPath
42
+        : config.dev.assetsPublicPath
43
+  },
44
+  resolve: {
45
+    extensions: ['.js', '.vue', '.json'],
46
+    alias: {
47
+      '@': resolve('src')
48
+    }
49
+  },
50
+  module: {
51
+    rules: [
52
+      ...(config.dev.useEslint ? [createLintingRule()] : []),
53
+      {
54
+        test: /\.vue$/,
55
+        loader: 'vue-loader',
56
+        options: vueLoaderConfig
57
+      },
58
+      {
59
+        test: /\.js$/,
60
+        loader: 'babel-loader',
61
+        include: [
62
+          resolve('src'),
63
+          resolve('test'),
64
+          resolve('node_modules/webpack-dev-server/client'),
65
+          resolve('node_modules/element-ui/src'),
66
+          resolve('node_modules/element-ui/packages'),
67
+          ...bigTableDirs
68
+        ]
69
+      },
70
+      {
71
+        test: /\.svg$/,
72
+        loader: 'svg-sprite-loader',
73
+        include: [resolve('src/icons')],
74
+        options: {
75
+          symbolId: 'icon-[name]'
76
+        }
77
+      },
78
+      {
79
+        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
80
+        loader: 'url-loader',
81
+        exclude: [resolve('src/icons')],
82
+        options: {
83
+          limit: 10000,
84
+          name: utils.assetsPath('img/[name].[hash:7].[ext]')
85
+        }
86
+      },
87
+      {
88
+        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
89
+        loader: 'url-loader',
90
+        options: {
91
+          limit: 10000,
92
+          name: utils.assetsPath('media/[name].[hash:7].[ext]')
93
+        }
94
+      },
95
+      {
96
+        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
97
+        loader: 'url-loader',
98
+        options: {
99
+          limit: 10000,
100
+          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
101
+        }
102
+      }
103
+    ]
104
+  },
105
+  plugins: [new VueLoaderPlugin()],
106
+  node: {
107
+    // prevent webpack from injecting useless setImmediate polyfill because Vue
108
+    // source contains it (although only uses it if it's native).
109
+    setImmediate: false,
110
+    // prevent webpack from injecting mocks to Node native modules
111
+    // that does not make sense for the client
112
+    dgram: 'empty',
113
+    fs: 'empty',
114
+    net: 'empty',
115
+    tls: 'empty',
116
+    child_process: 'empty'
117
+  }
118
+}

+ 98
- 0
build/webpack.dev.conf.js Просмотреть файл

@@ -0,0 +1,98 @@
1
+'use strict'
2
+const path = require('path')
3
+const utils = require('./utils')
4
+const webpack = require('webpack')
5
+const config = require('../config')
6
+const merge = require('webpack-merge')
7
+const baseWebpackConfig = require('./webpack.base.conf')
8
+const HtmlWebpackPlugin = require('html-webpack-plugin')
9
+const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
10
+const portfinder = require('portfinder')
11
+
12
+function resolve(dir) {
13
+  return path.join(__dirname, '..', dir)
14
+}
15
+
16
+const HOST = process.env.HOST
17
+const PORT = process.env.PORT && Number(process.env.PORT)
18
+
19
+const devWebpackConfig = merge(baseWebpackConfig, {
20
+  mode: 'development',
21
+  optimization: {
22
+    removeAvailableModules: false
23
+  },
24
+  module: {
25
+    rules: utils.styleLoaders({
26
+      sourceMap: config.dev.cssSourceMap,
27
+      usePostCSS: true
28
+    })
29
+  },
30
+  // cheap-module-eval-source-map is faster for development
31
+  devtool: config.dev.devtool,
32
+
33
+  // these devServer options should be customized in /config/index.js
34
+  devServer: {
35
+    clientLogLevel: 'warning',
36
+    historyApiFallback: true,
37
+    hot: true,
38
+    compress: true,
39
+    host: HOST || config.dev.host,
40
+    port: PORT || config.dev.port,
41
+    open: config.dev.autoOpenBrowser,
42
+    overlay: config.dev.errorOverlay
43
+      ? { warnings: false, errors: true }
44
+      : false,
45
+    publicPath: config.dev.assetsPublicPath,
46
+    proxy: config.dev.proxyTable,
47
+    quiet: true, // necessary for FriendlyErrorsPlugin
48
+    watchOptions: {
49
+      poll: config.dev.poll
50
+    }
51
+  },
52
+  plugins: [
53
+    new webpack.DefinePlugin({
54
+      'process.env': require('../config/dev.env')
55
+    }),
56
+    new webpack.HotModuleReplacementPlugin(),
57
+    // https://github.com/ampedandwired/html-webpack-plugin
58
+    new HtmlWebpackPlugin({
59
+      filename: 'index.html',
60
+      template: 'index.html',
61
+      inject: true,
62
+      favicon: resolve('favicon.ico'),
63
+      title: 'wukong'
64
+    })
65
+  ]
66
+})
67
+
68
+module.exports = new Promise((resolve, reject) => {
69
+  portfinder.basePort = process.env.PORT || config.dev.port
70
+  portfinder.getPort((err, port) => {
71
+    if (err) {
72
+      reject(err)
73
+    } else {
74
+      // publish the new Port, necessary for e2e tests
75
+      process.env.PORT = port
76
+      // add port to devServer config
77
+      devWebpackConfig.devServer.port = port
78
+
79
+      // Add FriendlyErrorsPlugin
80
+      devWebpackConfig.plugins.push(
81
+        new FriendlyErrorsPlugin({
82
+          compilationSuccessInfo: {
83
+            messages: [
84
+              `Your application is running here: http://${
85
+                devWebpackConfig.devServer.host
86
+              }:${port}`
87
+            ]
88
+          },
89
+          onErrors: config.dev.notifyOnErrors
90
+            ? utils.createNotifierCallback()
91
+            : undefined
92
+        })
93
+      )
94
+
95
+      resolve(devWebpackConfig)
96
+    }
97
+  })
98
+})

+ 181
- 0
build/webpack.prod.conf.js Просмотреть файл

@@ -0,0 +1,181 @@
1
+'use strict'
2
+const path = require('path')
3
+const utils = require('./utils')
4
+const webpack = require('webpack')
5
+const config = require('../config')
6
+const merge = require('webpack-merge')
7
+const baseWebpackConfig = require('./webpack.base.conf')
8
+const CopyWebpackPlugin = require('copy-webpack-plugin')
9
+const HtmlWebpackPlugin = require('html-webpack-plugin')
10
+const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')
11
+const MiniCssExtractPlugin = require('mini-css-extract-plugin')
12
+const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
13
+const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
14
+
15
+function resolve(dir) {
16
+  return path.join(__dirname, '..', dir)
17
+}
18
+
19
+const env = require('../config/prod.env')
20
+
21
+// For NamedChunksPlugin
22
+const seen = new Set()
23
+const nameLength = 4
24
+
25
+const webpackConfig = merge(baseWebpackConfig, {
26
+  mode: 'production',
27
+  module: {
28
+    rules: utils.styleLoaders({
29
+      sourceMap: config.build.productionSourceMap,
30
+      extract: true,
31
+      usePostCSS: true
32
+    })
33
+  },
34
+  devtool: config.build.productionSourceMap ? config.build.devtool : false,
35
+  output: {
36
+    path: config.build.assetsRoot,
37
+    filename: utils.assetsPath('js/[name].[chunkhash:8].js'),
38
+    chunkFilename: utils.assetsPath('js/[name].[chunkhash:8].js')
39
+  },
40
+  plugins: [
41
+    // http://vuejs.github.io/vue-loader/en/workflow/production.html
42
+    new webpack.DefinePlugin({
43
+      'process.env': env
44
+    }),
45
+    // extract css into its own file
46
+    new MiniCssExtractPlugin({
47
+      filename: utils.assetsPath('css/[name].[contenthash:8].css'),
48
+      chunkFilename: utils.assetsPath('css/[name].[contenthash:8].css')
49
+    }),
50
+    // generate dist index.html with correct asset hash for caching.
51
+    // you can customize output by editing /index.html
52
+    // see https://github.com/ampedandwired/html-webpack-plugin
53
+    new HtmlWebpackPlugin({
54
+      filename: config.build.index,
55
+      template: 'index.html',
56
+      inject: true,
57
+      favicon: resolve('favicon.ico'),
58
+      title: 'wukong',
59
+      minify: {
60
+        removeComments: true,
61
+        collapseWhitespace: true,
62
+        removeAttributeQuotes: true
63
+        // more options:
64
+        // https://github.com/kangax/html-minifier#options-quick-reference
65
+      }
66
+      // default sort mode uses toposort which cannot handle cyclic deps
67
+      // in certain cases, and in webpack 4, chunk order in HTML doesn't
68
+      // matter anyway
69
+    }),
70
+    new ScriptExtHtmlWebpackPlugin({
71
+      //`runtime` must same as runtimeChunk name. default is `runtime`
72
+      inline: /runtime\..*\.js$/
73
+    }),
74
+    // keep chunk.id stable when chunk has no name
75
+    new webpack.NamedChunksPlugin(chunk => {
76
+      if (chunk.name) {
77
+        return chunk.name
78
+      }
79
+      const modules = Array.from(chunk.modulesIterable)
80
+      if (modules.length > 1) {
81
+        const hash = require('hash-sum')
82
+        const joinedHash = hash(modules.map(m => m.id).join('_'))
83
+        let len = nameLength
84
+        while (seen.has(joinedHash.substr(0, len))) len++
85
+        seen.add(joinedHash.substr(0, len))
86
+        return `chunk-${joinedHash.substr(0, len)}`
87
+      } else {
88
+        return modules[0].id
89
+      }
90
+    }),
91
+    // keep module.id stable when vender modules does not change
92
+    new webpack.HashedModuleIdsPlugin(),
93
+    // copy custom static assets
94
+    new CopyWebpackPlugin([
95
+      {
96
+        from: path.resolve(__dirname, '../static'),
97
+        to: config.build.assetsSubDirectory,
98
+        ignore: ['.*']
99
+      }
100
+    ])
101
+  ],
102
+  optimization: {
103
+    splitChunks: {
104
+      chunks: 'all',
105
+      cacheGroups: {
106
+        libs: {
107
+          name: 'chunk-libs',
108
+          test: /[\\/]node_modules[\\/]/,
109
+          priority: 10,
110
+          chunks: 'initial' // 只打包初始时依赖的第三方
111
+        },
112
+        elementUI: {
113
+          name: 'chunk-elementUI', // 单独将 elementUI 拆包
114
+          priority: 20, // 权重要大于 libs 和 app 不然会被打包进 libs 或者 app
115
+          test: /[\\/]node_modules[\\/]element-ui[\\/]/
116
+        }
117
+      }
118
+    },
119
+    runtimeChunk: 'single',
120
+    minimizer: [
121
+      new UglifyJsPlugin({
122
+        uglifyOptions: {
123
+          mangle: {
124
+            safari10: true
125
+          },
126
+          compress: {
127
+            drop_console: true
128
+          }
129
+        },
130
+        sourceMap: config.build.productionSourceMap,
131
+        cache: true,
132
+        parallel: true
133
+      }),
134
+      // Compress extracted CSS. We are using this plugin so that possible
135
+      // duplicated CSS from different components can be deduped.
136
+      new OptimizeCSSAssetsPlugin()
137
+    ]
138
+  }
139
+})
140
+
141
+if (config.build.productionGzip) {
142
+  const CompressionWebpackPlugin = require('compression-webpack-plugin')
143
+
144
+  webpackConfig.plugins.push(
145
+    new CompressionWebpackPlugin({
146
+      asset: '[path].gz[query]',
147
+      algorithm: 'gzip',
148
+      test: new RegExp(
149
+        '\\.(' + config.build.productionGzipExtensions.join('|') + ')$'
150
+      ),
151
+      threshold: 10240,
152
+      minRatio: 0.8
153
+    })
154
+  )
155
+}
156
+
157
+if (config.build.generateAnalyzerReport || config.build.bundleAnalyzerReport) {
158
+  const BundleAnalyzerPlugin = require('webpack-bundle-analyzer')
159
+    .BundleAnalyzerPlugin
160
+
161
+  if (config.build.bundleAnalyzerReport) {
162
+    webpackConfig.plugins.push(
163
+      new BundleAnalyzerPlugin({
164
+        analyzerPort: 8080,
165
+        generateStatsFile: false
166
+      })
167
+    )
168
+  }
169
+
170
+  if (config.build.generateAnalyzerReport) {
171
+    webpackConfig.plugins.push(
172
+      new BundleAnalyzerPlugin({
173
+        analyzerMode: 'static',
174
+        reportFilename: 'bundle-report.html',
175
+        openAnalyzer: false
176
+      })
177
+    )
178
+  }
179
+}
180
+
181
+module.exports = webpackConfig

+ 8
- 0
config/dev.env.js Просмотреть файл

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

+ 101
- 0
config/index.js Просмотреть файл

@@ -0,0 +1,101 @@
1
+'use strict'
2
+// Template version: 1.2.6
3
+// see http://vuejs-templates.github.io/webpack for documentation.
4
+
5
+const path = require('path')
6
+
7
+module.exports = {
8
+  dev: {
9
+    // Paths
10
+    assetsSubDirectory: 'static',
11
+    assetsPublicPath: '/',
12
+    proxyTable: {
13
+      '/api': {
14
+        target: 'http://192.168.1.50',
15
+        changeOrigin: true,
16
+        pathRewrite: {
17
+          '^/api': ''
18
+        }
19
+      },
20
+      '/file': {
21
+        target: 'http://192.168.1.116:8012/',
22
+        changeOrigin: true,
23
+        pathRewrite: {
24
+          '^/file': ''
25
+        }
26
+      }
27
+    },
28
+
29
+    // Various Dev Server settings
30
+    host: '0.0.0.0', // can be overwritten by process.env.HOST
31
+    port: 8090, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
32
+    autoOpenBrowser: false,
33
+    errorOverlay: true,
34
+    notifyOnErrors: false,
35
+    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
36
+
37
+    // Use Eslint Loader?
38
+    // If true, your code will be linted during bundling and
39
+    // linting errors and warnings will be shown in the console.
40
+    useEslint: true,
41
+    // If true, eslint errors and warnings will also be shown in the error overlay
42
+    // in the browser.
43
+    showEslintErrorsInOverlay: false,
44
+
45
+    /**
46
+     * Source Maps
47
+     */
48
+
49
+    // https://webpack.js.org/configuration/devtool/#development
50
+    devtool: 'cheap-source-map',
51
+
52
+    // CSS Sourcemaps off by default because relative paths are "buggy"
53
+    // with this option, according to the CSS-Loader README
54
+    // (https://github.com/webpack/css-loader#sourcemaps)
55
+    // In our experience, they generally work as expected,
56
+    // just be aware of this issue when enabling this option.
57
+    cssSourceMap: false
58
+  },
59
+
60
+  build: {
61
+    // Template for index.html
62
+    index: path.resolve(__dirname, '../dist/index.html'),
63
+
64
+    // Paths
65
+    assetsRoot: path.resolve(__dirname, '../dist'),
66
+    assetsSubDirectory: 'static',
67
+
68
+    /**
69
+     * You can set by youself according to actual condition
70
+     * You will need to set this if you plan to deploy your site under a sub path,
71
+     * for example GitHub pages. If you plan to deploy your site to https://foo.github.io/bar/,
72
+     * then assetsPublicPath should be set to "/bar/".
73
+     * In most cases please use '/' !!!
74
+     */
75
+    assetsPublicPath: './',
76
+
77
+    /**
78
+     * Source Maps
79
+     */
80
+
81
+    productionSourceMap: false,
82
+    // https://webpack.js.org/configuration/devtool/#production
83
+    devtool: 'source-map',
84
+
85
+    // Gzip off by default as many popular static hosts such as
86
+    // Surge or Netlify already gzip all static assets for you.
87
+    // Before setting to `true`, make sure to:
88
+    // npm install --save-dev compression-webpack-plugin
89
+    productionGzip: false,
90
+    productionGzipExtensions: ['js', 'css'],
91
+
92
+    // Run the build command with an extra argument to
93
+    // View the bundle analyzer report after build finishes:
94
+    // `npm run build --report`
95
+    // Set to `true` or `false` to always turn it on or off
96
+    bundleAnalyzerReport: process.env.npm_config_report || false,
97
+
98
+    // `npm run build:prod --generate_report`
99
+    generateAnalyzerReport: process.env.npm_config_generate_report || false
100
+  }
101
+}

+ 5
- 0
config/prod.env.js Просмотреть файл

@@ -0,0 +1,5 @@
1
+'use strict'
2
+module.exports = {
3
+  NODE_ENV: '"production"',
4
+  BASE_API: '"/index.php/"',
5
+}

Двоичные данные
favicon.ico Просмотреть файл


+ 17
- 0
index.html Просмотреть файл

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

+ 115
- 0
package.json Просмотреть файл

@@ -0,0 +1,115 @@
1
+{
2
+  "name": "5kcrm",
3
+  "version": "11.0.0",
4
+  "description": "",
5
+  "author": "5kcrm <service@5kcrm.com>",
6
+  "scripts": {
7
+    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
8
+    "start": "npm run dev",
9
+    "build": "node build/build.js",
10
+    "build:report": "npm_config_report=true npm run build",
11
+    "lint": "eslint --ext .js,.vue src --fix",
12
+    "test": "npm run lint"
13
+  },
14
+  "dependencies": {
15
+    "@chenfengyuan/vue-qrcode": "^1.0.2",
16
+    "@fullcalendar/core": "^4.3.1",
17
+    "@fullcalendar/daygrid": "^4.3.0",
18
+    "@fullcalendar/interaction": "^4.3.0",
19
+    "@fullcalendar/list": "^4.3.0",
20
+    "@fullcalendar/timegrid": "^4.3.0",
21
+    "@fullcalendar/timeline": "^4.3.0",
22
+    "@fullcalendar/vue": "^4.3.1",
23
+    "@tinymce/tinymce-vue": "^3.2.0",
24
+    "axios": "0.18.0",
25
+    "babel-polyfill": "^6.26.0",
26
+    "clipboard": "^2.0.4",
27
+    "echarts": "4.3.0",
28
+    "el-bigdata-table": "^1.0.32",
29
+    "element-ui": "^2.12.0",
30
+    "file-saver": "^2.0.1",
31
+    "id-validator": "^1.3.0",
32
+    "js-cookie": "2.2.0",
33
+    "js-md5": "^0.7.3",
34
+    "lockr": "^0.8.5",
35
+    "normalize.css": "7.0.0",
36
+    "nprogress": "0.2.0",
37
+    "numeral": "^2.0.6",
38
+    "nzh": "^1.0.4",
39
+    "pinyin-match": "^1.0.9",
40
+    "qrcodejs2": "0.0.2",
41
+    "throttle-debounce": "^2.1.0",
42
+    "vue": "2.5.17",
43
+    "vue-bus": "^1.1.0",
44
+    "vue-calendar-component": "^2.8.2",
45
+    "vue-cropper": "^0.4.8",
46
+    "vue-i18n": "^8.7.0",
47
+    "vue-moment": "^4.0.0",
48
+    "vue-radial-progress": "^0.2.10",
49
+    "vue-router": "3.0.1",
50
+    "vue2-animate": "^2.1.2",
51
+    "vuedraggable": "^2.16.0",
52
+    "vuex": "3.0.1",
53
+    "xlsx": "^0.14.1",
54
+    "xss": "^1.0.6"
55
+  },
56
+  "devDependencies": {
57
+    "autoprefixer": "8.5.0",
58
+    "babel-core": "6.26.0",
59
+    "babel-eslint": "8.2.6",
60
+    "babel-helper-vue-jsx-merge-props": "2.0.3",
61
+    "babel-loader": "7.1.5",
62
+    "babel-plugin-syntax-jsx": "6.18.0",
63
+    "babel-plugin-transform-runtime": "6.23.0",
64
+    "babel-plugin-transform-vue-jsx": "3.7.0",
65
+    "babel-preset-env": "1.7.0",
66
+    "babel-preset-stage-2": "6.24.1",
67
+    "chalk": "2.4.1",
68
+    "copy-webpack-plugin": "4.5.2",
69
+    "css-loader": "1.0.0",
70
+    "eslint": "4.19.1",
71
+    "eslint-friendly-formatter": "4.0.1",
72
+    "eslint-loader": "2.0.0",
73
+    "eslint-plugin-vue": "4.7.1",
74
+    "eventsource-polyfill": "0.9.6",
75
+    "file-loader": "1.1.11",
76
+    "friendly-errors-webpack-plugin": "1.7.0",
77
+    "html-webpack-plugin": "4.0.0-alpha",
78
+    "mini-css-extract-plugin": "0.4.1",
79
+    "node-notifier": "5.2.1",
80
+    "node-sass": "^4.7.2",
81
+    "optimize-css-assets-webpack-plugin": "5.0.0",
82
+    "ora": "3.0.0",
83
+    "path-to-regexp": "2.4.0",
84
+    "portfinder": "1.0.16",
85
+    "postcss-import": "12.0.0",
86
+    "postcss-loader": "2.1.6",
87
+    "postcss-url": "7.3.2",
88
+    "rimraf": "2.6.2",
89
+    "sass-loader": "7.0.3",
90
+    "sass-resources-loader": "^2.0.0",
91
+    "script-ext-html-webpack-plugin": "2.0.1",
92
+    "semver": "5.5.0",
93
+    "shelljs": "0.8.2",
94
+    "svg-sprite-loader": "^4.1.3",
95
+    "uglifyjs-webpack-plugin": "1.2.7",
96
+    "url-loader": "1.0.1",
97
+    "vue-loader": "15.3.0",
98
+    "vue-style-loader": "4.1.2",
99
+    "vue-template-compiler": "2.5.17",
100
+    "webpack": "4.16.5",
101
+    "webpack-bundle-analyzer": "^2.13.1",
102
+    "webpack-cli": "3.1.0",
103
+    "webpack-dev-server": "3.1.5",
104
+    "webpack-merge": "4.1.4"
105
+  },
106
+  "engines": {
107
+    "node": ">= 6.0.0",
108
+    "npm": ">= 3.0.0"
109
+  },
110
+  "browserslist": [
111
+    "> 1%",
112
+    "last 2 versions",
113
+    "not ie <= 8"
114
+  ]
115
+}

+ 129
- 0
src/App.vue Просмотреть файл

@@ -0,0 +1,129 @@
1
+<template>
2
+  <div id="app">
3
+    <router-view class="router-view" />
4
+    <vue-picture-viewer
5
+      v-if="showPreviewImg"
6
+      :img-data="previewImgs"
7
+      :select-index="previewIndex"
8
+      @close-viewer="showPreviewImg=false"/>
9
+    <xr-import
10
+      v-if="showFixImport"
11
+      :process-status="crmImportStatus"
12
+      @click.native="fixImportClick"/>
13
+    <c-r-m-import
14
+      :show.sync="showCRMImport"
15
+      :crm-type="crmType"
16
+      :props="crmProps"
17
+      :cache-show.sync="cacheShow"
18
+      :cache-done="cacheDone"
19
+      @status="crmImportChange"
20
+      @close="crmImportClose"/>
21
+  </div>
22
+</template>
23
+
24
+<script>
25
+/** 常用图片预览创建组件 */
26
+import VuePictureViewer from '@/components/VuePictureViewer/index'
27
+import XrImport from '@/components/XrImport'
28
+import XrImportMixins from '@/components/XrImport/XrImportMixins'
29
+import CRMImport from '@/components/CRMImport'
30
+import { mapGetters } from 'vuex'
31
+import cache from '@/utils/cache'
32
+
33
+
34
+export default {
35
+  name: 'App',
36
+  components: {
37
+    VuePictureViewer,
38
+    XrImport,
39
+    CRMImport
40
+  },
41
+  mixins: [XrImportMixins],
42
+  data() {
43
+    return {
44
+      showPreviewImg: false,
45
+      previewIndex: 0,
46
+      previewImgs: []
47
+    }
48
+  },
49
+  computed: {
50
+    ...mapGetters(['activeIndex', 'userInfo'])
51
+  },
52
+  watch: {
53
+    $route(to, from) {
54
+      this.showPreviewImg = false // 切换页面隐藏图片预览
55
+    }
56
+  },
57
+  mounted() {
58
+    this.addBus()
59
+    this.addDocumentVisibilityChange()
60
+    this.setMinHeight()
61
+  },
62
+  methods: {
63
+    addDocumentVisibilityChange() {
64
+      // 网页当前状态判断
65
+      // hidden,
66
+      var state, visibilityChange
67
+      if (typeof document.hidden !== 'undefined') {
68
+        // hidden = 'hidden'
69
+        visibilityChange = 'visibilitychange'
70
+        state = 'visibilityState'
71
+      } else if (typeof document.mozHidden !== 'undefined') {
72
+        // hidden = 'mozHidden'
73
+        visibilityChange = 'mozvisibilitychange'
74
+        state = 'mozVisibilityState'
75
+      } else if (typeof document.msHidden !== 'undefined') {
76
+        // hidden = 'msHidden'
77
+        visibilityChange = 'msvisibilitychange'
78
+        state = 'msVisibilityState'
79
+      } else if (typeof document.webkitHidden !== 'undefined') {
80
+        // hidden = 'webkitHidden'
81
+        visibilityChange = 'webkitvisibilitychange'
82
+        state = 'webkitVisibilityState'
83
+      }
84
+      // 添加监听器,在title里显示状态变化
85
+      document.addEventListener(visibilityChange, () => {
86
+        if (document[state] == 'visible') {
87
+          cache.updateAxiosHeaders()
88
+        }
89
+        this.$bus.emit('document-visibility', document[state])
90
+      }, false)
91
+    },
92
+
93
+    addBus() {
94
+      var self = this
95
+      this.$bus.on('preview-image-bus', function(data) {
96
+        self.previewIndex = data.index
97
+        self.previewImgs = data.data
98
+        self.showPreviewImg = true
99
+      })
100
+    },
101
+
102
+    setMinHeight() {
103
+      this.$nextTick(() => {
104
+        const dpr = window.devicePixelRatio || 1
105
+        const clientWidth = document.body.clientWidth
106
+        const dom = document.getElementById('app')
107
+        if (dpr !== 1 && clientWidth > 1600) {
108
+          dom.style.minHeight = '800px'
109
+        } else if (dpr === 1 && clientWidth > 1600) {
110
+          dom.style.minWidth = '1650px'
111
+        } else {
112
+          // dom.style.minWidth = '1200px'
113
+          dom.style.minHeight = '605px'
114
+        }
115
+      })
116
+    }
117
+  }
118
+}
119
+</script>
120
+
121
+<style>
122
+#app {
123
+  width: 100%;
124
+  position: relative;
125
+  height: 100%;
126
+  min-width: 1200px;
127
+  min-height: 605px;
128
+}
129
+</style>

+ 31
- 0
src/api/admin/application.js Просмотреть файл

@@ -0,0 +1,31 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 应用列表接口
5
+ * @param {*} data
6
+ *
7
+ */
8
+export function adminConfigsetIndexAPI(data) {
9
+  return request({
10
+    url: 'admin/config_set/index',
11
+    method: 'post',
12
+    data: data
13
+  })
14
+}
15
+
16
+/**
17
+ * 应用状态改变
18
+ * @param {*} data
19
+ * id 应用ID
20
+ * status 1开启 0关闭
21
+ */
22
+export function adminConfigsetUpdateAPI(data) {
23
+  return request({
24
+    url: 'admin/config_set/update',
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}

+ 28
- 0
src/api/admin/config.js Просмотреть файл

@@ -0,0 +1,28 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 企业首页
5
+ * @param {*} data
6
+ */
7
+export function adminSystemSaveAPI(data) {
8
+  return request({
9
+    url: 'admin/system/save',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 企业首页
20
+ * @param {*} data
21
+ */
22
+export function adminSystemIndexAPI(data) {
23
+  return request({
24
+    url: 'admin/system/index',
25
+    method: 'post',
26
+    data: data
27
+  })
28
+}

+ 563
- 0
src/api/admin/crm.js Просмотреть файл

@@ -0,0 +1,563 @@
1
+import request from '@/utils/request'
2
+
3
+export function businessGroupListAPI(data) {
4
+  return request({
5
+    url: 'crm/business_status/type',
6
+    method: 'post',
7
+    data: data,
8
+    headers: {
9
+      'Content-Type': 'application/json;charset=UTF-8'
10
+    }
11
+  })
12
+}
13
+
14
+export function businessGroupAddAPI(data) {
15
+  return request({
16
+    url: 'crm/business_status/save',
17
+    method: 'post',
18
+    headers: {
19
+      'Content-Type': 'application/json;charset=UTF-8'
20
+    },
21
+    data: data
22
+  })
23
+}
24
+
25
+/**
26
+ * 商机状态组状态修改
27
+ * @param {*} data
28
+ */
29
+export function businessGroupUpdateStatusAPI(data) {
30
+  return request({
31
+    url: 'crm/business_status/enables',
32
+    method: 'post',
33
+    data: data
34
+  })
35
+}
36
+
37
+/**
38
+ * 商机状态组详情
39
+ * @param {*} data
40
+ */
41
+export function businessGroupReadAPI(data) {
42
+  return request({
43
+    url: 'crm/business_status/read',
44
+    method: 'post',
45
+    data: data
46
+  })
47
+}
48
+
49
+/**
50
+ * 商机状态组编辑
51
+ * @param {*} data
52
+ */
53
+export function businessGroupUpdateAPI(data) {
54
+  return request({
55
+    url: 'crm/business_status/update',
56
+    method: 'post',
57
+    data: data
58
+  })
59
+}
60
+
61
+/**
62
+ * 商机状态组删除
63
+ * @param {*} data
64
+ */
65
+export function businessGroupDeleteAPI(data) {
66
+  return request({
67
+    url: 'crm/business_status/delete',
68
+    method: 'post',
69
+    data: data
70
+  })
71
+}
72
+
73
+/**
74
+ * 自定义字段(字段数据)的添加编辑操作
75
+ * @param {*} data
76
+ */
77
+export function customFieldHandleAPI(data) {
78
+  return request({
79
+    url: 'admin/field/update',
80
+    method: 'post',
81
+    data: data
82
+  })
83
+}
84
+
85
+/**
86
+ * 自定义字段(字段数据)的详情
87
+ * @param {*} data
88
+ */
89
+export function customFieldListAPI(data) {
90
+  return request({
91
+    url: `admin/field/read`,
92
+    method: 'post',
93
+    data
94
+  })
95
+}
96
+
97
+/**
98
+ * 办公审批的自定义字段
99
+ * @param {*} data
100
+ */
101
+export function oaExamineFieldListAPI(data) {
102
+  return request({
103
+    url: `admin/field/read`,
104
+    method: 'post',
105
+    data
106
+  })
107
+}
108
+
109
+/**
110
+ * 办公审批自定义字段保存
111
+ * @param {*} data
112
+ */
113
+export function oaFieldHandleAPI(data) {
114
+  return request({
115
+    url: 'admin/field/update',
116
+    method: 'post',
117
+    data: data
118
+  })
119
+}
120
+
121
+/**
122
+ * 自定义字段(字段数据)的列表更新时间
123
+ * @param {*} data
124
+ */
125
+export function customFieldIndexAPI(data) {
126
+  return request({
127
+    url: 'admin/field/index',
128
+    method: 'post',
129
+    data: data
130
+  })
131
+}
132
+
133
+/**
134
+ * 产品类别 数据获取
135
+ * @param {*} data
136
+ */
137
+export function productCategoryIndexAPI(data) {
138
+  return request({
139
+    url: 'crm/product_category/index',
140
+    method: 'post',
141
+    data: data
142
+  })
143
+}
144
+
145
+/**
146
+ * 产品分类添加
147
+ * @param {*} data
148
+ */
149
+export function productCategorySaveAPI(data) {
150
+  const url = data.id ? 'update' : 'save'
151
+  return request({
152
+    url: 'crm/product_category/' + url,
153
+    method: 'post',
154
+    data: data,
155
+    headers: {
156
+      'Content-Type': 'application/json;charset=UTF-8'
157
+    }
158
+  })
159
+}
160
+
161
+/**
162
+ * 产品分类删除
163
+ * @param {*} data
164
+ */
165
+export function productCategoryDeleteAPI(data) {
166
+  return request({
167
+    url: `crm/product_category/delete`,
168
+    method: 'post',
169
+    data
170
+  })
171
+}
172
+
173
+/**
174
+ * 客户保护规则
175
+ * @param {*} data
176
+ */
177
+export function crmSettingConfigAPI(data) {
178
+  return request({
179
+    url: 'crmCustomer/updateRulesSetting',
180
+    method: 'post',
181
+    data: data
182
+  })
183
+}
184
+
185
+/**
186
+ * 客户保护规则
187
+ * @param {*} data
188
+ */
189
+export function crmSettingConfigDataAPI(data) {
190
+  return request({
191
+    url: 'crm/setting/configData',
192
+    method: 'post',
193
+    data: data
194
+  })
195
+}
196
+
197
+/**
198
+ * 部门业绩目标列表
199
+ * @param {*} data
200
+ */
201
+export function crmAchievementIndex(data) {
202
+  return request({
203
+    url: 'crm/achievement/index',
204
+    method: 'post',
205
+    data: data
206
+  })
207
+}
208
+
209
+// crmAchievementIndexForuser
210
+/**
211
+ * 员工业绩目标列表
212
+ * @param {*} data
213
+ */
214
+export function crmAchievementIndexForuser(data) {
215
+  return request({
216
+    url: 'crm/achievement/indexForuser',
217
+    method: 'post',
218
+    data: data
219
+  })
220
+}
221
+
222
+/**
223
+ * 业绩目标编辑接口
224
+ * @param {*} data
225
+ */
226
+export function crmAchievementUpdate(data) {
227
+  return request({
228
+    url: 'crm/achievement/update',
229
+    method: 'post',
230
+    headers: {
231
+      'Content-Type': 'application/json;charset=UTF-8'
232
+    },
233
+    data: data
234
+  })
235
+}
236
+
237
+
238
+/**
239
+ * 新增业绩目标
240
+ * @param {*} data
241
+ */
242
+export function crmAchievementAdd(data) {
243
+  return request({
244
+    url: 'crm/achievement/save',
245
+    method: 'post',
246
+    headers: {
247
+      'Content-Type': 'application/json;charset=UTF-8'
248
+    },
249
+    data: data
250
+  })
251
+}
252
+
253
+
254
+/**
255
+ * 删除业绩目标
256
+ * @param {*} data
257
+ */
258
+export function crmAchievementDelete(data) {
259
+  return request({
260
+    url: 'crm/achievement/delete',
261
+    method: 'post',
262
+    data: data
263
+  })
264
+}
265
+
266
+/**
267
+ * 记录类型 数据
268
+ * @param {*} data
269
+ */
270
+export function crmSettingRecordListAPI(data) {
271
+  return request({
272
+    url: 'crm/setting/recordList',
273
+    method: 'post',
274
+    data: data
275
+  })
276
+}
277
+
278
+/**
279
+ * 记录类型 编辑
280
+ * @param {*} data
281
+ */
282
+export function crmSettingRecordEditAPI(data) {
283
+  return request({
284
+    url: 'crm/setting/recordEdit',
285
+    method: 'post',
286
+    data: data,
287
+    headers: {
288
+      'Content-Type': 'application/json;charset=UTF-8'
289
+    }
290
+  })
291
+}
292
+
293
+/**
294
+ * 合同到期提醒 设置
295
+ * @param {*} data
296
+ */
297
+export function crmSettingContractDayAPI(data) {
298
+  return request({
299
+    url: 'crm/setting/contractDay',
300
+    method: 'post',
301
+    data: data
302
+  })
303
+}
304
+
305
+/**
306
+ * 拥有、锁定客户数限制
307
+ * @param {*} data
308
+ */
309
+export function crmSettingCustomerConfigListAPI(data) {
310
+  return request({
311
+    url: 'crm/setting/customerConfigList',
312
+    method: 'post',
313
+    data: data
314
+  })
315
+}
316
+
317
+/**
318
+ * 拥有、锁定客户数限制 - 创建 编辑
319
+ * @param {*} data
320
+ */
321
+export function crmSettingCustomerConfigSetAPI(data) {
322
+  return request({
323
+    url: 'crm/setting/customerConfigSave',
324
+    method: 'post',
325
+    data: data
326
+  })
327
+}
328
+
329
+/**
330
+ * 拥有、锁定客户数限制 - 删除
331
+ * @param {*} data
332
+ */
333
+export function crmSettingCustomerConfigDelAPI(data) {
334
+  return request({
335
+    url: 'crm/setting/customerConfigDel',
336
+    method: 'post',
337
+    data: data
338
+  })
339
+}
340
+
341
+/**
342
+ * 客户回访查询
343
+ * @param {*} data
344
+ */
345
+export function returnVisitConfigQueryAPI(data) {
346
+  return request({
347
+    url: 'crm/setting/getVisitDay',
348
+    method: 'post',
349
+    data: data
350
+  })
351
+}
352
+
353
+/**
354
+ * 客户回访设置
355
+ * @param {*} data
356
+ */
357
+export function returnVisitConfigSetAPI(data) {
358
+  return request({
359
+    url: 'crm/setting/setVisitDay',
360
+    method: 'post',
361
+    data: data
362
+  })
363
+}
364
+
365
+/**
366
+ * 编号查询
367
+ * @param {*} data
368
+ */
369
+export function sysConfigNumberQueryAPI(data) {
370
+  return request({
371
+    url: 'crm/setting/numberSequenceList',
372
+    method: 'post',
373
+    data: data
374
+  })
375
+}
376
+
377
+/**
378
+ * 编号设置
379
+ * @param {*} data
380
+ */
381
+export function sysConfigNumberSetAPI(data) {
382
+  return request({
383
+    url: 'crm/setting/setNumber',
384
+    method: 'post',
385
+    headers: {
386
+      'Content-Type': 'application/json;charset=UTF-8'
387
+    },
388
+    data: data
389
+  })
390
+}
391
+
392
+/** ****************自定义模板***********************/
393
+
394
+/**
395
+ * 查询 打印模板列表
396
+ * @param {*} data
397
+ */
398
+export function printTemplateListAPI(data) {
399
+  return request({
400
+    url: 'admin/printing/index',
401
+    method: 'post',
402
+    data: data,
403
+    headers: {
404
+      'Content-Type': 'application/json;charset=UTF-8'
405
+    }
406
+  })
407
+}
408
+
409
+/**
410
+ * 查询指定打印模板
411
+ * templateId
412
+ * @param {*} data
413
+ */
414
+export function printTemplateByIdAPI(data) {
415
+  return request({
416
+    url: 'crmPrint/queryPrintTemplateById',
417
+    method: 'post',
418
+    data: data
419
+  })
420
+}
421
+
422
+/**
423
+ * 添加模板 打印模板
424
+ * templateName 模板名称
425
+ * type 关联对象
426
+ * content模板
427
+ * @param {*} data
428
+ */
429
+export function printAddTemplateAPI(data) {
430
+  return request({
431
+    url: 'admin/printing/create',
432
+    method: 'post',
433
+    data: data,
434
+    headers: {
435
+      'Content-Type': 'application/json;charset=UTF-8'
436
+    }
437
+  })
438
+}
439
+
440
+/**
441
+ * 编辑模板 打印模板
442
+ * templateName 模板名称
443
+ * type 关联对象
444
+ * content模板
445
+ * @param {*} data
446
+ */
447
+export function printUpdateTemplateAPI(data) {
448
+  return request({
449
+    url: 'admin/printing/update',
450
+    method: 'post',
451
+    data: data,
452
+    headers: {
453
+      'Content-Type': 'application/json;charset=UTF-8'
454
+    }
455
+  })
456
+}
457
+
458
+/**
459
+ * 删除指定打印模板
460
+ * templateId
461
+ * @param {*} data
462
+ */
463
+export function printDeleteTemplateAPI(data) {
464
+  return request({
465
+    url: 'admin/printing/delete',
466
+    method: 'post',
467
+    data: data
468
+  })
469
+}
470
+
471
+/**
472
+ * 模块对应字段查询
473
+ * type
474
+ * @param {*} data
475
+ */
476
+export function printQueryFieldsAPI(data) {
477
+  return request({
478
+    url: 'admin/printing/field',
479
+    method: 'post',
480
+    data: data
481
+  })
482
+}
483
+
484
+/**
485
+ * 模板校准为内容
486
+ * type
487
+ * @param {*} data
488
+ */
489
+export function printPrintAPI(data) {
490
+  return request({
491
+    url: 'crmPrint/print',
492
+    method: 'post',
493
+    data: data
494
+  })
495
+}
496
+
497
+/**
498
+ * 模板复制
499
+ * type
500
+ * @param {*} data
501
+ */
502
+export function printCopyTemplateAPI(data) {
503
+  return request({
504
+    url: 'admin/printing/copy',
505
+    method: 'post',
506
+    data: data
507
+  })
508
+}
509
+
510
+/**
511
+ * 保存打印记录
512
+ * type
513
+ * @param {*} data
514
+ */
515
+export function printSaveRecordAPI(data) {
516
+  return request({
517
+    url: 'crmPrint/savePrintRecord',
518
+    method: 'post',
519
+    data: data,
520
+    headers: {
521
+      'Content-Type': 'application/json;charset=UTF-8'
522
+    }
523
+  })
524
+}
525
+
526
+/**
527
+ * 查询打印记录
528
+ * type
529
+ * @param {*} data
530
+ */
531
+export function printQueryPrintRecordAPI(data) {
532
+  return request({
533
+    url: 'crmPrint/queryPrintRecord',
534
+    method: 'post',
535
+    data: data
536
+  })
537
+}
538
+
539
+/**
540
+ * 打印记录详情
541
+ * type
542
+ * @param {*} data
543
+ */
544
+export function printRecordDetailAPI(data) {
545
+  return request({
546
+    url: 'crmPrint/queryPrintRecordById',
547
+    method: 'post',
548
+    data: data
549
+  })
550
+}
551
+
552
+/**
553
+ * 打印预览
554
+ * type
555
+ * @param {*} data
556
+ */
557
+export function printPreviewAPI(data) {
558
+  return request({
559
+    url: 'crmPrint/preview',
560
+    method: 'post',
561
+    data: data
562
+  })
563
+}

+ 173
- 0
src/api/admin/employeeDep.js Просмотреть файл

@@ -0,0 +1,173 @@
1
+import request from '@/utils/request'
2
+
3
+export function depDeleteAPI(data) {
4
+  return request({
5
+    url: 'admin/structures/delete',
6
+    method: 'post',
7
+    data
8
+  })
9
+}
10
+
11
+export function depEditAPI(data) {
12
+  return request({
13
+    url: 'admin/structures/update',
14
+    method: 'post',
15
+    data: data,
16
+    headers: {
17
+      'Content-Type': 'application/json;charset=UTF-8'
18
+    }
19
+  })
20
+}
21
+
22
+export function depSaveAPI(data) {
23
+  return request({
24
+    url: 'admin/structures/save',
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}
32
+
33
+export function userEditAPI(params) {
34
+  return request({
35
+    url: 'admin/users/update',
36
+    method: 'post',
37
+    data: params,
38
+    headers: {
39
+      'Content-Type': 'application/json;charset=UTF-8'
40
+    }
41
+  })
42
+}
43
+
44
+export function userAddAPI(params) {
45
+  return request({
46
+    url: 'admin/users/save',
47
+    method: 'post',
48
+    data: params,
49
+    headers: {
50
+      'Content-Type': 'application/json;charset=UTF-8'
51
+    }
52
+  })
53
+}
54
+
55
+// 角色列表
56
+export function roleListAPI(data) {
57
+  return request({
58
+    url: 'admin/groups/index',
59
+    method: 'post',
60
+    data: data
61
+  })
62
+}
63
+
64
+/**
65
+ * 批量修改密码接口
66
+ * @param {*} data
67
+ * password
68
+ * id 用户数组
69
+ */
70
+export function adminUsersUpdatePwdAPI(data) {
71
+  return request({
72
+    url: 'admin/users/updatePwd',
73
+    method: 'post',
74
+    data: data,
75
+    headers: {
76
+      'Content-Type': 'application/json;charset=UTF-8'
77
+    }
78
+  })
79
+}
80
+
81
+/**
82
+ * 编辑登录名
83
+ * @param {*} data
84
+ * username
85
+ * password
86
+ * id
87
+ */
88
+export function adminUsersUsernameEditAPI(data) {
89
+  return request({
90
+    url: 'admin/users/usernameEdit',
91
+    method: 'post',
92
+    data: data
93
+  })
94
+}
95
+
96
+/**
97
+ * 编辑登录名
98
+ * @param {*} data
99
+ * username
100
+ * password
101
+ * id
102
+ * 可修改管理员
103
+ */
104
+export function adminUsersManagerUsernameEditAPI(data) {
105
+  return request({
106
+    url: 'adminUser/usernameEditByManager',
107
+    method: 'post',
108
+    data: data
109
+  })
110
+}
111
+
112
+/**
113
+ * 用户状态修改
114
+ * @param {*} data
115
+ */
116
+export function usersEditStatusAPI(data) {
117
+  return request({
118
+    url: 'admin/users/enables',
119
+    method: 'post',
120
+    data: data,
121
+    headers: {
122
+      'Content-Type': 'application/json;charset=UTF-8'
123
+    }
124
+  })
125
+}
126
+
127
+/**
128
+ * 用户导入模板
129
+ * @param {*} data
130
+ */
131
+// export const userImportTemplateURL = 'https://www.72crm.com/npm/static/user_import.xlsx'
132
+export function userImportTemplateAPI(data) {
133
+  return request({
134
+    url: 'admin/users/excelDownload',
135
+    method: 'get',
136
+    data: data,
137
+    responseType: 'blob'
138
+  })
139
+}
140
+
141
+/**
142
+ * 用户导入
143
+ * @param {*} data
144
+ */
145
+export function userExcelImportAPI(data) {
146
+  var param = new FormData()
147
+  Object.keys(data).forEach(key => {
148
+    param.append(key, data[key])
149
+  })
150
+  return request({
151
+    url: 'admin/users/import',
152
+    method: 'post',
153
+    data: param,
154
+    headers: {
155
+      'Content-Type': 'multipart/form-data'
156
+    },
157
+    timeout: 60000
158
+  })
159
+}
160
+
161
+/**
162
+ * 下载用户导入错误数据
163
+ * @param {*} data
164
+ *
165
+ */
166
+export function userErrorExcelDownAPI(data) {
167
+  return request({
168
+    url: 'admin/file/download',
169
+    method: 'post',
170
+    data: data,
171
+    responseType: 'blob'
172
+  })
173
+}

+ 118
- 0
src/api/admin/file.js Просмотреть файл

@@ -0,0 +1,118 @@
1
+/*
2
+ * @Description: 悟空软件
3
+ * @Author: 悟空
4
+ * @Date: 2020-06-03 09:10:23
5
+ * @LastEditTime: 2020-07-01 10:23:57
6
+ * @LastEditors: yang
7
+ */
8
+import request from '@/utils/request'
9
+
10
+/**
11
+ * 通过批次ID删除文件
12
+ */
13
+export function adminFileDeleteByBatchIdAPI(data) {
14
+  return request({
15
+    url: 'adminFile/deleteByBatchId',
16
+    method: 'post',
17
+    data: data,
18
+    headers: {
19
+      'Content-Type': 'application/json;charset=UTF-8'
20
+    }
21
+  })
22
+}
23
+
24
+/**
25
+ * 通过ID删除文件
26
+ */
27
+export function adminFileDeleteByIdAPI(id) {
28
+  return request({
29
+    url: `adminFile/deleteById/${id}`,
30
+    method: 'post'
31
+  })
32
+}
33
+
34
+/**
35
+ * 下载文件接口
36
+ */
37
+export function adminFileDownAPI(id) {
38
+  return request({
39
+    url: `adminFile/down/${id}`,
40
+    method: 'post',
41
+    responseType: 'blob'
42
+  })
43
+}
44
+
45
+/**
46
+ * 通过adminFile/down/${id}下载文件接口
47
+ * 后期使用 暂用 downloadFileAPI
48
+ */
49
+export function adminFileDownByUrlAPI(url) {
50
+  return request({
51
+    url: url,
52
+    method: 'post',
53
+    responseType: 'blob'
54
+  })
55
+}
56
+
57
+/**
58
+ * 通过ID查询文件
59
+ */
60
+export function adminFileQueryByIdAPI(id) {
61
+  return request({
62
+    url: `adminFile/queryById/${id}`,
63
+    method: 'post'
64
+  })
65
+}
66
+
67
+/**
68
+ * 通过批次ID查询文件列表
69
+ */
70
+export function adminFileQueryFileListAPI(id) {
71
+  return request({
72
+    url: `adminFile/queryFileList/${id}`,
73
+    method: 'post'
74
+  })
75
+}
76
+
77
+/**
78
+ * 通过批次ID查询单个文件
79
+ */
80
+export function adminFileQueryOneByBatchIdAPI(id) {
81
+  return request({
82
+    url: `adminFile/queryOneByBatchId/${id}`,
83
+    method: 'post'
84
+  })
85
+}
86
+
87
+/**
88
+ * 修改附件名称
89
+ * @param {*} data
90
+ */
91
+export function adminFileRenameFileAPI(data) {
92
+  return request({
93
+    url: 'admin/file/update',
94
+    method: 'post',
95
+    data: data,
96
+    headers: {
97
+      'Content-Type': 'application/json;charset=UTF-8'
98
+    }
99
+  })
100
+}
101
+
102
+/**
103
+ * 上传文件
104
+ */
105
+export function adminFileUploadAPI(data) {
106
+  var param = new FormData()
107
+  Object.keys(data).forEach(key => {
108
+    param.append(key, data[key])
109
+  })
110
+  return request({
111
+    url: 'adminFile/upload',
112
+    method: 'post',
113
+    data: param,
114
+    headers: {
115
+      'Content-Type': 'multipart/form-data'
116
+    }
117
+  })
118
+}

+ 31
- 0
src/api/admin/init.js Просмотреть файл

@@ -0,0 +1,31 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 验证密码
5
+ * @param {*} data
6
+ */
7
+export function adminConfigVerifyPasswordAPI(data) {
8
+  return request({
9
+    url: 'admin/initialize/verification',
10
+    method: 'post',
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    },
14
+    data: data
15
+  })
16
+}
17
+
18
+/**
19
+ * 模块初始化
20
+ * @param {*} data
21
+ */
22
+export function adminConfigModuleInitDataAPI(data) {
23
+  return request({
24
+    url: 'admin/initialize/update',
25
+    method: 'post',
26
+    headers: {
27
+      'Content-Type': 'application/json;charset=UTF-8'
28
+    },
29
+    data: data
30
+  })
31
+}

+ 55
- 0
src/api/admin/oa.js Просмотреть файл

@@ -0,0 +1,55 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 审批类型列表
5
+ * @param {*} data
6
+ */
7
+export function oaExamineCategoryListAPI(data) {
8
+  return request({
9
+    url: 'oa/examine/category',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 审批类型的创建
17
+ * @param {*} data
18
+ */
19
+export function oaExamineCategorySaveAPI(data) {
20
+  return request({
21
+    url: `oa/examine/${data.id ? 'categoryUpdate' : 'categorySave'}`,
22
+    method: 'post',
23
+    headers: {
24
+      'Content-Type': 'application/json;charset=UTF-8'
25
+    },
26
+    data: data
27
+  })
28
+}
29
+
30
+/**
31
+ * 审批删除
32
+ * @param {*} data
33
+ */
34
+export function oaExamineCategoryDeleteAPI(data) {
35
+  return request({
36
+    url: 'oa/examine/categoryDelete',
37
+    method: 'post',
38
+    data: data
39
+  })
40
+}
41
+
42
+/**
43
+ * 审批状态(启用、停用)
44
+ * @param {*} data
45
+ */
46
+export function oaExamineCategoryEnablesAPI(data) {
47
+  return request({
48
+    url: 'oa/examine/categoryEnables',
49
+    method: 'post',
50
+    data: data,
51
+    headers: {
52
+      'Content-Type': 'application/json;charset=UTF-8'
53
+    }
54
+  })
55
+}

+ 110
- 0
src/api/admin/other.js Просмотреть файл

@@ -0,0 +1,110 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 设置日志欢迎语 oaCalendar/addOrUpdate
5
+ * @param {*} data
6
+ */
7
+export function sysSetLogWelcomeAPI(data) {
8
+  return request({
9
+    url: 'admin/dailyRule/setWelcome',
10
+    method: 'post',
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    },
14
+    data: data
15
+  })
16
+}
17
+
18
+/**
19
+ * 设置日志欢迎语
20
+ * @param {*} data
21
+ */
22
+export function sysGetLogWelcomeListAPI(data) {
23
+  return request({
24
+    url: 'admin/dailyRule/welcome',
25
+    method: 'post',
26
+    data: data
27
+  })
28
+}
29
+
30
+// /**
31
+//  * 根据id删除日志欢迎语
32
+//  * @param {*} data
33
+//  */
34
+// export function sysDeleteConfigByIdAPI(data) {
35
+//   return request({
36
+//     url: 'sysConfig/deleteConfigById',
37
+//     method: 'post',
38
+//     data: data
39
+//   })
40
+// }
41
+
42
+/**
43
+ * 添加/修改日程类型
44
+ * @param {*} data
45
+ */
46
+export function calendarAddOrUpdateAPI(data) {
47
+  return request({
48
+    url: `admin/dailyRule/${data.id ? 'setSchedule' : 'addSchedule'}`,
49
+    method: 'post',
50
+    data: data,
51
+    headers: {
52
+      'Content-Type': 'application/json;charset=UTF-8'
53
+    }
54
+  })
55
+}
56
+
57
+/**
58
+ * 查询日程类型
59
+ * @param {*} data
60
+ */
61
+export function calendarQueryTypeListAPI(data) {
62
+  return request({
63
+    url: 'admin/dailyRule/scheduleList',
64
+    method: 'post',
65
+    data: data,
66
+    headers: {
67
+      'Content-Type': 'application/json;charset=UTF-8'
68
+    }
69
+  })
70
+}
71
+
72
+/**
73
+ * 删除日程类型
74
+ * @param {*} typeId
75
+ */
76
+export function calendarDeleteAPI(data) {
77
+  return request({
78
+    url: `admin/dailyRule/delSchedule`,
79
+    method: 'post',
80
+    data
81
+  })
82
+}
83
+
84
+
85
+/**
86
+ * 查询日志规则接口
87
+ * @param {*} data
88
+ */
89
+export function oaLogRuleQueryAPI(data) {
90
+  return request({
91
+    url: 'admin/dailyRule/workLogRule',
92
+    method: 'post',
93
+    data: data
94
+  })
95
+}
96
+
97
+/**
98
+ * 设置日志规则接口
99
+ * @param {*} data
100
+ */
101
+export function oaLogRuleSetAPI(data) {
102
+  return request({
103
+    url: 'admin/dailyRule/setWorkLogRule',
104
+    method: 'post',
105
+    headers: {
106
+      'Content-Type': 'application/json;charset=UTF-8'
107
+    },
108
+    data
109
+  })
110
+}

+ 52
- 0
src/api/admin/project.js Просмотреть файл

@@ -0,0 +1,52 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 列表
5
+ * @param {*} data
6
+ */
7
+export function systemRoleQueryProjectRoleListAPI(data) {
8
+  return request({
9
+    url: 'admin/work/roles',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 角色
17
+ * @param {*} data
18
+ */
19
+export function systemMenuGetWorkMenuListAPI(data) {
20
+  return request({
21
+    url: 'admin/work/rules',
22
+    method: 'post',
23
+    data: data
24
+  })
25
+}
26
+
27
+/**
28
+ * 设置
29
+ * @param {*} data
30
+ */
31
+export function systemRoleSetWorkRoleAPI(data) {
32
+  return request({
33
+    url: `admin/work/${data.id ? 'updateRole' : 'saveRole'}`,
34
+    method: 'post',
35
+    headers: {
36
+      'Content-Type': 'application/json;charset=UTF-8'
37
+    },
38
+    data: data
39
+  })
40
+}
41
+
42
+/**
43
+ * 删除项目角色
44
+ */
45
+export function systemRoleDeleteWorkRoleAPI(data) {
46
+  return request({
47
+    url: 'admin/work/deleteRole',
48
+    method: 'post',
49
+    data: data
50
+  })
51
+}
52
+

+ 175
- 0
src/api/admin/role.js Просмотреть файл

@@ -0,0 +1,175 @@
1
+import request from '@/utils/request'
2
+
3
+// export function roleListFun(data) {
4
+//   return request({
5
+//     url: 'adminRole/getAllRoleList',
6
+//     method: 'post',
7
+//     data: data
8
+//   })
9
+// }
10
+
11
+// export function rulesList(data) {
12
+//   return request({
13
+//     url: 'adminMenu/getAllMenuList',
14
+//     method: 'post',
15
+//     data: data
16
+//   })
17
+// }
18
+
19
+export function roleAddAPI(data) {
20
+  return request({
21
+    url: 'admin/groups/save',
22
+    method: 'post',
23
+    data: data,
24
+    headers: {
25
+      'Content-Type': 'application/json;charset=UTF-8'
26
+    }
27
+  })
28
+}
29
+
30
+export function roleDeleteAPI(data) {
31
+  return request({
32
+    url: 'admin/groups/delete',
33
+    method: 'post',
34
+    data: data
35
+  })
36
+}
37
+
38
+export function roleUpdateAPI(data) {
39
+  return request({
40
+    url: 'admin/groups/update',
41
+    method: 'post',
42
+    data: data,
43
+    headers: {
44
+      'Content-Type': 'application/json;charset=UTF-8'
45
+    }
46
+  })
47
+}
48
+
49
+export function updateRoleMenuAPI(data) {
50
+  return request({
51
+    url: 'admin/groups/update',
52
+    method: 'post',
53
+    headers: {
54
+      'Content-Type': 'application/json;charset=UTF-8'
55
+    },
56
+    data: data
57
+  })
58
+}
59
+
60
+/**
61
+ * 角色复制
62
+ * @param {*} data
63
+ */
64
+export function roleCopyAPI(data) {
65
+  return request({
66
+    url: 'admin/groups/copy',
67
+    method: 'post',
68
+    data: data
69
+  })
70
+}
71
+
72
+/**
73
+ * 复制员工角色
74
+ * @param {*} data
75
+ */
76
+export function adminRoleRelatedDeptUserAPI(data) {
77
+  return request({
78
+    url: 'admin/users/copyRole',
79
+    method: 'post',
80
+    headers: {
81
+      'Content-Type': 'application/json;charset=UTF-8'
82
+    },
83
+    data: data
84
+  })
85
+}
86
+
87
+/**
88
+ * 添加编辑员工
89
+ * @param {*} data
90
+ */
91
+export function adminRoleRelatedUserAPI(data) {
92
+  return request({
93
+    url: 'admin/users/groups',
94
+    method: 'post',
95
+    headers: {
96
+      'Content-Type': 'application/json;charset=UTF-8'
97
+    },
98
+    data: data
99
+  })
100
+}
101
+
102
+/**
103
+ * 删除员工
104
+ * @param {*} data
105
+ */
106
+export function unbindingUserAPI(data) {
107
+  return request({
108
+    url: 'admin/users/groupsDel',
109
+    method: 'post',
110
+    data: data
111
+  })
112
+}
113
+
114
+/**
115
+ * 角色分类列表
116
+ * @param {*} data
117
+ */
118
+export function adminGroupsTypeListAPI(data) {
119
+  return request({
120
+    url: 'admin/groups/typeList',
121
+    method: 'post',
122
+    data: data
123
+  })
124
+}
125
+
126
+/**
127
+ * 参数 roleType   根据角色类型查询角色列表
128
+ * @param {*} roleType
129
+ */
130
+export function systemRoleByTypeAPI(data) {
131
+  return request({
132
+    url: `admin/groups/index`,
133
+    method: 'post',
134
+    data
135
+  })
136
+}
137
+
138
+/**
139
+ * 规则
140
+ * @param {*} roleType
141
+ */
142
+export function systemRuleByTypeAPI(data) {
143
+  return request({
144
+    url: `admin/rules/index`,
145
+    method: 'post',
146
+    data
147
+  })
148
+}
149
+
150
+/**
151
+ * 查询字段授权设置
152
+ * @param {*} data
153
+ */
154
+export function systemRoleGetFieldAPI(data) {
155
+  return request({
156
+    url: 'admin/fieldGrant/index',
157
+    method: 'post',
158
+    data: data
159
+  })
160
+}
161
+
162
+/**
163
+ * 模块设置字段授权
164
+ * @param {*} data
165
+ */
166
+export function systemRoleSetFieldAPI(data) {
167
+  return request({
168
+    url: 'admin/fieldGrant/update',
169
+    method: 'post',
170
+    headers: {
171
+      'Content-Type': 'application/json;charset=UTF-8'
172
+    },
173
+    data: data
174
+  })
175
+}

+ 120
- 0
src/api/admin/update.js Просмотреть файл

@@ -0,0 +1,120 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 查询版本
5
+ * @param {*} data
6
+ */
7
+export function crmCheckVersionAPI() {
8
+  return request({
9
+    url: 'checkVersion',
10
+    method: 'post',
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    }
14
+  })
15
+}
16
+
17
+/**
18
+ * 查询数据库
19
+ * @param {*} data
20
+ */
21
+export function crmQueryDatabaseAPI() {
22
+  return request({
23
+    url: 'queryDatabase',
24
+    method: 'post',
25
+    headers: {
26
+      'Content-Type': 'application/json;charset=UTF-8'
27
+    }
28
+  })
29
+}
30
+
31
+/**
32
+ * 数据备份
33
+ * @param {*} data
34
+ */
35
+export function crmBackupDatabaseAPI(data) {
36
+  return request({
37
+    url: 'backupDatabase',
38
+    method: 'post',
39
+    data: data,
40
+    headers: {
41
+      'Content-Type': 'application/json;charset=UTF-8'
42
+    }
43
+  }).then(
44
+    res => {
45
+      return res
46
+    },
47
+    err => {
48
+      return err
49
+    }
50
+  )
51
+}
52
+
53
+
54
+
55
+/**
56
+ * 更新进度
57
+ * @param {*} data
58
+ */
59
+export function crmUpdateAPI(data) {
60
+  return request({
61
+    url: 'projectUpdate',
62
+    method: 'post',
63
+    data,
64
+    headers: {
65
+      'Content-Type': 'application/json;charset=UTF-8'
66
+    }
67
+  }).then(
68
+    res => {
69
+      return res
70
+    },
71
+    err => {
72
+      return err
73
+    }
74
+  )
75
+}
76
+
77
+
78
+/**
79
+ * 更新进度
80
+ * @param {*} data
81
+ */
82
+export function updateProgressAPI() {
83
+  return request({
84
+    url: 'getProgress',
85
+    method: 'post',
86
+    headers: {
87
+      'Content-Type': 'application/json;charset=UTF-8'
88
+    }
89
+  }).then(
90
+    res => {
91
+      return res
92
+    },
93
+    err => {
94
+      return err
95
+    }
96
+  )
97
+}
98
+
99
+/**
100
+ * 登录悟空CRM
101
+ * @param {*} data
102
+ */
103
+export function loginWKAPI(data) {
104
+  return request({
105
+    url: 'updates/login',
106
+    method: 'post',
107
+    data,
108
+    headers: {
109
+      'Content-Type': 'application/json;charset=UTF-8'
110
+    }
111
+  }).then(
112
+    res => {
113
+      return res
114
+    },
115
+    err => {
116
+      return err
117
+    }
118
+  )
119
+}
120
+

+ 15
- 0
src/api/admin/user.js Просмотреть файл

@@ -0,0 +1,15 @@
1
+/**
2
+ * Created by yxk at 2020/6/5
3
+ */
4
+import request from '@/utils/request'
5
+
6
+/**
7
+ * 查询部门员工列表
8
+ * @param {*} data
9
+ */
10
+export function adminUserQueryByDeptAPI(deptId) {
11
+  return request({
12
+    url: `adminUser/queryDeptUserList/${deptId}`,
13
+    method: 'post'
14
+  })
15
+}

+ 128
- 0
src/api/bi/achievement.js Просмотреть файл

@@ -0,0 +1,128 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 合同数量分析/金额分析/回款金额分析
5
+ * count:合同数量分析;money:金额分析;back:回款金额分析
6
+ */
7
+export function biAchievementAnalysisAPI(data) {
8
+  if (data.type === 'count') {
9
+    return request({
10
+      url: 'bi/contract/analysis',
11
+      method: 'post',
12
+      data: data,
13
+      headers: {
14
+        'Content-Type': 'application/json;charset=UTF-8'
15
+      }
16
+    })
17
+  } else if (data.type === 'money') {
18
+    return request({
19
+      url: 'bi/contract/analysis',
20
+      method: 'post',
21
+      data: data,
22
+      headers: {
23
+        'Content-Type': 'application/json;charset=UTF-8'
24
+      }
25
+    })
26
+  } else if (data.type === 'back') {
27
+    return request({
28
+      url: 'bi/contract/analysis',
29
+      method: 'post',
30
+      data: data,
31
+      headers: {
32
+        'Content-Type': 'application/json;charset=UTF-8'
33
+      }
34
+    })
35
+  }
36
+}
37
+
38
+export function biAchievementAnalysisExportAPI(data) {
39
+  if (data.type === 'count') {
40
+    return request({
41
+      url: 'bi/contract/excelExport',
42
+      method: 'post',
43
+      data: data,
44
+      responseType: 'blob',
45
+      headers: {
46
+        'Content-Type': 'application/json;charset=UTF-8'
47
+      }
48
+    })
49
+  } else if (data.type === 'money') {
50
+    return request({
51
+      url: 'bi/contract/excelExport',
52
+      method: 'post',
53
+      data: data,
54
+      responseType: 'blob',
55
+      headers: {
56
+        'Content-Type': 'application/json;charset=UTF-8'
57
+      }
58
+    })
59
+  } else if (data.type === 'back') {
60
+    return request({
61
+      url: 'bi/contract/excelExport',
62
+      method: 'post',
63
+      data: data,
64
+      responseType: 'blob',
65
+      headers: {
66
+        'Content-Type': 'application/json;charset=UTF-8'
67
+      }
68
+    })
69
+  }
70
+}
71
+
72
+/**
73
+ * 合同汇总表
74
+ * @param {*} data
75
+ */
76
+export function biAchievementSummaryAPI(data) {
77
+  return request({
78
+    url: 'bi/contract/summary',
79
+    method: 'post',
80
+    data: data,
81
+    headers: {
82
+      'Content-Type': 'application/json;charset=UTF-8'
83
+    }
84
+  })
85
+}
86
+
87
+export function biAchievementSummaryExportAPI(data) {
88
+  return request({
89
+    url: 'bi/contract/excelExport',
90
+    method: 'post',
91
+    data: data,
92
+    responseType: 'blob',
93
+    headers: {
94
+      'Content-Type': 'application/json;charset=UTF-8'
95
+    }
96
+  })
97
+}
98
+
99
+/**
100
+ * 发票统计分析
101
+ * @param {*} data
102
+ */
103
+export function biAchievementInvoiceAPI(data) {
104
+  return request({
105
+    url: 'bi/contract/invoice',
106
+    method: 'post',
107
+    data: data,
108
+    headers: {
109
+      'Content-Type': 'application/json;charset=UTF-8'
110
+    }
111
+  })
112
+}
113
+
114
+/**
115
+ * 发票统计分析导出
116
+ * @param {*} data
117
+ */
118
+export function biAchievementInvoiceExportAPI(data) {
119
+  return request({
120
+    url: 'bi/contract/excelExport',
121
+    method: 'post',
122
+    data: data,
123
+    responseType: 'blob',
124
+    headers: {
125
+      'Content-Type': 'application/json;charset=UTF-8'
126
+    }
127
+  })
128
+}

+ 64
- 0
src/api/bi/bi.js Просмотреть файл

@@ -0,0 +1,64 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 业绩目标完成情况
5
+ * @param {*} data
6
+ */
7
+export function biAchievementStatisticsAPI(data) {
8
+  return request({
9
+    url: 'bi/achievement/statistics',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+export function biAchievementStatisticsExportAPI(data) {
16
+  return request({
17
+    url: 'bi/achievement/excelExport',
18
+    method: 'post',
19
+    data: data,
20
+    responseType: 'blob'
21
+  })
22
+}
23
+
24
+/**
25
+ * 产品销售情况统计
26
+ * @param {*} data
27
+ */
28
+export function biProductStatisticsAPI(data) {
29
+  return request({
30
+    url: 'bi/product/statistics',
31
+    method: 'post',
32
+    data: data,
33
+    headers: {
34
+      'Content-Type': 'application/json;charset=UTF-8'
35
+    }
36
+  })
37
+}
38
+
39
+export function biProductStatisticsExportAPI(data) {
40
+  return request({
41
+    url: 'bi/product/excelExport',
42
+    method: 'post',
43
+    data: data,
44
+    responseType: 'blob',
45
+    headers: {
46
+      'Content-Type': 'application/json;charset=UTF-8'
47
+    }
48
+  })
49
+}
50
+
51
+/**
52
+ * 销售漏斗
53
+ * @param {*} data
54
+ */
55
+export function biBusinessFunnelAPI(data) {
56
+  return request({
57
+    url: 'bi/business/funnel',
58
+    method: 'post',
59
+    data: data,
60
+    headers: {
61
+      'Content-Type': 'application/json;charset=UTF-8'
62
+    }
63
+  })
64
+}

+ 50
- 0
src/api/bi/business.js Просмотреть файл

@@ -0,0 +1,50 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新增商机数与金额趋势分析
5
+ * @param {*} data
6
+ * year 年
7
+ * status 1销售(目标)2回款(目标)
8
+ * user_id 员工ID
9
+ * structure_id 部门ID
10
+ */
11
+export function biBusinessTrendAPI(data) {
12
+  return request({
13
+    url: 'bi/business/businessTrend',
14
+    method: 'post',
15
+    data: data,
16
+    headers: {
17
+      'Content-Type': 'application/json;charset=UTF-8'
18
+    }
19
+  })
20
+}
21
+
22
+/**
23
+ * 新增商机数与金额趋势分析 详情列表
24
+ * @param {*} data
25
+ */
26
+export function biBusinessTrendListAPI(data) {
27
+  return request({
28
+    url: 'bi/business/trendList',
29
+    method: 'post',
30
+    data: data,
31
+    headers: {
32
+      'Content-Type': 'application/json;charset=UTF-8'
33
+    }
34
+  })
35
+}
36
+
37
+/**
38
+ * 赢单机会转化率趋势分析
39
+ * @param {*} data
40
+ */
41
+export function biBusinessWinAPI(data) {
42
+  return request({
43
+    url: 'bi/business/win',
44
+    method: 'post',
45
+    data: data,
46
+    headers: {
47
+      'Content-Type': 'application/json;charset=UTF-8'
48
+    }
49
+  })
50
+}

+ 326
- 0
src/api/bi/customer.js Просмотреть файл

@@ -0,0 +1,326 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 员工客户总量分析
5
+ */
6
+export function biCustomerTotalAPI(data) {
7
+  return request({
8
+    url: 'bi/customer/total',
9
+    method: 'post',
10
+    data: data,
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    }
14
+  })
15
+}
16
+
17
+export function biCustomerTotalListAPI(data) {
18
+  return request({
19
+    url: 'bi/customer/statistics',
20
+    method: 'post',
21
+    data: data,
22
+    headers: {
23
+      'Content-Type': 'application/json;charset=UTF-8'
24
+    }
25
+  })
26
+}
27
+
28
+export function biCustomerTotalListExportAPI(data) {
29
+  return request({
30
+    url: 'bi/contract/excelExport',
31
+    method: 'post',
32
+    data: data,
33
+    responseType: 'blob',
34
+    headers: {
35
+      'Content-Type': 'application/json;charset=UTF-8'
36
+    }
37
+  })
38
+}
39
+
40
+/**
41
+ * 员工客户跟进次数分析
42
+ * @param {*} data
43
+ */
44
+export function biCustomerRecordTimesAPI(data) {
45
+  return request({
46
+    url: 'bi/customer/recordTimes',
47
+    method: 'post',
48
+    data: data,
49
+    headers: {
50
+      'Content-Type': 'application/json;charset=UTF-8'
51
+    }
52
+  })
53
+}
54
+
55
+/**
56
+ * 员工客户跟进次数分析 具体员工列表
57
+ * @param {*} data
58
+ */
59
+export function biCustomerRecordListAPI(data) {
60
+  return request({
61
+    url: 'bi/customer/recordList',
62
+    method: 'post',
63
+    data: data,
64
+    headers: {
65
+      'Content-Type': 'application/json;charset=UTF-8'
66
+    }
67
+  })
68
+}
69
+
70
+export function biCustomerRecordListExportAPI(data) {
71
+  return request({
72
+    url: 'bi/contract/excelExport',
73
+    method: 'post',
74
+    data: data,
75
+    responseType: 'blob',
76
+    headers: {
77
+      'Content-Type': 'application/json;charset=UTF-8'
78
+    }
79
+  })
80
+}
81
+
82
+/**
83
+ * 员工跟进方式分析
84
+ * @param {*} data
85
+ */
86
+export function biCustomerRecordModeAPI(data) {
87
+  return request({
88
+    url: 'bi/customer/recordMode',
89
+    method: 'post',
90
+    data: data,
91
+    headers: {
92
+      'Content-Type': 'application/json;charset=UTF-8'
93
+    }
94
+  })
95
+}
96
+
97
+export function biCustomerRecordModeExportAPI(data) {
98
+  return request({
99
+    url: 'bi/contract/excelExport',
100
+    method: 'post',
101
+    data: data,
102
+    responseType: 'blob',
103
+    headers: {
104
+      'Content-Type': 'application/json;charset=UTF-8'
105
+    }
106
+  })
107
+}
108
+
109
+/**
110
+ * 客户转化率分析具体数据
111
+ * @param {*} data
112
+ */
113
+export function biCustomerConversionInfoAPI(data) {
114
+  return request({
115
+    url: 'bi/customer/conversionInfo',
116
+    method: 'post',
117
+    data: data,
118
+    headers: {
119
+      'Content-Type': 'application/json;charset=UTF-8'
120
+    }
121
+  })
122
+}
123
+
124
+/**
125
+ * 客户转化率分析
126
+ * @param {*} data
127
+ */
128
+export function biCustomerConversionAPI(data) {
129
+  return request({
130
+    url: 'bi/customer/conversion',
131
+    method: 'post',
132
+    data: data,
133
+    headers: {
134
+      'Content-Type': 'application/json;charset=UTF-8'
135
+    }
136
+  })
137
+}
138
+
139
+
140
+/**
141
+ * 公海客户分析
142
+ * @param {*} data
143
+ */
144
+export function biCustomerPoolAPI(data) {
145
+  return request({
146
+    url: 'bi/customer/pool',
147
+    method: 'post',
148
+    data: data,
149
+    headers: {
150
+      'Content-Type': 'application/json;charset=UTF-8'
151
+    }
152
+  })
153
+}
154
+
155
+/**
156
+ * 公海客户分析
157
+ * @param {*} data
158
+ */
159
+export function biCustomerPoolListAPI(data) {
160
+  return request({
161
+    url: 'bi/customer/poolList',
162
+    method: 'post',
163
+    data: data,
164
+    headers: {
165
+      'Content-Type': 'application/json;charset=UTF-8'
166
+    }
167
+  })
168
+}
169
+
170
+export function biCustomerPoolListExportAPI(data) {
171
+  return request({
172
+    url: 'bi/contract/excelExport',
173
+    method: 'post',
174
+    data: data,
175
+    responseType: 'blob',
176
+    headers: {
177
+      'Content-Type': 'application/json;charset=UTF-8'
178
+    }
179
+  })
180
+}
181
+
182
+/**
183
+ * 员工客户成交周期
184
+ * @param {*} data
185
+ */
186
+export function biCustomerUserCycleAPI(data) {
187
+  return request({
188
+    url: 'bi/customer/userCycle',
189
+    method: 'post',
190
+    data: data,
191
+    headers: {
192
+      'Content-Type': 'application/json;charset=UTF-8'
193
+    }
194
+  })
195
+}
196
+
197
+export function biCustomerUserCycleExportAPI(data) {
198
+  return request({
199
+    url: 'bi/contract/excelExport',
200
+    method: 'post',
201
+    data: data,
202
+    responseType: 'blob',
203
+    headers: {
204
+      'Content-Type': 'application/json;charset=UTF-8'
205
+    }
206
+  })
207
+}
208
+
209
+export function employeeCycleInfoAPI(data) {
210
+  return request({
211
+    url: 'bi/customer/userCycleList',
212
+    method: 'post',
213
+    data: data,
214
+    headers: {
215
+      'Content-Type': 'application/json;charset=UTF-8'
216
+    }
217
+  })
218
+}
219
+
220
+/**
221
+ * 地区成交周期
222
+ * @param {*} data
223
+ */
224
+export function biCustomerAddressCycleAPI(data) {
225
+  return request({
226
+    url: 'bi/customer/addressCycle',
227
+    method: 'post',
228
+    data: data,
229
+    headers: {
230
+      'Content-Type': 'application/json;charset=UTF-8'
231
+    }
232
+  })
233
+}
234
+
235
+export function biCustomerAddressCycleExportAPI(data) {
236
+  return request({
237
+    url: 'bi/contract/excelExport',
238
+    method: 'post',
239
+    data: data,
240
+    responseType: 'blob',
241
+    headers: {
242
+      'Content-Type': 'application/json;charset=UTF-8'
243
+    }
244
+  })
245
+}
246
+
247
+/**
248
+ * 产品成交周期
249
+ * @param {*} data
250
+ */
251
+export function biCustomerProductCycleAPI(data) {
252
+  return request({
253
+    url: 'bi/customer/productCycle',
254
+    method: 'post',
255
+    data: data,
256
+    headers: {
257
+      'Content-Type': 'application/json;charset=UTF-8'
258
+    }
259
+  })
260
+}
261
+
262
+export function biCustomerProductCycleExportAPI(data) {
263
+  return request({
264
+    url: 'bi/contract/excelExport',
265
+    method: 'post',
266
+    data: data,
267
+    responseType: 'blob',
268
+    headers: {
269
+      'Content-Type': 'application/json;charset=UTF-8'
270
+    }
271
+  })
272
+}
273
+
274
+/**
275
+ * 员工客户满意度分析
276
+ * @param {*} data
277
+ */
278
+export function biCustomerSatisfactionTableAPI(data) {
279
+  return request({
280
+    url: 'bi/customer/customerSatisfaction',
281
+    method: 'post',
282
+    data: data,
283
+    headers: {
284
+      'Content-Type': 'application/json;charset=UTF-8'
285
+    }
286
+  })
287
+}
288
+
289
+export function biCustomerSatisfactionTableExportAPI(data) {
290
+  return request({
291
+    url: 'bi/contract/excelExport',
292
+    method: 'post',
293
+    data: data,
294
+    responseType: 'blob',
295
+    headers: {
296
+      'Content-Type': 'application/json;charset=UTF-8'
297
+    }
298
+  })
299
+}
300
+
301
+/**
302
+ * 员工客户满意度分析
303
+ * @param {*} data
304
+ */
305
+export function biCustomerProductSatisfactionTableAPI(data) {
306
+  return request({
307
+    url: 'bi/customer/productSatisfaction',
308
+    method: 'post',
309
+    data: data,
310
+    headers: {
311
+      'Content-Type': 'application/json;charset=UTF-8'
312
+    }
313
+  })
314
+}
315
+
316
+export function biCustomerProductSatisfactionExportAPI(data) {
317
+  return request({
318
+    url: 'bi/contract/excelExport',
319
+    method: 'post',
320
+    data: data,
321
+    responseType: 'blob',
322
+    headers: {
323
+      'Content-Type': 'application/json;charset=UTF-8'
324
+    }
325
+  })
326
+}

+ 50
- 0
src/api/bi/customerPortrayal.js Просмотреть файл

@@ -0,0 +1,50 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 城市分布分析
5
+ */
6
+export function biAchievementAnalysisAPI(data) {
7
+  return request({
8
+    url: 'bi/customer/addressAnalyse',
9
+    method: 'post',
10
+    data: data,
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    }
14
+  })
15
+}
16
+
17
+export function biAchievementPortraitAPI(data) {
18
+  const type = data.type_analyse
19
+  if (type === 'industry') {
20
+    return request({
21
+      url: 'bi/customer/portrait',
22
+      method: 'post',
23
+      data: data,
24
+      headers: {
25
+        'Content-Type': 'application/json;charset=UTF-8'
26
+      }
27
+    })
28
+  } else if (type === 'level') {
29
+    return request({
30
+      url: 'bi/customer/portrait',
31
+      method: 'post',
32
+      data: data,
33
+      headers: {
34
+        'Content-Type': 'application/json;charset=UTF-8'
35
+      }
36
+    })
37
+  } else if (type === 'source') {
38
+    return request({
39
+      url: 'bi/customer/portrait',
40
+      method: 'post',
41
+      data: data,
42
+      headers: {
43
+        'Content-Type': 'application/json;charset=UTF-8'
44
+      }
45
+    })
46
+  }
47
+}
48
+
49
+
50
+

+ 80
- 0
src/api/bi/oa.js Просмотреть файл

@@ -0,0 +1,80 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 日志统计
5
+ * @param {*} data
6
+ */
7
+export function biLogStatisticsAPI(data) {
8
+  return request({
9
+    url: 'bi/log/statistics',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 日志统计导出
20
+ * @param {*} data
21
+ */
22
+export function biLogExcelExportAPI(data) {
23
+  return request({
24
+    url: 'bi/log/excelExport',
25
+    method: 'post',
26
+    data: data,
27
+    responseType: 'blob',
28
+    timeout: 600000,
29
+    headers: {
30
+      'Content-Type': 'application/json;charset=UTF-8'
31
+    }
32
+  })
33
+}
34
+
35
+/**
36
+ * 审批统计
37
+ * @param {*} data
38
+ */
39
+export function biExamineStatisticsAPI(data) {
40
+  return request({
41
+    url: 'bi/examine/statistics',
42
+    method: 'post',
43
+    data: data,
44
+    headers: {
45
+      'Content-Type': 'application/json;charset=UTF-8'
46
+    }
47
+  })
48
+}
49
+
50
+/**
51
+* 审批统计详情列表
52
+* @param {*} data
53
+*/
54
+export function biExamineIndexAPI(data) {
55
+  return request({
56
+    url: 'bi/examine/index',
57
+    method: 'post',
58
+    data: data,
59
+    headers: {
60
+      'Content-Type': 'application/json;charset=UTF-8'
61
+    }
62
+  })
63
+}
64
+
65
+/**
66
+ * 审批统计导出
67
+ * @param {*} data
68
+ */
69
+export function biExamineExcelExportAPI(data) {
70
+  return request({
71
+    url: 'bi/examine/excelExport',
72
+    method: 'post',
73
+    data: data,
74
+    responseType: 'blob',
75
+    timeout: 600000,
76
+    headers: {
77
+      'Content-Type': 'application/json;charset=UTF-8'
78
+    }
79
+  })
80
+}

+ 15
- 0
src/api/bi/product.js Просмотреть файл

@@ -0,0 +1,15 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 产品分类销量分析
5
+ */
6
+export function biProductCategoryAPI(data) {
7
+  return request({
8
+    url: 'bi/product/productCategory',
9
+    method: 'post',
10
+    data: data,
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    }
14
+  })
15
+}

+ 250
- 0
src/api/bi/ranking.js Просмотреть файл

@@ -0,0 +1,250 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 合同金额
5
+ * @param {*} data
6
+ * year 年
7
+ * status 1销售(目标)2回款(目标)
8
+ * user_id 员工ID
9
+ * structure_id 部门ID
10
+ */
11
+export function biRankingContractAPI(data) {
12
+  return request({
13
+    url: 'bi/ranking/contract',
14
+    method: 'post',
15
+    data: data,
16
+    headers: {
17
+      'Content-Type': 'application/json;charset=UTF-8'
18
+    }
19
+  })
20
+}
21
+
22
+export function biRankingContractExportAPI(data) {
23
+  return request({
24
+    url: 'bi/ranking/excelExport',
25
+    method: 'post',
26
+    data: data,
27
+    responseType: 'blob',
28
+    headers: {
29
+      'Content-Type': 'application/json;charset=UTF-8'
30
+    }
31
+  })
32
+}
33
+
34
+
35
+/**
36
+ * 回款金额排行
37
+ * @param {*} data
38
+ */
39
+export function biRankingReceivablesAPI(data) {
40
+  return request({
41
+    url: 'bi/ranking/receivables',
42
+    method: 'post',
43
+    data: data,
44
+    headers: {
45
+      'Content-Type': 'application/json;charset=UTF-8'
46
+    }
47
+  })
48
+}
49
+
50
+export function biRankingReceivablesExportAPI(data) {
51
+  return request({
52
+    url: 'bi/ranking/excelExport',
53
+    method: 'post',
54
+    data: data,
55
+    responseType: 'blob',
56
+    headers: {
57
+      'Content-Type': 'application/json;charset=UTF-8'
58
+    }
59
+  })
60
+}
61
+
62
+/**
63
+ * 签约合同排行
64
+ * @param {*} data
65
+ */
66
+export function biRankingSigningAPI(data) {
67
+  return request({
68
+    url: 'bi/ranking/signing',
69
+    method: 'post',
70
+    data: data,
71
+    headers: {
72
+      'Content-Type': 'application/json;charset=UTF-8'
73
+    }
74
+  })
75
+}
76
+
77
+export function biRankingSigningExportAPI(data) {
78
+  return request({
79
+    url: 'bi/ranking/excelExport',
80
+    method: 'post',
81
+    data: data,
82
+    responseType: 'blob',
83
+    headers: {
84
+      'Content-Type': 'application/json;charset=UTF-8'
85
+    }
86
+  })
87
+}
88
+
89
+/**
90
+ * 产品销量排行
91
+ * @param {*} data
92
+ */
93
+export function biRankingProductAPI(data) {
94
+  return request({
95
+    url: 'bi/ranking/product',
96
+    method: 'post',
97
+    data: data,
98
+    headers: {
99
+      'Content-Type': 'application/json;charset=UTF-8'
100
+    }
101
+  })
102
+}
103
+
104
+export function biRankingProductExportAPI(data) {
105
+  return request({
106
+    url: 'bi/ranking/excelExport',
107
+    method: 'post',
108
+    data: data,
109
+    responseType: 'blob',
110
+    headers: {
111
+      'Content-Type': 'application/json;charset=UTF-8'
112
+    }
113
+  })
114
+}
115
+
116
+/**
117
+ * 新增客户数排行
118
+ * @param {*} data
119
+ */
120
+export function biRankingAddCustomerAPI(data) {
121
+  return request({
122
+    url: 'bi/ranking/addCustomer',
123
+    method: 'post',
124
+    data: data,
125
+    headers: {
126
+      'Content-Type': 'application/json;charset=UTF-8'
127
+    }
128
+  })
129
+}
130
+
131
+export function biRankingAddCustomerExportAPI(data) {
132
+  return request({
133
+    url: 'bi/ranking/excelExport',
134
+    method: 'post',
135
+    data: data,
136
+    responseType: 'blob',
137
+    headers: {
138
+      'Content-Type': 'application/json;charset=UTF-8'
139
+    }
140
+  })
141
+}
142
+
143
+/**
144
+ * 新增联系人数排行
145
+ * @param {*} data
146
+ */
147
+export function biRankingAddContactsAPI(data) {
148
+  return request({
149
+    url: 'bi/ranking/addContacts',
150
+    method: 'post',
151
+    data: data,
152
+    headers: {
153
+      'Content-Type': 'application/json;charset=UTF-8'
154
+    }
155
+  })
156
+}
157
+
158
+export function biRankingAddContactsExportAPI(data) {
159
+  return request({
160
+    url: 'bi/ranking/excelExport',
161
+    method: 'post',
162
+    data: data,
163
+    responseType: 'blob',
164
+    headers: {
165
+      'Content-Type': 'application/json;charset=UTF-8'
166
+    }
167
+  })
168
+}
169
+
170
+
171
+/**
172
+ * 跟进次数排行
173
+ * @param {*} data
174
+ */
175
+export function biRankingRecordNunAPI(data) {
176
+  return request({
177
+    url: 'bi/ranking/recordNun',
178
+    method: 'post',
179
+    data: data,
180
+    headers: {
181
+      'Content-Type': 'application/json;charset=UTF-8'
182
+    }
183
+  })
184
+}
185
+
186
+export function biRankingRecordNunExportAPI(data) {
187
+  return request({
188
+    url: 'bi/ranking/excelExport',
189
+    method: 'post',
190
+    data: data,
191
+    responseType: 'blob',
192
+    headers: {
193
+      'Content-Type': 'application/json;charset=UTF-8'
194
+    }
195
+  })
196
+}
197
+
198
+/**
199
+ * 跟进客户数排行
200
+ * @param {*} data
201
+ */
202
+export function biRankingRecordCustomerAPI(data) {
203
+  return request({
204
+    url: 'bi/ranking/recordCustomer',
205
+    method: 'post',
206
+    data: data,
207
+    headers: {
208
+      'Content-Type': 'application/json;charset=UTF-8'
209
+    }
210
+  })
211
+}
212
+
213
+export function biRankingRecordCustomerExportAPI(data) {
214
+  return request({
215
+    url: 'bi/ranking/excelExport',
216
+    method: 'post',
217
+    data: data,
218
+    responseType: 'blob',
219
+    headers: {
220
+      'Content-Type': 'application/json;charset=UTF-8'
221
+    }
222
+  })
223
+}
224
+
225
+/**
226
+ * 出差次数排行
227
+ * @param {*} data
228
+ */
229
+export function biRankingExamineAPI(data) {
230
+  return request({
231
+    url: 'bi/ranking/examine',
232
+    method: 'post',
233
+    data: data,
234
+    headers: {
235
+      'Content-Type': 'application/json;charset=UTF-8'
236
+    }
237
+  })
238
+}
239
+
240
+export function biRankingExamineExportAPI(data) {
241
+  return request({
242
+    url: 'bi/ranking/excelExport',
243
+    method: 'post',
244
+    data: data,
245
+    responseType: 'blob',
246
+    headers: {
247
+      'Content-Type': 'application/json;charset=UTF-8'
248
+    }
249
+  })
250
+}

+ 240
- 0
src/api/calendar/index.js Просмотреть файл

@@ -0,0 +1,240 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新增日程
5
+ *
6
+ */
7
+export function canlendarSaveAPI(data) {
8
+  return request({
9
+    url: 'oa/event/save',
10
+    method: 'post',
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    },
14
+    data: data
15
+  })
16
+}
17
+
18
+/**
19
+ * 删除日程
20
+ *
21
+ */
22
+export function canlendarDeleteAPI(data) {
23
+  return request({
24
+    url: 'oa/event/delete',
25
+    method: 'post',
26
+    headers: {
27
+      'Content-Type': 'application/json;charset=UTF-8'
28
+    },
29
+    data: data
30
+  })
31
+}
32
+
33
+/**
34
+ * 查询日程
35
+ *
36
+ */
37
+export function canlendarQueryListAPI(data) {
38
+  return request({
39
+    url: 'oa/event/index',
40
+    method: 'post',
41
+    headers: {
42
+      'Content-Type': 'application/json;charset=UTF-8'
43
+    },
44
+    data: data
45
+  })
46
+}
47
+
48
+/**
49
+ * 编辑日程 oaEvent/queryById
50
+ *
51
+ */
52
+export function canlendarUpdateAPI(data) {
53
+  return request({
54
+    url: 'oa/event/update',
55
+    method: 'post',
56
+    headers: {
57
+      'Content-Type': 'application/json;charset=UTF-8'
58
+    },
59
+    data: data
60
+  })
61
+}
62
+
63
+/**
64
+ * 查询日程详情
65
+ *
66
+ */
67
+export function canlendarQueryByIdAPI(data) {
68
+  return request({
69
+    url: 'oa/event/read',
70
+    method: 'post',
71
+    headers: {
72
+      'Content-Type': 'application/json;charset=UTF-8'
73
+    },
74
+    data: data
75
+  })
76
+}
77
+
78
+/**
79
+ * 查询自定义列表
80
+ */
81
+export function canlendarQueryTypeListAPI(data) {
82
+  return request({
83
+    url: 'oa/event/schedule',
84
+    method: 'post',
85
+    data: data
86
+  })
87
+}
88
+
89
+/**
90
+ * 编辑自定义列表 oaCalendar/todayTask
91
+ */
92
+export function canlendarUpdateTypeAPI(data) {
93
+  return request({
94
+    url: 'oa/event/saveSchedule',
95
+    method: 'post',
96
+    headers: {
97
+      'Content-Type': 'application/json;charset=UTF-8'
98
+    },
99
+    data: data
100
+  })
101
+}
102
+
103
+// /**
104
+//  * 今日需联系任务
105
+//  */
106
+// export function canlendarTodayTaskAPI(data) {
107
+//   return request({
108
+//     url: 'oaCalendar/todayTask',
109
+//     method: 'post',
110
+//     headers: {
111
+//       'Content-Type': 'application/json;charset=UTF-8'
112
+//     },
113
+//     data: data
114
+//   })
115
+// }
116
+
117
+/**
118
+ * 今日到期的合同(type: 1 当日到期合同 2 当日回款合同)
119
+ */
120
+export function canlendarTodayContractAPI(data) {
121
+  return request({
122
+    url: 'oa/event/eventContract',
123
+    method: 'post',
124
+    headers: {
125
+      'Content-Type': 'application/json;charset=UTF-8'
126
+    },
127
+    data: data
128
+  })
129
+}
130
+
131
+/**
132
+ * 需联系客户
133
+ */
134
+export function canlendarTodayCustomerAPI(data) {
135
+  return request({
136
+    url: 'oa/event/eventCustomer',
137
+    method: 'post',
138
+    headers: {
139
+      'Content-Type': 'application/json;charset=UTF-8'
140
+    },
141
+    data: data
142
+  })
143
+}
144
+
145
+
146
+/**
147
+ * 需联系线索
148
+ */
149
+export function canlendarTodayLeadsAPI(data) {
150
+  return request({
151
+    url: 'oa/event/eventLeads',
152
+    method: 'post',
153
+    headers: {
154
+      'Content-Type': 'application/json;charset=UTF-8'
155
+    },
156
+    data: data
157
+  })
158
+}
159
+
160
+
161
+/**
162
+ * 需联系商机
163
+ */
164
+export function canlendarTodayBusinessAPI(data) {
165
+  return request({
166
+    url: 'oa/event/eventBusiness',
167
+    method: 'post',
168
+    headers: {
169
+      'Content-Type': 'application/json;charset=UTF-8'
170
+    },
171
+    data: data
172
+  })
173
+}
174
+
175
+/**
176
+ * 预计成交商机
177
+ */
178
+export function canlendarTodayDealBusinessAPI(data) {
179
+  return request({
180
+    url: 'oa/event/eventDealBusiness',
181
+    method: 'post',
182
+    headers: {
183
+      'Content-Type': 'application/json;charset=UTF-8'
184
+    },
185
+    data: data
186
+  })
187
+}
188
+
189
+/**
190
+ * 小日历标记
191
+ */
192
+export function canlendarQueryListStatusAPI(data) {
193
+  return request({
194
+    url: 'oa/event/listStatus',
195
+    method: 'post',
196
+    headers: {
197
+      'Content-Type': 'application/json;charset=UTF-8'
198
+    },
199
+    data: data
200
+  })
201
+}
202
+
203
+/**
204
+ * 今日crm状态提醒
205
+ */
206
+export function canlendarEventCrmAPI(data) {
207
+  return request({
208
+    url: 'oa/event/eventCrm',
209
+    method: 'post',
210
+    headers: {
211
+      'Content-Type': 'application/json;charset=UTF-8'
212
+    },
213
+    data: data
214
+  })
215
+}
216
+
217
+/**
218
+ * 即将到期的任务
219
+ */
220
+export function canlendarEventTaskAPI(data) {
221
+  return request({
222
+    url: 'oa/event/eventTask',
223
+    method: 'post',
224
+    headers: {
225
+      'Content-Type': 'application/json;charset=UTF-8'
226
+    },
227
+    data: data
228
+  })
229
+}
230
+
231
+/**
232
+ *  日程员工列表
233
+ */
234
+export function systemUserQueryAuthUserList(data) {
235
+  return request({
236
+    url: 'admin/users/subordinate',
237
+    method: 'post',
238
+    data: data
239
+  })
240
+}

+ 361
- 0
src/api/common.js Просмотреть файл

@@ -0,0 +1,361 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 员工
5
+ * @param {*} data
6
+ */
7
+export function userListAPI(data) {
8
+  return request({
9
+    url: 'admin/users/getUserList',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+
19
+/**
20
+ * 员工列表
21
+ * @param {*} data
22
+ */
23
+export function usersListIndexAPI(data) {
24
+  return request({
25
+    url: 'admin/users/index',
26
+    method: 'post',
27
+    data: data,
28
+    headers: {
29
+      'Content-Type': 'application/json;charset=UTF-8'
30
+    }
31
+  })
32
+}
33
+
34
+
35
+/**
36
+ * 部门
37
+ * @param {*} data
38
+ */
39
+export function depListAPI(data) {
40
+  return request({
41
+    url: 'admin/structures/index',
42
+    method: 'post',
43
+    data: data,
44
+    headers: {
45
+      'Content-Type': 'application/json;charset=UTF-8'
46
+    }
47
+  })
48
+}
49
+// admin/structures/listDialog
50
+/**
51
+ * 添加部门
52
+ * @param {*} data
53
+ */
54
+export function listDialogAPI(data) {
55
+  return request({
56
+    url: 'admin/structures/listDialog',
57
+    method: 'post',
58
+    data: data,
59
+    headers: {
60
+      'Content-Type': 'application/json;charset=UTF-8'
61
+    }
62
+  })
63
+}
64
+
65
+
66
+
67
+/**
68
+ * 获取权限范围内部门接口
69
+ * @param {*} data
70
+ */
71
+export function adminStructuresSubIndexAPI(data) {
72
+  return request({
73
+    url: 'adminDept/queryDeptByAuth',
74
+    method: 'post',
75
+    data: data
76
+  })
77
+}
78
+
79
+/**
80
+ * 获取权限范围内部门接口
81
+ * @param {*} data
82
+ */
83
+export function getUserByDeptIdAPI(data) {
84
+  return request({
85
+    url: 'adminUser/queryUserByDeptId',
86
+    method: 'post',
87
+    data: data
88
+  })
89
+}
90
+
91
+/**
92
+ * 部门下的员工
93
+ * @param {*} data
94
+ */
95
+export function userListByStructidAPI(data) {
96
+  return request({
97
+    url: 'adminUser/userListByStructidAPI',
98
+    method: 'post',
99
+    data: data
100
+  })
101
+}
102
+
103
+/**
104
+ * 附件
105
+ * @param {*} data
106
+ */
107
+export const crmFileSaveUrl = window.BASE_URL + 'admin/file/save'
108
+
109
+export function crmFileSaveAPI(data, config = {}) {
110
+  var param = new FormData()
111
+  Object.keys(data).forEach(key => {
112
+    param.append(key, data[key])
113
+  })
114
+  return request({
115
+    url: 'admin/file/save',
116
+    method: 'post',
117
+    data: param,
118
+    ...config,
119
+    headers: {
120
+      'Content-Type': 'multipart/form-data'
121
+    }
122
+  })
123
+}
124
+
125
+/**
126
+ * 公共web文件上传
127
+ * @param data
128
+ */
129
+export function webFileSaveAPI(data) {
130
+  var param = new FormData()
131
+  Object.keys(data).forEach(key => {
132
+    param.append(key, data[key])
133
+    param.append('isPublic', '1')
134
+  })
135
+  return request({
136
+    url: 'adminFile/upload',
137
+    method: 'post',
138
+    data: param,
139
+    headers: {
140
+      'Content-Type': 'multipart/form-data'
141
+    }
142
+  })
143
+}
144
+
145
+/**
146
+ * 唯一图
147
+ * @param {*} data
148
+ */
149
+export function crmFileSaveByBatchIdAPI(data) {
150
+  var param = new FormData()
151
+  Object.keys(data).forEach(key => {
152
+    param.append(key, data[key])
153
+  })
154
+  return request({
155
+    url: 'admin/file/save',
156
+    method: 'post',
157
+    data: param,
158
+    headers: {
159
+      'Content-Type': 'multipart/form-data'
160
+    }
161
+  })
162
+}
163
+
164
+/** 暂时客户管理里面也有 */
165
+/**
166
+ * 附件删除接口
167
+ * @param {*} data
168
+ */
169
+export function crmFileDeleteAPI(data) {
170
+  return request({
171
+    url: `admin/file/delete`,
172
+    method: 'post',
173
+    data: data
174
+  })
175
+}
176
+
177
+/**
178
+ * 根据批次ID删除文件
179
+ * @param {*} data
180
+ */
181
+export function crmFileRemoveByBatchIdAPI(data) {
182
+  return request({
183
+    url: 'admin/file/deleteAll',
184
+    method: 'post',
185
+    data: data,
186
+    headers: {
187
+      'Content-Type': 'application/json;charset=UTF-8'
188
+    }
189
+  })
190
+}
191
+
192
+/**
193
+ * 附件重命名
194
+ * @param {*} data
195
+ */
196
+export function crmFileUpdateAPI(data) {
197
+  return request({
198
+    url: 'admin/file/update',
199
+    method: 'post',
200
+    data: data,
201
+    headers: {
202
+      'Content-Type': 'application/json;charset=UTF-8'
203
+    }
204
+  })
205
+}
206
+
207
+/**
208
+ * 通过path 下载
209
+ * @param {*} data
210
+ */
211
+export function crmFileDownByPathAPI(data) {
212
+  return request({
213
+    url: 'crmPrint/down',
214
+    method: 'post',
215
+    data: data,
216
+    responseType: 'blob'
217
+  })
218
+}
219
+
220
+/**
221
+ * 权限数据返回
222
+ * @param {*} data
223
+ */
224
+export function adminIndexAuthListAPI(data) {
225
+  return request({
226
+    url: 'admin/index/authList',
227
+    method: 'post',
228
+    data: data
229
+  })
230
+}
231
+
232
+
233
+/**
234
+ * 系统消息列表
235
+ * label 1 任务 2 日志 3 oa审批 4公告 5 日程 6 客户管理
236
+ * isRead 0 未读 1 已读
237
+ * @param {*} data
238
+ */
239
+export function systemMessageListAPI(data) {
240
+  return request({
241
+    url: 'admin/message/messageList',
242
+    method: 'post',
243
+    data: data,
244
+    headers: {
245
+      'Content-Type': 'application/json;charset=UTF-8'
246
+    }
247
+  })
248
+}
249
+// 导出 历史
250
+export function systemHistoryActivityListAPI(data) {
251
+  return request({
252
+    url: 'admin/index/importList',
253
+    method: 'post',
254
+    data: data,
255
+    headers: {
256
+      'Content-Type': 'application/json;charset=UTF-8'
257
+    }
258
+  })
259
+}
260
+
261
+/**
262
+ * 未读消息数
263
+ * @param {*} data
264
+ */
265
+export function systemMessageUnreadCountAPI(data) {
266
+  return request({
267
+    url: 'admin/message/unreadCount',
268
+    method: 'post',
269
+    data: data
270
+  })
271
+}
272
+
273
+/**
274
+ * 读消息
275
+ * @param {*} data
276
+ */
277
+export function systemMessageReadAPI(data) {
278
+  return request({
279
+    url: 'admin/message/updateMessage',
280
+    method: 'post',
281
+    data: data
282
+  })
283
+}
284
+
285
+/**
286
+ * 读全部消息
287
+ * @param {*} data
288
+ */
289
+export function systemMessageReadAllAPI(data) {
290
+  return request({
291
+    url: 'admin/message/readAllMessage',
292
+    method: 'post',
293
+    data: data
294
+  })
295
+}
296
+
297
+/**
298
+ * 用户信息
299
+ * @param {*} data
300
+ */
301
+export function systemUserInfoAPI(data) {
302
+  return request({
303
+    url: 'admin/users/read',
304
+    method: 'post',
305
+    data: data
306
+  })
307
+}
308
+
309
+/**
310
+ * 系统消息按类别删除
311
+ * @param {*} data
312
+ */
313
+export function systemMessageClearAPI(data) {
314
+  return request({
315
+    url: 'admin/message/clear',
316
+    method: 'post',
317
+    data: data
318
+  })
319
+}
320
+
321
+/**
322
+ * 系统消息删除
323
+ * @param {*} data
324
+ */
325
+export function systemMessageDeleteByIdAPI(data) {
326
+  return request({
327
+    url: `admin/message/delete`,
328
+    method: 'post',
329
+    data
330
+  })
331
+}
332
+
333
+export function downloadFileAPI(data) {
334
+  return request({
335
+    url: 'admin/file/download',
336
+    method: 'post',
337
+    data,
338
+    responseType: 'blob'
339
+  })
340
+}
341
+export function downloadFileImageAPI(data) {
342
+  return request({
343
+    url: 'admin/file/downloadImage',
344
+    method: 'post',
345
+    data,
346
+    responseType: 'blob'
347
+  })
348
+}
349
+
350
+
351
+/**
352
+ * 已读更新通知
353
+ * @param {*} data
354
+ */
355
+export function readUpdateNoticeAPI(data) {
356
+  return request({
357
+    url: 'adminUser/readNotice',
358
+    method: 'post',
359
+    data: data
360
+  })
361
+}

+ 29
- 0
src/api/config.js Просмотреть файл

@@ -0,0 +1,29 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 查询客户管理导航栏设置接口
5
+ * @param {*} data
6
+ */
7
+export function configHeaderModelSortAPI(data) {
8
+  return request({
9
+    url: 'admin/index/sort',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 修改首页顶部导航栏设置接口
17
+ * @param {*} data
18
+ */
19
+export function configSetHeaderModelSortAPI(data) {
20
+  return request({
21
+    url: 'admin/index/updatesort',
22
+    method: 'post',
23
+    data: data,
24
+    headers: {
25
+      'Content-Type': 'application/json;charset=UTF-8'
26
+    }
27
+  })
28
+}
29
+

+ 325
- 0
src/api/crm/business.js Просмотреть файл

@@ -0,0 +1,325 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建商机
5
+ * @param {*} data
6
+ */
7
+export function crmBusinessSaveAPI(data) {
8
+  const url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: `crm/business/${url}`,
11
+    method: 'post',
12
+    data: data
13
+  })
14
+}
15
+
16
+/**
17
+ * 列表
18
+ * @param {*} data
19
+ */
20
+export function crmBusinessIndexAPI(data) {
21
+  return request({
22
+    url: 'crm/business/index',
23
+    method: 'post',
24
+    data: data
25
+  })
26
+}
27
+
28
+/**
29
+ * 删除
30
+ * @param {*} data
31
+ */
32
+export function crmBusinessDeleteAPI(data) {
33
+  return request({
34
+    url: 'crm/business/delete',
35
+    method: 'post',
36
+    data: data,
37
+    headers: {
38
+      'Content-Type': 'application/json;charset=UTF-8'
39
+    }
40
+  })
41
+}
42
+
43
+/**
44
+ * 商机状态组
45
+ * @param {*} data
46
+ */
47
+export function crmBusinessStatusListAPI(data) {
48
+  return request({
49
+    url: 'crm/business/statusList',
50
+    method: 'post',
51
+    data: data
52
+  })
53
+}
54
+
55
+
56
+/**
57
+ * 商机下的状态组
58
+ * @param {*} data
59
+ */
60
+export function crmBusinessStatusByIdAPI(data) {
61
+  return request({
62
+    url: `crm/business/statusList`,
63
+    method: 'post',
64
+    data: data
65
+  })
66
+}
67
+
68
+/**
69
+ * 详情
70
+ * @param {*} data
71
+ */
72
+export function crmBusinessReadAPI(data) {
73
+  return request({
74
+    url: `crm/business/read`,
75
+    method: 'post',
76
+    data
77
+  })
78
+}
79
+
80
+/**
81
+ * 商机转移
82
+ * @param {*} data
83
+ */
84
+export function crmBusinessTransferAPI(data) {
85
+  return request({
86
+    url: 'crm/business/transfer',
87
+    method: 'post',
88
+    data: data,
89
+    headers: {
90
+      'Content-Type': 'application/json;charset=UTF-8'
91
+    }
92
+  })
93
+}
94
+
95
+/**
96
+ * 商机转移
97
+ * @param {*} data
98
+ */
99
+export function crmBusinessAdvanceAPI(data) {
100
+  return request({
101
+    url: 'crm/business/advance',
102
+    method: 'post',
103
+    data: data,
104
+    headers: {
105
+      'Content-Type': 'application/json;charset=UTF-8'
106
+    }
107
+  })
108
+}
109
+
110
+/**
111
+ * 商机相关产品
112
+ * @param {*} data
113
+ */
114
+export function crmBusinessProductAPI(data) {
115
+  return request({
116
+    url: 'crm/business/product',
117
+    method: 'post',
118
+    data: data,
119
+    headers: {
120
+      'Content-Type': 'application/json;charset=UTF-8'
121
+    }
122
+  })
123
+}
124
+
125
+/**
126
+ * 合同
127
+ * @param {*} data
128
+ */
129
+export function crmBusinessQueryContractAPI(data) {
130
+  return request({
131
+    url: 'crm/contract/index',
132
+    method: 'post',
133
+    data: data,
134
+    headers: {
135
+      'Content-Type': 'application/json;charset=UTF-8'
136
+    }
137
+  })
138
+}
139
+
140
+// 团队操作
141
+/**
142
+ * 团队成员创建
143
+ * @param {*} data
144
+ */
145
+export function crmBusinessSettingTeamSaveAPI(data) {
146
+  return request({
147
+    url: 'crm/setting/teamSave',
148
+    method: 'post',
149
+    data: data,
150
+    headers: {
151
+      'Content-Type': 'application/json;charset=UTF-8'
152
+    }
153
+  })
154
+}
155
+
156
+export function crmBusinessSettingTeamDeleteAPI(data) {
157
+  return request({
158
+    url: 'crm/setting/teamSave',
159
+    method: 'post',
160
+    data: data,
161
+    headers: {
162
+      'Content-Type': 'application/json;charset=UTF-8'
163
+    }
164
+  })
165
+}
166
+
167
+export function crmBusinessTeamMembersAPI(data) {
168
+  return request({
169
+    url: `crm/setting/team`,
170
+    method: 'post',
171
+    data
172
+  })
173
+}
174
+
175
+export function crmBusinessUpdateMembersAPI(data) {
176
+  return request({
177
+    url: 'crm/setting/teamSave',
178
+    method: 'post',
179
+    data: data,
180
+    headers: {
181
+      'Content-Type': 'application/json;charset=UTF-8'
182
+    }
183
+  })
184
+}
185
+
186
+/**
187
+ * 退出团队
188
+ * @param {*} data
189
+ */
190
+export function crmBusinessExitTeamAPI(data) {
191
+  return request({
192
+    url: `crm/setting/quitTeam`,
193
+    method: 'post',
194
+    data
195
+  })
196
+}
197
+
198
+/**
199
+ * 商机关联联系人
200
+ * @param {*} data
201
+ */
202
+export function crmBusinessRelateContactsAPI(data) {
203
+  return request({
204
+    url: 'crm/contacts/relation',
205
+    method: 'post',
206
+    data: data,
207
+    headers: {
208
+      'Content-Type': 'application/json;charset=UTF-8'
209
+    }
210
+  })
211
+}
212
+
213
+/**
214
+ * 商机取消关联联系人
215
+ * @param {*} data
216
+ */
217
+export function crmBusinessUnrelateContactsAPI(data) {
218
+  return request({
219
+    url: 'crm/contacts/relation',
220
+    method: 'post',
221
+    data: data,
222
+    headers: {
223
+      'Content-Type': 'application/json;charset=UTF-8'
224
+    }
225
+  })
226
+}
227
+
228
+/**
229
+ * 商机下联系人
230
+ * @param {*} data
231
+ */
232
+export function crmBusinessQueryContactsAPI(data) {
233
+  return request({
234
+    url: 'crm/contacts/index',
235
+    method: 'post',
236
+    data: data,
237
+    headers: {
238
+      'Content-Type': 'application/json;charset=UTF-8'
239
+    }
240
+  })
241
+}
242
+
243
+/**
244
+ * 设置首要联系人
245
+ * @param {*} data
246
+ *
247
+ */
248
+export function crmBusinessSetContactsAPI(data) {
249
+  return request({
250
+    url: 'crm/business/setPrimary',
251
+    method: 'post',
252
+    data: data,
253
+    headers: {
254
+      'Content-Type': 'application/json;charset=UTF-8'
255
+    }
256
+  })
257
+}
258
+
259
+/**
260
+ * 附件列表
261
+ * @param {*} data
262
+ *
263
+ */
264
+export function crmBusinessFileListAPI(data) {
265
+  return request({
266
+    url: 'admin/file/index',
267
+    method: 'post',
268
+    data: data
269
+  })
270
+}
271
+
272
+/**
273
+ * tab数量
274
+ * @param {*} data
275
+ *
276
+ */
277
+export function crmBusinessNumAPI(data) {
278
+  return request({
279
+    url: 'crm/business/count',
280
+    method: 'post',
281
+    data: data
282
+  })
283
+}
284
+
285
+/**
286
+ * 商机导出
287
+ * @param {*} data
288
+ */
289
+export function crmBusinessExcelExportAPI(data) {
290
+  return request({
291
+    url: 'crm/business/excelExport',
292
+    method: 'post',
293
+    data: data,
294
+    headers: {
295
+      'Content-Type': 'application/json;charset=UTF-8'
296
+    },
297
+    responseType: 'blob',
298
+    timeout: 60000
299
+  })
300
+}
301
+
302
+export function crmBusinessExcelAllExportAPI(data) {
303
+  return request({
304
+    url: 'crm/business/excelExport',
305
+    method: 'post',
306
+    data: data,
307
+    responseType: 'blob',
308
+    headers: {
309
+      'Content-Type': 'application/json;charset=UTF-8'
310
+    }
311
+  })
312
+}
313
+
314
+/**
315
+ * 标星
316
+ * @param {*} data
317
+ *
318
+ */
319
+export function crmBusinessStarAPI(data) {
320
+  return request({
321
+    url: `/crm/business/star`,
322
+    method: 'post',
323
+    data
324
+  })
325
+}

+ 474
- 0
src/api/crm/common.js Просмотреть файл

@@ -0,0 +1,474 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ *crm 自定义字段的添加
5
+ * @param {*} data
6
+ */
7
+export function filedGetFieldAPI(data) {
8
+  // const label = data.label
9
+  // let url
10
+  // if (label === 10) {
11
+  //   url = '/oaExamineField/queryField/' + data.id
12
+  // } else {
13
+  //   url = crmTypeModel.labelToType[label] + '/field/' + (data.id ? data.id : '')
14
+  // }
15
+  return request({
16
+    url: 'admin/field/getField',
17
+    method: 'post',
18
+    data
19
+  })
20
+}
21
+
22
+/**
23
+ * 详情页基本信息
24
+ * data 会包含poolId 需保留
25
+ * @param {*} data
26
+ */
27
+export function filedGetInformationAPI(data) {
28
+  return request({
29
+    url: `admin/field/getField`,
30
+    method: 'post',
31
+    data
32
+  })
33
+}
34
+/**
35
+ * 详情页系统信息
36
+ *
37
+ * @param {*} data
38
+ */
39
+export function filedGetSystemAPI(data) {
40
+  return request({
41
+    url: `crm/${data.crmType}/system`,
42
+    method: 'post',
43
+    data
44
+  })
45
+}
46
+
47
+
48
+/**
49
+ * 表头
50
+ * @param {*} data
51
+ */
52
+export function filedGetTableFieldAPI(data) {
53
+  return request({
54
+    url: 'admin/field/getField',
55
+    method: 'post',
56
+    data: data,
57
+    headers: {
58
+      'Content-Type': 'application/json;charset=UTF-8'
59
+    }
60
+  })
61
+}
62
+
63
+
64
+/**
65
+ * 基本信息编辑
66
+ * @param {*} data
67
+ */
68
+export function filedUpdateTableFieldAPI(data) {
69
+  // const url = {
70
+  //   1: 'crmLeads',
71
+  //   2: 'crmCustomer',
72
+  //   3: 'crmContacts',
73
+  //   4: 'crmProduct',
74
+  //   5: 'crmBusiness',
75
+  //   6: 'crmContract',
76
+  //   7: 'crmReceivables',
77
+  //   17: 'crmReturnVisit'
78
+  // }[data.label]
79
+  return request({
80
+    url: `crm/common/quickEdit`,
81
+    method: 'post',
82
+    data: data,
83
+    headers: {
84
+      'Content-Type': 'application/json;charset=UTF-8'
85
+    }
86
+  })
87
+}
88
+
89
+/**
90
+ * 公海表头
91
+ * @param {*} data
92
+ */
93
+export function filedGetPoolTableFieldAPI(data) {
94
+  return request({
95
+    url: 'admin/field/getField',
96
+    method: 'post',
97
+    data: data
98
+  })
99
+}
100
+
101
+/**
102
+ * 自定义字段验重
103
+ * @param {*} data
104
+ */
105
+export function filedValidatesAPI(data) {
106
+  return request({
107
+    url: 'admin/field/validates',
108
+    method: 'post',
109
+    data: data
110
+  })
111
+}
112
+
113
+/**
114
+ * 自定义字段(高级筛选)
115
+ * @param {*} data
116
+ */
117
+export function filterIndexfieldsAPI(data) {
118
+  return request({
119
+    url: 'admin/index/fields',
120
+    method: 'post',
121
+    data: data
122
+  })
123
+}
124
+
125
+/**
126
+ * 公海自定义字段(高级筛选)
127
+ * @param {*} data
128
+ */
129
+export function filterIndexPoolfieldsAPI(data) {
130
+  return request({
131
+    url: 'admin/index/fields',
132
+    method: 'post',
133
+    data: data
134
+  })
135
+}
136
+
137
+/**
138
+ * 场景列表
139
+ * @param {*} data
140
+ */
141
+export function crmSceneIndexAPI(data) {
142
+  return request({
143
+    url: 'admin/scene/index',
144
+    method: 'post',
145
+    data: data
146
+  })
147
+}
148
+
149
+/**
150
+ * 场景设置列表
151
+ * @param {*} data
152
+ */
153
+export function crmSceneSetIndexAPI(data) {
154
+  return request({
155
+    url: 'admin/scene/index',
156
+    method: 'post',
157
+    data: data
158
+  })
159
+}
160
+
161
+/**
162
+ * 场景创建
163
+ * @param {*} data
164
+ */
165
+export function crmSceneSaveAPI(data) {
166
+  return request({
167
+    url: 'admin/scene/save',
168
+    method: 'post',
169
+    data: data,
170
+    headers: {
171
+      'Content-Type': 'application/json;charset=UTF-8'
172
+    }
173
+  })
174
+}
175
+
176
+/**
177
+ * 场景编辑
178
+ * @param {*} data
179
+ */
180
+export function crmSceneUpdateAPI(data) {
181
+  return request({
182
+    url: 'admin/scene/update',
183
+    method: 'post',
184
+    data: data,
185
+    headers: {
186
+      'Content-Type': 'application/json;charset=UTF-8'
187
+    }
188
+  })
189
+}
190
+
191
+/**
192
+ * 场景默认
193
+ * @param {*} data
194
+ */
195
+export function crmSceneDefaultsAPI(data) {
196
+  return request({
197
+    url: 'admin/scene/defaults',
198
+    method: 'post',
199
+    data: data
200
+  })
201
+}
202
+
203
+/**
204
+ * 场景删除
205
+ * @param {*} data
206
+ */
207
+export function crmSceneDeleteAPI(data) {
208
+  return request({
209
+    url: 'admin/scene/delete',
210
+    method: 'post',
211
+    data: data
212
+  })
213
+}
214
+
215
+/**
216
+ * 场景排序
217
+ * @param {*} data
218
+ */
219
+export function crmSceneSortAPI(data) {
220
+  return request({
221
+    url: 'admin/scene/sort',
222
+    method: 'post',
223
+    data: data,
224
+    headers: {
225
+      'Content-Type': 'application/json;charset=UTF-8'
226
+    }
227
+  })
228
+}
229
+
230
+/**
231
+ * 列表字段排序数据
232
+ * @param {*} data
233
+ */
234
+export function crmFieldConfigAPIIndexAPI(data) {
235
+  return request({
236
+    url: 'admin/field/configIndex',
237
+    method: 'post',
238
+    data: data
239
+  })
240
+}
241
+
242
+/**
243
+ * 公海列表字段排序数据
244
+ * @param {*} data
245
+ */
246
+export function crmPoolFieldConfigIndexAPI(data) {
247
+  return request({
248
+    url: 'admin/field/configIndex',
249
+    method: 'post',
250
+    data: data
251
+  })
252
+}
253
+
254
+/**
255
+ * 列表排序编辑
256
+ * @param {*} data
257
+ */
258
+export function crmFieldConfigAPI(data) {
259
+  return request({
260
+    url: 'admin/field/config',
261
+    method: 'post',
262
+    data: data
263
+  })
264
+}
265
+
266
+/**
267
+ * 公海列表排序编辑
268
+ * @param {*} data
269
+ */
270
+export function crmPoolFieldConfigAPI(data) {
271
+  return request({
272
+    url: 'admin/field/config',
273
+    method: 'post',
274
+    data: data
275
+  })
276
+}
277
+
278
+/**
279
+ * 列表宽度设置
280
+ * @param {*} data
281
+ */
282
+export function crmFieldColumnWidthAPI(data) {
283
+  return request({
284
+    url: 'admin/field/columnWidth',
285
+    method: 'post',
286
+    data: data,
287
+    headers: {
288
+      'Content-Type': 'application/json;charset=UTF-8'
289
+    }
290
+  })
291
+}
292
+
293
+/**
294
+ * 公海 列表宽度设置
295
+ * @param {*} data
296
+ */
297
+export function crmPoolFieldColumnWidthAPI(data) {
298
+  return request({
299
+    url: 'crmField/setPoolFieldStyle',
300
+    method: 'post',
301
+    data: data,
302
+    headers: {
303
+      'Content-Type': 'application/json;charset=UTF-8'
304
+    }
305
+  })
306
+}
307
+
308
+/**
309
+ * 操作记录
310
+ * @param {*} data
311
+ */
312
+export function crmIndexFieldRecordAPI(data) {
313
+  return request({
314
+    url: 'admin/index/fieldRecord',
315
+    method: 'post',
316
+    data: data
317
+  })
318
+}
319
+
320
+/**
321
+ * 客户管理下 合同回款的待审批
322
+ * @param {*} data
323
+ */
324
+export function crmExamineMyExamineAPI(data) {
325
+  return request({
326
+    url: 'oa/examine/myExamine',
327
+    method: 'post',
328
+    data: data,
329
+    headers: {
330
+      'Content-Type': 'application/json;charset=UTF-8'
331
+    }
332
+  })
333
+}
334
+
335
+/**
336
+ * 查询活动分页列表
337
+ * @param {*} data
338
+ */
339
+export function crmActivityListAPI(data) {
340
+  return request({
341
+    url: 'crm/activity/index',
342
+    method: 'post',
343
+    data: data,
344
+    headers: {
345
+      'Content-Type': 'application/json;charset=UTF-8'
346
+    }
347
+  })
348
+}
349
+
350
+/**
351
+ * 删除跟进记录
352
+ * @param {*} data
353
+ */
354
+export function crmActivityDeleteAPI(data) {
355
+  return request({
356
+    url: `crm/activity/delete`,
357
+    method: 'post',
358
+    data
359
+  })
360
+}
361
+
362
+/**
363
+ * 删除外勤签到
364
+ * @param {*} data
365
+ */
366
+export function crmActivityOutworkSignDeleteAPI(data) {
367
+  return request({
368
+    url: 'crmActivity/deleteOutworkSign',
369
+    method: 'post',
370
+    data: data
371
+  })
372
+}
373
+
374
+/**
375
+ * 添加跟进记录
376
+ * @param {*} data
377
+ */
378
+export function crmActivityAddAPI(data) {
379
+  return request({
380
+    url: 'crm/activity/save',
381
+    method: 'post',
382
+    data: data
383
+  })
384
+}
385
+
386
+/**
387
+ * 编辑跟进记录
388
+ * @param {*} data
389
+ */
390
+export function crmActivityUpdateAPI(data) {
391
+  return request({
392
+    url: 'crm/activity/update',
393
+    method: 'post',
394
+    data: data,
395
+    headers: {
396
+      'Content-Type': 'application/json;charset=UTF-8'
397
+    }
398
+  })
399
+}
400
+
401
+/**
402
+ * 查看当前导入数量
403
+ * @param {*} data
404
+ */
405
+export function crmQueryImportNumAPI(data) {
406
+  return request({
407
+    url: 'admin/index/importNum',
408
+    method: 'post',
409
+    data: data
410
+  })
411
+}
412
+
413
+/**
414
+ * 查询导入结果
415
+ * @param {*} data
416
+ */
417
+export function crmQueryImportInfoAPI(data) {
418
+  return request({
419
+    url: 'admin/index/importInfo',
420
+    method: 'post',
421
+    data: data
422
+  })
423
+}
424
+
425
+/**
426
+ * 查看错误数据接口
427
+ * @param {*} data
428
+ */
429
+export function crmDownImportErrorAPI(data) {
430
+  return request({
431
+    url: 'admin/file/download',
432
+    method: 'post',
433
+    data: data,
434
+    responseType: 'blob'
435
+  })
436
+}
437
+
438
+/**
439
+ * 查询跟进记录常用语
440
+ * @param {*} data
441
+ */
442
+export function sysConfigQueryPhraseAPI(data) {
443
+  return request({
444
+    url: 'crm/activity/getPhrase',
445
+    method: 'post',
446
+    data: data
447
+  })
448
+}
449
+
450
+/**
451
+ * 设置跟进记录常用语
452
+ * @param {*} data
453
+ */
454
+export function sysConfigSetPhraseAPI(data) {
455
+  return request({
456
+    url: 'crm/activity/setPhrase',
457
+    method: 'post',
458
+    data,
459
+    headers: {
460
+      'Content-Type': 'application/json;charset=UTF-8'
461
+    }
462
+  })
463
+}
464
+// admin/examineFlow/stepList 审批流程
465
+export function examineFlowStepListAPI(data) {
466
+  return request({
467
+    url: 'admin/examine_flow/stepList',
468
+    method: 'post',
469
+    data,
470
+    headers: {
471
+      'Content-Type': 'application/json;charset=UTF-8'
472
+    }
473
+  })
474
+}

+ 219
- 0
src/api/crm/contacts.js Просмотреть файл

@@ -0,0 +1,219 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建联系人
5
+ * @param {*} data
6
+ */
7
+export function crmContactsSaveAPI(data) {
8
+  var url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/contacts/' + url,
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ * 列表
21
+ * @param {*} data
22
+ */
23
+export function crmContactsIndexAPI(data) {
24
+  return request({
25
+    url: 'crm/contacts/index',
26
+    method: 'post',
27
+    data: data
28
+  })
29
+}
30
+
31
+/**
32
+ * 删除
33
+ * @param {*} data
34
+ */
35
+export function crmContactsDeleteAPI(data) {
36
+  return request({
37
+    url: 'crm/contacts/delete',
38
+    method: 'post',
39
+    data: data,
40
+    headers: {
41
+      'Content-Type': 'application/json;charset=UTF-8'
42
+    }
43
+  })
44
+}
45
+
46
+/**
47
+ * 详情
48
+ * @param {*} data
49
+ */
50
+export function crmContactsReadAPI(data) {
51
+  return request({
52
+    url: `crm/contacts/read`,
53
+    method: 'post',
54
+    data
55
+  })
56
+}
57
+
58
+/**
59
+ * 联系人转移
60
+ * @param {*} data
61
+ */
62
+export function crmContactsTransferAPI(data) {
63
+  return request({
64
+    url: 'crm/contacts/transfer',
65
+    method: 'post',
66
+    data: data,
67
+    headers: {
68
+      'Content-Type': 'application/json;charset=UTF-8'
69
+    }
70
+  })
71
+}
72
+
73
+/**
74
+ * 联系人下商机
75
+ * @param {*} data
76
+ */
77
+export function crmContactsQueryBusinessAPI(data) {
78
+  return request({
79
+    url: 'crm/business/index',
80
+    method: 'post',
81
+    data: data,
82
+    headers: {
83
+      'Content-Type': 'application/json;charset=UTF-8'
84
+    }
85
+  })
86
+}
87
+
88
+/**
89
+ * 联系人导出
90
+ * @param {*} data
91
+ * Contacts_id 联系人ID
92
+ */
93
+export function crmContactsExcelExportAPI(data) {
94
+  return request({
95
+    url: 'crm/contacts/excelExport',
96
+    method: 'post',
97
+    data: data,
98
+    headers: {
99
+      'Content-Type': 'application/json;charset=UTF-8'
100
+    },
101
+    responseType: 'blob'
102
+  })
103
+}
104
+
105
+export function crmContactsExcelAllExportAPI(data) {
106
+  return request({
107
+    url: 'crm/contacts/excelExport',
108
+    method: 'post',
109
+    data: data,
110
+    responseType: 'blob',
111
+    headers: {
112
+      'Content-Type': 'application/json;charset=UTF-8'
113
+    }
114
+  })
115
+}
116
+
117
+/**
118
+ * 联系人导入
119
+ * @param {*} data
120
+ *
121
+ */
122
+export function crmContactsExcelImportAPI(data) {
123
+  var param = new FormData()
124
+  Object.keys(data).forEach(key => {
125
+    param.append(key, data[key])
126
+  })
127
+  return request({
128
+    url: 'crm/contacts/excelImport',
129
+    method: 'post',
130
+    data: param,
131
+    headers: {
132
+      'Content-Type': 'multipart/form-data'
133
+    }
134
+  })
135
+}
136
+
137
+/**
138
+ * 联系人导入模板下载
139
+ * @param {*} data
140
+ *
141
+ */
142
+export const crmContactsExcelDownloadURL = window.BASE_URL + 'crmContacts/downloadExcel'
143
+export function crmContactsDownloadExcelAPI(data) {
144
+  return request({
145
+    url: 'crm/contacts/excelDownload',
146
+    method: 'get',
147
+    data: data,
148
+    responseType: 'blob'
149
+  })
150
+}
151
+
152
+/**
153
+ * 联系人关联商机
154
+ * @param {*} data
155
+ */
156
+export function crmContactsRelateBusinessAPI(data) {
157
+  return request({
158
+    url: 'crm/contacts/relation',
159
+    method: 'post',
160
+    data: data,
161
+    headers: {
162
+      'Content-Type': 'application/json;charset=UTF-8'
163
+    }
164
+  })
165
+}
166
+
167
+/**
168
+ * 联系人取消关联商机
169
+ * @param {*} data
170
+ */
171
+export function crmContactsUnrelateBusinessAPI(data) {
172
+  return request({
173
+    url: 'crm/contacts/relation',
174
+    method: 'post',
175
+    data: data,
176
+    headers: {
177
+      'Content-Type': 'application/json;charset=UTF-8'
178
+    }
179
+  })
180
+}
181
+
182
+/**
183
+ * 附件列表
184
+ * @param {*} data
185
+ *
186
+ */
187
+export function crmContactsFileListAPI(data) {
188
+  return request({
189
+    url: 'admin/file/index',
190
+    method: 'post',
191
+    data: data
192
+  })
193
+}
194
+
195
+/**
196
+ * tab数量
197
+ * @param {*} data
198
+ *
199
+ */
200
+export function crmContactsNumAPI(data) {
201
+  return request({
202
+    url: 'crm/contacts/count',
203
+    method: 'post',
204
+    data: data
205
+  })
206
+}
207
+
208
+/**
209
+ * 标星
210
+ * @param {*} data
211
+ *
212
+ */
213
+export function crmContactsStarAPI(data) {
214
+  return request({
215
+    url: `crm/contacts/star`,
216
+    method: 'post',
217
+    data
218
+  })
219
+}

+ 266
- 0
src/api/crm/contract.js Просмотреть файл

@@ -0,0 +1,266 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建合同
5
+ * @param {*} data
6
+ */
7
+export function crmContractSaveAPI(data) {
8
+  const url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/contract/' + url,
11
+    method: 'post',
12
+    data: data
13
+  })
14
+}
15
+
16
+/**
17
+ * 列表
18
+ * @param {*} data
19
+ */
20
+export function crmContractIndexAPI(data) {
21
+  return request({
22
+    url: 'crm/contract/index',
23
+    method: 'post',
24
+    data: data
25
+  })
26
+}
27
+
28
+/**
29
+ * 删除
30
+ * @param {*} data
31
+ */
32
+export function crmContractDeleteAPI(data) {
33
+  return request({
34
+    url: 'crm/contract/delete',
35
+    method: 'post',
36
+    data: data,
37
+    headers: {
38
+      'Content-Type': 'application/json;charset=UTF-8'
39
+    }
40
+  })
41
+}
42
+
43
+/**
44
+ * 详情
45
+ * @param {*} data
46
+ */
47
+export function crmContractReadAPI(data) {
48
+  return request({
49
+    url: `crm/contract/read`,
50
+    method: 'post',
51
+    data
52
+  })
53
+}
54
+
55
+/**
56
+ * 合同相关产品
57
+ * @param {*} data
58
+ * contract_id
59
+ */
60
+export function crmContractProductAPI(data) {
61
+  return request({
62
+    url: 'crm/contract/product',
63
+    method: 'post',
64
+    data: data,
65
+    headers: {
66
+      'Content-Type': 'application/json;charset=UTF-8'
67
+    }
68
+  })
69
+}
70
+
71
+/**
72
+ * 转移
73
+ * @param {*} data
74
+ */
75
+export function crmContractTransferAPI(data) {
76
+  return request({
77
+    url: 'crm/contract/transfer',
78
+    method: 'post',
79
+    data: data,
80
+    headers: {
81
+      'Content-Type': 'application/json;charset=UTF-8'
82
+    }
83
+  })
84
+}
85
+
86
+/**
87
+ * 合同下回款
88
+ * @param {*} data
89
+ */
90
+export function crmContractQueryReceivablesAPI(data) {
91
+  return request({
92
+    url: 'crm/receivables/index',
93
+    method: 'post',
94
+    data: data,
95
+    headers: {
96
+      'Content-Type': 'application/json;charset=UTF-8'
97
+    }
98
+  })
99
+}
100
+
101
+/**
102
+ * 合同下回款计划
103
+ * @param {*} data
104
+ */
105
+export function crmContractQueryReceivablesPlanAPI(data) {
106
+  return request({
107
+    url: 'crm/receivables_plan/index',
108
+    method: 'post',
109
+    data: data,
110
+    headers: {
111
+      'Content-Type': 'application/json;charset=UTF-8'
112
+    }
113
+  })
114
+}
115
+
116
+// 团队操作
117
+/**
118
+ * 团队成员创建
119
+ * @param {*} data
120
+ */
121
+export function crmContractSettingTeamSaveAPI(data) {
122
+  return request({
123
+    url: 'crm/setting/teamSave',
124
+    method: 'post',
125
+    data: data,
126
+    headers: {
127
+      'Content-Type': 'application/json;charset=UTF-8'
128
+    }
129
+  })
130
+}
131
+
132
+export function crmContractSettingTeamDeleteAPI(data) {
133
+  return request({
134
+    url: 'crm/setting/teamSave',
135
+    method: 'post',
136
+    data: data,
137
+    headers: {
138
+      'Content-Type': 'application/json;charset=UTF-8'
139
+    }
140
+  })
141
+}
142
+
143
+export function crmContractTeamMembersAPI(data) {
144
+  return request({
145
+    url: `crm/setting/team`,
146
+    method: 'post',
147
+    data
148
+  })
149
+}
150
+
151
+export function crmContractUpdateMembersAPI(data) {
152
+  return request({
153
+    url: 'crm/setting/teamSave',
154
+    method: 'post',
155
+    data: data,
156
+    headers: {
157
+      'Content-Type': 'application/json;charset=UTF-8'
158
+    }
159
+  })
160
+}
161
+
162
+/**
163
+ * 退出团队
164
+ * @param {*} data
165
+ */
166
+export function crmContractExitTeamAPI(data) {
167
+  return request({
168
+    url: `crm/setting/quitTeam`,
169
+    method: 'post',
170
+    data
171
+  })
172
+}
173
+
174
+/**
175
+ * 新建回款查询回款计划
176
+ * @param {*} data
177
+ */
178
+export function crmQueryReceivablesPlansByContractIdAPI(data) {
179
+  return request({
180
+    url: 'crm/receivables_plan/index',
181
+    method: 'post',
182
+    data: data
183
+  })
184
+}
185
+
186
+/**
187
+ * 作废
188
+ * @param {*} data
189
+ */
190
+export function crmContractCancelAPI(data) {
191
+  return request({
192
+    url: 'crm/contract/cancel',
193
+    method: 'post',
194
+    data: data
195
+  })
196
+}
197
+
198
+/**
199
+ * 附件列表
200
+ * @param {*} data
201
+ *
202
+ */
203
+export function crmContractFileListAPI(data) {
204
+  return request({
205
+    url: 'admin/file/index',
206
+    method: 'post',
207
+    data: data
208
+  })
209
+}
210
+
211
+/**
212
+ * tab数量
213
+ * @param {*} data
214
+ *
215
+ */
216
+export function crmContractNumAPI(data) {
217
+  return request({
218
+    url: 'crm/contract/count',
219
+    method: 'post',
220
+    data: data
221
+  })
222
+}
223
+
224
+/**
225
+ * 合同导出
226
+ * @param {*} data
227
+ */
228
+export function crmContractExcelExportAPI(data) {
229
+  return request({
230
+    url: 'crm/contract/excelExport',
231
+    method: 'post',
232
+    data: data,
233
+    headers: {
234
+      'Content-Type': 'application/json;charset=UTF-8'
235
+    },
236
+    responseType: 'blob',
237
+    timeout: 60000
238
+  })
239
+}
240
+
241
+export function crmContractExcelAllExportAPI(data) {
242
+  return request({
243
+    url: 'crm/contract/excelExport',
244
+    method: 'post',
245
+    data: data,
246
+    responseType: 'blob',
247
+    headers: {
248
+      'Content-Type': 'application/json;charset=UTF-8'
249
+    }
250
+  })
251
+}
252
+
253
+/**
254
+ * 回访
255
+ * @param {*} data
256
+ */
257
+export function crmContractQueryVisitAPI(data) {
258
+  return request({
259
+    url: 'crm/visit/index',
260
+    method: 'post',
261
+    data: data,
262
+    headers: {
263
+      'Content-Type': 'application/json;charset=UTF-8'
264
+    }
265
+  })
266
+}

+ 723
- 0
src/api/crm/customer.js Просмотреть файл

@@ -0,0 +1,723 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建编辑
5
+ * @param {*} data
6
+ */
7
+export function crmCustomerSaveAPI(data) {
8
+  const url = data.id && data.name ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/customer/' + url,
11
+    method: 'post',
12
+    data: data
13
+  })
14
+}
15
+
16
+/**
17
+ * 列表
18
+ * @param {*} data
19
+ */
20
+export function crmCustomerIndexAPI(data) {
21
+  return request({
22
+    url: 'crm/customer/index',
23
+    method: 'post',
24
+    data: data
25
+  })
26
+}
27
+
28
+/**
29
+ * 删除
30
+ * @param {*} data
31
+ */
32
+export function crmCustomerDeleteAPI(data) {
33
+  return request({
34
+    url: 'crm/customer/delete',
35
+    method: 'post',
36
+    data: data,
37
+    headers: {
38
+      'Content-Type': 'application/json;charset=UTF-8'
39
+    }
40
+  })
41
+}
42
+
43
+/**
44
+ * 公海列表
45
+ * @param {*} data
46
+ */
47
+export function crmCustomerPoolListAPI(data) {
48
+  return request({
49
+    url: 'crm/customer/pool',
50
+    method: 'post',
51
+    data: data
52
+  })
53
+}
54
+
55
+/**
56
+ * 删除
57
+ * @param {*} data
58
+ */
59
+export function crmCustomerPoolDeleteAPI(data) {
60
+  return request({
61
+    url: 'crm/customer/delete',
62
+    method: 'post',
63
+    data: data,
64
+    headers: {
65
+      'Content-Type': 'application/json;charset=UTF-8'
66
+    }
67
+  })
68
+}
69
+
70
+/**
71
+ * 设置公海
72
+ * @param {*} data
73
+ */
74
+export function crmCustomerPoolSetAPI(data) {
75
+  return request({
76
+    url: 'crmCustomerPool/setCustomerPool',
77
+    method: 'post',
78
+    data: data,
79
+    headers: {
80
+      'Content-Type': 'application/json;charset=UTF-8'
81
+    }
82
+  })
83
+}
84
+
85
+/**
86
+ * 公海设置列表
87
+ * @param {*} data
88
+ */
89
+export function crmCustomerPoolSetListAPI(data) {
90
+  return request({
91
+    url: 'crmCustomerPool/queryPoolSettingList',
92
+    method: 'post',
93
+    data: data,
94
+    headers: {
95
+      'Content-Type': 'application/json;charset=UTF-8'
96
+    }
97
+  })
98
+}
99
+
100
+/**
101
+ * 公海设置删除
102
+ */
103
+export function crmCustomerPoolSetDeleteAPI(data) {
104
+  return request({
105
+    url: 'crmCustomerPool/deleteCustomerPool',
106
+    method: 'post',
107
+    data: data
108
+  })
109
+}
110
+
111
+/**
112
+ * 公海设置详情
113
+ * @param {*} data
114
+ */
115
+export function crmCustomerPoolSetDetailAPI(data) {
116
+  return request({
117
+    url: 'crmCustomerPool/queryPoolById',
118
+    method: 'post',
119
+    data: data
120
+  })
121
+}
122
+
123
+/**
124
+ * 公海启停
125
+ * @param {*} data
126
+ */
127
+export function crmCustomerPoolSetChangeStatusAPI(data) {
128
+  return request({
129
+    url: 'crmCustomerPool/changeStatus',
130
+    method: 'post',
131
+    data: data
132
+  })
133
+}
134
+
135
+/**
136
+ * 公海客户转移
137
+ * prePoolId 转出公海id
138
+ * postPoolId 转入公海id
139
+ * @param {*} data
140
+ */
141
+export function crmCustomerPoolSetTransferAPI(data) {
142
+  return request({
143
+    url: 'crmCustomerPool/transfer',
144
+    method: 'post',
145
+    data: data
146
+  })
147
+}
148
+
149
+/**
150
+ * 转移数据源
151
+ * @param {*} data
152
+ */
153
+export function crmCustomerPoolSetNameListAPI(data) {
154
+  return request({
155
+    url: 'crmCustomerPool/queryPoolNameList',
156
+    method: 'post',
157
+    data: data
158
+  })
159
+}
160
+
161
+/**
162
+ * 客户管理用到的公海列表
163
+ * @param {*} data
164
+ */
165
+export function crmCustomerPoolNameListAPI(data) {
166
+  return request({
167
+    url: 'crmCustomerPool/queryPoolNameListByAuth',
168
+    method: 'post',
169
+    data: data
170
+  })
171
+}
172
+
173
+/**
174
+ * 获取客户级别选项接口
175
+ * @param {*} data
176
+ */
177
+export function crmCustomerPoolQueryLevelAPI(data) {
178
+  return request({
179
+    url: 'crmCustomerPool/queryCustomerLevel',
180
+    method: 'post',
181
+    data: data
182
+  })
183
+}
184
+
185
+/**
186
+ * 详情
187
+ */
188
+export function crmCustomerReadAPI(data) {
189
+  return request({
190
+    url: `crm/customer/read`,
191
+    method: 'post',
192
+    data: data
193
+  })
194
+}
195
+
196
+// 操作
197
+/**
198
+ * 客户锁定,解锁
199
+ * @param {*} data
200
+ */
201
+export function crmCustomerLockAPI(data) {
202
+  return request({
203
+    url: 'crm/customer/lock',
204
+    method: 'post',
205
+    data: data
206
+  })
207
+}
208
+
209
+/**
210
+ * 客户放入公海
211
+ * @param {*} data
212
+ * customer_id 	客户数组
213
+ */
214
+export function crmCustomerPutInPoolAPI(data) {
215
+  return request({
216
+    url: 'crm/customer/putInPool',
217
+    method: 'post',
218
+    data: data,
219
+    headers: {
220
+      'Content-Type': 'application/json;charset=UTF-8'
221
+    }
222
+  })
223
+}
224
+
225
+/**
226
+ * 客户转移
227
+ * @param {*} data
228
+ */
229
+export function crmCustomerTransferAPI(data) {
230
+  return request({
231
+    url: 'crm/customer/transfer',
232
+    method: 'post',
233
+    data: data,
234
+    headers: {
235
+      'Content-Type': 'application/json;charset=UTF-8'
236
+    }
237
+  })
238
+}
239
+
240
+/**
241
+ * 客户导出
242
+ * @param {*} data
243
+ * customer_id 客户ID
244
+ */
245
+export function crmCustomerExcelExportAPI(data) {
246
+  return request({
247
+    url: 'crm/customer/excelExport',
248
+    method: 'post',
249
+    data: data,
250
+    headers: {
251
+      'Content-Type': 'application/json;charset=UTF-8'
252
+    },
253
+    responseType: 'blob'
254
+  })
255
+}
256
+
257
+/**
258
+ * 全部导出
259
+ * @param {*} data
260
+ */
261
+export function crmCustomerExcelAllExportAPI(data) {
262
+  return request({
263
+    url: 'crm/customer/excelExport',
264
+    method: 'post',
265
+    data: data,
266
+    responseType: 'blob',
267
+    headers: {
268
+      'Content-Type': 'application/json;charset=UTF-8'
269
+    }
270
+  })
271
+}
272
+
273
+/**
274
+ * 客户导入
275
+ * @param {*} data
276
+ * customer_id 客户ID
277
+ */
278
+export function crmCustomerExcelImportAPI(data) {
279
+  var param = new FormData()
280
+  Object.keys(data).forEach(key => {
281
+    param.append(key, data[key])
282
+  })
283
+  return request({
284
+    url: 'crm/customer/excelImport',
285
+    method: 'post',
286
+    data: param,
287
+    headers: {
288
+      'Content-Type': 'multipart/form-data'
289
+    }
290
+  })
291
+}
292
+
293
+/**
294
+ * 公海客户导入
295
+ * @param {*} data
296
+ * customer_id 客户ID
297
+ */
298
+export function crmCustomerPoolExcelImportAPI(data) {
299
+  var param = new FormData()
300
+  Object.keys(data).forEach(key => {
301
+    param.append(key, data[key])
302
+  })
303
+  return request({
304
+    url: 'crmCustomerPool/uploadExcel',
305
+    method: 'post',
306
+    data: param,
307
+    headers: {
308
+      'Content-Type': 'multipart/form-data'
309
+    }
310
+  })
311
+}
312
+
313
+/**
314
+ * 客户导入模板下载
315
+ * @param {*} data
316
+ *
317
+ */
318
+export const crmCustomerExcelDownloadURL = window.BASE_URL + 'crmCustomer/downloadExcel'
319
+export function crmCustomerDownloadExcelAPI(data) {
320
+  return request({
321
+    url: 'crm/customer/excelDownload',
322
+    method: 'get',
323
+    data: data,
324
+    responseType: 'blob'
325
+  })
326
+}
327
+
328
+/**
329
+ * 公海导出
330
+ * @param {*} data
331
+ */
332
+export function crmCustomerPoolExcelExportAPI(data) {
333
+  return request({
334
+    url: 'crm/customer/poolExcelExport',
335
+    method: 'post',
336
+    data: data,
337
+    headers: {
338
+      'Content-Type': 'application/json;charset=UTF-8'
339
+    },
340
+    responseType: 'blob',
341
+    timeout: 60000
342
+  })
343
+}
344
+
345
+/**
346
+ * 公海全部导出
347
+ * @param {*} data
348
+ */
349
+export function crmCustomerPoolExcelAllExport(data) {
350
+  return request({
351
+    url: 'crm/customer/poolExcelExport',
352
+    method: 'post',
353
+    data: data,
354
+    responseType: 'blob',
355
+    headers: {
356
+      'Content-Type': 'application/json;charset=UTF-8'
357
+    }
358
+  })
359
+}
360
+
361
+/**
362
+ * 公海字段查询
363
+ * @param {*} data
364
+ */
365
+export function crmCustomerPoolQueryPoolFieldAPI(data) {
366
+  return request({
367
+    url: 'crmCustomerPool/queryPoolField',
368
+    method: 'post',
369
+    data: data
370
+  })
371
+}
372
+
373
+/**
374
+ * 获取公海池 操作权限
375
+ * @param {*} data
376
+ */
377
+export function crmCustomerPoolQueryAuthAPI(data) {
378
+  return request({
379
+    url: 'crm/customer/poolAuthority',
380
+    method: 'post',
381
+    data: data
382
+  })
383
+}
384
+
385
+/**
386
+ * 客户分配
387
+ * @param {*} data
388
+ */
389
+export function crmCustomerDistributeAPI(data) {
390
+  return request({
391
+    url: 'crm/customer/distribute',
392
+    method: 'post',
393
+    data: data,
394
+    headers: {
395
+      'Content-Type': 'application/json;charset=UTF-8'
396
+    }
397
+  })
398
+}
399
+
400
+/**
401
+ * 客户领取
402
+ * @param {*} data
403
+ */
404
+export function crmCustomerReceiveAPI(data) {
405
+  return request({
406
+    url: 'crm/customer/receive',
407
+    method: 'post',
408
+    data: data,
409
+    headers: {
410
+      'Content-Type': 'application/json;charset=UTF-8'
411
+    }
412
+  })
413
+}
414
+
415
+/**
416
+ * 客户下联系人
417
+ * @param {*} data
418
+ */
419
+export function crmCustomerQueryContactsAPI(data) {
420
+  return request({
421
+    url: 'crm/contacts/index',
422
+    method: 'post',
423
+    data: data,
424
+    headers: {
425
+      'Content-Type': 'application/json;charset=UTF-8'
426
+    }
427
+  })
428
+}
429
+
430
+/**
431
+ * 客户下回访
432
+ * @param {*} data
433
+ */
434
+export function crmCustomerQueryVisitAPI(data) {
435
+  return request({
436
+    url: 'crm/visit/index',
437
+    method: 'post',
438
+    data: data,
439
+    headers: {
440
+      'Content-Type': 'application/json;charset=UTF-8'
441
+    }
442
+  })
443
+}
444
+
445
+/**
446
+ * 客户下商机
447
+ * @param {*} data
448
+ */
449
+export function crmCustomerQueryBusinessAPI(data) {
450
+  return request({
451
+    url: 'crm/business/index',
452
+    method: 'post',
453
+    data: data,
454
+    headers: {
455
+      'Content-Type': 'application/json;charset=UTF-8'
456
+    }
457
+  })
458
+}
459
+
460
+/**
461
+ * 客户下合同
462
+ * @param {*} data
463
+ */
464
+export function crmCustomerQueryContractAPI(data) {
465
+  return request({
466
+    url: 'crm/contract/index',
467
+    method: 'post',
468
+    data: data,
469
+    headers: {
470
+      'Content-Type': 'application/json;charset=UTF-8'
471
+    }
472
+  })
473
+}
474
+
475
+/**
476
+ * 客户下回款计划
477
+ * @param {*} data
478
+ */
479
+export function crmCustomerQueryReceivablesPlanAPI(data) {
480
+  return request({
481
+    url: 'crm/receivables_plan/index',
482
+    method: 'post',
483
+    data: data,
484
+    headers: {
485
+      'Content-Type': 'application/json;charset=UTF-8'
486
+    }
487
+  })
488
+}
489
+
490
+/**
491
+ * 客户下回款
492
+ * @param {*} data
493
+ */
494
+export function crmCustomerQueryReceivablesAPI(data) {
495
+  return request({
496
+    url: 'crm/receivables/index',
497
+    method: 'post',
498
+    data: data,
499
+    headers: {
500
+      'Content-Type': 'application/json;charset=UTF-8'
501
+    }
502
+  })
503
+}
504
+
505
+// 团队操作
506
+/**
507
+ * 团队成员创建
508
+ * @param {*} data
509
+ * types crm_leads
510
+ * typesId 分类ID
511
+ */
512
+export function crmCustomerSettingTeamSaveAPI(data) {
513
+  return request({
514
+    url: 'crm/setting/teamSave',
515
+    method: 'post',
516
+    data: data,
517
+    headers: {
518
+      'Content-Type': 'application/json;charset=UTF-8'
519
+    }
520
+  })
521
+}
522
+
523
+export function crmCustomerSettingTeamDeleteAPI(data) {
524
+  return request({
525
+    url: 'crm/setting/teamSave',
526
+    method: 'post',
527
+    data: data,
528
+    headers: {
529
+      'Content-Type': 'application/json;charset=UTF-8'
530
+    }
531
+  })
532
+}
533
+
534
+export function crmCustomerTeamMembersAPI(data) {
535
+  return request({
536
+    url: `crm/setting/team`,
537
+    method: 'post',
538
+    data
539
+  })
540
+}
541
+
542
+export function crmCustomerUpdateMembersAPI(data) {
543
+  return request({
544
+    url: 'crm/setting/teamSave',
545
+    method: 'post',
546
+    data: data,
547
+    headers: {
548
+      'Content-Type': 'application/json;charset=UTF-8'
549
+    }
550
+  })
551
+}
552
+
553
+/**
554
+ * 退出团队
555
+ * @param {*} data
556
+ */
557
+export function crmCustomerExitTeamAPI(data) {
558
+  return request({
559
+    url: `crm/setting/quitTeam`,
560
+    method: 'post',
561
+    data
562
+  })
563
+}
564
+
565
+/**
566
+ * 客户标记跟进
567
+ * @param {*} data
568
+ * id 客户IDs
569
+ */
570
+export function crmCustomerSetFollowAPI(data) {
571
+  return request({
572
+    url: 'crm/message/allDeal',
573
+    method: 'post',
574
+    data: data,
575
+    headers: {
576
+      'Content-Type': 'application/json;charset=UTF-8'
577
+    }
578
+  })
579
+}
580
+
581
+/**
582
+ * 客户成交状态修改
583
+ * @param {*} data
584
+ * id 客户IDs
585
+ */
586
+export function crmCustomerDealStatusAPI(data) {
587
+  return request({
588
+    url: 'crm/customer/deal_status',
589
+    method: 'post',
590
+    data: data
591
+  })
592
+}
593
+
594
+/**
595
+ * 设置首要联系人
596
+ * @param {*} data
597
+ *
598
+ */
599
+export function crmCustomerSetContactsAPI(data) {
600
+  return request({
601
+    url: 'crm/contacts/setPrimary',
602
+    method: 'post',
603
+    data: data,
604
+    headers: {
605
+      'Content-Type': 'application/json;charset=UTF-8'
606
+    }
607
+  })
608
+}
609
+
610
+/**
611
+ * 数据查重
612
+ * @param {*} data
613
+ *
614
+ */
615
+export function crmCustomerDataCheckAPI(data) {
616
+  return request({
617
+    url: 'crm/index/queryRepeat',
618
+    method: 'post',
619
+    data: data,
620
+    headers: {
621
+      'Content-Type': 'application/json;charset=UTF-8'
622
+    }
623
+  })
624
+}
625
+
626
+/**
627
+ * 附件列表
628
+ * @param {*} data
629
+ *
630
+ */
631
+export function crmCustomerFileListAPI(data) {
632
+  return request({
633
+    url: 'admin/file/index',
634
+    method: 'post',
635
+    data: data
636
+  })
637
+}
638
+
639
+/**
640
+ * tab数量
641
+ * @param {*} data
642
+ *
643
+ */
644
+export function crmCustomerNumAPI(data) {
645
+  return request({
646
+    url: 'crm/customer/count',
647
+    method: 'post',
648
+    data: data
649
+  })
650
+}
651
+
652
+/**
653
+ * 客户标星
654
+ * @param {*} data
655
+ *
656
+ */
657
+export function crmCustomerStarAPI(data) {
658
+  return request({
659
+    url: `crm/customer/star`,
660
+    method: 'post',
661
+    data
662
+  })
663
+}
664
+
665
+/**
666
+ * 发票信息
667
+ * @param {*} data
668
+ */
669
+export function crmCustomerInvoiceAPI(data) {
670
+  return request({
671
+    url: 'crm/invoice/index',
672
+    method: 'post',
673
+    data: data,
674
+    headers: {
675
+      'Content-Type': 'application/json;charset=UTF-8'
676
+    }
677
+  })
678
+}
679
+
680
+/**
681
+ * 发票抬头信息
682
+ * @param {*} data
683
+ */
684
+export function crmCustomerInvoiceInfoAPI(data) {
685
+  return request({
686
+    url: 'crm/invoiceInfo/index',
687
+    method: 'post',
688
+    data: data,
689
+    headers: {
690
+      'Content-Type': 'application/json;charset=UTF-8'
691
+    }
692
+  })
693
+}
694
+
695
+/**
696
+ * 9.0公海设置
697
+ * @param {*} data
698
+ */
699
+export function crmSettingConfig(data) {
700
+  return request({
701
+    url: 'crm/setting/config',
702
+    method: 'post',
703
+    data: data,
704
+    headers: {
705
+      'Content-Type': 'application/json;charset=UTF-8'
706
+    }
707
+  })
708
+}
709
+
710
+/**
711
+ * 9.0公海设置获取
712
+ * @param {*} data
713
+ */
714
+export function customerSettingData(data) {
715
+  return request({
716
+    url: 'crm/setting/configData',
717
+    method: 'post',
718
+    data: data,
719
+    headers: {
720
+      'Content-Type': 'application/json;charset=UTF-8'
721
+    }
722
+  })
723
+}

+ 190
- 0
src/api/crm/invoice.js Просмотреть файл

@@ -0,0 +1,190 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建
5
+ * @param {*} data
6
+ */
7
+export function crmInvoiceSaveAPI(data) {
8
+  return request({
9
+    url: 'crm/invoice/save',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 编辑
20
+ * @param {*} data
21
+ */
22
+export function crmInvoiceUpdateAPI(data) {
23
+  return request({
24
+    url: 'crm/invoice/update',
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}
32
+
33
+/**
34
+ * 标注已开发票
35
+ * @param {*} data
36
+ */
37
+export function crmInvoiceStatusUpdateAPI(data) {
38
+  return request({
39
+    url: 'crm/invoice/setInvoice',
40
+    method: 'post',
41
+    data: data,
42
+    headers: {
43
+      'Content-Type': 'application/json;charset=UTF-8'
44
+    }
45
+  })
46
+}
47
+
48
+/**
49
+ * 标注已开发票
50
+ * @param {*} data
51
+ */
52
+export function crmInvoiceStatusResetAPI(data) {
53
+  return request({
54
+    url: 'crm/invoice/resetInvoiceStatus',
55
+    method: 'post',
56
+    data: data,
57
+    headers: {
58
+      'Content-Type': 'application/json;charset=UTF-8'
59
+    }
60
+  })
61
+}
62
+
63
+/**
64
+ * 分页查询发票
65
+ * @param {*} data
66
+ */
67
+export function crmInvoiceIndexAPI(data) {
68
+  return request({
69
+    url: 'crm/invoice/index',
70
+    method: 'post',
71
+    data: data,
72
+    headers: {
73
+      'Content-Type': 'application/json;charset=UTF-8'
74
+    }
75
+  })
76
+}
77
+
78
+// 发票详情
79
+export function crmInvoiceReadAPI(data) {
80
+  return request({
81
+    url: `crm/invoice/read`,
82
+    method: 'post',
83
+    data
84
+  })
85
+}
86
+// 发票table数量
87
+export function crmInvoiceNumAPI(data) {
88
+  return request({
89
+    url: `crm/invoice/count`,
90
+    method: 'post',
91
+    data
92
+  })
93
+}
94
+
95
+/**
96
+ * 附件列表
97
+ * @param {*} data
98
+ *
99
+ */
100
+export function crmInvoiceFileListAPI(data) {
101
+  return request({
102
+    url: 'admin/file/index',
103
+    method: 'post',
104
+    data: data
105
+  })
106
+}
107
+
108
+/**
109
+ * 转移
110
+ * @param {*} data
111
+ */
112
+export function crmInvoiceTransferAPI(data) {
113
+  return request({
114
+    url: 'crm/invoice/transfer',
115
+    method: 'post',
116
+    data: data,
117
+    headers: {
118
+      'Content-Type': 'application/json;charset=UTF-8'
119
+    }
120
+  })
121
+}
122
+
123
+/**
124
+ * 删除
125
+ * @param {*} data
126
+ */
127
+export function crmInvoiceDeleteIdsAPI(data) {
128
+  return request({
129
+    url: 'crm/invoice/delete',
130
+    method: 'post',
131
+    data: data,
132
+    headers: {
133
+      'Content-Type': 'application/json;charset=UTF-8'
134
+    }
135
+  })
136
+}
137
+
138
+/**
139
+ * 发票规则信息
140
+ * @param {*} data
141
+ */
142
+export function crmInvoiceNumberConfigAPI(data) {
143
+  return request({
144
+    url: 'crm/index/autoNumberStatus',
145
+    method: 'post',
146
+    data: data
147
+  })
148
+}
149
+
150
+/**
151
+ * 新建发票信息
152
+ * @param {*} data
153
+ */
154
+export function crmInvoiceSaveInvoiceInfoAPI(data) {
155
+  return request({
156
+    url: 'crm/invoiceInfo/save',
157
+    method: 'post',
158
+    data: data,
159
+    headers: {
160
+      'Content-Type': 'application/json;charset=UTF-8'
161
+    }
162
+  })
163
+}
164
+
165
+/**
166
+ * 编辑发票信息
167
+ * @param {*} data
168
+ */
169
+export function crmInvoiceUpdateInvoiceInfoAPI(data) {
170
+  return request({
171
+    url: 'crm/invoiceInfo/update',
172
+    method: 'post',
173
+    data: data,
174
+    headers: {
175
+      'Content-Type': 'application/json;charset=UTF-8'
176
+    }
177
+  })
178
+}
179
+
180
+/**
181
+ * 删除发票信息
182
+ * @param {*} data
183
+ */
184
+export function crmInvoiceDeleteInvoiceInfoAPI(data) {
185
+  return request({
186
+    url: 'crm/invoiceInfo/delete',
187
+    method: 'post',
188
+    data: data
189
+  })
190
+}

+ 203
- 0
src/api/crm/leads.js Просмотреть файл

@@ -0,0 +1,203 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建 编辑
5
+ * @param {*} data
6
+ */
7
+export function crmLeadsSaveAPI(data) {
8
+  const url = data.id && data.name ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/leads/' + url,
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ * 列表
21
+ * @param {*} data
22
+ */
23
+export function crmLeadsIndexAPI(data) {
24
+  return request({
25
+    url: 'crm/leads/index',
26
+    method: 'post',
27
+    data: data,
28
+    headers: {
29
+      'Content-Type': 'application/json;charset=UTF-8'
30
+    }
31
+  })
32
+}
33
+
34
+/**
35
+ * 删除
36
+ * @param {*} data
37
+ */
38
+export function crmLeadsDeleteAPI(data) {
39
+  return request({
40
+    url: 'crm/leads/delete',
41
+    method: 'post',
42
+    data: data,
43
+    headers: {
44
+      'Content-Type': 'application/json;charset=UTF-8'
45
+    }
46
+  })
47
+}
48
+
49
+/**
50
+ * 详情
51
+ * @param {*} id
52
+ */
53
+export function crmLeadsReadAPI(data) {
54
+  return request({
55
+    url: `crm/leads/read`,
56
+    method: 'post',
57
+    data
58
+  })
59
+}
60
+
61
+/**
62
+ * 线索转移
63
+ * @param {*} data
64
+ */
65
+export function crmLeadsTransferAPI(data) {
66
+  return request({
67
+    url: 'crm/leads/transfer',
68
+    method: 'post',
69
+    data: data
70
+  })
71
+}
72
+
73
+/**
74
+ * 线索转换为客户
75
+ * @param {*} data
76
+ */
77
+export function crmLeadsTransformAPI(data) {
78
+  return request({
79
+    url: 'crm/leads/transform',
80
+    method: 'post',
81
+    data: data
82
+  })
83
+}
84
+
85
+/**
86
+ * 线索导出
87
+ * @param {*} data
88
+ *
89
+ */
90
+export function crmLeadsExcelExportAPI(data) {
91
+  return request({
92
+    url: 'crm/leads/excelExport',
93
+    method: 'post',
94
+    data: data,
95
+    headers: {
96
+      'Content-Type': 'application/json;charset=UTF-8'
97
+    },
98
+    responseType: 'blob'
99
+  })
100
+}
101
+
102
+/**
103
+ * 线索全部导出
104
+ * @param {*} data
105
+ */
106
+export function crmLeadsExcelAllExportAPI(data) {
107
+  return request({
108
+    url: 'crm/leads/excelExport',
109
+    method: 'post',
110
+    data: data,
111
+    responseType: 'blob'
112
+  })
113
+}
114
+
115
+/**
116
+ * 线索导入
117
+ * @param {*} data
118
+ *
119
+ */
120
+export function crmLeadsExcelImportAPI(data) {
121
+  var param = new FormData()
122
+  Object.keys(data).forEach(key => {
123
+    param.append(key, data[key])
124
+  })
125
+  return request({
126
+    url: 'crm/leads/excelImport',
127
+    method: 'post',
128
+    data: param,
129
+    headers: {
130
+      'Content-Type': 'multipart/form-data'
131
+    }
132
+  })
133
+}
134
+
135
+/**
136
+ * 线索导入模板下载
137
+ * @param {*} data
138
+ *
139
+ */
140
+export const crmLeadsExcelDownloadURL = window.BASE_URL + 'crm/leads/excelDownload'
141
+export function crmLeadsDownloadExcelAPI(data) {
142
+  return request({
143
+    url: 'crm/leads/excelDownload',
144
+    method: 'get',
145
+    data: data,
146
+    responseType: 'blob'
147
+  })
148
+}
149
+
150
+/**
151
+ * 线索标记跟进
152
+ * @param {*} data
153
+ * id 客户IDs
154
+ */
155
+export function crmLeadsSetFollowAPI(data) {
156
+  return request({
157
+    url: 'crm/message/allDeal',
158
+    method: 'post',
159
+    data: data,
160
+    headers: {
161
+      'Content-Type': 'application/json;charset=UTF-8'
162
+    }
163
+  })
164
+}
165
+
166
+/**
167
+ * 附件列表
168
+ * @param {*} data
169
+ *
170
+ */
171
+export function crmLeadsFileListAPI(data) {
172
+  return request({
173
+    url: 'admin/file/index',
174
+    method: 'post',
175
+    data: data
176
+  })
177
+}
178
+
179
+/**
180
+ * tab数量
181
+ * @param {*} data
182
+ *
183
+ */
184
+export function crmLeadsNumAPI(data) {
185
+  return request({
186
+    url: 'crm/leads/count',
187
+    method: 'post',
188
+    data: data
189
+  })
190
+}
191
+
192
+/**
193
+ * 标星
194
+ * @param {*} data
195
+ *
196
+ */
197
+export function crmLeadsStarAPI(data) {
198
+  return request({
199
+    url: `/crm/leads/star`,
200
+    method: 'post',
201
+    data: data
202
+  })
203
+}

+ 225
- 0
src/api/crm/message.js Просмотреть файл

@@ -0,0 +1,225 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 待审核合同
5
+ * @param {*} data
6
+ */
7
+export function crmMessageCheckContractAPI(data) {
8
+  return request({
9
+    url: 'crm/message/checkContract',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 待审核回款
20
+ * @param {*} data
21
+ */
22
+export function crmMessageCheckReceivablesAPI(data) {
23
+  return request({
24
+    url: 'crm/message/checkReceivables',
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}
32
+
33
+/**
34
+ * 今日需联系客户
35
+ * @param {*} data
36
+ */
37
+export function crmMessageTodayCustomerAPI(data) {
38
+  return request({
39
+    url: 'crm/message/todayCustomer',
40
+    method: 'post',
41
+    data: data,
42
+    headers: {
43
+      'Content-Type': 'application/json;charset=UTF-8'
44
+    }
45
+  })
46
+}
47
+
48
+/**
49
+ * 今日需联系线索
50
+ * @param {*} data
51
+ */
52
+export function crmMessageTodayLeadsAPI(data) {
53
+  return request({
54
+    url: 'crm/message/todayLeads',
55
+    method: 'post',
56
+    data: data,
57
+    headers: {
58
+      'Content-Type': 'application/json;charset=UTF-8'
59
+    }
60
+  })
61
+}
62
+
63
+/**
64
+ * 今日需联系商机
65
+ * @param {*} data
66
+ */
67
+export function crmMessageTodayBusinessAPI(data) {
68
+  return request({
69
+    url: 'crm/message/todayBusiness',
70
+    method: 'post',
71
+    data: data,
72
+    headers: {
73
+      'Content-Type': 'application/json;charset=UTF-8'
74
+    }
75
+  })
76
+}
77
+
78
+
79
+/**
80
+ * 待跟进线索
81
+ * @param {*} data
82
+ */
83
+export function crmMessageFollowLeadsAPI(data) {
84
+  return request({
85
+    url: 'crm/message/followLeads',
86
+    method: 'post',
87
+    data: data,
88
+    headers: {
89
+      'Content-Type': 'application/json;charset=UTF-8'
90
+    }
91
+  })
92
+}
93
+
94
+
95
+/**
96
+ * 待跟进客户
97
+ * @param {*} data
98
+ */
99
+export function crmMessageFollowCustomerAPI(data) {
100
+  return request({
101
+    url: 'crm/message/followCustomer',
102
+    method: 'post',
103
+    data: data,
104
+    headers: {
105
+      'Content-Type': 'application/json;charset=UTF-8'
106
+    }
107
+  })
108
+}
109
+
110
+/**
111
+ * 即将到期合同
112
+ * @param {*} data
113
+ */
114
+export function crmMessagEndContractAPI(data) {
115
+  return request({
116
+    url: 'crm/message/endContract',
117
+    method: 'post',
118
+    data: data,
119
+    headers: {
120
+      'Content-Type': 'application/json;charset=UTF-8'
121
+    }
122
+  })
123
+}
124
+
125
+/**
126
+ * 待回款合同
127
+ * @param {*} data
128
+ */
129
+export function crmMessagRemindreceivablesplanAPI(data) {
130
+  return request({
131
+    url: 'crm/message/remindreceivablesplan',
132
+    method: 'post',
133
+    data: data,
134
+    headers: {
135
+      'Content-Type': 'application/json;charset=UTF-8'
136
+    }
137
+  })
138
+}
139
+
140
+/**
141
+ * 待办消息数
142
+ * @param {*} data
143
+ */
144
+export function crmMessagNumAPI(data) {
145
+  return request({
146
+    url: 'crm/message/num',
147
+    method: 'post',
148
+    data: data,
149
+    headers: {
150
+      'Content-Type': 'application/json;charset=UTF-8'
151
+    }
152
+  })
153
+}
154
+
155
+/**
156
+ * 待进入客户池
157
+ * @param {*} data
158
+ */
159
+export function crmMessagRemindCustomerAPI(data) {
160
+  return request({
161
+    url: 'crm/message/remindCustomer',
162
+    method: 'post',
163
+    data: data,
164
+    headers: {
165
+      'Content-Type': 'application/json;charset=UTF-8'
166
+    }
167
+  })
168
+}
169
+
170
+/**
171
+ * 待回访合同
172
+ * @param {*} data
173
+ */
174
+export function crmMessagVisitRemindAPI(data) {
175
+  return request({
176
+    url: 'crm/message/visitContract',
177
+    method: 'post',
178
+    data: data,
179
+    headers: {
180
+      'Content-Type': 'application/json;charset=UTF-8'
181
+    }
182
+  })
183
+}
184
+
185
+/**
186
+ * 待审核发票
187
+ * @param {*} data
188
+ */
189
+export function crmMessageCheckInvoiceAPI(data) {
190
+  return request({
191
+    url: 'crm/message/checkInvoice',
192
+    method: 'post',
193
+    data: data,
194
+    headers: {
195
+      'Content-Type': 'application/json;charset=UTF-8'
196
+    }
197
+  })
198
+}
199
+
200
+/**
201
+ * 全部标为已处理接口
202
+ * @param {*} data
203
+ */
204
+export function crmMessagAllDealAPI(data) {
205
+  return request({
206
+    url: 'crm/message/allDeal',
207
+    method: 'post',
208
+    data: data
209
+  })
210
+}
211
+
212
+/**
213
+ * 标为已处理接口
214
+ * @param {*} data
215
+ */
216
+export function crmMessagzealByIdAPI(data) {
217
+  return request({
218
+    url: 'crm/message/allDeal',
219
+    method: 'post',
220
+    data: data,
221
+    headers: {
222
+      'Content-Type': 'application/json;charset=UTF-8'
223
+    }
224
+  })
225
+}

+ 13
- 0
src/api/crm/nearby.js Просмотреть файл

@@ -0,0 +1,13 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 地图查询接口
5
+ * @param {*} data
6
+ */
7
+export function crmCrmCustomerNearbyCustomerAPI(data) {
8
+  return request({
9
+    url: 'crm/customer/nearby',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}

+ 192
- 0
src/api/crm/product.js Просмотреть файл

@@ -0,0 +1,192 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建产品
5
+ * @param {*} data
6
+ */
7
+export function crmProductSaveAPI(data) {
8
+  const url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/product/' + url,
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ * 列表
21
+ * @param {*} data
22
+ */
23
+export function crmProductIndexAPI(data) {
24
+  return request({
25
+    url: 'crm/product/index',
26
+    method: 'post',
27
+    data: data
28
+  })
29
+}
30
+
31
+/**
32
+ * 产品上架列表
33
+ * @param {*} data
34
+ */
35
+export function crmProductSaleIndexAPI(data) {
36
+  return request({
37
+    url: 'crm/product/index',
38
+    method: 'post',
39
+    data: data,
40
+    headers: {
41
+      'Content-Type': 'application/json;charset=UTF-8'
42
+    }
43
+  })
44
+}
45
+
46
+/**
47
+ * 详情
48
+ * @param {*} data
49
+ */
50
+export function crmProductReadAPI(data) {
51
+  return request({
52
+    url: `crm/product/read`,
53
+    method: 'post',
54
+    data
55
+  })
56
+}
57
+
58
+/**
59
+ * 产品上架、下架
60
+ * @param {*} data
61
+ */
62
+export function crmProductStatusAPI(data) {
63
+  return request({
64
+    url: 'crm/product/status',
65
+    method: 'post',
66
+    data: data,
67
+    headers: {
68
+      'Content-Type': 'application/json;charset=UTF-8'
69
+    }
70
+  })
71
+}
72
+
73
+
74
+/**
75
+ * 产品导出
76
+ * @param {*} data
77
+ * product_id 产品ID
78
+ */
79
+export function crmProductExcelExportAPI(data) {
80
+  return request({
81
+    url: 'crm/product/excelExport',
82
+    method: 'post',
83
+    data: data,
84
+    headers: {
85
+      'Content-Type': 'application/json;charset=UTF-8'
86
+    },
87
+    responseType: 'blob'
88
+  })
89
+}
90
+
91
+export function crmProductExcelAllExportAPI(data) {
92
+  return request({
93
+    url: 'crm/product/excelExport',
94
+    method: 'post',
95
+    data: data,
96
+    responseType: 'blob',
97
+    headers: {
98
+      'Content-Type': 'application/json;charset=UTF-8'
99
+    }
100
+  })
101
+}
102
+
103
+/**
104
+ * 产品导入
105
+ * @param {*} data
106
+ *
107
+ */
108
+export function crmProductExcelImportAPI(data) {
109
+  var param = new FormData()
110
+  Object.keys(data).forEach(key => {
111
+    param.append(key, data[key])
112
+  })
113
+  return request({
114
+    url: 'crm/product/excelImport',
115
+    method: 'post',
116
+    data: param,
117
+    headers: {
118
+      'Content-Type': 'multipart/form-data'
119
+    }
120
+  })
121
+}
122
+
123
+/**
124
+ * 产品导入模板下载
125
+ * @param {*} data
126
+ *
127
+ */
128
+export const crmProductExcelDownloadURL = window.BASE_URL + 'crmProduct/downloadExcel'
129
+export function crmProductDownloadExcelAPI(data) {
130
+  return request({
131
+    url: 'crm/product/excelDownload',
132
+    method: 'get',
133
+    data: data,
134
+    responseType: 'blob'
135
+  })
136
+}
137
+
138
+/**
139
+ * 附件列表
140
+ * @param {*} data
141
+ *
142
+ */
143
+export function crmProductFileListAPI(data) {
144
+  return request({
145
+    url: 'admin/file/index',
146
+    method: 'post',
147
+    data: data
148
+  })
149
+}
150
+
151
+/**
152
+ * tab数量
153
+ * @param {*} data
154
+ *
155
+ */
156
+export function crmProductNumAPI(data) {
157
+  return request({
158
+    url: 'crm/product/count',
159
+    method: 'post',
160
+    data: data
161
+  })
162
+}
163
+
164
+/**
165
+ * 产品转移
166
+ * @param {*} data
167
+ */
168
+export function crmProductTransferAPI(data) {
169
+  return request({
170
+    url: 'crm/product/transfer',
171
+    method: 'post',
172
+    data: data,
173
+    headers: {
174
+      'Content-Type': 'application/json;charset=UTF-8'
175
+    }
176
+  })
177
+}
178
+
179
+/**
180
+ * 产品删除
181
+ * @param {*} data
182
+ */
183
+export function crmProductDeleteAPI(data) {
184
+  return request({
185
+    url: 'crm/product/delete',
186
+    method: 'post',
187
+    data: data,
188
+    headers: {
189
+      'Content-Type': 'application/json;charset=UTF-8'
190
+    }
191
+  })
192
+}

+ 158
- 0
src/api/crm/receivables.js Просмотреть файл

@@ -0,0 +1,158 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建回款
5
+ * @param {*} data
6
+ */
7
+export function crmReceivablesSaveAPI(data) {
8
+  const url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/receivables/' + url,
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ * 回款列表
21
+ * @param {*} data
22
+ */
23
+export function crmReceivablesIndexAPI(data) {
24
+  return request({
25
+    url: 'crm/receivables/index',
26
+    method: 'post',
27
+    data: data
28
+  })
29
+}
30
+
31
+/**
32
+ * 删除
33
+ * @param {*} data
34
+ *
35
+ */
36
+export function crmReceivablesDeleteAPI(data) {
37
+  return request({
38
+    url: 'crm/receivables/delete',
39
+    method: 'post',
40
+    data: data,
41
+    headers: {
42
+      'Content-Type': 'application/json;charset=UTF-8'
43
+    }
44
+  })
45
+}
46
+
47
+/**
48
+ * 回款详情
49
+ * @param {*} data
50
+ */
51
+export function crmReceivablesReadAPI(data) {
52
+  return request({
53
+    url: `crm/receivables/read`,
54
+    method: 'post',
55
+    data
56
+  })
57
+}
58
+
59
+/**
60
+ * 回款计划删除
61
+ * @param {*} data
62
+ */
63
+export function crmReceivablesPlanDeleteAPI(data) {
64
+  return request({
65
+    url: 'crm/receivables_plan/delete',
66
+    method: 'post',
67
+    data: data,
68
+    headers: {
69
+      'Content-Type': 'application/json;charset=UTF-8'
70
+    }
71
+  })
72
+}
73
+
74
+/**
75
+ * 回款列表
76
+ * @param {*} data
77
+ *
78
+ */
79
+export function crmReceivablesFileListAPI(data) {
80
+  return request({
81
+    url: 'admin/file/index',
82
+    method: 'post',
83
+    data: data
84
+  })
85
+}
86
+
87
+/**
88
+ * tab数量
89
+ * @param {*} data
90
+ *
91
+ */
92
+export function crmReceivablesNumAPI(data) {
93
+  return request({
94
+    url: 'crm/receivables/count',
95
+    method: 'post',
96
+    data: data
97
+  })
98
+}
99
+
100
+/**
101
+ * 导出
102
+ * @param {*} data
103
+ */
104
+export function crmReceivablesExcelExportAPI(data) {
105
+  return request({
106
+    url: 'crm/receivables/excelExport',
107
+    method: 'post',
108
+    data: data,
109
+    headers: {
110
+      'Content-Type': 'application/json;charset=UTF-8'
111
+    },
112
+    responseType: 'blob',
113
+    timeout: 60000
114
+  })
115
+}
116
+
117
+export function crmReceivablesExcelAllExportAPI(data) {
118
+  return request({
119
+    url: 'crmReceivables/allExportExcel',
120
+    method: 'post',
121
+    data: data,
122
+    responseType: 'blob',
123
+    headers: {
124
+      'Content-Type': 'application/json;charset=UTF-8'
125
+    }
126
+  })
127
+}
128
+
129
+/**
130
+ * 转移
131
+ * @param {*} data
132
+ */
133
+export function crmReceivablesTransferAPI(data) {
134
+  return request({
135
+    url: 'crm/receivables/transfer',
136
+    method: 'post',
137
+    data: data,
138
+    headers: {
139
+      'Content-Type': 'application/json;charset=UTF-8'
140
+    }
141
+  })
142
+}
143
+
144
+/**
145
+ * 回款计划创建
146
+ * @param {*} data
147
+ */
148
+export function crmReceivablesPlanSaveAPI(data) {
149
+  const url = data.id ? 'update' : 'save'
150
+  return request({
151
+    url: 'crm/receivables_plan/' + url,
152
+    method: 'post',
153
+    data: data,
154
+    headers: {
155
+      'Content-Type': 'application/json;charset=UTF-8'
156
+    }
157
+  })
158
+}

+ 68
- 0
src/api/crm/visit.js Просмотреть файл

@@ -0,0 +1,68 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 新建
5
+ * @param {*} data
6
+ */
7
+export function crmReturnVisitSaveAPI(data) {
8
+  const url = data.id ? 'update' : 'save'
9
+  return request({
10
+    url: 'crm/visit/' + url,
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ * 列表
21
+ * @param {*} data
22
+ */
23
+export function crmReturnVisitIndexAPI(data) {
24
+  return request({
25
+    url: 'crm/visit/index',
26
+    method: 'post',
27
+    data: data
28
+  })
29
+}
30
+
31
+/**
32
+ * 删除
33
+ * @param {*} data
34
+ */
35
+export function crmReturnVisitDeleteAPI(data) {
36
+  return request({
37
+    url: 'crm/visit/delete',
38
+    method: 'post',
39
+    data: data,
40
+    headers: {
41
+      'Content-Type': 'application/json;charset=UTF-8'
42
+    }
43
+  })
44
+}
45
+
46
+/**
47
+ * 附件
48
+ * @param {*} data
49
+ */
50
+export function crmReturnVisitFileAPI(data) {
51
+  return request({
52
+    url: 'admin/file/index',
53
+    method: 'post',
54
+    data: data
55
+  })
56
+}
57
+
58
+/**
59
+ * 详情
60
+ * @param {*} visitId
61
+ */
62
+export function crmReturnVisitReadAPI(data) {
63
+  return request({
64
+    url: `crm/visit/read`,
65
+    method: 'post',
66
+    data
67
+  })
68
+}

+ 250
- 0
src/api/crm/workbench.js Просмотреть файл

@@ -0,0 +1,250 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 销售简报
5
+ * @param {*} data
6
+ */
7
+export function crmQueryBulletinAPI(data) {
8
+  return request({
9
+    url: 'crm/index/index',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+/**
18
+ * 销售简报-日志
19
+ * @param {*} data
20
+ */
21
+export function crmQueryOneBulletinAPI(data) {
22
+  return request({
23
+    url: 'oa/log/oneBulletin',
24
+    method: 'post',
25
+    data: data,
26
+    headers: {
27
+      'Content-Type': 'application/json;charset=UTF-8'
28
+    }
29
+  })
30
+}
31
+/**
32
+ * 数据汇总
33
+ * @param {*} data
34
+ */
35
+export function queryDataInfo(data) {
36
+  return request({
37
+    url: 'crm/index/queryDataInfo',
38
+    method: 'post',
39
+    data: data,
40
+    headers: {
41
+      'Content-Type': 'application/json;charset=UTF-8'
42
+    }
43
+  })
44
+}
45
+
46
+/**
47
+ * 销售简报列表
48
+ */
49
+export function crmIndexIndexListAPI(data) {
50
+  return request({
51
+    url: 'crm/index/indexList',
52
+    method: 'post',
53
+    data: data,
54
+    headers: {
55
+      'Content-Type': 'application/json;charset=UTF-8'
56
+    }
57
+  })
58
+}
59
+
60
+/**
61
+ * 简报跟进记录数量
62
+ * @param {*} data
63
+ */
64
+export function crmQueryRecordConuntAPI(data) {
65
+  return request({
66
+    url: 'crm/index/indexList',
67
+    method: 'post',
68
+    data: data,
69
+    headers: {
70
+      'Content-Type': 'application/json;charset=UTF-8'
71
+    }
72
+  })
73
+}
74
+
75
+/**
76
+ * 业绩指标
77
+ * @param {*} data
78
+ */
79
+export function crmIndexAchievementDataAPI(data) {
80
+  return request({
81
+    url: 'crm/index/achievementData',
82
+    method: 'post',
83
+    data: data,
84
+    headers: {
85
+      'Content-Type': 'application/json;charset=UTF-8'
86
+    }
87
+  })
88
+}
89
+
90
+/**
91
+ * 销售漏斗
92
+ * @param {*} data
93
+ */
94
+export function crmIndexFunnelAPI(data) {
95
+  return request({
96
+    url: 'crm/index/funnel',
97
+    method: 'post',
98
+    data: data,
99
+    headers: {
100
+      'Content-Type': 'application/json;charset=UTF-8'
101
+    }
102
+  })
103
+}
104
+
105
+/**
106
+ * 销售漏斗详情
107
+ * @param {*} data
108
+ */
109
+export function crmInstrumentSellFunnelBusinessListAPI(data) {
110
+  return request({
111
+    url: 'crmInstrument/sellFunnelBusinessList',
112
+    method: 'post',
113
+    data: data,
114
+    headers: {
115
+      'Content-Type': 'application/json;charset=UTF-8'
116
+    }
117
+  })
118
+}
119
+
120
+/**
121
+ * 销售趋势
122
+ * @param {*} data
123
+ */
124
+export function crmIndexSaletrendAPI(data) {
125
+  return request({
126
+    url: 'crm/index/saletrend',
127
+    method: 'post',
128
+    data: data,
129
+    headers: {
130
+      'Content-Type': 'application/json;charset=UTF-8'
131
+    }
132
+  })
133
+}
134
+
135
+/**
136
+ * 获取简报 跟进记录信息
137
+ * @param {*} data
138
+ */
139
+export function crmIndexGetRecordListAPI(data) {
140
+  // data.label = data.crmType
141
+  return request({
142
+    url: 'crm/index/activityList',
143
+    method: 'post',
144
+    data: data,
145
+    headers: {
146
+      'Content-Type': 'application/json;charset=UTF-8'
147
+    }
148
+  })
149
+}
150
+/**
151
+ * 获取简报记录信息
152
+ * @param {*} data
153
+ */
154
+// export function crmIndexGetRecordActivityListAPI(data) {
155
+//   // data.label = data.crmType
156
+//   return request({
157
+//     url: 'crm/index/activityList',
158
+//     method: 'post',
159
+//     data: data,
160
+//     headers: {
161
+//       'Content-Type': 'application/json;charset=UTF-8'
162
+//     }
163
+//   })
164
+// }
165
+/**
166
+ * 遗忘提醒
167
+ * @param {*} data
168
+ */
169
+export function crmIndexForgottenCustomerAPI(data) {
170
+  return request({
171
+    url: 'crm/index/forgottenCustomerCount',
172
+    method: 'post',
173
+    data: data,
174
+    headers: {
175
+      'Content-Type': 'application/json;charset=UTF-8'
176
+    }
177
+  })
178
+}
179
+
180
+/**
181
+ * 遗忘提醒详情
182
+ * @param {*} data
183
+ */
184
+export function crmIndexForgottenCustomerListAPI(data) {
185
+  return request({
186
+    url: 'crm/index/forgottenCustomerPageList',
187
+    method: 'post',
188
+    data: data,
189
+    headers: {
190
+      'Content-Type': 'application/json;charset=UTF-8'
191
+    }
192
+  })
193
+}
194
+
195
+/**
196
+ * 排行榜
197
+ * @param {*} data
198
+ */
199
+export function crmIndexRankingAPI(data) {
200
+  return request({
201
+    url: 'crm/index/ranking',
202
+    method: 'post',
203
+    data: data,
204
+    headers: {
205
+      'Content-Type': 'application/json;charset=UTF-8'
206
+    }
207
+  })
208
+}
209
+
210
+/**
211
+ * 仪表盘排序
212
+ * @param {*} data
213
+ */
214
+export function crmIndexSortAPI(data) {
215
+  return request({
216
+    url: 'crm/index/dashboard',
217
+    method: 'post',
218
+    data: data
219
+  })
220
+}
221
+
222
+/**
223
+ * 仪表盘排序设置
224
+ * @param {*} data
225
+ */
226
+export function crmIndexSetSortAPI(data) {
227
+  return request({
228
+    url: 'crm/index/updateDashboard',
229
+    method: 'post',
230
+    data: data,
231
+    headers: {
232
+      'Content-Type': 'application/json;charset=UTF-8'
233
+    }
234
+  })
235
+}
236
+
237
+/**
238
+ * 逾期未联系客户接口
239
+ * @param {*} data
240
+ */
241
+export function crmIndexUnContactCustomerAPI(data) {
242
+  return request({
243
+    url: 'crm/index/forgottenCustomerPageList',
244
+    method: 'post',
245
+    data: data,
246
+    headers: {
247
+      'Content-Type': 'application/json;charset=UTF-8'
248
+    }
249
+  })
250
+}

+ 151
- 0
src/api/examine/index.js Просмотреть файл

@@ -0,0 +1,151 @@
1
+/**
2
+ * Create by yxk at 2020/6/22
3
+ */
4
+import request from '@/utils/request'
5
+
6
+/**
7
+ * 查询所有未删除审批流程
8
+ * @param {*} data
9
+ */
10
+export function crmExamineQueryAllAPI(data) {
11
+  return request({
12
+    url: 'admin/examine_flow/index',
13
+    method: 'post',
14
+    data: data,
15
+    headers: {
16
+      'Content-Type': 'application/json;charset=UTF-8'
17
+    }
18
+  })
19
+}
20
+
21
+// /**
22
+//  * 根据id查询审批流程 examineId 审批流程id
23
+//  */
24
+// export function QueryExamineById(data) {
25
+//   return request({
26
+//     url: `crmExamine/queryExamineById/${data.examineId}`,
27
+//     method: 'post'
28
+//   })
29
+// }
30
+
31
+/**
32
+ * 查询当前启用审核流程步骤
33
+ */
34
+export function crmExamineStepAPI(data) {
35
+  return request({
36
+    url: 'admin/examine_flow/stepList',
37
+    method: 'post',
38
+    data: data,
39
+    headers: {
40
+      'Content-Type': 'application/json;charset=UTF-8'
41
+    }
42
+  })
43
+}
44
+
45
+/**
46
+ * 添加审批流程
47
+ */
48
+export function crmExamineSaveAPI(data) {
49
+  return request({
50
+    url: `admin/examine_flow/${data.flow_id ? 'update' : 'save'}`,
51
+    method: 'post',
52
+    data: data,
53
+    headers: {
54
+      'Content-Type': 'application/json;charset=UTF-8'
55
+    }
56
+  })
57
+}
58
+
59
+/**
60
+ * 停用或删除审批流程
61
+ */
62
+export function crmExamineUpdateStatusAPI(data) {
63
+  return request({
64
+    url: 'admin/examine_flow/delete',
65
+    method: 'post',
66
+    data: data,
67
+    headers: {
68
+      'Content-Type': 'application/json;charset=UTF-8'
69
+    }
70
+  })
71
+}
72
+
73
+/**
74
+ * 停用或删除审批流程
75
+ */
76
+export function crmExamineEnablesStatusAPI(data) {
77
+  return request({
78
+    url: 'admin/examine_flow/enables',
79
+    method: 'post',
80
+    data: data,
81
+    headers: {
82
+      'Content-Type': 'application/json;charset=UTF-8'
83
+    }
84
+  })
85
+}
86
+
87
+
88
+/**
89
+ * 进行审批 AuditExamine  合同
90
+ */
91
+export function crmExamineRecordAuditAPI(data) {
92
+  const url = data.type === 'revoke' ? 'crm/contract/revokeCheck' : 'crm/contract/check'
93
+  return request({
94
+    url,
95
+    method: 'post',
96
+    data: data,
97
+    headers: {
98
+      'Content-Type': 'application/json;charset=UTF-8'
99
+    }
100
+  })
101
+}
102
+/**
103
+ * 进行审批 发票
104
+ */
105
+export function crmExamineInvoiceAuditAPI(data) {
106
+  const url = data.type === 'revoke' ? 'crm/invoice/revokeCheck' : 'crm/invoice/check'
107
+  return request({
108
+    url,
109
+    method: 'post',
110
+    data: data,
111
+    headers: {
112
+      'Content-Type': 'application/json;charset=UTF-8'
113
+    }
114
+  })
115
+}
116
+/**
117
+ * 进行审批 回款
118
+ */
119
+export function crmExamineReceivablesAuditAPI(data) {
120
+  const url = data.type === 'revoke' ? 'crm/receivables/revokeCheck' : 'crm/receivables/check'
121
+  return request({
122
+    url,
123
+    method: 'post',
124
+    data: data,
125
+    headers: {
126
+      'Content-Type': 'application/json;charset=UTF-8'
127
+    }
128
+  })
129
+}
130
+
131
+/**
132
+ * 查询审批记录
133
+ */
134
+export function crmExamineRecordLogListAPI(data) {
135
+  return request({
136
+    url: 'admin/examine_flow/recordList',
137
+    method: 'post',
138
+    data: data
139
+  })
140
+}
141
+
142
+/**
143
+ * 查询审批流程列表
144
+ */
145
+export function crmExamineRecordRecordListAPI(data) {
146
+  return request({
147
+    url: 'admin/examine_flow/stepList',
148
+    method: 'post',
149
+    data: data
150
+  })
151
+}

+ 124
- 0
src/api/login.js Просмотреть файл

@@ -0,0 +1,124 @@
1
+import request from '@/utils/request'
2
+
3
+export function loginAPI(params) {
4
+  return request({
5
+    url: 'admin/base/login',
6
+    method: 'post',
7
+    data: params
8
+  })
9
+}
10
+
11
+export function logoutAPI() {
12
+  return request({
13
+    url: 'admin/base/logout',
14
+    method: 'post'
15
+  })
16
+}
17
+
18
+/**
19
+ * 获取短信验证码
20
+ * @param params
21
+ */
22
+export function sendSmsAPI(params) {
23
+  return request({
24
+    url: 'cloud/sendSms',
25
+    method: 'post',
26
+    data: params
27
+  })
28
+}
29
+
30
+/**
31
+ * 注册
32
+ * @param params
33
+ */
34
+export function registerAPI(params) {
35
+  return request({
36
+    url: 'cloud/register',
37
+    method: 'post',
38
+    data: params,
39
+    headers: {
40
+      'Content-Type': 'application/json;charset=UTF-8'
41
+    }
42
+  })
43
+}
44
+
45
+/**
46
+ * 多公司选择登陆
47
+ * @param params
48
+ */
49
+export function chooseLoginAPI(params) {
50
+  return request({
51
+    url: 'reLogin',
52
+    method: 'post',
53
+    data: params,
54
+    headers: {
55
+      'Content-Type': 'application/json;charset=UTF-8'
56
+    }
57
+  })
58
+}
59
+
60
+/**
61
+ * 找回密码
62
+ * @param params
63
+ */
64
+export function forgetPwdAPI(params) {
65
+  return request({
66
+    url: 'cloud/findpwd',
67
+    method: 'post',
68
+    data: params
69
+  })
70
+}
71
+
72
+/**
73
+ * 重置密码
74
+ * @param params
75
+ */
76
+export function resetPwdAPI(params) {
77
+  return request({
78
+    url: 'cloud/resetpwd',
79
+    method: 'post',
80
+    data: params
81
+  })
82
+}
83
+
84
+/**
85
+ * 验证短信验证码
86
+ * @param params
87
+ */
88
+export function verfySmsAPI(params) {
89
+  return request({
90
+    url: 'cloud/verifySms',
91
+    method: 'post',
92
+    data: params
93
+  })
94
+}
95
+
96
+/**
97
+ * 验证
98
+ * @param params
99
+ */
100
+export function verfyCodeAPI(params) {
101
+  return request({
102
+    url: 'verfyCode',
103
+    method: 'post',
104
+    data: params
105
+  })
106
+}
107
+
108
+export function querySystemStatusAPI() {
109
+  return request({
110
+    url: 'adminUser/querySystemStatus',
111
+    method: 'post'
112
+  })
113
+}
114
+
115
+export function initUserAPI(data) {
116
+  return request({
117
+    url: 'adminUser/initUser',
118
+    method: 'post',
119
+    data,
120
+    headers: {
121
+      'Content-Type': 'application/json;charset=UTF-8'
122
+    }
123
+  })
124
+}

+ 43
- 0
src/api/oa/addressBook.js Просмотреть файл

@@ -0,0 +1,43 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 通讯录列表
5
+ * @param {*} data
6
+ */
7
+export function addressListAPI(data) {
8
+  return request({
9
+    url: 'oa/addresslist/queryList',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+// /**
19
+//  * 通讯录部门列表
20
+//  * @param {*} data
21
+//  */
22
+// export function queryListNameByDept(data) {
23
+//   return request({
24
+//     url: 'adminUser/queryListNameByDept',
25
+//     method: 'post',
26
+//     data: data,
27
+//     headers: {
28
+//       'Content-Type': 'application/json;charset=UTF-8'
29
+//     }
30
+//   })
31
+// }
32
+
33
+/**
34
+ * 通讯录关注状态切换
35
+ * @param {*} data
36
+ */
37
+export function toggleAttentionAPI(data) {
38
+  return request({
39
+    url: 'oa/addresslist/userStar',
40
+    method: 'post',
41
+    data: data
42
+  })
43
+}

+ 47
- 0
src/api/oa/common.js Просмотреть файл

@@ -0,0 +1,47 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 评论添加
5
+ * @param {*} data
6
+ */
7
+export function setCommentAPI(data) {
8
+  return request({
9
+    url: 'work/taskcomment/save',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 日志评论添加
20
+ * @param {*} data
21
+ */
22
+export function setjournalCommentAPI(data) {
23
+  return request({
24
+    url: 'oa/log/commentSave',
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}
32
+export function deleteCommentAPI(data) {
33
+  return request({
34
+    url: 'work/taskcomment/delete',
35
+    method: 'post',
36
+    data: data
37
+  })
38
+}
39
+
40
+
41
+export function queryCommentListAPI(data) {
42
+  return request({
43
+    url: 'oa/log/commentList',
44
+    method: 'post',
45
+    data
46
+  })
47
+}

+ 195
- 0
src/api/oa/examine.js Просмотреть файл

@@ -0,0 +1,195 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 审批类型列表
5
+ * @param {*} data
6
+ */
7
+export function oaAllExamineCategoryListAPI(data) {
8
+  return request({
9
+    url: 'oa/examine/categoryList',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 审批类型前台排序
17
+ * @param {*} data
18
+ */
19
+export function oaAllExamineCategorySortAPI(data) {
20
+  return request({
21
+    url: 'oaExamineCategory/saveOrUpdateOaExamineSort',
22
+    method: 'post',
23
+    data: data,
24
+    headers: {
25
+      'Content-Type': 'application/json;charset=UTF-8'
26
+    }
27
+  })
28
+}
29
+
30
+/**
31
+ * 审批新建
32
+ * @param {*} data
33
+ */
34
+export function oaExamineSaveAndUpdateAPI(data) {
35
+  return request({
36
+    url: `oa/examine/${data.id ? 'update' : 'save'}`,
37
+    method: 'post',
38
+    data: data,
39
+    headers: {
40
+      'Content-Type': 'application/json;charset=UTF-8'
41
+    }
42
+  })
43
+}
44
+
45
+/**
46
+ * 我发起的审批
47
+ * @param {*} data
48
+ */
49
+export function oaExamineMyCreateIndexAPI(data) {
50
+  return request({
51
+    url: 'oa/examine/index',
52
+    method: 'post',
53
+    data: data,
54
+    headers: {
55
+      'Content-Type': 'application/json;charset=UTF-8'
56
+    }
57
+  })
58
+}
59
+
60
+/**
61
+ * 我审批的
62
+ * @param {*} data
63
+ */
64
+export function oaExamineMyExamineIndexAPI(data) {
65
+  return request({
66
+    url: 'oa/examine/index',
67
+    method: 'post',
68
+    data: data,
69
+    headers: {
70
+      'Content-Type': 'application/json;charset=UTF-8'
71
+    }
72
+  })
73
+}
74
+
75
+/**
76
+ * 审批删除
77
+ * @param {*} data
78
+ */
79
+export function oaExamineDeleteAPI(data) {
80
+  return request({
81
+    url: 'oa/examine/delete',
82
+    method: 'post',
83
+    data: data
84
+  })
85
+}
86
+
87
+/**
88
+ * 审批详情
89
+ * @param {*} examineId
90
+ */
91
+export function oaExamineReadAPI(data) {
92
+  return request({
93
+    url: `oa/examine/read`,
94
+    method: 'post',
95
+    data
96
+  })
97
+}
98
+
99
+// 新建的审批流
100
+/**
101
+ * CRM合同回款创建时候的审批流
102
+ * @param {*} data
103
+ */
104
+export function oaCreateExamineFlowAPI(data) {
105
+  return request({
106
+    url: 'admin/examine_flow/stepList',
107
+    method: 'post',
108
+    data: data
109
+  })
110
+}
111
+
112
+/**
113
+ * 审批详情 基本信息
114
+ * @param {*} data
115
+ */
116
+export function oaExamineGetFieldAPI(data) {
117
+  return request({
118
+    url: 'admin/field/getField',
119
+    method: 'post',
120
+    data: data,
121
+    headers: {
122
+      'Content-Type': 'application/json;charset=UTF-8'
123
+    }
124
+  })
125
+}
126
+
127
+/**
128
+ * 办公下 审批的审批信息
129
+ * @param {*} data
130
+ */
131
+export function oaExamineFlowStepListAPI(data) {
132
+  return request({
133
+    url: 'admin/examine_flow/stepList',
134
+    method: 'post',
135
+    data: data
136
+  })
137
+}
138
+
139
+/**
140
+ * 审批记录
141
+ * @param {*} data
142
+ */
143
+export function oaExamineFlowRecordListAPI(data) {
144
+  return request({
145
+    url: 'admin/examine_flow/recordList',
146
+    method: 'post',
147
+    data: data
148
+  })
149
+}
150
+
151
+/**
152
+ * 审批的审核
153
+ * @param {*} data
154
+ */
155
+export function oaExamineFlowAuditExamineAPI(data) {
156
+  const url = data.type === 'revoke' ? 'oa/examine/revokeCheck' : 'oa/examine/check'
157
+  return request({
158
+    url,
159
+    method: 'post',
160
+    data: data,
161
+    headers: {
162
+      'Content-Type': 'application/json;charset=UTF-8'
163
+    }
164
+  })
165
+}
166
+/**
167
+ * 审批的撤回审核
168
+ * @param {*} data
169
+ */
170
+export function oaExamineFlowRevokeCheckAPI(data) {
171
+  return request({
172
+    url: 'oa/examine/revokeCheck',
173
+    method: 'post',
174
+    data: data,
175
+    headers: {
176
+      'Content-Type': 'application/json;charset=UTF-8'
177
+    }
178
+  })
179
+}
180
+
181
+/**
182
+ * 审批导出
183
+ * @param {*} data
184
+ */
185
+export function oaExamineExportAPI(data) {
186
+  return request({
187
+    url: 'oa/examine/excelExport',
188
+    method: 'post',
189
+    data: data,
190
+    headers: {
191
+      'Content-Type': 'application/json;charset=UTF-8'
192
+    },
193
+    responseType: 'blob'
194
+  })
195
+}

+ 202
- 0
src/api/oa/journal.js Просмотреть файл

@@ -0,0 +1,202 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 日志列表
5
+ * @param {*} data
6
+ */
7
+export function journalListAPI(data) {
8
+  return request({
9
+    url: 'oa/log/index',
10
+    method: 'post',
11
+    headers: {
12
+      'Content-Type': 'application/json;charset=UTF-8'
13
+    },
14
+    data: data
15
+  })
16
+}
17
+
18
+/**
19
+ * 新建日志
20
+ * @param {*} data
21
+ */
22
+export function journalAddAPI(data) {
23
+  return request({
24
+    url: 'oa/log/save',
25
+    method: 'post',
26
+    headers: {
27
+      'Content-Type': 'application/json;charset=UTF-8'
28
+    },
29
+    data
30
+  })
31
+}
32
+
33
+/**
34
+ * 日志编辑
35
+ * @param {*} data
36
+ */
37
+export function journalEditAPI(data) {
38
+  return request({
39
+    url: `oa/log/${data.log_id ? 'update' : 'save'}`,
40
+    method: 'post',
41
+    headers: {
42
+      'Content-Type': 'application/json;charset=UTF-8'
43
+    },
44
+    data
45
+  })
46
+}
47
+
48
+/**
49
+ * 日志删除
50
+ * @param {*} data
51
+ */
52
+export function journalDeleteAPI(data) {
53
+  return request({
54
+    url: 'oa/log/delete',
55
+    method: 'post',
56
+    data
57
+  })
58
+}
59
+
60
+/**
61
+ * 日志标记已读
62
+ * @param {*} data
63
+ */
64
+export function journalSetReadAPI(data) {
65
+  return request({
66
+    url: 'oaLog/readLog',
67
+    method: 'post',
68
+    data
69
+  })
70
+}
71
+
72
+/**
73
+ * 日志详情
74
+ * @param {*} data
75
+ */
76
+export function journalQueryByIdAPI(data) {
77
+  return request({
78
+    url: 'oa/log/queryLog',
79
+    method: 'post',
80
+    data
81
+  })
82
+}
83
+
84
+/**
85
+ * 日志概要
86
+ * @param {*} data
87
+ */
88
+export function journalQueryBulletinAPI(data) {
89
+  return request({
90
+    url: 'oa/log/logBulletin',
91
+    method: 'post',
92
+    data
93
+  })
94
+}
95
+
96
+/**
97
+ * 日志简报预览
98
+ * @param {*} data
99
+ */
100
+export function journalQueryBulletinByTypeAPI(data) {
101
+  return request({
102
+    url: 'oa/log/newBulletin',
103
+    method: 'post',
104
+    data: data,
105
+    headers: {
106
+      'Content-Type': 'application/json;charset=UTF-8'
107
+    }
108
+  })
109
+}
110
+
111
+/**
112
+ * 日志简报跟进记录预览
113
+ * @param {*} data
114
+ */
115
+export function journalQueryRecordCountAPI(data) {
116
+  return request({
117
+    url: 'oa/log/activityList',
118
+    method: 'post',
119
+    data
120
+  })
121
+}
122
+
123
+/**
124
+ * 随机返回一条
125
+ * @param {*} data
126
+ */
127
+export function journalGetLogWelcomeAPI(data) {
128
+  return request({
129
+    url: 'oa/log/LogWelcomeSpeech',
130
+    method: 'post',
131
+    data
132
+  })
133
+}
134
+
135
+/**
136
+ * 日志导出
137
+ * @param {*} data
138
+ */
139
+export function oaLogExportAPI(data) {
140
+  return request({
141
+    url: 'oa/log/excelExport',
142
+    method: 'post',
143
+    data: data,
144
+    headers: {
145
+      'Content-Type': 'application/json;charset=UTF-8'
146
+    },
147
+    responseType: 'blob'
148
+  })
149
+}
150
+
151
+/**
152
+ * 查询日志完成概要
153
+ * @param {*} data
154
+ */
155
+export function oaLogCompleteStatsAPI(data) {
156
+  return request({
157
+    url: 'oa/log/completeStats',
158
+    method: 'post',
159
+    data
160
+  })
161
+}
162
+
163
+/**
164
+ * 查询日志完成情况
165
+ * @param {*} data
166
+ */
167
+export function oaLogCompleteListAPI(data) {
168
+  return request({
169
+    url: 'oa/log/completeLog',
170
+    method: 'post',
171
+    data: data,
172
+    headers: {
173
+      'Content-Type': 'application/json;charset=UTF-8'
174
+    }
175
+  })
176
+}
177
+
178
+/**
179
+ * 查询日志未完成情况
180
+ * @param {*} data
181
+ */
182
+export function oaLogUnCompleteListAPI(data) {
183
+  return request({
184
+    url: 'oa/log/inCompleteLog',
185
+    method: 'post',
186
+    data: data,
187
+    headers: {
188
+      'Content-Type': 'application/json;charset=UTF-8'
189
+    }
190
+  })
191
+}
192
+// journalQueryActivityCountAPI
193
+export function journalQueryActivityCountAPI(data) {
194
+  return request({
195
+    url: 'oa/log/activityCount',
196
+    method: 'post',
197
+    data: data,
198
+    headers: {
199
+      'Content-Type': 'application/json;charset=UTF-8'
200
+    }
201
+  })
202
+}

+ 66
- 0
src/api/oa/notice.js Просмотреть файл

@@ -0,0 +1,66 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 公告添加
5
+ * @param {*} data
6
+ */
7
+export function noticeListAPI(data) {
8
+  return request({
9
+    url: 'oaAnnouncement/queryList',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 公告添加或编辑
17
+ * @param {*} data
18
+ */
19
+export function noticeAddOrUpateAPI(data) {
20
+  var url = data.announcement_id ? 'update' : 'save'
21
+  return request({
22
+    url: 'oa/announcement/' + url,
23
+    method: 'post',
24
+    data: data,
25
+    headers: {
26
+      'Content-Type': 'application/json;charset=UTF-8'
27
+    }
28
+  })
29
+}
30
+
31
+/**
32
+ * 公告删除
33
+ * @param {*} data
34
+ */
35
+export function noticeDeleteAPI(data) {
36
+  return request({
37
+    url: `oa/announcement/delete`,
38
+    method: 'post',
39
+    data
40
+  })
41
+}
42
+
43
+/**
44
+ * 公告详情
45
+ * @param {*} data
46
+ */
47
+export function noticeQueryByIdAPI(data) {
48
+  return request({
49
+    url: `oa/announcement/read`,
50
+    method: 'post',
51
+    data
52
+  })
53
+}
54
+
55
+
56
+/**
57
+ * 公告设为已读
58
+ * @param {*} data
59
+ */
60
+export function noticeIsReadAPI(data) {
61
+  return request({
62
+    url: 'oaAnnouncement/readAnnouncement',
63
+    method: 'post',
64
+    data: data
65
+  })
66
+}

+ 16
- 0
src/api/pm/archive.js Просмотреть файл

@@ -0,0 +1,16 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 归档项目列表
5
+ * @param {*} data
6
+ */
7
+export function workWorkArchiveListAPI(data) {
8
+  return request({
9
+    url: 'work/work/archiveList',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}

+ 385
- 0
src/api/pm/project.js Просмотреть файл

@@ -0,0 +1,385 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 归档任务列表
5
+ * @param {*} data
6
+ */
7
+export function workTaskArchListAPI(data) {
8
+  return request({
9
+    url: `work/task/archList`,
10
+    method: 'post',
11
+    data
12
+  })
13
+}
14
+
15
+/**
16
+ * 项目详情
17
+ * @param {*} data
18
+ */
19
+export function workWorkReadAPI(data) {
20
+  return request({
21
+    url: 'work/work/read',
22
+    method: 'post',
23
+    data: data
24
+  })
25
+}
26
+
27
+/**
28
+ * 项目删除
29
+ * @param {*} data
30
+ */
31
+export function workWorkDeleteAPI(data) {
32
+  return request({
33
+    url: `work/work/delete`,
34
+    method: 'post',
35
+    data
36
+  })
37
+}
38
+
39
+/**
40
+ * 新建项目
41
+ * @param {*} data
42
+ */
43
+export function workWorkSaveAPI(data) {
44
+  return request({
45
+    url: 'work/work/save',
46
+    method: 'post',
47
+    data: data,
48
+    headers: {
49
+      'Content-Type': 'application/json;charset=UTF-8'
50
+    }
51
+  })
52
+}
53
+/**
54
+ * 恢复项目
55
+ * @param {*} data
56
+ */
57
+export function workWorkArRecoverAPI(data) {
58
+  return request({
59
+    url: 'work/work/arRecover',
60
+    method: 'post',
61
+    data: data,
62
+    headers: {
63
+      'Content-Type': 'application/json;charset=UTF-8'
64
+    }
65
+  })
66
+}
67
+
68
+/**
69
+ * 编辑项目
70
+ * @param {*} data
71
+ */
72
+export function workWorkUpdateAPI(data) {
73
+  return request({
74
+    url: 'work/work/update',
75
+    method: 'post',
76
+    data: data,
77
+    headers: {
78
+      'Content-Type': 'application/json;charset=UTF-8'
79
+    }
80
+  })
81
+}
82
+/**
83
+ * 归档项目
84
+ * @param {*} data
85
+ */
86
+export function workWorkArchiveAPI(data) {
87
+  return request({
88
+    url: 'work/work/archive',
89
+    method: 'post',
90
+    data: data,
91
+    headers: {
92
+      'Content-Type': 'application/json;charset=UTF-8'
93
+    }
94
+  })
95
+}
96
+
97
+/**
98
+ * 退出项目
99
+ * @param {*} data
100
+ */
101
+export function workWorkLeaveAPI(data) {
102
+  return request({
103
+    url: `work/work/leave`,
104
+    method: 'post',
105
+    data
106
+  })
107
+}
108
+
109
+/**
110
+ * 任务板列表
111
+ * @param {*} data
112
+ */
113
+export function workTaskIndexAPI(data) {
114
+  return request({
115
+    url: 'work/task/index',
116
+    method: 'post',
117
+    headers: {
118
+      'Content-Type': 'application/json;charset=UTF-8'
119
+    },
120
+    data: data
121
+  })
122
+}
123
+
124
+/**
125
+ * 任务板列表
126
+ * @param {*} data
127
+ */
128
+export function workTaskOwnerIndexAPI(data) {
129
+  return request({
130
+    url: 'work/task/ownerTaskList',
131
+    method: 'post',
132
+    headers: {
133
+      'Content-Type': 'application/json;charset=UTF-8'
134
+    },
135
+    data: data
136
+  })
137
+}
138
+// /**
139
+//  * 设置任务类别 改为 saveWorkTaskClass
140
+//  * @param {*} data
141
+//  */
142
+// export function workTaskClassSetAPI(data) {
143
+//   return request({
144
+//     url: 'task/setTaskClass',
145
+//     method: 'post',
146
+//     data: data
147
+//   })
148
+// }
149
+
150
+/**
151
+ * 分类删除
152
+ * @param {*} data
153
+ */
154
+export function workTaskclassDeleteAPI(data) {
155
+  return request({
156
+    url: 'work/taskclass/delete',
157
+    method: 'post',
158
+    data: data,
159
+    headers: {
160
+      'Content-Type': 'application/json;charset=UTF-8'
161
+    }
162
+  })
163
+}
164
+
165
+/**
166
+ * 获取附件列表
167
+ * @param {*} data
168
+ */
169
+export function workWorkFileListAPI(data) {
170
+  return request({
171
+    url: 'work/work/fileList',
172
+    method: 'post',
173
+    data: data,
174
+    headers: {
175
+      'Content-Type': 'application/json;charset=UTF-8'
176
+    }
177
+  })
178
+}
179
+
180
+/**
181
+ * 项目 -- 成员列表
182
+ * @param {*} data
183
+ */
184
+export function workWorkOwnerListAPI(data) {
185
+  return request({
186
+    url: 'work/work/ownerList',
187
+    method: 'post',
188
+    data
189
+  })
190
+}
191
+
192
+/**
193
+ * 项目 -- 成员删除
194
+ * @param {*} data
195
+ */
196
+export function workWorkOwnerDelAPI(data) {
197
+  return request({
198
+    url: 'work/work/ownerDel',
199
+    method: 'post',
200
+    data: data,
201
+    headers: {
202
+      'Content-Type': 'application/json;charset=UTF-8'
203
+    }
204
+  })
205
+}
206
+
207
+/**
208
+ * 项目 -- 归档已完成任务
209
+ * @param {*} data
210
+ */
211
+export function workTaskArchiveTaskAPI(data) {
212
+  return request({
213
+    url: `work/task/archiveTask`,
214
+    method: 'post',
215
+    data
216
+  })
217
+}
218
+
219
+/**
220
+ * 项目 -- 归档负责人已完成任务
221
+ * @param {*} data
222
+ */
223
+export function workTaskArchiveOwnerTaskAPI(data) {
224
+  return request({
225
+    url: 'work/task/archiveTask',
226
+    method: 'post',
227
+    data: data
228
+  })
229
+}
230
+
231
+/**
232
+ * 拖拽改变分类
233
+ * @param {*} data
234
+ */
235
+export function workTaskUpdateOrderAPI(data) {
236
+  return request({
237
+    url: 'work/task/updateOrder',
238
+    method: 'post',
239
+    headers: {
240
+      'Content-Type': 'application/json;charset=UTF-8'
241
+    },
242
+    data: data
243
+  })
244
+}
245
+
246
+/**
247
+ * 拖拽改变分类列表
248
+ * @param {*} data
249
+ */
250
+export function workTaskUpdateClassOrderAPI(data) {
251
+  return request({
252
+    url: 'work/task/updateClassOrder',
253
+    method: 'post',
254
+    headers: {
255
+      'Content-Type': 'application/json;charset=UTF-8'
256
+    },
257
+    data: data
258
+  })
259
+}
260
+
261
+/**
262
+ * 项目成员添加角色
263
+ * @param {*} data
264
+ */
265
+export function workWorkAddUserGroupAPI(data) {
266
+  return request({
267
+    url: 'work/work/ownerAdd',
268
+    method: 'post',
269
+    headers: {
270
+      'Content-Type': 'application/json;charset=UTF-8'
271
+    },
272
+    data: data
273
+  })
274
+}
275
+
276
+/**
277
+ * 项目成员角色列表
278
+ * @param {*} data
279
+ */
280
+export function workWorkGroupListAPI(data) {
281
+  return request({
282
+    url: 'work/work/groupList',
283
+    method: 'post',
284
+    data: data
285
+  })
286
+}
287
+
288
+/**
289
+ * 项目收藏
290
+ * @param {*} data
291
+ */
292
+export function workWorkCollectAPI(data) {
293
+  return request({
294
+    url: `work/work/follow`,
295
+    method: 'post',
296
+    data
297
+  })
298
+}
299
+
300
+/**
301
+ * 修改标签排序
302
+ * @param {*} data
303
+ */
304
+export function workupdateWorkOrderAPI(data) {
305
+  return request({
306
+    url: 'work/work/updateWorkOrder',
307
+    method: 'post',
308
+    headers: {
309
+      'Content-Type': 'application/json;charset=UTF-8'
310
+    },
311
+    data: data
312
+  })
313
+}
314
+
315
+/**
316
+ * 项目任务导出
317
+ * @param {*} data
318
+ */
319
+export function workTaskExportAPI(data) {
320
+  return request({
321
+    url: 'work/task/excelExport',
322
+    method: 'post',
323
+    data: data,
324
+    responseType: 'blob'
325
+  })
326
+}
327
+
328
+/**
329
+ * 获取导入模板
330
+ * @param {*} data
331
+ */
332
+export function workDownloadExcelAPI(data) {
333
+  return request({
334
+    url: 'work/task/excelDownload',
335
+    method: 'get',
336
+    data: data,
337
+    responseType: 'blob'
338
+  })
339
+}
340
+
341
+/**
342
+ * 项目任务导入
343
+ * @param {*} data
344
+ */
345
+export function workExcelImportAPI(data) {
346
+  var param = new FormData()
347
+  Object.keys(data).forEach(key => {
348
+    param.append(key, data[key])
349
+  })
350
+  return request({
351
+    url: 'work/task/excelImport',
352
+    method: 'post',
353
+    data: param,
354
+    headers: {
355
+      'Content-Type': 'multipart/form-data'
356
+    }
357
+  })
358
+}
359
+
360
+/**
361
+ * 项目任务下载错误模板
362
+ * @param {*} data
363
+ */
364
+export function workDownloadErrorExcelAPI(data) {
365
+  return request({
366
+    url: 'work/work/downloadErrorExcel',
367
+    method: 'post',
368
+    data: data,
369
+    responseType: 'blob'
370
+  })
371
+}
372
+/**
373
+ * 项目成员添加+设置角色
374
+ * @param {*} data
375
+ */
376
+export function workWorkAddUserSetRoleGroupAPI(data) {
377
+  return request({
378
+    url: 'work/work/addUserGroup',
379
+    method: 'post',
380
+    headers: {
381
+      'Content-Type': 'application/json;charset=UTF-8'
382
+    },
383
+    data: data
384
+  })
385
+}

+ 304
- 0
src/api/pm/projectTask.js Просмотреть файл

@@ -0,0 +1,304 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ *
5
+ * 新建任务列表
6
+ * @param {*} data
7
+ */
8
+export function workTaskClassSaveAPI(data) {
9
+  return request({
10
+    url: 'work/taskclass/save',
11
+    method: 'post',
12
+    data: data,
13
+    headers: {
14
+      'Content-Type': 'application/json;charset=UTF-8'
15
+    }
16
+  })
17
+}
18
+
19
+/**
20
+ *
21
+ * 删除任务
22
+ * @param {*} data
23
+ */
24
+export function workTaskDeleteAPI(data) {
25
+  return request({
26
+    url: `work/task/delete`,
27
+    method: 'post',
28
+    data
29
+  })
30
+}
31
+
32
+/**
33
+ *
34
+ * 编辑任务列表
35
+ * @param {*} data
36
+ */
37
+export function workTaskClassUpateAPI(data) {
38
+  return request({
39
+    url: 'work/taskclass/rename',
40
+    method: 'post',
41
+    data: data,
42
+    headers: {
43
+      'Content-Type': 'application/json;charset=UTF-8'
44
+    }
45
+  })
46
+}
47
+
48
+/**
49
+ *
50
+ * 新建任务
51
+ * 同 setTaskAPI
52
+ * @param {*} data
53
+ */
54
+export function workTaskSaveAPI(data) {
55
+  return request({
56
+    url: 'work/tasklable/index',
57
+    method: 'post',
58
+    data: data,
59
+    headers: {
60
+      'Content-Type': 'application/json;charset=UTF-8'
61
+    }
62
+  })
63
+}
64
+
65
+/**
66
+ *
67
+ * 完成任务状态
68
+ * @param {*} data
69
+ */
70
+export function workTaskStatusSetAPI(data) {
71
+  return request({
72
+    url: 'work/task/taskOver',
73
+    method: 'post',
74
+    data: data,
75
+    headers: {
76
+      'Content-Type': 'application/json;charset=UTF-8'
77
+    }
78
+  })
79
+}
80
+
81
+/**
82
+ *
83
+ * 完成子任务状态
84
+ * @param {*} data
85
+ */
86
+export function workTaskChildStatusSetAPI(data) {
87
+  return request({
88
+    url: 'work/task/taskOver',
89
+    method: 'post',
90
+    data: data,
91
+    headers: {
92
+      'Content-Type': 'application/json;charset=UTF-8'
93
+    }
94
+  })
95
+}
96
+
97
+/**
98
+ *
99
+ * 编辑任务标题
100
+ * @param {*} data
101
+ */
102
+export function workTaskTitleSetAPI(data) {
103
+  return request({
104
+    url: 'work/task/updateName',
105
+    method: 'post',
106
+    data: data,
107
+    headers: {
108
+      'Content-Type': 'application/json;charset=UTF-8'
109
+    }
110
+  })
111
+}
112
+
113
+/**
114
+ *
115
+ * 编辑任务描述
116
+ * @param {*} data
117
+ */
118
+export function workTaskDescriptionSetAPI(data) {
119
+  return request({
120
+    url: 'work/task/update',
121
+    method: 'post',
122
+    data: data,
123
+    headers: {
124
+      'Content-Type': 'application/json;charset=UTF-8'
125
+    }
126
+  })
127
+}
128
+
129
+/**
130
+ *
131
+ * 分配任务(负责人)
132
+ * @param {*} data
133
+ */
134
+export function workTaskMainUserSetAPI(data) {
135
+  return request({
136
+    url: 'work/task/update',
137
+    method: 'post',
138
+    data: data,
139
+    headers: {
140
+      'Content-Type': 'application/json;charset=UTF-8'
141
+    }
142
+  })
143
+}
144
+
145
+/**
146
+ *
147
+ * 设置任务时间
148
+ * @param {*} data
149
+ */
150
+export function workTaskTimeSetAPI(data) {
151
+  return request({
152
+    url: 'work/task/updateStoptime',
153
+    method: 'post',
154
+    data: data,
155
+    headers: {
156
+      'Content-Type': 'application/json;charset=UTF-8'
157
+    }
158
+  })
159
+}
160
+
161
+/**
162
+ *
163
+ * 设置任务标签
164
+ * @param {*} data
165
+ */
166
+export function workTaskLabelSetAPI(data) {
167
+  return request({
168
+    url: 'work/task/updateLable',
169
+    method: 'post',
170
+    data: data,
171
+    headers: {
172
+      'Content-Type': 'application/json;charset=UTF-8'
173
+    }
174
+  })
175
+}
176
+
177
+/**
178
+ *
179
+ * 添加任务参与人
180
+ * @param {*} data
181
+ */
182
+export function workTaskOwnerUserSetAPI(data) {
183
+  return request({
184
+    url: 'work/task/updateOwner',
185
+    method: 'post',
186
+    data: data,
187
+    headers: {
188
+      'Content-Type': 'application/json;charset=UTF-8'
189
+    }
190
+  })
191
+}
192
+
193
+/**
194
+ *
195
+ * 添加任务参与人
196
+ * @param {*} data
197
+ */
198
+export function workTaskOwnerUserDeleteAPI(data) {
199
+  return request({
200
+    url: 'work/task/delOwnerById',
201
+    method: 'post',
202
+    data: data,
203
+    headers: {
204
+      'Content-Type': 'application/json;charset=UTF-8'
205
+    }
206
+  })
207
+}
208
+
209
+/**
210
+ *
211
+ * 设置任务优先级
212
+ * @param {*} data
213
+ */
214
+export function workTaskPrioritySetAPI(data) {
215
+  return request({
216
+    url: 'work/task/updatePriority',
217
+    method: 'post',
218
+    data: data,
219
+    headers: {
220
+      'Content-Type': 'application/json;charset=UTF-8'
221
+    }
222
+  })
223
+}
224
+
225
+/**
226
+ *
227
+ * 新建子任务
228
+ * @param {*} data
229
+ */
230
+export function workSubTaskAddAPI(data) {
231
+  return request({
232
+    url: 'work/task/save',
233
+    method: 'post',
234
+    data: data,
235
+    headers: {
236
+      'Content-Type': 'application/json;charset=UTF-8'
237
+    }
238
+  })
239
+}
240
+
241
+/**
242
+ *
243
+ * 编辑子任务
244
+ * @param {*} data
245
+ */
246
+export function workSubTaskUpdateAPI(data) {
247
+  return request({
248
+    url: 'work/task/update',
249
+    method: 'post',
250
+    data: data,
251
+    headers: {
252
+      'Content-Type': 'application/json;charset=UTF-8'
253
+    }
254
+  })
255
+}
256
+
257
+/**
258
+ *
259
+ * 删除子任务
260
+ * @param {*} data
261
+ */
262
+export function workSubTaskDeleteAPI(data) {
263
+  return request({
264
+    url: `work/task/delete`,
265
+    method: 'post',
266
+    data
267
+  })
268
+}
269
+
270
+
271
+// /**
272
+//  * 任务添加附件
273
+//  * @param {*} data
274
+//  */
275
+// export function workTaskFileUploadAPI(data) {
276
+//   var param = new FormData()
277
+//   Object.keys(data).forEach(key => {
278
+//     param.append(key, data[key])
279
+//   })
280
+//   return request({
281
+//     url: 'workTask/uploadWorkTaskFile',
282
+//     method: 'post',
283
+//     data: param,
284
+//     headers: {
285
+//       'Content-Type': 'multipart/form-data'
286
+//     }
287
+//   })
288
+// }
289
+
290
+// /**
291
+//  *
292
+//  * 任务删除附件
293
+//  * @param {*} data
294
+//  */
295
+// export function workTaskFileDeleteAPI(data) {
296
+//   return request({
297
+//     url: 'oaTask/deleteWorkTaskFile',
298
+//     method: 'post',
299
+//     data: data,
300
+//     headers: {
301
+//       'Content-Type': 'application/json;charset=UTF-8'
302
+//     }
303
+//   })
304
+// }

+ 40
- 0
src/api/pm/recycle.js Просмотреть файл

@@ -0,0 +1,40 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 回收站列表
5
+ * @param {*} data
6
+ */
7
+export function workTrashIndexAPI(data) {
8
+  return request({
9
+    url: 'work/trash/index',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 回收站彻底删除
17
+ * @param {*} data
18
+ */
19
+export function workTrashDeleteAPI(data) {
20
+  return request({
21
+    url: `work/trash/delete`,
22
+    method: 'post',
23
+    data
24
+  })
25
+}
26
+
27
+/**
28
+ * 回收站恢复
29
+ * @param {*} data
30
+ */
31
+export function workTrashRecoverAPI(data) {
32
+  return request({
33
+    url: `work/trash/recover`,
34
+    method: 'post',
35
+    data
36
+  })
37
+}
38
+
39
+
40
+

+ 13
- 0
src/api/pm/statistics.js Просмотреть файл

@@ -0,0 +1,13 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 项目任务统计
5
+ * @param {*} data
6
+ */
7
+export function workWorkStatisticAPI(data) {
8
+  return request({
9
+    url: `work/work/statistic`,
10
+    method: 'post',
11
+    data
12
+  })
13
+}

+ 94
- 0
src/api/pm/tag.js Просмотреть файл

@@ -0,0 +1,94 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 标签左侧列表
5
+ * @param {*} data
6
+ */
7
+export function workTasklableIndexAPI(data) {
8
+  return request({
9
+    url: 'work/tasklable/index',
10
+    method: 'post',
11
+    data: data
12
+  })
13
+}
14
+
15
+/**
16
+ * 单个标签详情
17
+ * @param {*} data
18
+ */
19
+export function workTasklableReadAPI(data) {
20
+  return request({
21
+    url: `work/tasklable/read`,
22
+    method: 'post',
23
+    data
24
+  })
25
+}
26
+
27
+/**
28
+ * 标签删除
29
+ * @param {*} data
30
+ */
31
+export function workTasklableDeleteAPI(data) {
32
+  return request({
33
+    url: 'work/tasklable/delete',
34
+    method: 'post',
35
+    data: data
36
+  })
37
+}
38
+
39
+/**
40
+ * 创建标签
41
+ * @param {*} data
42
+ */
43
+export function workTasklableSaveAPI(data) {
44
+  return request({
45
+    url: 'work/tasklable/save',
46
+    method: 'post',
47
+    data: data,
48
+    headers: {
49
+      'Content-Type': 'application/json;charset=UTF-8'
50
+    }
51
+  })
52
+}
53
+
54
+/**
55
+ * 标签编辑
56
+ * @param {*} data
57
+ */
58
+export function workTasklableSetAPI(data) {
59
+  return request({
60
+    url: 'work/tasklable/update',
61
+    method: 'post',
62
+    data: data,
63
+    headers: {
64
+      'Content-Type': 'application/json;charset=UTF-8'
65
+    }
66
+  })
67
+}
68
+
69
+/**
70
+ * 获取项目及任务表
71
+ * @param {*} data
72
+ */
73
+export function workTasklableGetWokListAPI(data) {
74
+  return request({
75
+    url: `work/tasklable/getWokList`,
76
+    method: 'post',
77
+    data
78
+  })
79
+}
80
+
81
+/**
82
+ * 修改标签排序
83
+ * @param {*} data
84
+ */
85
+export function workTasklableUpdateOrderAPI(data) {
86
+  return request({
87
+    url: 'taskLabel/updateOrder',
88
+    method: 'post',
89
+    data: data,
90
+    headers: {
91
+      'Content-Type': 'application/json;charset=UTF-8'
92
+    }
93
+  })
94
+}

+ 145
- 0
src/api/pm/task.js Просмотреть файл

@@ -0,0 +1,145 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 我的任务列表
5
+ * @param {*} data
6
+ */
7
+export function workTaskMyTaskAPI(data) {
8
+  return request({
9
+    url: 'work/task/myTask',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 参与项目的成员
20
+ * @param {*} data
21
+ */
22
+export function workQueryMemberListAPI() {
23
+  return request({
24
+    url: 'work/task/taskUsers',
25
+    method: 'post'
26
+  })
27
+}
28
+
29
+/**
30
+ * 拖拽改变分类
31
+ * @param {*} data
32
+ */
33
+export function workTaskUpdateTopAPI(data) {
34
+  return request({
35
+    url: 'work/task/updateTop',
36
+    method: 'post',
37
+    data: data,
38
+    headers: {
39
+      'Content-Type': 'application/json;charset=UTF-8'
40
+    }
41
+  })
42
+}
43
+
44
+/**
45
+ * 项目列表
46
+ * @param {*} data
47
+ */
48
+export function workIndexWorkListAPI(data) {
49
+  return request({
50
+    url: 'work/work/index',
51
+    method: 'post',
52
+    data: data,
53
+    headers: {
54
+      'Content-Type': 'application/json;charset=UTF-8'
55
+    }
56
+  })
57
+}
58
+
59
+/**
60
+ * 公共搜索任务
61
+ * @param {*} data
62
+ */
63
+export function workQueryWorkTaskListAPI(data) {
64
+  return request({
65
+    url: 'work/task/search',
66
+    method: 'post',
67
+    data: data,
68
+    headers: {
69
+      'Content-Type': 'application/json;charset=UTF-8'
70
+    }
71
+  })
72
+}
73
+
74
+// /**
75
+//  * 任务详情
76
+//  * @param {*} data
77
+//  */
78
+// export function workTaskReadAPI(data) {
79
+//   return request({
80
+//     url: 'task/queryTaskById',
81
+//     method: 'post',
82
+//     data: data
83
+//   })
84
+// }
85
+
86
+// /**
87
+//  * 编辑任务名
88
+//  * @param {*} data
89
+//  */
90
+// export function workTaskUpdateNameAPI(data) {
91
+//   return request({
92
+//     url: 'work/task/updateName',
93
+//     method: 'post',
94
+//     data: data
95
+//   })
96
+// }
97
+
98
+/**
99
+ * 任务归档
100
+ * @param {*} data
101
+ */
102
+export function workTaskArchiveAPI(data) {
103
+  return request({
104
+    url: `work/task/archive`,
105
+    method: 'post',
106
+    data
107
+  })
108
+}
109
+
110
+/**
111
+ * 归档任务激活
112
+ * @param {*} data
113
+ */
114
+export function workTaskRecoverAPI(data) {
115
+  return request({
116
+    url: `work/task/recover`,
117
+    method: 'post',
118
+    data
119
+  })
120
+}
121
+
122
+// /**
123
+//  * 编辑相关信息
124
+//  * @param {*} data
125
+//  */
126
+// export function taskSvaeTaskRelationAPI(data) {
127
+//   return request({
128
+//     url: 'task/saveTaskRelation',
129
+//     method: 'post',
130
+//     data: data
131
+//   })
132
+// }
133
+
134
+/**
135
+ * 工作台任务导出
136
+ * @param {*} data
137
+ */
138
+export function taskWorkbenchExportAPI(data) {
139
+  return request({
140
+    url: 'oa/task/excelExport',
141
+    method: 'post',
142
+    data: data,
143
+    responseType: 'blob'
144
+  })
145
+}

+ 146
- 0
src/api/task/task.js Просмотреть файл

@@ -0,0 +1,146 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 我下属的任务列表
5
+ * @param {*} data
6
+ */
7
+export function taskListAPI(data) {
8
+  return request({
9
+    url: 'oa/task/myTask',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'application/json;charset=UTF-8'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 新增任务
20
+ * @param {*} data
21
+ */
22
+export function setTaskAPI(data) {
23
+  return request({
24
+    url: `${data.work_id ? 'work' : 'oa'}/task/save`,
25
+    method: 'post',
26
+    data: data,
27
+    headers: {
28
+      'Content-Type': 'application/json;charset=UTF-8'
29
+    }
30
+  })
31
+}
32
+
33
+// /**
34
+//  * 删除任务
35
+//  * @param {*} data
36
+//  */
37
+// export function deleteTaskAPI(data) {
38
+//   return request({
39
+//     url: 'task/deleteTask',
40
+//     method: 'post',
41
+//     data: data
42
+//   })
43
+// }
44
+
45
+/**
46
+ * 任务详情
47
+ * @param {*} data
48
+ */
49
+export function detailsTaskAPI(data) {
50
+  return request({
51
+    url: `work/task/read`,
52
+    method: 'post',
53
+    data
54
+  })
55
+}
56
+
57
+
58
+/**
59
+ * 回收站任务详情
60
+ * @param {*} data
61
+ */
62
+export function detailsTrashTaskAPI(data) {
63
+  return request({
64
+    url: 'work/task/read',
65
+    method: 'post',
66
+    data: data
67
+  })
68
+}
69
+
70
+/**
71
+ * 任务活动
72
+ * @param {*} data
73
+ */
74
+export function queryLogTaskAPI(data) {
75
+  return request({
76
+    url: `work/task/readLoglist`,
77
+    method: 'post',
78
+    data
79
+  })
80
+}
81
+
82
+
83
+/**
84
+ * 编辑相关信息
85
+ * @param {*} data
86
+ */
87
+export function editTaskRelationAPI(data) {
88
+  return request({
89
+    url: `${data.work_id ? 'work' : 'oa'}/task/update`,
90
+    method: 'post',
91
+    data: data,
92
+    headers: {
93
+      'Content-Type': 'application/json;charset=UTF-8'
94
+    }
95
+  })
96
+}
97
+
98
+/**
99
+ * 删除相关信息
100
+ * @param {*} data
101
+ */
102
+export function deleteTaskRelationAPI(data) {
103
+  return request({
104
+    url: 'oa/task/delrelation',
105
+    method: 'post',
106
+    data: data,
107
+    headers: {
108
+      'Content-Type': 'application/json;charset=UTF-8'
109
+    }
110
+  })
111
+}
112
+
113
+
114
+
115
+
116
+/**
117
+ * 取消选择的标签 taskId  label
118
+ * @param {*} data
119
+ */
120
+export function taskDeleteLabelAPI(data) {
121
+  return request({
122
+    url: 'oaTask/deleteWorkTaskLabel',
123
+    method: 'post',
124
+    data: data,
125
+    headers: {
126
+      'Content-Type': 'application/json;charset=UTF-8'
127
+    }
128
+  })
129
+}
130
+
131
+/**
132
+ * 办公任务导出
133
+ * @param {*} data
134
+ */
135
+export function taskOaExportAPI(data) {
136
+  return request({
137
+    url: 'work/task/excelExport',
138
+    method: 'post',
139
+    data: data,
140
+    responseType: 'blob',
141
+    headers: {
142
+      'Content-Type': 'application/json;charset=UTF-8'
143
+    }
144
+  })
145
+}
146
+

+ 55
- 0
src/api/user/personCenter.js Просмотреть файл

@@ -0,0 +1,55 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+ * 修改头像
5
+ * @param {*} data
6
+ */
7
+export function adminUsersUpdateImgAPI(data) {
8
+  return request({
9
+    url: 'admin/users/updateImg',
10
+    method: 'post',
11
+    data: data,
12
+    headers: {
13
+      'Content-Type': 'multipart/form-data'
14
+    }
15
+  })
16
+}
17
+
18
+/**
19
+ * 个人详情
20
+ * @param {*} data
21
+ */
22
+export function adminUsersReadAPI(data) {
23
+  return request({
24
+    url: 'admin/users/read',
25
+    method: 'post',
26
+    data: data
27
+  })
28
+}
29
+
30
+/**
31
+ * 修改个人信息
32
+ * @param {*} data
33
+ */
34
+export function adminUsersUpdateAPI(data) {
35
+  return request({
36
+    url: 'admin/users/update',
37
+    method: 'post',
38
+    data: data,
39
+    headers: {
40
+      'Content-Type': 'application/json;charset=UTF-8'
41
+    }
42
+  })
43
+}
44
+
45
+/**
46
+ * 修改密码
47
+ * @param {*} data
48
+ */
49
+export function adminUsersResetPasswordAPI(data) {
50
+  return request({
51
+    url: 'admin/users/resetPassword',
52
+    method: 'post',
53
+    data: data
54
+  })
55
+}

Двоичные данные
src/assets/401_images/1.gif Просмотреть файл


Двоичные данные
src/assets/401_images/401.gif Просмотреть файл


Двоичные данные
src/assets/404_images/404.png Просмотреть файл


Двоичные данные
src/assets/404_images/404_cloud.png Просмотреть файл


Двоичные данные
src/assets/activity/activity_five.jpg Просмотреть файл


Двоичные данные
src/assets/activity/activity_four.jpg Просмотреть файл


Двоичные данные
src/assets/activity/activity_one.jpg Просмотреть файл


Двоичные данные
src/assets/activity/activity_six.jpg Просмотреть файл


Двоичные данные
src/assets/activity/activity_three.jpg Просмотреть файл


Двоичные данные
src/assets/activity/activity_two.jpg Просмотреть файл


Двоичные данные
src/assets/android_10.png Просмотреть файл


Двоичные данные
src/assets/icon_light.png Просмотреть файл


+ 345
- 0
src/assets/iconfont/iconfont.css
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


Двоичные данные
src/assets/iconfont/iconfont.eot Просмотреть файл


+ 704
- 0
src/assets/iconfont/iconfont.svg
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


Двоичные данные
src/assets/iconfont/iconfont.ttf Просмотреть файл


Двоичные данные
src/assets/iconfont/iconfont.woff Просмотреть файл


Двоичные данные
src/assets/iconfont/iconfont.woff2 Просмотреть файл


Двоичные данные
src/assets/img/1.png Просмотреть файл


Двоичные данные
src/assets/img/2.png Просмотреть файл


Двоичные данные
src/assets/img/3.png Просмотреть файл


Двоичные данные
src/assets/img/add_examine.png Просмотреть файл


Двоичные данные
src/assets/img/addressBook/address_logo.png Просмотреть файл


Двоичные данные
src/assets/img/browse_count.png Просмотреть файл


Двоичные данные
src/assets/img/c_filtrate.png Просмотреть файл


+ 0
- 0
src/assets/img/calendar_cus.png Просмотреть файл


Некоторые файлы не были показаны из-за большого количества измененных файлов