ss
jiangping
2025-06-19 6f2abed09bb02b22f73477642c21a333fe741207
ss
已添加3个文件
已删除77个文件
已修改35个文件
已重命名1个文件
9121 ■■■■■ 文件已修改
.idea/compiler.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/vcs.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/avatar/man.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/avatar/woman.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/icon.jpg 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/css/chunk-vendors.d9e68312.css 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/fonts/element-icons.535877f5.woff 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/fonts/element-icons.732389de.ttf 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/404-tip.4d90651f.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/404.5c17595f.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/bg_shenhe@2x.632406ea.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/bg_shenhe_pass@2x.356d8eee.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/department.9b0b5285.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/dictionary.a4f7c09e.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/listener.770879d4.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/log-login.2ddfaaaf.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/log-opera.af0a9111.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/log.6aa1794b.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/login.97bc0f97.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/logo.32e88954.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/man.6eaa0e37.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/permission.e4625523.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/position.84d5bc25.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/pwd.f269b92a.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/role.f81aee2b.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/shield.7b210670.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/official_website/static/img/woman.e651ccdb.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/package-lock.json 160 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/icon.jpg 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/public/index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/category.js 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/company.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/managers.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/member.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/multifile.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/notices.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/workorder.js 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/workorderLog.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/common.js 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/dict.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/dictData.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/job.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/jobLog.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/loginLog.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/menu.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/monitor.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/permission.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/role.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/snippet.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/traceLog.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/system/user.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/base/BaseOpera.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryDcaProblemWindow.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryImportWindow.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryWindow.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCompanyWindow.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaInformationWindow1.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaManagersWindow.vue 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMemberWindow.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaMultifileWindow.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaNoticesWindow.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderDetailDbhWindow.vue 499 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue 500 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderDetailDcaWindow.vue 522 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderDetailSheWindow.vue 522 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderDetailSheWindow1.vue 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderLogWindow.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaWorkorderWindow.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/Header.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/Menu.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/RichEditor.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/UploadAvatarImage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/UploadFaceImg.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/UploadImage.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/bottom.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/category.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryDbhLocaltion.vue 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryDbhType.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryDcaLocaltion.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categoryDcaProblem.vue 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categorySheLocaltion.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/categorySheType.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/company.vue 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/companyMember.vue 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/companyNormal.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/information1.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managers.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersDca.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersDcaAuth.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersShe.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/managersSheNotice.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/member.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/multifile.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/notices.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorder.vue 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDbh.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDca.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderDcaChild.vue 233 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderLog.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/workorderShe.vue 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 457 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/login.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dmttwebsite.iml 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/OfficialWebsiteApplication.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/com/doumee/config/quartz/JobInitializer.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/compiler.xml
@@ -8,14 +8,17 @@
        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
        <outputRelativeToContentRoot value="true" />
        <module name="lianghelihua" />
        <module name="dmttwebsite" />
      </profile>
    </annotationProcessing>
    <bytecodeTargetLevel>
      <module name="dmttwebsite" target="1.8" />
      <module name="lianghelihua" target="1.8" />
    </bytecodeTargetLevel>
  </component>
  <component name="JavacSettings">
    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
      <module name="dmttwebsite" options="-parameters" />
      <module name="lianghelihua" options="-parameters" />
    </option>
  </component>
.idea/modules.xml
@@ -2,8 +2,8 @@
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/server/dmttwebsite.iml" filepath="$PROJECT_DIR$/server/dmttwebsite.iml" />
      <module fileurl="file://$PROJECT_DIR$/server/lianghelihua.iml" filepath="$PROJECT_DIR$/server/lianghelihua.iml" />
      <module fileurl="file://$PROJECT_DIR$/lianhelihua_sh.iml" filepath="$PROJECT_DIR$/lianhelihua_sh.iml" />
    </modules>
  </component>
</project>
.idea/vcs.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
    <mapping directory="" vcs="Git" />
  </component>
</project>
admin/.env
@@ -10,4 +10,4 @@
VUE_APP_CONTEXT_PATH = '/lianhelihua_admin'
# æŽ¥å£å‰ç¼€
VUE_APP_API_PREFIX = '/lianhelihua_interface'
VUE_APP_API_PREFIX = ''
admin/.env.development
@@ -1,3 +1,3 @@
# å¼€å‘环境配置
NODE_ENV = 'development'
VUE_APP_API_URL  = 'http://localhost:10010'
VUE_APP_API_URL  = 'http://192.168.0.129:10040'
admin/official_website/avatar/man.png
Binary files differ
admin/official_website/avatar/woman.png
Binary files differ
admin/official_website/favicon.ico
Binary files differ
admin/official_website/icon.jpg
Binary files differ
admin/official_website/icon.png
Binary files differ
admin/official_website/index.html
ÎļþÒÑɾ³ý
admin/official_website/static/css/chunk-vendors.d9e68312.css
ÎļþÒÑɾ³ý
admin/official_website/static/fonts/element-icons.535877f5.woff
Binary files differ
admin/official_website/static/fonts/element-icons.732389de.ttf
Binary files differ
admin/official_website/static/img/404-tip.4d90651f.png
Binary files differ
admin/official_website/static/img/404.5c17595f.png
Binary files differ
admin/official_website/static/img/bg_shenhe@2x.632406ea.png
Binary files differ
admin/official_website/static/img/bg_shenhe_pass@2x.356d8eee.png
Binary files differ
admin/official_website/static/img/department.9b0b5285.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/dictionary.a4f7c09e.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/listener.770879d4.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/log-login.2ddfaaaf.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/log-opera.af0a9111.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/log.6aa1794b.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/login.97bc0f97.png
Binary files differ
admin/official_website/static/img/logo.32e88954.png
Binary files differ
admin/official_website/static/img/man.6eaa0e37.png
Binary files differ
admin/official_website/static/img/permission.e4625523.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/position.84d5bc25.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/pwd.f269b92a.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/role.f81aee2b.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/shield.7b210670.svg
ÎļþÒÑɾ³ý
admin/official_website/static/img/woman.e651ccdb.png
Binary files differ
admin/package-lock.json
@@ -1871,6 +1871,63 @@
          "integrity": "sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=",
          "dev": true
        },
        "ansi-styles": {
          "version": "4.3.0",
          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "dev": true,
          "optional": true,
          "requires": {
            "ansi-styles": "^4.1.0",
            "supports-color": "^7.1.0"
          }
        },
        "color-convert": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-name": "~1.1.4"
          }
        },
        "color-name": {
          "version": "1.1.4",
          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
          "dev": true,
          "optional": true
        },
        "has-flag": {
          "version": "4.0.0",
          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
          "dev": true,
          "optional": true
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "dev": true,
          "optional": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        },
        "ssri": {
          "version": "8.0.1",
          "resolved": "https://registry.npm.taobao.org/ssri/download/ssri-8.0.1.tgz?cache=0&sync_timestamp=1617826515595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fssri%2Fdownload%2Fssri-8.0.1.tgz",
@@ -1878,6 +1935,28 @@
          "dev": true,
          "requires": {
            "minipass": "^3.1.1"
          }
        },
        "supports-color": {
          "version": "7.2.0",
          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
          "dev": true,
          "optional": true,
          "requires": {
            "has-flag": "^4.0.0"
          }
        },
        "vue-loader-v16": {
          "version": "npm:vue-loader@16.8.3",
          "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
          "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
          "dev": true,
          "optional": true,
          "requires": {
            "chalk": "^4.1.0",
            "hash-sum": "^2.0.0",
            "loader-utils": "^2.0.0"
          }
        }
      }
@@ -13614,87 +13693,6 @@
          "resolved": "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz",
          "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
          "dev": true
        }
      }
    },
    "vue-loader-v16": {
      "version": "npm:vue-loader@16.8.3",
      "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
      "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
      "dev": true,
      "optional": true,
      "requires": {
        "chalk": "^4.1.0",
        "hash-sum": "^2.0.0",
        "loader-utils": "^2.0.0"
      },
      "dependencies": {
        "ansi-styles": {
          "version": "4.3.0",
          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-convert": "^2.0.1"
          }
        },
        "chalk": {
          "version": "4.1.2",
          "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
          "dev": true,
          "optional": true,
          "requires": {
            "ansi-styles": "^4.1.0",
            "supports-color": "^7.1.0"
          }
        },
        "color-convert": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
          "dev": true,
          "optional": true,
          "requires": {
            "color-name": "~1.1.4"
          }
        },
        "color-name": {
          "version": "1.1.4",
          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
          "dev": true,
          "optional": true
        },
        "has-flag": {
          "version": "4.0.0",
          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
          "dev": true,
          "optional": true
        },
        "loader-utils": {
          "version": "2.0.4",
          "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
          "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
          "dev": true,
          "optional": true,
          "requires": {
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        },
        "supports-color": {
          "version": "7.2.0",
          "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
          "dev": true,
          "optional": true,
          "requires": {
            "has-flag": "^4.0.0"
          }
        }
      }
    },
admin/public/favicon.ico

admin/public/icon.jpg
Binary files differ
admin/public/icon.png
Binary files differ
admin/public/index.html
@@ -4,8 +4,8 @@
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link rel="icon" href="<%= BASE_URL %>icon.png">
    <title>联合利华事件上报系统</title>
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>豆米跳跳官网后台管理</title>
  </head>
  <body>
    <div id="app"></div>
admin/src/api/business/category.js
ÎļþÒÑɾ³ý
admin/src/api/business/company.js
ÎļþÒÑɾ³ý
admin/src/api/business/managers.js
ÎļþÒÑɾ³ý
admin/src/api/business/member.js
ÎļþÒÑɾ³ý
admin/src/api/business/multifile.js
ÎļþÒÑɾ³ý
admin/src/api/business/notices.js
ÎļþÒÑɾ³ý
admin/src/api/business/workorder.js
ÎļþÒÑɾ³ý
admin/src/api/business/workorderLog.js
ÎļþÒÑɾ³ý
admin/src/api/system/common.js
@@ -1,5 +1,4 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// èŽ·å–å›¾ç‰‡éªŒè¯ç 
export function getCaptcha () {
@@ -16,13 +15,7 @@
// æ ¹æ®å¯†ç ç™»å½•
export function loginByPassword (data, iv) {
  if(iv){
    var actData = encryptData(data)
    return request.post('/system/login', actData)
  } else{
    return request.post('/system/login', data)
  }
  return request.post('/system/login', data)
}
// ç™»å‡º
@@ -32,7 +25,7 @@
// ä¿®æ”¹å¯†ç 
export function updatePwd (data,iv) {
  return request.post('/system/updatePwd', iv?encryptData(data):data)
  return request.post('/system/updatePwd',data)
}
// èŽ·å–å·²ç™»å½•çš„ç”¨æˆ·ä¿¡æ¯
admin/src/api/system/dict.js
@@ -1,5 +1,4 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
admin/src/api/system/dictData.js
@@ -1,5 +1,4 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
admin/src/api/system/job.js
@@ -1,6 +1,5 @@
import request from '../../utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/job/page', data, {
admin/src/api/system/jobLog.js
@@ -1,6 +1,5 @@
import request from '../../utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/job/log/page', data, {
admin/src/api/system/loginLog.js
@@ -1,6 +1,5 @@
import request from '../../utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/loginLog/page', data, {
admin/src/api/system/menu.js
@@ -1,6 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchTree (data) {
  return request.post('/system/menu/treeList', data)
admin/src/api/system/monitor.js
@@ -1,6 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// èŽ·å–ç³»ç»Ÿä¿¡æ¯
export function getSystemInfo () {
  return request.get('/system/monitor/getSystemInfo')
admin/src/api/system/permission.js
@@ -1,6 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢æ ‘列表
export function fetchTree () {
  return request.get('/system/permission/tree')
admin/src/api/system/role.js
@@ -1,6 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/role/page', data)
admin/src/api/system/snippet.js
@@ -1,6 +1,5 @@
import request from '../../utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/job/snippet/page', data, {
admin/src/api/system/traceLog.js
@@ -1,6 +1,5 @@
import request from '../../utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/traceLog/page', data, {
admin/src/api/system/user.js
@@ -1,6 +1,5 @@
import request from '@/utils/request'
import { encryptData } from '@/utils/request/decryption.js'
// æŸ¥è¯¢
export function fetchList (data) {
  return request.post('/system/user/page', data)
admin/src/components/base/BaseOpera.vue
@@ -1,6 +1,4 @@
<script>
import { memberSync } from '@/api/business/member'
export default {
  name: 'BaseOpera',
  data () {
admin/src/components/business/OperaCategoryDcaProblemWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaCategoryImportWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaCategoryWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaCompanyWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaInformationWindow1.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
<template>
  <GlobalWindow
    :title="title"
    width="calc(100% - 250px)"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="form.creator" placeholder="请输入创建人编码" v-trim/>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="form.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="form.editor" placeholder="请输入更新人编码" v-trim/>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="form.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="form.isdeleted" placeholder="请输入是否删除0否 1是" v-trim/>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="form.remark" placeholder="请输入备注" v-trim/>
      </el-form-item>
      <el-form-item label="标题" prop="title">
        <el-input v-model="form.title" placeholder="请输入标题" v-trim/>
      </el-form-item>
      <el-form-item label="描述" prop="describe">
        <el-input v-model="form.describe" placeholder="请输入描述" v-trim/>
      </el-form-item>
      <el-form-item label="内容" prop="contnet">
        <el-input v-model="form.contnet" placeholder="请输入内容" v-trim/>
      </el-form-item>
      <el-form-item label="封面图片地址" prop="imgurl">
        <el-input v-model="form.imgurl" placeholder="请输入封面图片地址" v-trim/>
      </el-form-item>
      <el-form-item label="发布时间" prop="leleaseDate">
        <el-date-picker v-model="form.leleaseDate" value-format="yyyy-MM-dd" placeholder="请输入发布时间"></el-date-picker>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="form.sortnum" placeholder="请输入排序码" v-trim/>
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
export default {
  name: 'OperaInformationWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      form: {
        id: null,
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        remark: '',
        title: '',
        describe: '',
        contnet: '',
        imgurl: '',
        leleaseDate: '',
        sortnum: ''
      },
      // éªŒè¯è§„则
      rules: {
      }
    }
  },
  created () {
    this.config({
      api: '/business/information',
      'field.id': 'id'
    })
  }
}
</script>
admin/src/components/business/OperaManagersWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaMemberWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaMultifileWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaNoticesWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderDetailDbhWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderDetailDcaInfoWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderDetailDcaWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderDetailSheWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderDetailSheWindow1.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderLogWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaWorkorderWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/common/Header.vue
@@ -152,7 +152,7 @@
        updatePwd({
          oldPwd: this.changePwdData.form.oldPwd,
          newPwd: this.changePwdData.form.newPwd
        },true)
        },)
          .then(() => {
            this.visible.changePwd = false
            setTimeout(() => {
admin/src/components/common/Menu.vue
@@ -2,7 +2,7 @@
  <div class="menu" :class="{collapse: menuData.collapse}">
    <div class="logo">
      <div><img src="@/assets/logo.png"></div>
      <h1 :class="{hidden: menuData.collapse}">联合利华事件上报系统</h1>
      <h1 :class="{hidden: menuData.collapse}">豆米跳跳官网后台管理</h1>
    </div>
    <scrollbar>
      <el-menu
admin/src/components/common/RichEditor.vue
@@ -1,7 +1,7 @@
<template>
  <div :style="styleEditor">
    <Toolbar style="border-bottom: 1px solid #ccc" :editor="editor" :defaultConfig="toolbarConfig" :mode="mode" />
    <Editor style="min-height: 80px; overflow-y: hidden;" v-model="html" :defaultConfig="editorConfig" :mode="mode"
    <Editor :style="style" class="declass"  v-model="html" :defaultConfig="editorConfig" :mode="mode"
            @onCreated="onCreated" @onChange="onChange" />
  </div>
</template>
@@ -18,6 +18,7 @@
      default: ''
    },
    styleEditor: '',
    style:'',
    readonly: false // æ˜¯å¦å¯ä»¥è¾“å…¥
  },
  name: 'RichEditor',
@@ -129,7 +130,7 @@
        MENU_CONF: {
          // å›¾ç‰‡ä¸Šä¼ 
          uploadImage: {
            server: process.env.VUE_APP_API_PREFIX + '/web/public/upload?folder=richeditor',
            server: process.env.VUE_APP_API_PREFIX + '/web/public/uploadLocal?folder=',
            fieldName: 'file',
            // å•个文件的最大体积限制,默认为 2M
            maxFileSize: 20 * 1024 * 1024, // 10M
@@ -315,4 +316,7 @@
})
</script>
<style lang="scss">
.declass{
  min-height: 80px; overflow-y: hidden;
}
</style>>
admin/src/components/common/UploadAvatarImage.vue
@@ -31,7 +31,7 @@
  data() {
    return {
      loading: null,
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/upload'
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/uploadLocal'
    }
  },
admin/src/components/common/UploadFaceImg.vue
@@ -56,7 +56,7 @@
      img: null,
      updateImg: false,
      imageSrc: null,
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/upload'
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/visitsAdmin/cloudService/public/upload'
    }
  },
admin/src/components/common/UploadImage.vue
@@ -60,7 +60,6 @@
  data() {
    return {
      uploadImgUrl: process.env.VUE_APP_API_PREFIX + '/web/public/uploadLocal',
      realList: [],
      srcList: [],
      tempIndex: 0,
@@ -81,7 +80,6 @@
  },
  methods: {
    beforeUpload(file) {
      this.$emit('beginUpload')
      return true
    },
@@ -128,7 +126,7 @@
      this.fileList.splice(tempIndex, 1)
      this.srcList.splice(tempIndex, 1)
    },
    }
  },
}
</script>
admin/src/views/business/bottom.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,246 @@
<template>
  <div class="box" style="height:100%;overflow-y: auto" >
    <el-form :model="form" ref="form" label-width="140px">
      <div style="margin: 0px 0 50px 0">
        <span style="font-size: 15px; font-weight: bold">【1】网站配置:</span>
      </div>
      <el-form-item label="公司地址:" prop="address">
        <el-input
            style="width: 50%"
            type="textarea"
            v-model="form.address"
            placeholder="请输入公司地址"
            v-trim
        />
      </el-form-item>
      <el-form-item label="固定电话:" prop="linkPhone">
        <el-input
            style="width: 50%"
            type="textarea"
            v-model="form.linkPhone"
            placeholder="请输入固定电话"
            v-trim
        />
      </el-form-item>
      <el-form-item label="联系手机号:" prop="linkMobile">
        <el-input
            style="width: 50%"
            type="textarea"
            v-model="form.linkMobile"
            placeholder="请输入固定电话"
            v-trim
        />
      </el-form-item>
      <el-form-item label="服务时间:" prop="serverTime">
        <el-input
            style="width: 50%"
            type="textarea"
            v-model="form.serverTime"
            placeholder="请输入服务时间"
            v-trim
        />
      </el-form-item>
      <el-form-item label="备案号:" prop="footWords">
        <el-input
            style="width: 50%"
            type="textarea"
            v-model="form.footWords"
            placeholder="请输入备案号"
            v-trim
        />
      </el-form-item>
      <el-form-item label="二维码" prop="faceImgFull">
        <div class="upload_wrap">
          <UploadAvatarImage :file="{ 'imgurlfull': form.footFullImgUrl, 'imgurl': form.footImgUrl }" :uploadData="uploadData"
                         @uploadSuccess="uploadAvatarSuccess"   />
        </div>
      </el-form-item>
      <div style="margin:20px 0 50px 0">
        <span style="font-size: 15px; font-weight: bold">【2】解决方案:</span>
      </div>
      <div  v-for="(item,index) in form.solveScheme" :key="'解决方案'+index" style="display: flex;width: 100%">
          <div style="flex: 1">
            <el-form-item label="标题:"  :required="true">
             <el-input style="width: 100%"
              type="text"
              v-model="item.name"
              placeholder="请输入标题"
              v-trim
          />
          </el-form-item>
          </div>
          <div style="display: block;flex: 3">
            <el-form-item label="跳转地址:"    style="display:inline-block;  width: 80%" >
              <el-input
                  style="width: 100%"
                  type="text"
                  v-model="item.address"
                  placeholder="请输入跳转地址"
                  v-trim
              />
            </el-form-item>
            <el-form-item label-width="30px" style="display:inline-block;"  >
              <el-button type="danger" v-if="form.solveScheme && form.solveScheme.length >1" icon="el-icon-delete" @click="del1(index)">删除</el-button>
            </el-form-item>
          </div>
        </div>
        <el-form-item style="display: block">
          <el-button type="primary"   icon="el-icon-plus" @click="add1">添加解决方案</el-button>
        </el-form-item>
      <div style="margin: 100px 0 50px 0">
        <span style="font-size: 15px; font-weight: bold;">【3】智慧系统:</span>
      </div>
      <div  v-for="(item1,index) in form.wisdomSystem" :key="'智慧系统'+index" style="display: flex">
        <div style="flex: 1;">
          <el-form-item label="标题:"  :required="true"   >
            <el-input
                style="width: 100%"
                type="text"
                v-model="item1.name"
                placeholder="请输入标题"
                v-trim
            />
          </el-form-item>
        </div>
        <div style="display: block;flex: 3">
          <el-form-item label="跳转地址:" style="display:inline-block;  width: 80%">
            <el-input
                style="width: 100%"
                type="text"
                v-model="item1.address"
                placeholder="请输入跳转地址"
                v-trim
            />
          </el-form-item>
          <el-form-item label-width="30px" style="display:inline-block;">
            <el-button type="danger" v-if="form.wisdomSystem && form.wisdomSystem.length >1"  icon="el-icon-delete" @click="del2(index)">删除</el-button>
          </el-form-item>
        </div>
        <div>
        </div>
      </div>
      <el-form-item style="display: block">
        <el-button type="primary"   icon="el-icon-plus" @click="add2">添加指挥系统</el-button>
      </el-form-item>
        <el-form-item style="margin-top: 100px;width: 100%;text-align: center">
          <el-button type="primary" style="width: 300px"  :loading="working" @click="submit">保存配置项</el-button>
        </el-form-item>
      </el-form>
  </div>
</template>
<script>
import { getFoodDataVO, updFoodData } from '@/api/business/carousel'
import UploadAvatarImage from '@/components/common/UploadAvatarImage'
export default {
  name: '',
  components: {UploadAvatarImage  },
  data () {
    return {
      uploadData: {
        folder: ''
      },
      isUploading: false,
      working: false,
      form: {
        address: null,
        footImgUrl: 0,
        footFullImgUrl: 0,
        footWords: 0,
        linkMobile: 0,
        linkPhone: 0,
        serverTime: '',
        solveScheme: [{ name: '', address: '' }],
        wisdomSystem: [{ name: '', address: '' }]
      }
    }
  },
  created () {
    this.getData()
  },
  methods: {
    del1 (index) {
      if (this.form.solveScheme.length == 1) {
        return
      }
      this.form.solveScheme.splice(index)
    },
    add1 () {
      this.form.solveScheme.push({ name: '', address: '' })
    },
    del2 (index) {
      if (this.form.wisdomSystem.length == 1) {
        return
      }
      this.form.wisdomSystem.splice(index)
    },
    add2 () {
      this.form.wisdomSystem.push({ name: '', address: '' })
    },
    getData () {
      getFoodDataVO({})
        .then(res => {
          if (res) {
            this.form.address = res.address
            this.form.footImgUrl = res.footImgUrl
            this.form.footFullImgUrl = res.footFullImgUrl
            this.form.footWords = res.footWords
            this.form.linkMobile = res.linkMobile
            this.form.linkPhone = res.linkPhone
            this.form.serverTime = res.serverTime
            this.form.solveScheme = res.solveScheme || [{ name: '', address: '' }]
            this.form.wisdomSystem = res.wisdomSystem || [{ name: '', address: '' }]
          }
        })
    },
    // ä¸Šä¼ å›¾ç‰‡
    uploadAvatarSuccess(file) {
      this.form.footImgUrl = file.imgurl
      this.form.footFullImgUrl = file.imgurlfull
    },
    submit () {
      console.log(this.form)
      this.$refs.form.validate((valid) => {
        if (!valid) {
          return
        }
        // è°ƒç”¨æ–°å»ºæŽ¥å£
        this.isWorking = true
        updFoodData(this.form).then(res => {
          this.$message.success('保存成功')
          this.getData()
        })
          .catch(e => {
            this.$tip.apiFailed(e)
          })
          .finally(() => {
            this.isWorking = false
          })
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.el-container /deep/  .el-main{
  width: 100%;
  overflow-y: auto  !important ;
  height: calc(100% - 94px);
}
/deep/ .el-main{
  width: 100%;
  //height: 100%;
  overflow-y: auto  !important ;
  height: calc(100% - 94px);
}
.box {
  width: 100%;
  padding: 30px;
  box-sizing: border-box;
  background: #ffffff;
}
</style>
admin/src/views/business/category.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categoryDbhLocaltion.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categoryDbhType.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categoryDcaLocaltion.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categoryDcaProblem.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categorySheLocaltion.vue
ÎļþÒÑɾ³ý
admin/src/views/business/categorySheType.vue
ÎļþÒÑɾ³ý
admin/src/views/business/company.vue
ÎļþÒÑɾ³ý
admin/src/views/business/companyMember.vue
ÎļþÒÑɾ³ý
admin/src/views/business/companyNormal.vue
ÎļþÒÑɾ³ý
admin/src/views/business/information1.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
<template>
  <TableLayout :permissions="['business:information:query']">
    <!-- æœç´¢è¡¨å• -->
    <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
      <el-form-item label="主键" prop="id">
        <el-input v-model="searchForm.id" placeholder="请输入主键" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建人编码" prop="creator">
        <el-input v-model="searchForm.creator" placeholder="请输入创建人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="创建时间" prop="createDate">
        <el-date-picker v-model="searchForm.createDate" value-format="yyyy-MM-dd" placeholder="请输入创建时间" @change="search"/>
      </el-form-item>
      <el-form-item label="更新人编码" prop="editor">
        <el-input v-model="searchForm.editor" placeholder="请输入更新人编码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="更新时间" prop="editDate">
        <el-date-picker v-model="searchForm.editDate" value-format="yyyy-MM-dd" placeholder="请输入更新时间" @change="search"/>
      </el-form-item>
      <el-form-item label="是否删除0否 1是" prop="isdeleted">
        <el-input v-model="searchForm.isdeleted" placeholder="请输入是否删除0否 1是" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="备注" prop="remark">
        <el-input v-model="searchForm.remark" placeholder="请输入备注" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="标题" prop="title">
        <el-input v-model="searchForm.title" placeholder="请输入标题" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="描述" prop="describe">
        <el-input v-model="searchForm.describe" placeholder="请输入描述" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="内容" prop="contnet">
        <el-input v-model="searchForm.contnet" placeholder="请输入内容" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="封面图片地址" prop="imgurl">
        <el-input v-model="searchForm.imgurl" placeholder="请输入封面图片地址" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <el-form-item label="发布时间" prop="releaseDate">
        <el-date-picker v-model="searchForm.releaseDate" value-format="yyyy-MM-dd" placeholder="请输入发布时间" @change="search"/>
      </el-form-item>
      <el-form-item label="排序码" prop="sortnum">
        <el-input v-model="searchForm.sortnum" placeholder="请输入排序码" @keypress.enter.native="search"></el-input>
      </el-form-item>
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button type="primary" :loading="isWorking.export" v-permissions="['business:information:exportExcel']" @click="exportExcel">导出</el-button>
        <el-button @click="reset">重置</el-button>
      </section>
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:information:create', 'business:information:delete']">
        <li><el-button type="primary" @click="$refs.operaInformationWindow.open('新建动态咨询')" icon="el-icon-plus" v-permissions="['business:information:create']">新建</el-button></li>
        <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:information:delete']">删除</el-button></li>
      </ul>
      <el-table
        v-loading="isWorking.search"
        :data="tableData.list"
        stripe
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"></el-table-column>
        <el-table-column prop="id" label="主键" min-width="100px"></el-table-column>
        <el-table-column prop="creator" label="创建人编码" min-width="100px"></el-table-column>
        <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
        <el-table-column prop="editor" label="更新人编码" min-width="100px"></el-table-column>
        <el-table-column prop="editDate" label="更新时间" min-width="100px"></el-table-column>
        <el-table-column prop="isdeleted" label="是否删除0否 1是" min-width="100px"></el-table-column>
        <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
        <el-table-column prop="title" label="标题" min-width="100px"></el-table-column>
        <el-table-column prop="describe" label="描述" min-width="100px"></el-table-column>
        <el-table-column prop="contnet" label="内容" min-width="100px"></el-table-column>
        <el-table-column prop="imgurl" label="封面图片地址" min-width="100px"></el-table-column>
        <el-table-column prop="releaseDate" label="发布时间" min-width="100px"></el-table-column>
        <el-table-column prop="sortnum" label="排序码" min-width="100px"></el-table-column>
        <el-table-column
          v-if="containPermissions(['business:information:update', 'business:information:delete'])"
          label="操作"
          min-width="120"
          fixed="right"
        >
          <template slot-scope="{row}">
            <el-button type="text" @click="$refs.operaInformationWindow.open('编辑动态咨询', row)" icon="el-icon-edit" v-permissions="['business:information:update']">编辑</el-button>
            <el-button type="text" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:information:delete']">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <pagination
        @size-change="handleSizeChange"
        @current-change="handlePageChange"
        :pagination="tableData.pagination"
      >
      </pagination>
    </template>
    <!-- æ–°å»º/修改 -->
    <OperaInformationWindow ref="operaInformationWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaInformationWindow from '@/components/business/OperaInformationWindow'
export default {
  name: 'Information',
  extends: BaseTable,
  components: { TableLayout, Pagination, OperaInformationWindow },
  data () {
    return {
      // æœç´¢
      searchForm: {
        id: '',
        creator: '',
        createDate: '',
        editor: '',
        editDate: '',
        isdeleted: '',
        remark: '',
        title: '',
        describe: '',
        contnet: '',
        imgurl: '',
        releaseDate: '',
        sortnum: ''
      }
    }
  },
  created () {
    this.config({
      module: '动态咨询',
      api: '/business/information',
      'field.id': 'id',
      'field.main': 'id'
    })
    this.search()
  }
}
</script>
admin/src/views/business/managers.vue
ÎļþÒÑɾ³ý
admin/src/views/business/managersDca.vue
ÎļþÒÑɾ³ý
admin/src/views/business/managersDcaAuth.vue
ÎļþÒÑɾ³ý
admin/src/views/business/managersShe.vue
ÎļþÒÑɾ³ý
admin/src/views/business/managersSheNotice.vue
ÎļþÒÑɾ³ý
admin/src/views/business/member.vue
ÎļþÒÑɾ³ý
admin/src/views/business/multifile.vue
ÎļþÒÑɾ³ý
admin/src/views/business/notices.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorder.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorderDbh.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorderDca.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorderDcaChild.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorderLog.vue
ÎļþÒÑɾ³ý
admin/src/views/business/workorderShe.vue
ÎļþÒÑɾ³ý
admin/src/views/index.vue
@@ -3,132 +3,7 @@
    <div class="home_header">
      <div class="mb10 fs17">下午好,{{ userInfo.realname }}</div>
      <div class="fs13">
        ä»Šå¤©æ˜¯ {{ nowDate }} {{ nowWeek }},欢迎访问联合利华事件上报系统管理平台
      </div>
    </div>
     <div class="main">
      <div class="app_content">
        <div class="static_card">
          <div class="card">
            <div class="header" >
              <div class="left">
                <div class="fs15">SHE今日提报数量</div>
                <div class="num">{{ headerData.todaySheNum ||0 }}</div>
              </div>
<!--              <img src="@/assets/images/bg_a.png" alt="" />-->
            </div>
            <div class="content">
              <div>未解决:{{ 0}}</div>
              <div>已解决:{{ headerData.sheNum || 0}}</div>
              <div>总工单量:{{ headerData.sheNum || 0}}</div>
            </div>
          </div>
          <div class="card">
            <div class="header">
              <div class="left">
                <div class="fs15">跌绊滑今日工单数量</div>
                <div class="num">{{ headerData.todayDbhNum ||0 }}</div>
              </div>
<!--
              <img src="@/assets/icons/home_icon2.png" alt="" />
-->
            </div>
            <div class="content">
              <div>未解决:{{ headerData.dbhYesNum || 0}}</div>
              <div>已解决:{{ headerData.dbhNoNum || 0}}</div>
               <div>总工单量:{{ headerData.dbhNum || 0}}</div>
            </div>
          </div>
          <div class="card">
            <div class="header">
              <div class="left">
                <div class="fs15">DCA今日上报次数</div>
                <div class="num">{{ headerData.todayDcaNum ||0 }}</div>
              </div>
<!--              <img src="@/assets/icons/home_icon3.png" alt="" />-->
            </div>
            <div class="content">
              <div>符合项:{{ headerData.dcaYesNum || 0}}</div>
              <div>不符合项:{{ headerData.dcaNoNum || 0}}</div>
              <div>总上报次数:{{ headerData.dcaNum || 0}}</div>
            </div>
          </div>
          <div class="card">
            <div class="header">
              <div class="left">
                <div class="fs15">DCA今日工单数量</div>
                <div class="num">{{ headerData.todayDcaChildNum ||0 }}</div>
              </div>
<!--              <img src="@/assets/images/bg_a.png" alt="" />-->
            </div>
            <div class="content">
              <div>未解决:{{ headerData.dcaChildYesNum || 0}}</div>
              <div>已解决:{{ headerData.dcaChildNoNum || 0}}</div>
              <div>总工单量:{{ headerData.dcaChildNum || 0}}</div>
            </div>
          </div>
        </div>
        <div class="static_wrap">
          <div class="df mb50" >
            <div class="wrap static1">
              <div class="header" style="text-align: center">
                <div class="home_title"  style="text-align: center;width: 80%">各类型工单占比统计({{searchForm.timeName}})</div>
                <div style="text-align: right;width: 150px;font-size: 12px;height: 25px">
                  <el-form   :model="searchForm" label-width="100px" inline >
                      <el-select v-model="searchForm.timeType"  :popper-append-to-body="true" clearable   placeholder="时间范围"   @change="reloadDataByType()">
                        <el-option value="0" label="本周"/>
                        <el-option value="1" label="本月"/>
                        <el-option value="2" label="本季度"/>
                        <el-option value="3" label="本年"/>
                      </el-select>
                  </el-form>
                </div>
              </div>
              <div class="echart"  style="height: 400px" >
                <div  id="circleChart0"></div>
                <div  id="circleChart1"></div>
              </div>
            </div>
          </div>
          <div class="df mb50" >
            <div class="wrap static1">
              <div class="header">
                <div class="home_title">1.SHE事件上报</div>
              </div>
              <div class="echart" >
                <div  id="echart0"></div>
                <div  id="echart01"></div>
              </div>
            </div>
            <div class="wrap static2">
              <div class="header">
                <div class="home_title">2.深度符合性审查DCA上报记录</div>
              </div>
              <div class="echart" >
                <div  id="echart1">  </div>
                <div  id="echart11">   </div>
              </div>
            </div>
            <div class="wrap static3">
              <div class="header">
                <div class="home_title">3.深度符合性审查DCA事件工单</div>
              </div>
              <div class="echart" >
                <div  id="echart2">  </div>
                <div  id="echart21">   </div>
              </div>
            </div>
            <div class="wrap static4">
              <div class="header">
                <div class="home_title">4.跌绊滑风险上报</div>
              </div>
              <div class="echart" >
                <div  id="echart3">  </div>
                <div  id="echart31">   </div>
              </div>
            </div>
          </div>
        </div>
        ä»Šå¤©æ˜¯ {{ nowDate }} {{ nowWeek }},欢迎访问豆米跳跳官网后台管理平台
      </div>
    </div>
  </div>
@@ -138,7 +13,6 @@
import dayjs from 'dayjs'
import * as echarts from 'echarts'
import { weeks } from '@/utils/config'
import { getIndexData, getWorkOrderData } from '@/api/business/workorder'
const colors = ['#52a4f7', '#7678f7', '#5fc6d5']
export default {
  components: {
@@ -169,344 +43,15 @@
    }
  },
  created () {
    this.initData()
  },
  mounted () {
    this.updateDate()
    // this.initData()
  },
  methods: {
    initData () {
      this.updateDate()
      this.getWorkHead()
      this.getWorkBody0()
      this.getWorkBody1()
      this.getWorkBody2()
      this.getWorkBody3()
      // this.getWorkBody()
    },
    reloadDataByType () {
      getIndexData({timeType: this.searchForm.timeType }).then(res => {
        if (this.searchForm.timeType == '0') {
          this.searchForm.timeName = '本周'
        } else if (this.searchForm.timeType =='1') {
          this.searchForm.timeName = '本月'
        } else if (this.searchForm.timeType =='2') {
          this.searchForm.timeName = '本季度'
        } else if (this.searchForm.timeType == '3') {
          this.searchForm.timeName = '本年'
        } else {
          this.searchForm.timeName = '全部'
        }
        this.headerData1 =res || []
        this.initAllData()
      })
    },
    getWorkBody0 () {
      getWorkOrderData({ queryType: 0, orderType: 0 }).then(res => {
        this.staticData0 = res || []
        this.initEchart0()
      })
      getWorkOrderData({ queryType: 1, orderType: 0 }).then(res => {
        this.staticData01 = res || []
        this.initEchart01()
      })
    },
    getWorkBody1 () {
      getWorkOrderData({ queryType: 0, orderType: 1 }).then(res => {
        this.staticData1 = res || []
        this.initEchart1()
      })
      getWorkOrderData({ queryType: 1, orderType: 1 }).then(res => {
        this.staticData11 = res || []
        this.initEchart11()
      })
    },
    getWorkBody2 () {
      getWorkOrderData({ queryType: 0, orderType: 2 }).then(res => {
        this.staticData2 = res || []
        this.initEchart2()
      })
      getWorkOrderData({ queryType: 1, orderType: 2 }).then(res => {
        this.staticData21 = res || []
        this.initEchart21()
      })
    },
    getWorkBody3 () {
      getWorkOrderData({ queryType: 0, orderType: 3 }).then(res => {
        this.staticData3 = res || []
        this.initEchart3()
      })
      getWorkOrderData({ queryType: 1, orderType: 3 }).then(res => {
        this.staticData31 = res || []
        this.initEchart31()
      })
    },
    getWorkHead () {
      getIndexData({ }).then(res => {
        this.headerData = res || {}
        this.headerData1 = res || {}
        this.initAllData()
      })
    },
    initAllData(){
      var cdata = []
      cdata.push({ name: '跌绊滑事件', value: this.headerData1.dbhNum || 0 })
      cdata.push({ name: 'DCA事件', value: this.headerData1.dcaChildNum || 0 })
      cdata.push({ name: 'SHE事件', value: this.headerData1.sheNum || 0 })
      this.initEchartCircleDo('circleChart0', '各类型事件工单上报统计', '', cdata)
      var xdata = ['SHE事件', '跌绊滑事件', 'DCA事件']
      var ydata = []
      ydata.push({ name: '已解决', stack: 'cateNum', type: 'bar', unit: '项', color: '#f07e6f', data: [this.headerData1.sheNum || 0, this.headerData1.dbhYesNum || 0, this.headerData1.dcaChildYesNum || 0] })
      ydata.push({ name: '未解决', stack: 'cateNum', type: 'bar', unit: '项', color: '#8383ff', data: [0, this.headerData1.dbhNoNum || 0, this.headerData1.dcaChildNoNum || 0] })
      ydata.push({ name: '总单量', type: 'bar', unit: '次', color: '#29aeff', data: [this.headerData1.sheNum || 0, this.headerData1.dbhNum || 0, this.headerData1.dcaChildNum || 0] })
      this.initEchartDataDo('各类型事件状态统计', 'circleChart1', xdata, ydata)
    },
    updateDate () {
      this.nowDate = dayjs().format('YYYYå¹´M月D日')
      this.nowWeek = weeks[new Date().getDay()]
    },
    initEchart0 () {
      var ydata = [{ name: '工单数量', type: 'line', unit: '单', color: '#29aeff', data: this.staticData0.map(i => i.total) }]
      this.initEchartDataDo('月度统计', 'echart0', this.staticData0.map(i => i.dateStr), ydata)
    },
    initEchart01 () {
      var ydata = [{ name: '工单数量', type: 'bar', unit: '单', color: '#29aeff', data: this.staticData01.map(i => i.total) }]
      this.initEchartDataDo('季度统计', 'echart01', this.staticData01.map(i => i.dateStr), ydata)
    },
    initEchart1 () {
      var ydata = []
      ydata.push({ name: '符合项', type: 'line', unit: '项', color: '#f07e6f', data: this.staticData1.map(i => i.dcaYesTotal) })
      ydata.push({ name: '不符合项', type: 'line', unit: '项', color: '#8383ff', data: this.staticData1.map(i => i.dcaNoTotal) })
      ydata.push({ name: '上报次数', type: 'bar', unit: '次', color: '#29aeff', data: this.staticData1.map(i => i.total) })
      this.initEchartDataDo('月度统计', 'echart1', this.staticData1.map(i => i.dateStr), ydata)
    },
    initEchart11 () {
      var ydata = []
      ydata.push({ name: '符合项', type: 'line', unit: '项', color: '#f07e6f', data: this.staticData11.map(i => i.dcaYesTotal) })
      ydata.push({ name: '不符合项', type: 'line', unit: '项', color: '#8383ff', data: this.staticData11.map(i => i.dcaNoTotal) })
      ydata.push({ name: '上报次数', type: 'bar', unit: '次', color: '#29aeff', data: this.staticData11.map(i => i.total) })
      this.initEchartDataDo('季度统计', 'echart11', this.staticData11.map(i => i.dateStr), ydata)
    },
    initEchart2 () {
      var ydata = []
      ydata.push({ name: '工程师关闭单量', type: 'line', unit: '单', color: '#f0ee6f', data: this.staticData2.map(i => i.gcsTotal) })
      ydata.push({ name: 'WTS关闭单量', type: 'line', unit: '单', color: '#29aeff', data: this.staticData2.map(i => i.wtsTotal) })
      ydata.push({ name: 'SHE关闭单量', type: 'line', unit: '单', color: '#e75314', data: this.staticData2.map(i => i.sheTotal) })
      ydata.push({ name: '未解决单量', type: 'line', unit: '单', color: '#8383ff', data: this.staticData2.map(i => i.unCloseTotal) })
      ydata.push({ name: '工单总量', type: 'line', unit: '单', color: '#30d3de', data: this.staticData2.map(i => i.total) })
      this.initEchartDataDo('月度统计', 'echart2', this.staticData2.map(i => i.dateStr), ydata)
    },
    initEchart21 () {
      var ydata = []
      ydata.push({ name: '工程师关闭单量', type: 'bar', unit: '单', color: '#f0ee6f', data: this.staticData21.map(i => i.gcsTotal) })
      ydata.push({ name: 'WTS关闭单量', type: 'bar', unit: '单', color: '#29aeff', data: this.staticData21.map(i => i.wtsTotal) })
      ydata.push({ name: 'SHE关闭单量', type: 'bar', unit: '单', color: '#e75314', data: this.staticData21.map(i => i.sheTotal) })
      ydata.push({ name: '未解决单量', type: 'bar', unit: '单', color: '#8383ff', data: this.staticData21.map(i => i.unCloseTotal) })
      ydata.push({ name: '工单总量', type: 'line', unit: '单', color: '#30d3de', data: this.staticData21.map(i => i.total) })
      this.initEchartDataDo('季度统计', 'echart21', this.staticData21.map(i => i.dateStr), ydata)
    },
    initEchart3 () {
      var ydata = []
      ydata.push({ name: '工程师关闭单量', type: 'line', unit: '单', color: '#6feef0', data: this.staticData3.map(i => i.gcsTotal) })
      ydata.push({ name: 'WTS关闭单量', type: 'line', unit: '单', color: 'rgba(217,4,34,0.83)', data: this.staticData3.map(i => i.wtsTotal) })
      ydata.push({ name: 'SHE关闭单量', type: 'line', unit: '单', color: '#e75314', data: this.staticData3.map(i => i.sheTotal) })
      ydata.push({ name: '未解决单量', type: 'line', unit: '单', color: '#8383ff', data: this.staticData3.map(i => i.unCloseTotal) })
      ydata.push({ name: '工单总量', type: 'line', unit: '单', color: '#30d3de', data: this.staticData3.map(i => i.total) })
      this.initEchartDataDo('月度统计', 'echart3', this.staticData3.map(i => i.dateStr), ydata)
    },
    initEchart31 () {
      var ydata = []
      ydata.push({ name: '工程师关闭单量', type: 'bar', unit: '单', color: '#6feef0', data: this.staticData31.map(i => i.gcsTotal) })
      ydata.push({ name: 'WTS关闭单量', type: 'bar', unit: '单', color: 'rgba(217,4,34,0.83)', data: this.staticData31.map(i => i.wtsTotal) })
      ydata.push({ name: 'SHE关闭单量', type: 'bar', unit: '单', color: '#e75314', data: this.staticData31.map(i => i.sheTotal) })
      ydata.push({ name: '未解决单量', type: 'bar', unit: '单', color: '#8383ff', data: this.staticData31.map(i => i.unCloseTotal) })
      ydata.push({ name: '工单总量', type: 'line', unit: '单', color: '#30d3de', data: this.staticData31.map(i => i.total) })
      this.initEchartDataDo('季度统计', 'echart31', this.staticData31.map(i => i.dateStr), ydata)
    },
    initEchartDataDo (title, id, xdata, ydata) {
      const myChart = echarts.init(document.getElementById(id))
      myChart.setOption({
        title: {
          text: (title || ''),
          textStyle: {
            fontSize: 12,
            fontStyle: 'normal',
            fontWeight: 'bold'
          }
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow'
          },
          textStyle: {
            fontSize: 10,
            fontStyle: 'normal',
            fontWeight: 'normal'
          }
        },
        legend: {
          orient: 'vertical',
          left: 'right',
          textStyle: {
            fontSize: 10,
            fontStyle: 'normal',
            fontWeight: 'normal'
          }
        },
        xAxis: {
          type: 'category',
          // boundaryGap: false,
          data: xdata
        },
        yAxis: {
          type: 'value',
          name: '',
          min: 0,
          axisLabel: {
            formatter: function (value) {
              return Number.isInteger(value) ? value : ''
            }
          },
          textStyle: {
            fontSize: 10,
            fontStyle: 'normal',
            fontWeight: 'normal'
          },
          nameTextStyle: {
            padding: [0, 0, 4, -30] // å››ä¸ªæ•°å­—分别为上右下左与原位置距离
          },
          splitLine: {
            show: true,
            lineStyle: {
              // è¿™é‡Œè¾“入线条的样式
              color: 'rgba(255,255,255,0.14)'
            }
          }
        },
        grid: {
          top: '16%',
          left: '2%',
          right: '8%',
          bottom: '2%',
          containLabel: true
        },
        series: this.seriesInitData(ydata)
      })
      window.addEventListener('resize', function () { // æ‰§è¡Œ
        myChart.resize()
      })
    },
    seriesInitData (ydata) {
      var array = []
      for (let i = 0; i < ydata.length; i++) {
        array.push({
          data: ydata[i].data,
          name: ydata[i].name,
          stack: ydata[i].stack || '',
          type: ydata[i].type || 'line',
          areaStyle: {
            normal: {
              color: {
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [{
                  offset: 0,
                  color: ydata[i].color || '#207FF7' // 0% å¤„的颜色
                }, {
                  offset: 1,
                  color: 'rgba(255,255,255,.2)' // 100% å¤„的颜色
                }],
                globalCoord: false // ç¼ºçœä¸º false
              }
            }
          },
          lineStyle: { // çº¿æ¡æ ·å¼
            color: {
              type: 'linear',
              x: 0,
              y: 0,
              x2: 0,
              y2: 1,
              colorStops: [{
                offset: 0, color: ydata[i].color || '#207FF7' // 0% å¤„的颜色
              }, {
                offset: 1, color: ydata[i].color || '#207FF7' // 100% å¤„的颜色
              }]
            },
            width: 2 // çº¿æ¡ç²—细
          },
          symbol: 'circle',
          symbolSize: 10,
          itemStyle: {
            borderWidth: 1,
            borderColor: '#fff',
            color: ydata[i].color || '#207FF7'
          },
          smooth: false
        })
      }
      return array
    },
    initEchartCircleDo (id, title, subTitle, data) {
      var option = {
        title: {
          text: '',
          subtext: '',
          left: 'center',
          bottom: 'bottom',
          textStyle: {
            fontSize: 10,
            fontStyle: 'normal',
            fontWeight: 'bold'
          }
        },
        tooltip: {
          trigger: 'item'
        },
        legend: {
          orient: 'vertical',
          left: 'left',
          textStyle: {
            fontSize: 10,
            fontStyle: 'normal',
            fontWeight: 'normal'
          }
        },
        series: [
          {
            name: title || '',
            type: 'pie',
            radius: '50%',
            data: data,
            label: {
              show: true,
              formatter: '{b}:{d}%',
              textStyle: {
                fontSize: 10,
                fontStyle: 'normal',
                fontWeight: 'normal'
              }
            },
            labelLine: {
              show: true
            },
            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          }
        ]
      }
      const myChart = echarts.init(document.getElementById(id))
      myChart.setOption(option)
    }
  }
}
admin/src/views/login.vue
@@ -1,7 +1,7 @@
<template>
  <div class="wrap">
    <div class="introduce">
      <h2>联合利华事件上报系统</h2>
      <h2>豆米跳跳官网后台管理</h2>
      <h3></h3>
    </div>
    <div class="login">
admin/vue.config.js
@@ -7,7 +7,7 @@
}
module.exports = {
  publicPath: process.env.VUE_APP_CONTEXT_PATH,
  outputDir: 'lianhelihua_admin',
  outputDir: 'admin',
  assetsDir: 'static',
  lintOnSave: false,
  devServer: {
dmttwebsite.iml
server/pom.xml
@@ -4,9 +4,9 @@
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.doumee</groupId>
  <artifactId>official_website</artifactId>
  <artifactId>dmttwebsite</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>jar</packaging>
  <packaging>war</packaging>
  <name>official_website</name>
  <description></description>
@@ -47,6 +47,17 @@
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    <!--  <exclusions>
        <exclusion>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
      </exclusions> -->
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <scope>provided</scope>
    </dependency>
    <!-- Redis -->
    <dependency>
@@ -111,8 +122,16 @@
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
      <version>8.0.19</version>
      <!--<scope>system</scope>-->
    </dependency>
   <!-- <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/doc/mysql-connector-java-8.0.19.jar</systemPath>
    </dependency>-->
    <!-- swagger -->
    <!--<dependency>
      <groupId>io.springfox</groupId>
@@ -216,7 +235,7 @@
  </dependencies>
  <build>
    <finalName>official_website</finalName>
    <finalName>dmttwebsite</finalName>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
server/src/main/java/com/doumee/OfficialWebsiteApplication.java
@@ -4,6 +4,8 @@
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;
import org.springframework.scheduling.annotation.EnableAsync;
@@ -16,9 +18,14 @@
@SpringBootApplication
@MapperScan("com.doumee.dao")
@EnableAsync
public class OfficialWebsiteApplication {
public class OfficialWebsiteApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(OfficialWebsiteApplication.class);
        context.getEnvironment();
    }
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(OfficialWebsiteApplication.class) ;
    }
}
server/src/main/java/com/doumee/config/quartz/JobInitializer.java
@@ -39,7 +39,7 @@
    /**
     * åˆå§‹åŒ–Jobs
     */
    @PostConstruct
//    @PostConstruct
    public void initJobs () {
        log.debug("Initializing jobs");
        // ä¿®å¤JOB
server/src/main/resources/application.yml
@@ -9,7 +9,7 @@
spring:
  profiles:
    active: test
    active: dev
  # JSON返回配置
  jackson:
    # é»˜è®¤æ—¶åŒº