mj-li 2 달 전
커밋
13553a270f
100개의 변경된 파일1912개의 추가작업 그리고 0개의 파일을 삭제
  1. 14 0
      .editorconfig
  2. 34 0
      .env.development
  3. 33 0
      .env.production
  4. 39 0
      .env.staging
  5. 4 0
      .eslintignore
  6. 198 0
      .eslintrc.js
  7. 26 0
      .gitignore
  8. 24 0
      .postcssrc.js
  9. 5 0
      .travis.yml
  10. 76 0
      README.md
  11. 6 0
      babel.config.js
  12. 35 0
      build/index.js
  13. 27 0
      jest.config.js
  14. 102 0
      package.json
  15. 26 0
      plop-templates/component/index.hbs
  16. 55 0
      plop-templates/component/prompt.js
  17. 9 0
      plop-templates/utils.js
  18. 26 0
      plop-templates/view/index.hbs
  19. 55 0
      plop-templates/view/prompt.js
  20. 7 0
      plopfile.js
  21. 14 0
      public/config.js
  22. BIN
      public/favicon.ico
  23. 22 0
      public/index.html
  24. BIN
      public/static/img/logo/logo.png
  25. 23 0
      src/App.vue
  26. 26 0
      src/api/article.js
  27. 12 0
      src/api/behavior.js
  28. 68 0
      src/api/card-list.js
  29. 25 0
      src/api/consultation.js
  30. 15 0
      src/api/doctor.js
  31. 13 0
      src/api/file.js
  32. 102 0
      src/api/health.js
  33. 22 0
      src/api/home.js
  34. 56 0
      src/api/login.js
  35. 199 0
      src/api/mdt.js
  36. 26 0
      src/api/questionnaire.js
  37. 12 0
      src/api/risk.js
  38. 106 0
      src/api/scale.js
  39. 37 0
      src/api/statistics.js
  40. 14 0
      src/api/sys.js
  41. 222 0
      src/api/task.js
  42. 94 0
      src/api/user.js
  43. BIN
      src/assets/avatar/Avatar-01.png
  44. BIN
      src/assets/avatar/Avatar-02.png
  45. BIN
      src/assets/avatar/Avatar-03.png
  46. BIN
      src/assets/avatar/Avatar-04.png
  47. BIN
      src/assets/avatar/Avatar-05.png
  48. BIN
      src/assets/avatar/Avatar-06.png
  49. BIN
      src/assets/avatar/Avatar-07.png
  50. BIN
      src/assets/avatar/Avatar-08.png
  51. BIN
      src/assets/avatar/Avatar-09.png
  52. BIN
      src/assets/avatar/Avatar-10.png
  53. BIN
      src/assets/avatar/Avatar-11.png
  54. BIN
      src/assets/avatar/Avatar-12.png
  55. BIN
      src/assets/avatar/Avatar-13.png
  56. BIN
      src/assets/avatar/Avatar-14.png
  57. BIN
      src/assets/avatar/Avatar-15.png
  58. BIN
      src/assets/avatar/Avatar-16.png
  59. BIN
      src/assets/avatar/Avatar-17.png
  60. BIN
      src/assets/custom-theme/fonts/element-icons.ttf
  61. BIN
      src/assets/custom-theme/fonts/element-icons.woff
  62. 0 0
      src/assets/custom-theme/index.css
  63. BIN
      src/assets/health/icon-doctor.png
  64. BIN
      src/assets/health/icon-risk.png
  65. BIN
      src/assets/health/icon-tips.png
  66. BIN
      src/assets/health/icon_blue.png
  67. BIN
      src/assets/health/icon_green.png
  68. BIN
      src/assets/health/icon_yellow.png
  69. 3 0
      src/assets/iconfont.css
  70. BIN
      src/assets/images/Vector.png
  71. BIN
      src/assets/images/bg_body_main.png
  72. BIN
      src/assets/images/events/other.png
  73. BIN
      src/assets/images/events/r_1.png
  74. BIN
      src/assets/images/events/r_14.png
  75. BIN
      src/assets/images/events/r_2.png
  76. BIN
      src/assets/images/events/r_2_1.png
  77. BIN
      src/assets/images/events/r_2_2.png
  78. BIN
      src/assets/images/events/r_2_3.png
  79. BIN
      src/assets/images/events/r_2_4.png
  80. BIN
      src/assets/images/events/r_2_5.png
  81. BIN
      src/assets/images/events/r_2_6.png
  82. BIN
      src/assets/images/events/r_9.png
  83. BIN
      src/assets/images/health/61.jpg
  84. BIN
      src/assets/images/health/bg-user.png
  85. BIN
      src/assets/images/icon-running.png
  86. BIN
      src/assets/images/icon-wx-push.png
  87. BIN
      src/assets/images/icon/ai.png
  88. BIN
      src/assets/images/icon/alert.png
  89. BIN
      src/assets/images/icon/doctor.png
  90. BIN
      src/assets/images/icon/document.png
  91. BIN
      src/assets/images/icon/food.png
  92. BIN
      src/assets/images/icon/remind.png
  93. BIN
      src/assets/images/icon/review.png
  94. BIN
      src/assets/images/icon/sports.png
  95. BIN
      src/assets/images/icon/yao.png
  96. BIN
      src/assets/images/img-ai.png
  97. BIN
      src/assets/images/img-article-img.png
  98. BIN
      src/assets/images/img-article-nodata@3x.png
  99. BIN
      src/assets/images/img-bg.png
  100. BIN
      src/assets/images/img-card-imgs.png

+ 14 - 0
.editorconfig

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

+ 34 - 0
.env.development

@@ -0,0 +1,34 @@
+# just a flag
+ENV = 'development'
+
+# base api
+VUE_APP_BASE_API = 'http://localhost:9527/doctorwx/'
+
+#微信授权调用URL
+VUE_APP_WX_PATH = 'http://dev1.cloud-seal.com/doctorwx/#/login2'
+VUE_APP_WX_PATH_1 = 'https://slife.bydsfy.com/doctorwx/#/login3'
+
+#公众号id  煋象健康
+# VUE_APP_WX_APP_ID = 'wwfb2bc740a8e3ca0c'
+
+#公众号id APPID
+VUE_APP_WX_APP_ID = 'wwab8e198e3aa79d2a'
+
+
+#微信第三方登录类型
+# VUE_APP_WX_APP_CODE = '1000002'
+VUE_APP_WX_APP_CODE = '1000020'
+
+
+# 患者端 上下文
+VUE_APP_API = 'hipo-business'
+
+
+# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
+# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
+# It only does one thing by converting all import() to require().
+# This configuration can significantly increase the speed of hot updates,
+# when you have a large number of pages.
+# Detail:  https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js
+
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 33 - 0
.env.production

@@ -0,0 +1,33 @@
+# just a flag
+ENV = 'production'
+
+# base api
+#VUE_APP_BASE_API = 'https://dev1.cloud-seal.com/'
+ VUE_APP_BASE_API = ''
+
+# 登录跳转地址
+#VUE_APP_BASE_URL  = 'http://slife.bydsfy.com/life'
+
+# base api
+VUE_APP_BASE_API = 'https://slife.bydsfy.com/doctorwx/'
+
+#微信授权调用URL
+VUE_APP_WX_PATH = 'https://slife.bydsfy.com/doctorwx/#/login2'
+VUE_APP_WX_PATH_1 = 'https://slife.bydsfy.com/doctorwx/#/login3'
+
+#公众号id  煋象健康
+# VUE_APP_WX_APP_ID = 'wwfb2bc740a8e3ca0c'
+
+#公众号id APPID
+VUE_APP_WX_APP_ID = 'wwab8e198e3aa79d2a'
+
+
+#微信第三方登录类型
+# VUE_APP_WX_APP_CODE = '1000002'
+VUE_APP_WX_APP_CODE = '1000020'
+
+
+
+
+# 医生端 上下文
+VUE_APP_API = 'hipo-business'

+ 39 - 0
.env.staging

@@ -0,0 +1,39 @@
+NODE_ENV = production
+
+
+
+
+
+
+# base api
+#VUE_APP_BASE_API = 'https://dev1.cloud-seal.com/'
+ VUE_APP_BASE_API = =''
+
+# 登录跳转地址
+VUE_APP_BASE_URL  ='https://dev1.cloud-seal.com/life'
+
+
+#微信授权调用URL
+VUE_APP_WX_PATH = 'https://dev1.cloud-seal.com/life/#/login'
+
+#公众号id  云章
+# VUE_APP_WX_APP_ID = 'wx3cf98c292baf4eb3'
+
+#公众号id  煋象健康
+ VUE_APP_WX_APP_ID = 'wxbe14c70a4dcb3a0c'
+
+
+
+
+
+#微信第三方登录 云章
+# VUE_APP_WX_APP_CODE = 'WECHAT_MP_YUNZHANG'
+
+#微信第三方登录类型
+ VUE_APP_WX_APP_CODE = 'WX_MP_1'
+
+
+
+
+# 医生端 上下文
+VUE_APP_API = 'hipo-business'

+ 4 - 0
.eslintignore

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

+ 198 - 0
.eslintrc.js

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

+ 26 - 0
.gitignore

@@ -0,0 +1,26 @@
+.DS_Store
+node_modules/
+dist/
+doctorwx/
+life/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+**/*.log
+
+tests/**/coverage/
+tests/e2e/reports
+selenium-debug.log
+doctorwx.zip
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.local
+
+package-lock.json
+yarn.lock

+ 24 - 0
.postcssrc.js

@@ -0,0 +1,24 @@
+// https://github.com/michael-ciniawsky/postcss-load-config
+
+module.exports = {
+  "plugins": {
+    autoprefixer: {},
+    "postcss-aspect-ratio-mini": {},
+    "postcss-write-svg": {
+      utf8: false
+    },
+    "postcss-px-to-viewport": {
+      viewportWidth: 750/2,
+      viewportHeight: 1334/2,
+      unitPrecision: 1,
+      viewportUnit: 'vw',
+      selectorBlackList: [".ignore", ".hairlines"],
+      minPixelValue: 1,
+      mediaQuery: false,
+      exclude: [/node_modules/]
+    },
+    "postcss-viewport-units":{
+      silence: true
+    }
+  }
+}

+ 5 - 0
.travis.yml

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

+ 76 - 0
README.md

@@ -0,0 +1,76 @@
+<!--
+ * @Author: magic
+ * @Date: 2024-03-14 08:21:04
+ * @LastEditors: g05047
+ * @LastEditTime: 2024-04-01 15:20:03
+ * @Description: file content
+-->
+# 组件 lodash  https://www.jianshu.com/p/d46abfa4ddc9
+
+
+
+
+个案/任务管理:
+  医生任务配置添加个案类型(manage_type)、个案目标(target_id)、op_type设置为manage
+  个案数据添加个案类型type(字典定义)和目标id(targetId,由target修改而来)、目标执行状态(targetExeStatus),个案类型与个案目标来源于医生任务配置的type(manage_type)和目标(target_id)
+  目标管理:/sys/manage/doctor/crm/target/*
+  
+
+  统计:
+    任务数据统计页面:
+      统计数据:/sys/manage/doctor/crm/statistic/taskTotalCount
+      列表数据:/sys/healthy/doctor/pushTask/manageQuery
+    
+    个案数据统计页面:
+      统计数据:
+        当前:/sys/manage/doctor/crm/statistic/targetTotalCount
+        历史:/sys/manage/doctor/crm/statistic/targetHisTotalCount
+      列表数据:
+        当前:/sys/doctor/crm/mark/manageQuery
+        当前:/sys/doctor/crm/mark/hisManagePage
+
+    运营看板页面:
+      阶段目标数据:
+        当前:/sys/manage/doctor/crm/statistic/targetTotalCount
+        历史:/sys/manage/doctor/crm/statistic/targetHisTotalCount
+      
+      趋势:
+        当前:/sys/manage/doctor/crm/statistic/targetCountTrend
+        历史:/sys/manage/doctor/crm/statistic/targetHisCountTrend
+
+      目标种类数据:
+        当前:/sys/manage/doctor/crm/statistic/targetCountByTarget
+        历史:/sys/manage/doctor/crm/statistic/targetHisCountByTarget
+
+      绩效考核/目标完成状态:
+        当前:/sys/manage/doctor/crm/statistic/targetCountByDoctor
+        历史:/sys/manage/doctor/crm/statistic/targetHisCountByDoctor
+      绩效考核/任务处理状态:/sys/manage/doctor/crm/statistic/taskCountByDoctor
+
+
+
+      1.新增需求: 支持当前MDT参加人,转交给其他人。(整理名单)
+      2.优化需求: 显示哪些人没有发表意见
+      3.主持人和秘书问题,所有会议组织操作都是秘书
+      4.增加统计需求: 支持在某个时间范围查询 个病种MDT 会诊次数,以及会议具体信息(如参与人、意见、总结等)
+
+      ---------
+      病种MDT   时间               患者病历数量      详情
+      肾肿瘤     20232.20-2。24        4            【查看】
+      胃癌
+
+
+
+      ------
+      病种MDT
+      李明MDT   200   4  2  
+      老王MDT   200   4  2  
+
+
+      1. 先要提取入院的床位号和管床医生 通知 MDT-——》记录看
+      2. 通知目标会诊组长
+      3. 门诊
+
+    1. 绩效考核统计。
+    2. 总结性意见的异常状态。
+

+ 6 - 0
babel.config.js

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

+ 35 - 0
build/index.js

@@ -0,0 +1,35 @@
+const { run } = require('runjs')
+const chalk = require('chalk')
+const config = require('../vue.config.js')
+const rawArgv = process.argv.slice(2)
+const args = rawArgv.join(' ')
+
+if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
+  const report = rawArgv.includes('--report')
+
+  run(`vue-cli-service build ${args}`)
+
+  const port = 9526
+  const publicPath = config.publicPath
+
+  var connect = require('connect')
+  var serveStatic = require('serve-static')
+  const app = connect()
+
+  app.use(
+    publicPath,
+    serveStatic('./dist', {
+      index: ['index.html', '/']
+    })
+  )
+
+  app.listen(port, function () {
+      console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))
+    if (report) {
+      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))
+    }
+
+  })
+} else {
+  run(`vue-cli-service build ${args}`)
+}

+ 27 - 0
jest.config.js

@@ -0,0 +1,27 @@
+module.exports = {
+  verbose: true,
+  moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
+  transformIgnorePatterns: [
+    'node_modules/(?!(babel-jest|jest-vue-preprocessor)/)'
+  ],
+  transform: {
+    '^.+\\.vue$': 'vue-jest',
+    '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub',
+    '^.+\\.jsx?$': 'babel-jest'
+  },
+  moduleNameMapper: {
+    '^@/(.*)$': '<rootDir>/src/$1'
+  },
+  snapshotSerializers: ['jest-serializer-vue'],
+  testMatch: [
+    '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'
+  ],
+  collectCoverageFrom: ['src/utils/**/*.{js,vue}',  '!src/utils/request.js', 'src/components/**/*.{js,vue}'],
+  coverageDirectory: '<rootDir>/tests/unit/coverage',
+  // 'collectCoverage': true,
+  'coverageReporters': [
+    'lcov',
+    'text-summary'
+  ],
+  testURL: 'http://localhost/'
+}

+ 102 - 0
package.json

@@ -0,0 +1,102 @@
+{
+  "name": "oasis-app",
+  "version": "0.1.0",
+  "description": "",
+  "author": "magic",
+  "license": "",
+  "scripts": {
+    "dev": "vue-cli-service serve",
+    "build": "vue-cli-service build",
+    "build:stage": "vue-cli-service build --mode staging",
+    "preview": "node build/index.js --preview",
+    "lint": "eslint --ext .js,.vue src",
+    "test:unit": "vue-cli-service test:unit",
+    "test:ci": "npm run lint && npm run test:unit",
+    "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
+    "new": "plop"
+  },
+  "lint-staged": {
+    "src/**/*.{js,vue}": [
+      "eslint --fix",
+      "git add"
+    ]
+  },
+  "keywords": [
+    "oasis"
+  ],
+  "dependencies": {
+    "@vant/touch-emulator": "^1.2.0",
+    "axios": "^0.19.2",
+    "better-scroll": "^2.0.5",
+    "clipboard": "^2.0.6",
+    "core-js": "^2.6.12",
+    "crypto-js": "^4.0.0",
+    "cs-ruler": "^2.1.5",
+    "driver.js": "0.9.5",
+    "echarts": "^5.5.1",
+    "iphone-inline-video": "^2.2.2",
+    "js-cookie": "2.2.0",
+    "jsonlint": "1.6.3",
+    "less": "^3.12.2",
+    "less-loader": "^7.0.1",
+    "moment": "^2.28.0",
+    "normalize.css": "7.0.0",
+    "nprogress": "0.2.0",
+    "path-to-regexp": "2.4.0",
+    "postcss-aspect-ratio-mini": "^1.0.1",
+    "postcss-loader": "^3.0.0",
+    "postcss-px-to-viewport": "^1.1.0",
+    "postcss-viewport-units": "^0.1.6",
+    "postcss-write-svg": "^3.0.1",
+    "sa-sdk-javascript": "^1.15.24",
+    "vant": "^2.10.4",
+    "vconsole": "^3.15.1",
+    "vue": "2.6.10",
+    "vue-router": "3.0.2",
+    "vue-scale": "^1.2.0",
+    "vue-video-player": "^5.0.2",
+    "vuex": "3.1.0"
+  },
+  "devDependencies": {
+    "@babel/core": "7.0.0",
+    "@babel/register": "7.0.0",
+    "@vue/cli-plugin-babel": "3.5.3",
+    "@vue/cli-plugin-eslint": "3.5.1",
+    "@vue/cli-plugin-unit-jest": "^3.8.0",
+    "@vue/cli-service": "3.5.3",
+    "@vue/test-utils": "1.0.0-beta.29",
+    "babel-core": "7.0.0-bridge.0",
+    "babel-eslint": "10.0.1",
+    "babel-jest": "^24.8.0",
+    "babel-plugin-import": "^1.13.0",
+    "chalk": "2.4.2",
+    "chokidar": "2.1.5",
+    "connect": "3.6.6",
+    "eslint": "5.15.3",
+    "eslint-plugin-vue": "5.2.2",
+    "html-webpack-plugin": "3.2.0",
+    "husky": "1.3.1",
+    "lint-staged": "8.1.5",
+    "node-sass": "^4.14.1",
+    "plop": "2.3.0",
+    "runjs": "^4.3.2",
+    "sass-loader": "^7.3.1",
+    "sass-resources-loader": "^2.1.0",
+    "script-ext-html-webpack-plugin": "2.1.3",
+    "script-loader": "0.7.2",
+    "serve-static": "^1.13.2",
+    "svg-sprite-loader": "4.1.3",
+    "svgo": "1.2.0",
+    "ua-device": "^0.1.10",
+    "vue-template-compiler": "2.6.10"
+  },
+  "engines": {
+    "node": ">=8.9",
+    "npm": ">= 3.0.0"
+  },
+  "browserslist": [
+    "> 1%",
+    "last 2 versions",
+    "not ie <= 8"
+  ]
+}

+ 26 - 0
plop-templates/component/index.hbs

@@ -0,0 +1,26 @@
+{{#if template}}
+<template>
+  <div />
+</template>
+{{/if}}
+
+{{#if script}}
+<script>
+export default {
+  name: '{{ properCase name }}',
+  props: {},
+  data() {
+    return {}
+  },
+  created() {},
+  mounted() {},
+  methods: {}
+}
+</script>
+{{/if}}
+
+{{#if style}}
+<style lang="scss" scoped>
+
+</style>
+{{/if}}

+ 55 - 0
plop-templates/component/prompt.js

@@ -0,0 +1,55 @@
+const { notEmpty } = require('../utils.js')
+
+module.exports = {
+  description: 'generate vue component',
+  prompts: [{
+    type: 'input',
+    name: 'name',
+    message: 'component name please',
+    validate: notEmpty('name')
+  },
+  {
+    type: 'checkbox',
+    name: 'blocks',
+    message: 'Blocks:',
+    choices: [{
+      name: '<template>',
+      value: 'template',
+      checked: true
+    },
+    {
+      name: '<script>',
+      value: 'script',
+      checked: true
+    },
+    {
+      name: 'style',
+      value: 'style',
+      checked: true
+    }
+    ],
+    validate(value) {
+      if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
+        return 'Components require at least a <script> or <template> tag.'
+      }
+      return true
+    }
+  }
+  ],
+  actions: data => {
+    const name = '{{properCase name}}'
+    const actions = [{
+      type: 'add',
+      path: `src/components/${name}/index.vue`,
+      templateFile: 'plop-templates/component/index.hbs',
+      data: {
+        name: name,
+        template: data.blocks.includes('template'),
+        script: data.blocks.includes('script'),
+        style: data.blocks.includes('style')
+      }
+    }]
+
+    return actions
+  }
+}

+ 9 - 0
plop-templates/utils.js

@@ -0,0 +1,9 @@
+exports.notEmpty = name => {
+  return v => {
+    if (!v || v.trim === '') {
+      return `${name} is required`
+    } else {
+      return true
+    }
+  }
+}

+ 26 - 0
plop-templates/view/index.hbs

@@ -0,0 +1,26 @@
+{{#if template}}
+<template>
+  <div />
+</template>
+{{/if}}
+
+{{#if script}}
+<script>
+export default {
+  name: '{{ properCase name }}',
+  props: {},
+  data() {
+    return {}
+  },
+  created() {},
+  mounted() {},
+  methods: {}
+}
+</script>
+{{/if}}
+
+{{#if style}}
+<style lang="scss" scoped>
+
+</style>
+{{/if}}

+ 55 - 0
plop-templates/view/prompt.js

@@ -0,0 +1,55 @@
+const { notEmpty } = require('../utils.js')
+
+module.exports = {
+  description: 'generate a view',
+  prompts: [{
+    type: 'input',
+    name: 'name',
+    message: 'view name please',
+    validate: notEmpty('name')
+  },
+  {
+    type: 'checkbox',
+    name: 'blocks',
+    message: 'Blocks:',
+    choices: [{
+      name: '<template>',
+      value: 'template',
+      checked: true
+    },
+    {
+      name: '<script>',
+      value: 'script',
+      checked: true
+    },
+    {
+      name: 'style',
+      value: 'style',
+      checked: true
+    }
+    ],
+    validate(value) {
+      if (value.indexOf('script') === -1 && value.indexOf('template') === -1) {
+        return 'View require at least a <script> or <template> tag.'
+      }
+      return true
+    }
+  }
+  ],
+  actions: data => {
+    const name = '{{name}}'
+    const actions = [{
+      type: 'add',
+      path: `src/views/${name}/index.vue`,
+      templateFile: 'plop-templates/view/index.hbs',
+      data: {
+        name: name,
+        template: data.blocks.includes('template'),
+        script: data.blocks.includes('script'),
+        style: data.blocks.includes('style')
+      }
+    }]
+
+    return actions
+  }
+}

+ 7 - 0
plopfile.js

@@ -0,0 +1,7 @@
+const viewGenerator = require('./plop-templates/view/prompt')
+const componentGenerator = require('./plop-templates/component/prompt')
+
+module.exports = function(plop) {
+  plop.setGenerator('view', viewGenerator)
+  plop.setGenerator('component', componentGenerator)
+}

+ 14 - 0
public/config.js

@@ -0,0 +1,14 @@
+window.GLOBAL_CONFIG = {
+    API_APP: 'https://slife.bydsfy.com/api/wbmd3h', // 生产
+    // API_APP: 'http://172.18.84.102:8080/api/wbmd3hd', // 生产
+    //API_APP: 'http://117.72.46.114/api/doctor', //大胖测试
+    // API_APP: 'http://dev1.cloud-seal.com/healthy-doctor/', 
+    API_APP_DATA: 'hipo-business',
+    //APP_KEY: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJDMTcwNTQzMjA0MjYzODAyMDYwOCIsInJuU3RyIjoiNkQzUEtqWWNZc3p5eWxRM3Radk11d2lRV2k5cTBscGMiLCJ0aGlyZFVzZXJJZCI6IkNUVTE3MDU0MzIwNDI2MzgwMjQ3MDQiLCJ1c2VyTmFtZSI6ImUxMzMxNDBiM2I0ODQ1ZWY4Y2FlZGNiZmVhNzEyMjIzIn0.9ip-V-jyp3EMEzQhULWvOlZez0KVcIv8Sboie7gHiwE',
+    TOKEN_NAME:'OASIS-TOKEN',
+    USER_NAME:'OASIS-USER'
+    // API_ETL: 'http://172.18.84.102:8080/api/wbmd1s', 
+    // API_DOCTOR: 'http://172.18.84.102:8080/api/wbmd3h', 
+    // API_DATA: 'http://172.18.84.102:8080/api/wbmd3h',    
+}
+

BIN
public/favicon.ico


+ 22 - 0
public/index.html

@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="renderer" content="webkit">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no,minimum-scale=1.0" >
+    <meta http-equiv="Pragma" content="no-cache">
+    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
+    <meta http-equiv="Expires" content="0">
+    <meta http-equiv="Cache" content="no-cache">
+    
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+
+
+    <title><%= webpackConfig.name %></title>
+    <script src="./config.js"></script>
+  </head>
+  <body>
+    <div id="app"></div>
+  </body>
+</html>

BIN
public/static/img/logo/logo.png


+ 23 - 0
src/App.vue

@@ -0,0 +1,23 @@
+<template>
+  <div id="app">
+    <transition>
+
+      <keep-alive  v-if="$route.meta.keepAlive">
+        <router-view />
+      </keep-alive>
+
+      <router-view v-else/>
+
+    </transition>
+
+
+
+  
+  </div>
+</template>
+
+<script>
+export default {
+  name: "App",
+};
+</script>

+ 26 - 0
src/api/article.js

@@ -0,0 +1,26 @@
+import request from "@/utils/request";
+
+/**
+ * 获取文章内容
+ */
+export function getArticle(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/article/info/info`,
+    method: "post",
+    data: parameter
+  });
+}
+
+
+/**
+ * 患者行为
+ */
+export function behaviorAdd(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/patient/behavior/add`,
+    method: "post",
+    data: parameter
+  });
+}
+
+

+ 12 - 0
src/api/behavior.js

@@ -0,0 +1,12 @@
+import request from "@/utils/request";
+
+/**
+ * 添加行为
+ */
+export function addBehavior(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/patient/behavior/add`,
+    method: "post",
+    data: parameter
+  });
+}

+ 68 - 0
src/api/card-list.js

@@ -0,0 +1,68 @@
+import request from "@/utils/request";
+// let url  = 'https://dev1.cloud-seal.com/xx-biz'
+
+let url  = window.GLOBAL_CONFIG.API_APP
+
+/**
+ * 同步家庭成员   ${window.GLOBAL_CONFIG.API_APP}/app/healthy/article/info/info
+ */
+export function familyAddFromHis(parameter) {
+  return request({
+    url: `${url}/app/customer/family/addFromHis`,
+    method: "post",
+    data: parameter
+  });
+}
+
+export function familyListMember(parameter) {
+    return request({
+      url: `${url}/app/customer/family/listMember`,
+      method: "post",
+      data: parameter
+    });
+  }
+
+
+  // 发送验证码
+  export function familySendAuthCode(parameter) {
+    return request({
+      url: `${url}/app/customer/family/sendAuthCode`,
+      method: "post",
+      data: parameter
+    });
+  }
+
+ 
+
+      // 绑定
+    export function familyAuth(parameter) {
+        return request({
+          url: `${url}/app/customer/family/auth`,
+          method: "post",
+          data: parameter
+        });
+      }
+
+
+      
+
+         // 选择
+    export function familyChoose(parameter) {
+        return request({
+          url: `${url}/app/customer/family/choose`,
+          method: "post",
+          data: parameter
+        });
+      }
+
+         // 获取图片验证码
+         export function getImageWordCaptcha(parameter) {
+          return request({
+            url: `${url}/app/customer/code/getImageWordCaptcha`,
+            method: "post",
+            data: parameter
+          });
+        }
+
+
+      

+ 25 - 0
src/api/consultation.js

@@ -0,0 +1,25 @@
+import request from "@/utils/request";
+// let url  = 'https://dev1.cloud-seal.com/xx-biz'
+
+let url  = window.GLOBAL_CONFIG.API_APP
+
+/**
+ * 同步家庭成员   ${window.GLOBAL_CONFIG.API_APP}/app/healthy/article/info/info
+ */
+export function notifyList(parameter) {
+  return request({
+    url: `${url}/sys/doctor/mdt/notify/query`,
+    method: "post",
+    data: parameter
+  });
+}
+
+//申述
+
+export function createExamine(parameter) {
+  return request({
+    url: `${url}/sys/doctor/mdt/launch/apply/createExamine`,
+    method: "post",
+    data: parameter
+  });
+}

+ 15 - 0
src/api/doctor.js

@@ -0,0 +1,15 @@
+import request from "@/utils/request";
+// let url  = 'https://dev1.cloud-seal.com/xx-biz'
+
+let url  = window.GLOBAL_CONFIG.API_APP
+
+/**
+ * 获取schemeUrl
+ */
+export function getSchemeUrl(parameter) {
+  return request({
+    url: `${url}/app/customer/user/getSchemeUrl`,
+    method: "post",
+    data: parameter
+  });
+}

+ 13 - 0
src/api/file.js

@@ -0,0 +1,13 @@
+import request from "@/utils/request";
+
+/**
+ * 上传 
+ */
+export function batchUp2AliLocal(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/store/io/up2AliLocal`,
+    method: "post",
+    data: parameter
+  });
+}
+

+ 102 - 0
src/api/health.js

@@ -0,0 +1,102 @@
+import request from "@/utils/request";
+
+/**
+ * 患者数据列表
+ */
+export function patientList(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/dept/pushserve/archives`,
+    method: "post",
+    data: parameter
+  });
+}
+
+
+
+/**
+ * 患者数据列表
+ */
+// export function getRuleListByTaskId(parameter) {
+//   return request({
+//     url: `${window.GLOBAL_CONFIG.API_APP}/sys/rule/flow/log/getListByTaskId`,
+//     method: "post",
+//     data: parameter
+//   });
+// }
+
+
+export function getRuleListByTaskId(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/rule/flow/log/getListByTaskNodeId`,
+    method: "post",
+    data: parameter
+  });
+}
+
+
+
+
+export function queryPatientHistoryLabelByData(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/patient/label/patientHistoryLabel/list`,
+    method: "post",
+    data: parameter
+  });
+}
+
+/**
+ * 通过用户标签推理数据
+ * @param {*} data 
+ * @returns 
+ */
+export function getTagsLogById(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/rule/label/log/getById`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 获取检查报告
+ * @param {*} data 
+ * @returns 
+ */
+export function queryExamsReportsByIds(data) {
+  return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/dw/dwd/data/doctor/patient/examineReport/list`,
+      method: 'post',
+      data
+  })
+}
+
+
+
+
+/**
+ * 获取检查报告
+ * @param {*} data 
+ * @returns 
+ */
+export function queryLabsReportsByIds(data) {
+  return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/dw/dwd/data/doctor/patient/laboratoryReport/list`,
+      method: 'post',
+      data
+  })
+}
+
+
+/**
+ * 获取出院小结
+ * @param {*} data 
+ * @returns 
+ */
+export function queryPatientDischargeDocById(data) {
+  return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/dw/dwd/data/doctor/patient/discharge/content`,
+      method: 'post',
+      data
+  })
+}

+ 22 - 0
src/api/home.js

@@ -0,0 +1,22 @@
+import request from "@/utils/request";
+
+/**
+ * 患者日程 
+ */
+export function scheduleList(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/patient/schedule/list`,
+    method: "post",
+    data: parameter
+  });
+}
+
+export function getUserInfo(parameter) {
+    return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/app/customer/user/getUserInfo`,
+      method: "post",
+      data: parameter
+    });
+  }
+
+

+ 56 - 0
src/api/login.js

@@ -0,0 +1,56 @@
+import request from "@/utils/request";
+
+/**
+ * 登录
+ * @param {*} data
+ * @returns
+ */
+export function login(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/sys/userlogin/loginByNamePassword`,
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 获取图片验证码
+ * @param {*} data
+ * @returns
+ */
+export function loginImg(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/sys/userlogin/getImageWordCaptcha`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+/**
+ * 通过微信code进行账号绑定
+ * @param {*} data
+ * @returns
+ */
+export function loginByCode(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/sys/userlogin/login`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 绑定账号
+ * @param {*} data
+ * @returns
+ */
+export function loginByWx(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/sys/userlogin/bind`,
+    method: 'post',
+    data
+  })
+}

+ 199 - 0
src/api/mdt.js

@@ -0,0 +1,199 @@
+import request from "@/utils/request";
+
+/**
+ * 查询mdt列表
+ * @param {*} data
+ * @returns
+ */
+export function queryMdtList(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/query`,
+    method: 'post',
+    data
+  })
+}
+
+
+export function getMdtDetail2(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/launch/apply/detail`,
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 获取mdt详情
+ * @param {*} data
+ * @returns
+ */
+export function getMdtDetail(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/detail`,
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 获取会诊动态
+ * @param {*} data
+ * @returns
+ */
+export function queryMdtTrendsList(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/trendsList`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 参加MDT
+ * @param {*} data
+ * @returns
+ */
+export function joinMdt(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/join`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 拒绝MDT
+ * @param {*} data
+ * @returns
+ */
+export function refuseMdt(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/refuse`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+/**
+ * 开始MDT
+ * @param {*} data
+ * @returns
+ */
+export function startMdt(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/start`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+/**
+ * 发表意见,多次提交会覆盖
+ * @param {*} data
+ * @returns
+ */
+export function adviceMdt(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/advice`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+/**
+ * 获取自己的意见
+ * @param {*} data
+ * @returns
+ */
+export function ownerAdviceDetail(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/ownerAdviceDetail`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 会诊意见列表
+ * @param {*} data
+ * @returns
+ */
+export function adviceList(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/adviceList`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 保存会诊总结
+ * @param {*} data
+ * @returns
+ */
+export function saveSummary(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/summary`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+
+/**
+ * 结束会诊
+ * @param {*} data
+ * @returns
+ */
+export function finishMdt(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/finish`,
+    method: 'post',
+    data
+  })
+}
+
+
+/**
+ * 移交
+ * @param {*} data
+ * @returns
+ */
+export function refuseAndAppoint(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/refuseAndAppoint`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+/**
+ * 统计
+ * @param {*} data 
+ * @returns 
+ */
+export function statusCountStatistic(data) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/statusCountStatistic`,
+    method: 'post',
+    data
+  })
+}
+
+
+
+

+ 26 - 0
src/api/questionnaire.js

@@ -0,0 +1,26 @@
+import request from "@/utils/request";
+
+/**
+ * 量表详情 
+ */
+export function scaleInfo(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/scale/config/info`,
+    method: "post",
+    data: parameter
+  });
+}
+
+
+/**
+ * 提交量表
+ */
+export function resultWrite(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/scale/result/write`,
+    method: "post",
+    data: parameter
+  });
+}
+
+

+ 12 - 0
src/api/risk.js

@@ -0,0 +1,12 @@
+import request from "@/utils/request";
+
+/**
+ * 查询患者风险
+ */
+export function queryRiskListByPatientId(parameter) {
+  return request({
+    url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/patient/risk/list`,
+    method: "post",
+    data: parameter
+  });
+}

+ 106 - 0
src/api/scale.js

@@ -0,0 +1,106 @@
+import request from '@/utils/request'
+
+//量表分类
+export function scaleTypeAdd(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/category/save`,
+        method: 'post',
+        data
+    })
+}
+
+//量表分类列表
+export function scaleTypeList(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/category/tree`,
+        method: 'post',
+        data
+    })
+}
+//量表分类修改
+export function scaleTypeUpdate(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/category/update`,
+        method: 'post',
+        data
+    })
+}
+//量表分类删除
+export function scaleTypeDel(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/category/del`,
+        method: 'post',
+        data
+    })
+}
+//量表分类获取
+export function scaleTypeInfo(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/category/info`,
+        method: 'post',
+        data
+    })
+}
+
+//      ------------------------------------  量表管理---------------------------------------
+export function scaleAdd(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/save`,
+        method: 'post',
+        data
+    })
+}
+
+export function scaleList(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/query`,
+        method: 'post',
+        data
+    })
+}
+
+export function scaleInfo(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/info`,
+        method: 'post',
+        data
+    })
+}
+
+export function scaleDel(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/del`,
+        method: 'post',
+        data
+    })
+}
+
+export function scaleUpdate(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/update`,
+        method: 'post',
+        data
+    })
+}
+
+
+// 修改量表配置
+export function scaleUpdateItem(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/updateItem`,
+        method: 'post',
+        data
+    })
+}
+
+// 获取量表配置
+export function scaleInfoFull(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/scale/config/infoFull`,
+        method: 'post',
+        data
+    })
+}
+
+
+

+ 37 - 0
src/api/statistics.js

@@ -0,0 +1,37 @@
+import request from '@/utils/request'
+
+//
+export function searchTimeoutStat(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/launch/stat/searchTimeoutStat`,
+        method: 'post',
+        data
+    })
+}
+
+
+export function getUrlKey(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/launch/apply/getUrlKey`,
+        method: 'post',
+        data
+    })
+}
+
+// 未发起
+export function listUndoing48H(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/launch/stat/listUndoing48H`,
+        method: 'post',
+        data
+    })
+}
+
+// 未完成
+export function listUndone24H(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/mdt/launch/stat/listUndone48H`,
+        method: 'post',
+        data
+    })
+}

+ 14 - 0
src/api/sys.js

@@ -0,0 +1,14 @@
+import request from '@/utils/request'
+
+/**
+ * 查询字典
+ * @param {*} data 
+ * @returns 
+ */
+export function queryDictInfo(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/basic/dict/listDictInfo`,
+        method: 'post',
+        data
+    })
+}

+ 222 - 0
src/api/task.js

@@ -0,0 +1,222 @@
+import request from '@/utils/request'
+
+/**
+ * 查询任务
+ * @param {*} data 
+ * @returns 
+ */
+export function queryTask(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/doctor/pushTask/queryByDate`,
+        method: 'post',
+        data
+    })
+}
+
+
+/**
+ * 获取任务详情
+ * @returns
+ */
+export function getPushTaskDetail(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/doctor/pushTask/detail`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+/**
+* 添加个案管理任务
+* @returns
+*/
+export function addPushTaskManage(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/doctor/pushTask/manage/add`,
+        method: 'post',
+        data
+    })
+}
+
+
+/**
+ * 忽略
+ * @param {*} data 
+ * @returns 
+ */
+export function ignorePushTaskManage(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/doctor/pushTask/manage/ignore`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+
+
+/**
+ * 查询个案管理列表
+ * @param {*} data 
+ * @returns 
+ */
+
+export function queryCrmList(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/mark/query`,
+        method: 'post',
+        data
+    })
+}
+
+
+/**
+ * 查看个案管理详情
+ * @param {*} data 
+ * @returns 
+ */
+export function queryCrmDetail(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/mark/detail`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+/**
+ * 查询医生行为
+ * @param {*} data 
+ * @returns 
+ */
+export function queryBehaviorByPage(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/behavior/list`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+/**
+ * 新增医生行为
+ * @param {*} data 
+ * @returns 
+ */
+export function addBehaviorById(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/behavior/add`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+
+/**
+ * 新增医生记录
+ * @param {*} data 
+ * @returns 
+ */
+export function addCRMTrack(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/track/add`,
+        method: 'post',
+        data
+    })
+}
+
+/**
+ * 查询医生记录,不分页
+ * @param {*} data 
+ * @returns 
+ */
+export function queryCRMTrackListByID(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/track/list`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+/**
+ * 更新目标
+ * @param {*} data 
+ * @returns 
+ */
+export function updateTargetByID(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/mark/updateTarget`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+
+/**
+ * 查看医生行为列表
+ * @param {*} data 
+ * @returns 
+ */
+export function queryDoctorBehaviorList(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/behavior/data/list`,
+        method: 'post',
+        data
+    })
+}
+
+
+/**
+ * 放弃个案管理
+ * @param {*} data 
+ * @returns 
+ */
+export function addAbandonById(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/mark/abandon`,
+        method: 'post',
+        data
+    })
+}
+
+
+
+/**
+ * 获取数量统计
+ * @param {*} data 
+ * @returns 
+ */
+export function getCountNums(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/doctor/crm/mark/targetCount`,
+        method: 'post',
+        data
+    })
+}
+
+/**
+ * 查询服务
+ * @param {*} data 
+ * @returns 
+ */
+export function queryPushService(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/patient/pushService/list`,
+        method: 'post',
+        data
+    })
+}
+
+
+

+ 94 - 0
src/api/user.js

@@ -0,0 +1,94 @@
+import request from '@/utils/request'
+
+//个人信息
+export function userDetail(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/app/healthy/data/patient/info`,
+        method: 'post',
+        data
+    })
+}
+
+
+export function queryUser(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/user/userInfo/query`,
+        method: 'post',
+        data
+    })
+}
+
+
+// 查看部门数据
+export function getDeptInfo(data) {
+    return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/sys/user/dept/info`,
+      method: 'post',
+      data
+    })
+  }
+/**
+ * 获取部门开通的病种信息
+ * @param {*} data 
+ * @returns 
+ */
+export function getDeptDiseaseList(data) {
+    return request({
+      url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/dept/manager/disease/list`,
+      method: 'post',
+      data
+    })
+  }
+
+// 查看标签
+export function searchLabelHistoryPatient(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/patient/label/dataList/search`,
+        method: 'post',
+        data
+    })
+}
+
+// 查看人员
+export function labelPatient(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/patient/label/labelPatient`,
+        method: 'post',
+        data
+    })
+}
+
+
+// 登录
+export function loginWecomAuthor(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/app/sys/wbmd/loginWecomAuthor`,
+        method: 'post',
+        data
+    })
+}
+// export function loginWecomAuthor(data) {
+//     return request({
+//         url: `https://slife.bydsfy.com/api/wbmd3hd/app/sys/wbmd/loginWecomAuthor`,
+//         method: 'post',
+//         data
+//     })
+// }
+
+// 推广码列表
+export function getWxImg(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/wechat/qrcode/page`,
+        method: 'post',
+        data
+    })
+}
+
+// 推广码同步
+export function imgPromotion(data) {
+    return request({
+        url: `${window.GLOBAL_CONFIG.API_APP}/sys/healthy/wechat/sync/promotion`,
+        method: 'post',
+        data
+    })
+}

BIN
src/assets/avatar/Avatar-01.png


BIN
src/assets/avatar/Avatar-02.png


BIN
src/assets/avatar/Avatar-03.png


BIN
src/assets/avatar/Avatar-04.png


BIN
src/assets/avatar/Avatar-05.png


BIN
src/assets/avatar/Avatar-06.png


BIN
src/assets/avatar/Avatar-07.png


BIN
src/assets/avatar/Avatar-08.png


BIN
src/assets/avatar/Avatar-09.png


BIN
src/assets/avatar/Avatar-10.png


BIN
src/assets/avatar/Avatar-11.png


BIN
src/assets/avatar/Avatar-12.png


BIN
src/assets/avatar/Avatar-13.png


BIN
src/assets/avatar/Avatar-14.png


BIN
src/assets/avatar/Avatar-15.png


BIN
src/assets/avatar/Avatar-16.png


BIN
src/assets/avatar/Avatar-17.png


BIN
src/assets/custom-theme/fonts/element-icons.ttf


BIN
src/assets/custom-theme/fonts/element-icons.woff


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
src/assets/custom-theme/index.css


BIN
src/assets/health/icon-doctor.png


BIN
src/assets/health/icon-risk.png


BIN
src/assets/health/icon-tips.png


BIN
src/assets/health/icon_blue.png


BIN
src/assets/health/icon_green.png


BIN
src/assets/health/icon_yellow.png


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 3 - 0
src/assets/iconfont.css


BIN
src/assets/images/Vector.png


BIN
src/assets/images/bg_body_main.png


BIN
src/assets/images/events/other.png


BIN
src/assets/images/events/r_1.png


BIN
src/assets/images/events/r_14.png


BIN
src/assets/images/events/r_2.png


BIN
src/assets/images/events/r_2_1.png


BIN
src/assets/images/events/r_2_2.png


BIN
src/assets/images/events/r_2_3.png


BIN
src/assets/images/events/r_2_4.png


BIN
src/assets/images/events/r_2_5.png


BIN
src/assets/images/events/r_2_6.png


BIN
src/assets/images/events/r_9.png


BIN
src/assets/images/health/61.jpg


BIN
src/assets/images/health/bg-user.png


BIN
src/assets/images/icon-running.png


BIN
src/assets/images/icon-wx-push.png


BIN
src/assets/images/icon/ai.png


BIN
src/assets/images/icon/alert.png


BIN
src/assets/images/icon/doctor.png


BIN
src/assets/images/icon/document.png


BIN
src/assets/images/icon/food.png


BIN
src/assets/images/icon/remind.png


BIN
src/assets/images/icon/review.png


BIN
src/assets/images/icon/sports.png


BIN
src/assets/images/icon/yao.png


BIN
src/assets/images/img-ai.png


BIN
src/assets/images/img-article-img.png


BIN
src/assets/images/img-article-nodata@3x.png


BIN
src/assets/images/img-bg.png


BIN
src/assets/images/img-card-imgs.png


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.