From 1b555a0ab0527478cdf2b0c31c0ea8aea70f8adc Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期四, 15 六月 2023 10:52:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into yxh01
---
src/assets/styles/index.scss | 0
src/assets/icons/svg/eye.svg | 0
src/api/smartor/ivrtasksms.js | 0
src/api/smartor/svyexception.js | 0
src/views/components/icons/index.vue | 0
src/layout/index.vue | 0
src/views/smartor/ivrtaskcalldetail/index.vue | 0
src/views/system/user/authRole.vue | 0
src/api/system/notice.js | 0
src/assets/icons/svg/cascader.svg | 0
src/views/tool/build/CodeTypeDialog.vue | 0
src/views/dashboard/BarChart.vue | 0
src/api/smartor/smsparam.js | 0
src/assets/icons/svg/tool.svg | 0
src/api/login.js | 0
src/assets/icons/svg/radio.svg | 0
src/assets/401_images/401.gif | 0
src/utils/generator/config.js | 0
src/utils/generator/html.js | 0
src/components/SizeSelect/index.vue | 61
src/views/smartor/svytopic/maint.vue | 0
bin/run-web.bat | 0
src/utils/dict/DictData.js | 0
src/api/tool/gen.js | 0
src/assets/styles/element-variables.scss | 2
src/views/patient/patient/profile/resetPwd.vue | 0
src/assets/icons/svg/time.svg | 0
src/components/TopNav/index.vue | 63
src/api/smartor/schemeplan.js | 0
src/directive/permission/hasPermi.js | 0
src/views/smartor/svyfinishoption/index.vue | 0
src/assets/icons/svg/upload.svg | 0
src/assets/icons/svg/theme.svg | 0
src/api/smartor/ivrtemplatetarget.js | 0
src/assets/icons/svg/guide.svg | 0
src/views/error/401.vue | 0
src/smartor/dataobject/dw_svytopic_maint.vue | 0
src/views/tool/gen/editTable.vue | 0
src/views/tool/gen/importTable.vue | 0
src/assets/icons/svg/job.svg | 0
src/api/smartor/ivrtarget.js | 0
src/api/smartor/patinhosp.js | 0
src/api/smartor/svyfinishtopic.js | 0
src/assets/icons/svg/checkbox.svg | 0
src/views/patient/patient/authRole.vue | 0
public/index.html | 0
src/views/system/dept/index.vue | 0
src/utils/generator/render.js | 0
src/api/smartor/schemetaskrepeatconfig.js | 0
src/views/smartor/ivrlibscriptmodel/index.vue | 0
src/views/smartor/ivrtemplatetarget/index.vue | 0
src/api/smartor/smsrecords.js | 0
src/views/smartor/schemetriggerrule/index.vue | 0
src/views/knowledge/questionnaire/examine/index.vue | 310 +
src/views/smartor/svytitle/index.vue | 0
src/plugins/download.js | 0
src/assets/icons/svg/language.svg | 0
src/assets/icons/svg/github.svg | 0
src/components/PageTools/index.vue | 42
src/views/smartor/ivrlibascript/index.vue | 0
src/views/dashboard/PieChart.vue | 0
src/assets/styles/btn.scss | 0
src/views/dashboard/mixins/resize.js | 0
src/views/smartor/ivrtaskcallrecord/index.vue | 0
src/assets/icons/svg/row.svg | 0
src/assets/icons/svg/link.svg | 0
src/utils/generator/icon.json | 0
src/assets/icons/svg/druid.svg | 0
src/views/register.vue | 121
src/api/system/category.js | 0
src/layout/components/Sidebar/Logo.vue | 128
bin/package.bat | 0
src/assets/icons/svg/input.svg | 0
src/assets/icons/svg/validCode.svg | 0
src/views/smartor/ivrextemplate/index.vue | 0
src/assets/icons/svg/icon.svg | 0
src/smartor/dataobject/dw_patouthosp_base.vue | 0
src/views/tool/gen/basicInfoForm.vue | 0
src/views/knowledge/questionbank/index.vue | 987 +++++
src/assets/icons/svg/rate.svg | 0
src/api/smartor/schemeautofinshrule.js | 0
src/components/Pagination/index.vue | 3
src/assets/icons/svg/phone.svg | 0
src/assets/icons/svg/size.svg | 0
src/assets/icons/svg/system.svg | 0
src/api/smartor/svytitle.js | 0
src/constant/employees.js | 429 ++
src/api/smartor/ivrscripttarget.js | 0
src/assets/images/dark.svg | 0
src/api/monitor/job.js | 0
src/components/RuoYi/Git/index.vue | 0
src/api/smartor/ivrscenecategory.js | 0
src/plugins/tab.js | 0
src/api/knowledge/questionbank.js | 11
src/utils/errorCode.js | 0
src/components/HeaderSearch/index.vue | 1
src/api/smartor/svyfinishoption.js | 0
src/views/smartor/ivrglobalconfig/index.vue | 0
src/assets/icons/svg/international.svg | 0
src/views/smartor/ivrquestionlib/QuestionMaint.vue | 0
src/api/smartor/ivrintent.js | 0
src/api/smartor/ivrtaskcalldetail.js | 0
src/components/RightPanel/index.vue | 0
src/views/monitor/job/index.vue | 2
src/assets/icons/svg/pdf.svg | 0
src/views/smartor/hecategory/index.vue | 0
src/api/smartor/ivrlibintent.js | 0
src/components/RightToolbar/index.vue | 42
src/views/monitor/online/index.vue | 0
src/views/smartor/ivrtasksms/index.vue | 0
src/views/tool/swagger/index.vue | 0
src/views/tool/gen/genInfoForm.vue | 0
src/assets/icons/svg/search.svg | 0
src/layout/components/IframeToggle/index.vue | 0
package.json | 10
src/views/smartor/smsrecords/index.vue | 0
src/components/IconSelect/requireIcons.js | 0
src/components/Crontab/index.vue | 0
src/api/knowledge/questionnaire.js | 11
vue.config.js | 0
src/views/smartor/ivrlibscript/index.vue | 0
src/assets/icons/svg/shopping.svg | 0
src/assets/common/head.jpg | 0
src/api/smartor/ivrflownode.js | 0
src/assets/icons/svg/button.svg | 0
src/views/smartor/patouthosp/index.vue | 0
src/assets/icons/svg/peoples.svg | 0
src/store/modules/settings.js | 2
src/assets/icons/svg/tab.svg | 0
src/api/smartor/patphysical.js | 0
src/api/smartor/schemecalldetail.js | 0
src/views/smartor/ivrexecuteconfig/index.vue | 0
src/assets/icons/svg/online.svg | 0
src/views/monitor/job/log.vue | 0
src/components/ImageUpload/index.vue | 61
src/views/dashboard/PanelGroup.vue | 0
src/smartor/dataobject/dw_patouthosp_list.vue | 0
src/assets/icons/svg/404.svg | 0
src/store/modules/user.js | 0
src/store/index.js | 0
src/views/smartor/ivrtask/index.vue | 0
src/api/system/dict/data.js | 0
src/assets/icons/svg/tree-table.svg | 0
src/assets/icons/svg/documentation.svg | 0
src/assets/common/leftnavBg.png | 0
src/layout/components/Sidebar/Link.vue | 0
src/components/ParentView/index.vue | 0
src/plugins/index.js | 0
src/utils/index.js | 0
src/api/monitor/cache.js | 0
src/api/smartor/ivrrecall.js | 0
src/directive/module/clipboard.js | 0
src/assets/icons/svg/people.svg | 0
src/views/monitor/cache/list.vue | 0
src/views/redirect.vue | 0
src/api/smartor/ivrscript.js | 0
src/views/smartor/ivrflownode/index.vue | 0
src/views/smartor/ivrrecall/index.vue | 0
src/components/Crontab/month.vue | 0
src/views/system/menu/index.vue | 0
src/api/smartor/ivrtask.js | 0
src/directive/index.js | 0
src/api/smartor/svytopic.js | 0
src/assets/icons/svg/server.svg | 0
src/layout/components/Sidebar/index.vue | 79
src/api/smartor/ivrextemplate.js | 0
src/components/UploadImg/index.vue | 116
src/api/smartor/patouthosp.js | 0
src/api/system/user.js | 2
src/assets/icons/svg/table.svg | 0
src/assets/styles/sidebar.scss | 7
src/assets/styles/element-ui.scss | 0
src/utils/dict/DictConverter.js | 0
src/views/knowledge/education/index.vue | 816 ++++
src/assets/icons/svg/redis-list.svg | 0
src/views/patient/patient/profile/userAvatar.vue | 0
src/assets/icons/svg/star.svg | 0
src/assets/icons/svg/code.svg | 0
src/smartor/dataobject/dw_patinhosp_base.vue | 0
src/views/index.vue | 0
src/assets/icons/svg/fullscreen.svg | 0
src/assets/icons/index.js | 0
src/assets/icons/svg/dashboard.svg | 0
src/views/system/user/profile/userAvatar.vue | 0
src/api/smartor/ivrlibscriptmodel.js | 0
src/components/Screenfull/index.vue | 1
src/views/index_v1.vue | 0
src/assets/icons/svg/date.svg | 0
src/api/system/dept.js | 0
src/api/system/tag.js | 44
src/views/system/role/authUser.vue | 0
src/views/smartor/ivrlibintentcategory/index.vue | 0
public/favicon.ico | 0
.editorconfig | 0
src/assets/icons/svg/nested.svg | 0
src/components/PanThumb/index.vue | 1
src/views/tool/build/index.vue | 0
src/permission.js | 0
src/assets/icons/svg/monitor.svg | 0
src/utils/scroll-to.js | 0
src/api/smartor/ivrtaskcall.js | 0
src/views/system/user/profile/index.vue | 0
src/assets/styles/transition.scss | 0
src/assets/icons/svg/time-range.svg | 0
src/api/patient/homepage.js | 72
README.md | 0
src/plugins/modal.js | 0
src/api/smartor/svyresult.js | 0
src/main.js | 17
src/components/DictData/index.js | 0
src/api/smartor/svyfinish.js | 0
src/layout/components/TagsView/ScrollPane.vue | 0
src/layout/components/index.js | 0
src/views/smartor/ivrintent/index.vue | 0
src/views/smartor/svyfinishtopic/index.vue | 0
src/views/smartor/schemetaskrecord/index.vue | 0
src/api/smartor/hecategory.js | 0
src/views/tool/build/RightPanel.vue | 0
src/layout/components/Navbar.vue | 0
src/smartor/dataobject/dw_patarchive_base.vue | 0
src/views/smartor/ivrscenecategory/index.vue | 0
src/layout/components/Sidebar/SidebarItem.vue | 0
src/views/knowledge/education/compilequer/index.vue | 866 +++++
public/html/ie.html | 0
src/assets/icons/svg/redis.svg | 0
src/views/smartor/patinhosp/index.vue | 0
src/components/DictTag/index.vue | 4
src/views/smartor/schemetaskrepeatconfig/index.vue | 0
src/api/smartor/smstemplet.js | 0
src/assets/icons/svg/swagger.svg | 0
src/store/modules/permission.js | 0
src/utils/validate.js | 0
src/utils/permission.js | 0
src/store/modules/dict.js | 0
src/views/dashboard/LineChart.vue | 0
src/views/smartor/svytopic/index1.vue | 0
src/api/system/post.js | 0
src/assets/icons/svg/tree.svg | 0
src/directive/permission/hasRole.js | 0
src/views/components/icons/element-icons.js | 0
src/api/smartor/smsaccount.js | 0
src/assets/icons/svg/select.svg | 0
src/views/smartor/ivrlibintent/index.vue | 0
src/assets/icons/svg/component.svg | 0
src/assets/icons/svg/clipboard.svg | 0
src/assets/icons/svg/download.svg | 0
src/views/patient/patient/index.vue | 993 +++++
src/assets/images/light.svg | 0
src/utils/generator/drawingDefault.js | 0
public/robots.txt | 0
src/views/smartor/ivrscript/index.vue | 0
src/views/monitor/operlog/index.vue | 0
src/views/smartor/ivrscriptmodel/index.vue | 0
src/views/tool/build/IconsDialog.vue | 0
src/views/tool/build/DraggableItem.vue | 0
src/smartor/dataobject/dw_svytopicoption_maint.vue | 0
src/api/monitor/jobLog.js | 0
src/views/smartor/svytopic/index.vue | 0
src/views/monitor/cache/index.vue | 0
src/views/error/404.vue | 0
src/directive/dialog/dragHeight.js | 0
src/settings.js | 0
src/views/smartor/schemetaskconfig/index.vue | 0
src/assets/icons/svg/user.svg | 0
src/components/Breadcrumb/index.vue | 83
src/filters/index.js | 5
.env.development | 0
src/assets/icons/svg/form.svg | 0
src/store/modules/tagsView.js | 0
src/views/smartor/schemelibrary/index.vue | 0
src/views/patient/patient/profile/index.vue | 767 ++++
src/assets/icons/svg/chart.svg | 0
src/assets/icons/svg/switch.svg | 0
src/assets/styles/mixin.scss | 0
src/views/smartor/svycategory/index.vue | 0
src/views/system/role/index.vue | 0
src/views/smartor/svyresult/index.vue | 0
src/assets/icons/svg/log.svg | 0
src/utils/ruoyi.js | 0
src/api/smartor/schemecategory.js | 0
src/assets/icons/svg/date-range.svg | 0
src/components/UploadExcel/index.vue | 169 +
src/views/monitor/server/index.vue | 0
src/views/smartor/schemeautofinshrule/index.vue | 0
src/api/smartor/ivrscene.js | 0
src/directives/index.js | 22
src/views/system/dict/data.vue | 0
src/directive/dialog/drag.js | 0
src/api/smartor/schemetaskrecord.js | 0
src/layout/mixin/ResizeHandler.js | 0
src/assets/icons/svg/qq.svg | 0
src/views/smartor/smstemplet/index.vue | 0
babel.config.js | 0
src/views/system/user/profile/userInfo.vue | 0
src/components/iFrame/index.vue | 1
src/components/ThemePicker/index.vue | 1
src/api/smartor/ivrlibintentcategory.js | 0
src/components/RuoYi/Doc/index.vue | 0
src/views/smartor/schemecalldetail/index.vue | 0
src/api/smartor/ivrscriptmodel.js | 0
src/plugins/auth.js | 0
src/assets/icons/svg/dict.svg | 0
src/views/smartor/svyfinish/index.vue | 0
src/api/smartor/ivrlibscriptcategory.js | 0
src/assets/icons/svg/wechat.svg | 0
.eslintrc.js | 0
src/api/smartor/schemelibrary.js | 0
src/assets/icons/svg/number.svg | 0
src/views/smartor/patarchive/index0.vue | 0
src/assets/icons/svg/exit-fullscreen.svg | 0
src/router/index.js | 0
src/layout/components/Sidebar/FixiOSBug.js | 0
src/assets/icons/svg/money.svg | 0
src/api/smartor/ivrtemplate.js | 0
src/api/smartor/svycategory.js | 0
src/components/FileUpload/index.vue | 57
src/views/system/dict/index.vue | 0
src/assets/404_images/404.png | 0
src/api/monitor/online.js | 0
src/components/Crontab/year.vue | 0
.gitignore | 0
src/utils/generator/css.js | 0
src/views/monitor/druid/index.vue | 0
src/api/smartor/svytopicoption.js | 0
src/views/smartor/svytitle/index0.vue | 0
src/views/smartor/ivrlibscriptcategory/index.vue | 0
src/views/system/label/index.vue | 730 ++++
src/views/system/role/selectUser.vue | 0
src/views/smartor/ivrflow/index.vue | 0
src/assets/icons/svg/education.svg | 0
src/api/smartor/ivrlibascript.js | 0
src/smartor/components/dataview/xformview/xformview.vue | 0
src/assets/404_images/404_cloud.png | 0
src/api/knowledge/education.js | 62
src/components/SvgIcon/index.vue | 67
src/components/Crontab/day.vue | 0
src/views/smartor/ivrtemplatescript/index.vue | 0
src/api/monitor/server.js | 0
src/components/IconSelect/index.vue | 82
src/views/system/user/index.vue | 0
src/views/login.vue | 108
src/api/smartor/helibrary.js | 0
src/App.vue | 0
src/assets/images/login-background.jpg | 0
src/api/smartor/ivrflow.js | 0
src/assets/icons/svg/message.svg | 0
src/utils/dict/Dict.js | 0
src/assets/icons/svg/drag.svg | 0
src/views/knowledge/questionnaire/compilequer/index.vue | 1006 +++++
src/assets/icons/svg/textarea.svg | 0
src/assets/icons/svgo.yml | 0
bin/fix.txt | 0
src/views/smartor/smsparam/index.vue | 0
src/views/monitor/logininfor/index.vue | 0
src/assets/styles/ruoyi.scss | 0
src/assets/icons/svg/list.svg | 0
src/views/smartor/ivrscene/index.vue | 0
src/views/smartor/smsaccount/index.vue | 0
src/assets/icons/svg/eye-open.svg | 0
src/api/system/menu.js | 0
src/views/smartor/ivrtarget/index.vue | 0
src/views/knowledge/education/examine/index.vue | 304 +
src/views/smartor/helibrary/index.vue | 0
src/components/Hamburger/index.vue | 1
src/views/tool/gen/index.vue | 0
src/views/smartor/schemetask/index.vue | 0
src/views/knowledge/questionnaire/index.vue | 780 ++++
src/assets/icons/svg/password.svg | 0
src/components/ImagePreview/index.vue | 1
src/api/smartor/schemetriggerscene.js | 0
src/views/smartor/svyexception/index.vue | 0
src/api/smartor/patarchive.js | 0
src/views/patient/patient/profile/userInfo.vue | 0
src/views/smartor/schemeplan/index.vue | 0
src/smartor/dataobject/dw_svytopicoption_list.vue | 0
src/assets/icons/svg/question.svg | 0
src/assets/icons/svg/zip.svg | 0
src/components/Crontab/hour.vue | 0
src/components/index.js | 11
src/views/smartor/patarchive/index.vue | 0
src/components/Crontab/result.vue | 0
src/assets/icons/svg/edit.svg | 0
src/api/smartor/ivrtemplatescript.js | 0
src/api/system/label.js | 62
src/smartor/dataobject/dw_svytopic_view.vue | 0
src/components/Editor/index.vue | 1
src/api/monitor/logininfor.js | 0
src/directive/dialog/dragWidth.js | 0
src/assets/icons/svg/skill.svg | 0
src/views/system/category/index.vue | 0
src/views/smartor/ivrscripttarget/index.vue | 0
src/store/modules/app.js | 0
src/assets/icons/svg/excel.svg | 0
src/assets/styles/variables.scss | 10
src/assets/images/profile.jpg | 0
src/api/smartor/ivrextemplatescript.js | 0
src/layout/components/TagsView/index.vue | 0
src/smartor/components/dataview/xgridview/xgridview.vue | 0
src/views/smartor/ivrtaskcall/index.vue | 0
src/utils/request.js | 0
build/index.js | 0
src/views/system/user/profile/resetPwd.vue | 0
src/layout/components/AppMain.vue | 0
.eslintignore | 0
src/assets/icons/svg/post.svg | 0
src/views/smartor/ivrtemplate/index.vue | 0
src/views/smartor/svytitle/index1.vue | 0
src/components/Crontab/second.vue | 0
src/assets/icons/svg/build.svg | 0
src/api/system/config.js | 0
src/api/smartor/ivrflownodebranch.js | 0
src/utils/auth.js | 0
src/views/dashboard/RaddarChart.vue | 0
src/layout/components/InnerLink/index.vue | 0
src/api/system/dict/type.js | 0
src/views/import/index.vue | 55
src/store/getters.js | 0
src/api/smartor/ivrlibscript.js | 0
src/api/smartor/ivrglobalconfig.js | 0
src/utils/dict/index.js | 0
src/views/system/post/index.vue | 0
src/api/smartor/schemetask.js | 0
src/assets/icons/svg/example.svg | 0
src/utils/generator/js.js | 0
src/layout/components/Sidebar/Item.vue | 0
src/views/smartor/svytopicoption/index.vue | 0
src/assets/icons/svg/logininfor.svg | 0
src/views/smartor/schemecategory/index.vue | 0
src/api/smartor/ivrtaskcallrecord.js | 0
src/views/smartor/patphysical/index.vue | 0
.env.production | 0
src/views/system/notice/index.vue | 0
src/layout/components/Settings/index.vue | 322 +
bin/build.bat | 0
src/assets/icons/svg/lock.svg | 0
src/views/system/config/index.vue | 0
src/api/system/role.js | 0
src/views/smartor/schemetriggerscene/index.vue | 0
src/smartor/dataobject/dw_patarchive_list.vue | 0
src/utils/jsencrypt.js | 0
src/api/smartor/schemetaskconfig.js | 0
src/components/Crontab/min.vue | 0
.env.staging | 0
src/views/smartor/ivrflownodebranch/index.vue | 0
src/assets/icons/svg/bug.svg | 0
src/views/tool/build/TreeNodeDialog.vue | 0
src/api/smartor/ivrexecuteconfig.js | 0
src/api/monitor/operlog.js | 0
src/assets/icons/svg/email.svg | 0
src/views/smartor/svytopicoption/index1.vue | 0
src/utils/dict/DictOptions.js | 0
src/assets/icons/svg/color.svg | 0
src/assets/icons/svg/slider.svg | 0
src/views/smartor/ivrextemplatescript/index.vue | 0
src/assets/logo/logo.png | 0
src/api/menu.js | 0
src/views/components/icons/svg-icons.js | 0
src/utils/dict/DictMeta.js | 0
/dev/null | 57
src/plugins/cache.js | 0
src/components/Crontab/week.vue | 0
src/api/smartor/schemetriggerrule.js | 0
src/smartor/dataobject/dw_patinhosp_list.vue | 0
463 files changed, 9,845 insertions(+), 223 deletions(-)
diff --git a/ruoyi-ui/.editorconfig b/.editorconfig
similarity index 100%
rename from ruoyi-ui/.editorconfig
rename to .editorconfig
diff --git a/ruoyi-ui/.env.development b/.env.development
similarity index 100%
rename from ruoyi-ui/.env.development
rename to .env.development
diff --git a/ruoyi-ui/.env.production b/.env.production
similarity index 100%
rename from ruoyi-ui/.env.production
rename to .env.production
diff --git a/ruoyi-ui/.env.staging b/.env.staging
similarity index 100%
rename from ruoyi-ui/.env.staging
rename to .env.staging
diff --git a/ruoyi-ui/.eslintignore b/.eslintignore
similarity index 100%
rename from ruoyi-ui/.eslintignore
rename to .eslintignore
diff --git a/ruoyi-ui/.eslintrc.js b/.eslintrc.js
similarity index 100%
rename from ruoyi-ui/.eslintrc.js
rename to .eslintrc.js
diff --git a/ruoyi-ui/.gitignore b/.gitignore
similarity index 100%
rename from ruoyi-ui/.gitignore
rename to .gitignore
diff --git a/ruoyi-ui/README.md b/README.md
similarity index 100%
rename from ruoyi-ui/README.md
rename to README.md
diff --git a/ruoyi-ui/babel.config.js b/babel.config.js
similarity index 100%
rename from ruoyi-ui/babel.config.js
rename to babel.config.js
diff --git a/ruoyi-ui/bin/build.bat b/bin/build.bat
similarity index 100%
rename from ruoyi-ui/bin/build.bat
rename to bin/build.bat
diff --git a/ruoyi-ui/bin/fix.txt b/bin/fix.txt
similarity index 100%
rename from ruoyi-ui/bin/fix.txt
rename to bin/fix.txt
diff --git a/ruoyi-ui/bin/package.bat b/bin/package.bat
similarity index 100%
rename from ruoyi-ui/bin/package.bat
rename to bin/package.bat
diff --git a/ruoyi-ui/bin/run-web.bat b/bin/run-web.bat
similarity index 100%
rename from ruoyi-ui/bin/run-web.bat
rename to bin/run-web.bat
diff --git a/ruoyi-ui/build/index.js b/build/index.js
similarity index 100%
rename from ruoyi-ui/build/index.js
rename to build/index.js
diff --git a/ruoyi-ui/package.json b/package.json
similarity index 91%
rename from ruoyi-ui/package.json
rename to package.json
index c1cd574..70a1102 100644
--- a/ruoyi-ui/package.json
+++ b/package.json
@@ -40,9 +40,11 @@
"axios": "0.24.0",
"clipboard": "2.0.8",
"core-js": "3.25.3",
- "echarts": "5.4.0",
+ "cos-js-sdk-v5": "^1.4.18",
+ "dayjs": "^1.11.7",
+ "echarts": "^5.4.2",
"element-ui": "2.15.12",
- "file-saver": "2.0.5",
+ "file-saver": "^2.0.5",
"fuse.js": "6.4.3",
"highlight.js": "9.18.5",
"js-beautify": "1.13.0",
@@ -59,7 +61,8 @@
"vue-meta": "2.4.0",
"vue-router": "3.4.9",
"vuedraggable": "2.24.3",
- "vuex": "3.6.0"
+ "vuex": "3.6.0",
+ "xlsx": "^0.18.5"
},
"devDependencies": {
"@vue/cli-plugin-babel": "4.4.6",
@@ -77,6 +80,7 @@
"sass": "1.32.13",
"sass-loader": "10.1.1",
"script-ext-html-webpack-plugin": "2.1.5",
+ "script-loader": "^0.7.2",
"svg-sprite-loader": "5.1.1",
"vue-template-compiler": "2.6.12"
},
diff --git a/ruoyi-ui/public/favicon.ico b/public/favicon.ico
similarity index 100%
rename from ruoyi-ui/public/favicon.ico
rename to public/favicon.ico
Binary files differ
diff --git a/ruoyi-ui/public/html/ie.html b/public/html/ie.html
similarity index 100%
rename from ruoyi-ui/public/html/ie.html
rename to public/html/ie.html
diff --git a/ruoyi-ui/public/index.html b/public/index.html
similarity index 100%
rename from ruoyi-ui/public/index.html
rename to public/index.html
diff --git a/ruoyi-ui/public/robots.txt b/public/robots.txt
similarity index 100%
rename from ruoyi-ui/public/robots.txt
rename to public/robots.txt
diff --git a/ruoyi-ui/src/components/Breadcrumb/index.vue b/ruoyi-ui/src/components/Breadcrumb/index.vue
deleted file mode 100644
index 1696f54..0000000
--- a/ruoyi-ui/src/components/Breadcrumb/index.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-<template>
- <el-breadcrumb class="app-breadcrumb" separator="/">
- <transition-group name="breadcrumb">
- <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
- <span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span>
- <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
- </el-breadcrumb-item>
- </transition-group>
- </el-breadcrumb>
-</template>
-
-<script>
-export default {
- data() {
- return {
- levelList: null
- }
- },
- watch: {
- $route(route) {
- // if you go to the redirect page, do not update the breadcrumbs
- if (route.path.startsWith('/redirect/')) {
- return
- }
- this.getBreadcrumb()
- }
- },
- created() {
- this.getBreadcrumb()
- },
- methods: {
- getBreadcrumb() {
- // only show routes with meta.title
- let matched = this.$route.matched.filter(item => item.meta && item.meta.title)
- const first = matched[0]
-
- if (!this.isDashboard(first)) {
- matched = [{ path: '/index', meta: { title: '棣栭〉' }}].concat(matched)
- }
-
- this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
- },
- isDashboard(route) {
- const name = route && route.name
- if (!name) {
- return false
- }
- return name.trim() === 'Index'
- },
- handleLink(item) {
- const { redirect, path } = item
- if (redirect) {
- this.$router.push(redirect)
- return
- }
- this.$router.push(path)
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-.app-breadcrumb.el-breadcrumb {
- display: inline-block;
- font-size: 14px;
- line-height: 50px;
- margin-left: 8px;
-
- .no-redirect {
- color: #97a8be;
- cursor: text;
- }
-}
-</style>
diff --git a/ruoyi-ui/src/components/IconSelect/index.vue b/ruoyi-ui/src/components/IconSelect/index.vue
deleted file mode 100644
index b0ec9fa..0000000
--- a/ruoyi-ui/src/components/IconSelect/index.vue
+++ /dev/null
@@ -1,68 +0,0 @@
-<!-- @author zhengjie -->
-<template>
- <div class="icon-body">
- <el-input v-model="name" style="position: relative;" clearable placeholder="璇疯緭鍏ュ浘鏍囧悕绉�" @clear="filterIcons" @input.native="filterIcons">
- <i slot="suffix" class="el-icon-search el-input__icon" />
- </el-input>
- <div class="icon-list">
- <div v-for="(item, index) in iconList" :key="index" @click="selectedIcon(item)">
- <svg-icon :icon-class="item" style="height: 30px;width: 16px;" />
- <span>{{ item }}</span>
- </div>
- </div>
- </div>
-</template>
-
-<script>
-import icons from './requireIcons'
-export default {
- name: 'IconSelect',
- data() {
- return {
- name: '',
- iconList: icons
- }
- },
- methods: {
- filterIcons() {
- this.iconList = icons
- if (this.name) {
- this.iconList = this.iconList.filter(item => item.includes(this.name))
- }
- },
- selectedIcon(name) {
- this.$emit('selected', name)
- document.body.click()
- },
- reset() {
- this.name = ''
- this.iconList = icons
- }
- }
-}
-</script>
-
-<style rel="stylesheet/scss" lang="scss" scoped>
- .icon-body {
- width: 100%;
- padding: 10px;
- .icon-list {
- height: 200px;
- overflow-y: scroll;
- div {
- height: 30px;
- line-height: 30px;
- margin-bottom: -5px;
- cursor: pointer;
- width: 33%;
- float: left;
- }
- span {
- display: inline-block;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
- }
- }
- }
-</style>
diff --git a/ruoyi-ui/src/components/SizeSelect/index.vue b/ruoyi-ui/src/components/SizeSelect/index.vue
deleted file mode 100644
index 069b5de..0000000
--- a/ruoyi-ui/src/components/SizeSelect/index.vue
+++ /dev/null
@@ -1,56 +0,0 @@
-<template>
- <el-dropdown trigger="click" @command="handleSetSize">
- <div>
- <svg-icon class-name="size-icon" icon-class="size" />
- </div>
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item v-for="item of sizeOptions" :key="item.value" :disabled="size===item.value" :command="item.value">
- {{ item.label }}
- </el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
-</template>
-
-<script>
-export default {
- data() {
- return {
- sizeOptions: [
- { label: 'Default', value: 'default' },
- { label: 'Medium', value: 'medium' },
- { label: 'Small', value: 'small' },
- { label: 'Mini', value: 'mini' }
- ]
- }
- },
- computed: {
- size() {
- return this.$store.getters.size
- }
- },
- methods: {
- handleSetSize(size) {
- this.$ELEMENT.size = size
- this.$store.dispatch('app/setSize', size)
- this.refreshView()
- this.$message({
- message: 'Switch Size Success',
- type: 'success'
- })
- },
- refreshView() {
- // In order to make the cached page re-rendered
- this.$store.dispatch('tagsView/delAllCachedViews', this.$route)
-
- const { fullPath } = this.$route
-
- this.$nextTick(() => {
- this.$router.replace({
- path: '/redirect' + fullPath
- })
- })
- }
- }
-
-}
-</script>
diff --git a/ruoyi-ui/src/components/SvgIcon/index.vue b/ruoyi-ui/src/components/SvgIcon/index.vue
deleted file mode 100644
index e4bf5ad..0000000
--- a/ruoyi-ui/src/components/SvgIcon/index.vue
+++ /dev/null
@@ -1,61 +0,0 @@
-<template>
- <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" />
- <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
- <use :xlink:href="iconName" />
- </svg>
-</template>
-
-<script>
-import { isExternal } from '@/utils/validate'
-
-export default {
- name: 'SvgIcon',
- props: {
- iconClass: {
- type: String,
- required: true
- },
- className: {
- type: String,
- default: ''
- }
- },
- computed: {
- isExternal() {
- return isExternal(this.iconClass)
- },
- iconName() {
- return `#icon-${this.iconClass}`
- },
- svgClass() {
- if (this.className) {
- return 'svg-icon ' + this.className
- } else {
- return 'svg-icon'
- }
- },
- styleExternalIcon() {
- return {
- mask: `url(${this.iconClass}) no-repeat 50% 50%`,
- '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`
- }
- }
- }
-}
-</script>
-
-<style scoped>
-.svg-icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
-}
-
-.svg-external-icon {
- background-color: currentColor;
- mask-size: cover!important;
- display: inline-block;
-}
-</style>
diff --git a/ruoyi-ui/src/layout/components/Settings/index.vue b/ruoyi-ui/src/layout/components/Settings/index.vue
deleted file mode 100644
index 8b49842..0000000
--- a/ruoyi-ui/src/layout/components/Settings/index.vue
+++ /dev/null
@@ -1,260 +0,0 @@
-<template>
- <el-drawer size="280px" :visible="visible" :with-header="false" :append-to-body="true" :show-close="false">
- <div class="drawer-container">
- <div>
- <div class="setting-drawer-content">
- <div class="setting-drawer-title">
- <h3 class="drawer-title">涓婚椋庢牸璁剧疆</h3>
- </div>
- <div class="setting-drawer-block-checbox">
- <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-dark')">
- <img src="@/assets/images/dark.svg" alt="dark">
- <div v-if="sideTheme === 'theme-dark'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
- <i aria-label="鍥炬爣: check" class="anticon anticon-check">
- <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
- <path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
- </svg>
- </i>
- </div>
- </div>
- <div class="setting-drawer-block-checbox-item" @click="handleTheme('theme-light')">
- <img src="@/assets/images/light.svg" alt="light">
- <div v-if="sideTheme === 'theme-light'" class="setting-drawer-block-checbox-selectIcon" style="display: block;">
- <i aria-label="鍥炬爣: check" class="anticon anticon-check">
- <svg viewBox="64 64 896 896" data-icon="check" width="1em" height="1em" :fill="theme" aria-hidden="true" focusable="false" class="">
- <path d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"/>
- </svg>
- </i>
- </div>
- </div>
- </div>
-
- <div class="drawer-item">
- <span>涓婚棰滆壊</span>
- <theme-picker style="float: right;height: 26px;margin: -3px 8px 0 0;" @change="themeChange" />
- </div>
- </div>
-
- <el-divider/>
-
- <h3 class="drawer-title">绯荤粺甯冨眬閰嶇疆</h3>
-
- <div class="drawer-item">
- <span>寮�鍚� TopNav</span>
- <el-switch v-model="topNav" class="drawer-switch" />
- </div>
-
- <div class="drawer-item">
- <span>寮�鍚� Tags-Views</span>
- <el-switch v-model="tagsView" class="drawer-switch" />
- </div>
-
- <div class="drawer-item">
- <span>鍥哄畾 Header</span>
- <el-switch v-model="fixedHeader" class="drawer-switch" />
- </div>
-
- <div class="drawer-item">
- <span>鏄剧ず Logo</span>
- <el-switch v-model="sidebarLogo" class="drawer-switch" />
- </div>
-
- <div class="drawer-item">
- <span>鍔ㄦ�佹爣棰�</span>
- <el-switch v-model="dynamicTitle" class="drawer-switch" />
- </div>
-
- <el-divider/>
-
- <el-button size="small" type="primary" plain icon="el-icon-document-add" @click="saveSetting">淇濆瓨閰嶇疆</el-button>
- <el-button size="small" plain icon="el-icon-refresh" @click="resetSetting">閲嶇疆閰嶇疆</el-button>
- </div>
- </div>
- </el-drawer>
-</template>
-
-<script>
-import ThemePicker from '@/components/ThemePicker'
-
-export default {
- components: { ThemePicker },
- data() {
- return {
- theme: this.$store.state.settings.theme,
- sideTheme: this.$store.state.settings.sideTheme
- };
- },
- computed: {
- visible: {
- get() {
- return this.$store.state.settings.showSettings
- }
- },
- fixedHeader: {
- get() {
- return this.$store.state.settings.fixedHeader
- },
- set(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'fixedHeader',
- value: val
- })
- }
- },
- topNav: {
- get() {
- return this.$store.state.settings.topNav
- },
- set(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'topNav',
- value: val
- })
- if (!val) {
- this.$store.dispatch('app/toggleSideBarHide', false);
- this.$store.commit("SET_SIDEBAR_ROUTERS", this.$store.state.permission.defaultRoutes);
- }
- }
- },
- tagsView: {
- get() {
- return this.$store.state.settings.tagsView
- },
- set(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'tagsView',
- value: val
- })
- }
- },
- sidebarLogo: {
- get() {
- return this.$store.state.settings.sidebarLogo
- },
- set(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'sidebarLogo',
- value: val
- })
- }
- },
- dynamicTitle: {
- get() {
- return this.$store.state.settings.dynamicTitle
- },
- set(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'dynamicTitle',
- value: val
- })
- }
- },
- },
- methods: {
- themeChange(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'theme',
- value: val
- })
- this.theme = val;
- },
- handleTheme(val) {
- this.$store.dispatch('settings/changeSetting', {
- key: 'sideTheme',
- value: val
- })
- this.sideTheme = val;
- },
- saveSetting() {
- this.$modal.loading("姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�...");
- this.$cache.local.set(
- "layout-setting",
- `{
- "topNav":${this.topNav},
- "tagsView":${this.tagsView},
- "fixedHeader":${this.fixedHeader},
- "sidebarLogo":${this.sidebarLogo},
- "dynamicTitle":${this.dynamicTitle},
- "sideTheme":"${this.sideTheme}",
- "theme":"${this.theme}"
- }`
- );
- setTimeout(this.$modal.closeLoading(), 1000)
- },
- resetSetting() {
- this.$modal.loading("姝e湪娓呴櫎璁剧疆缂撳瓨骞跺埛鏂帮紝璇风◢鍊�...");
- this.$cache.local.remove("layout-setting")
- setTimeout("window.location.reload()", 1000)
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
- .setting-drawer-content {
- .setting-drawer-title {
- margin-bottom: 12px;
- color: rgba(0, 0, 0, .85);
- font-size: 14px;
- line-height: 22px;
- font-weight: bold;
- }
-
- .setting-drawer-block-checbox {
- display: flex;
- justify-content: flex-start;
- align-items: center;
- margin-top: 10px;
- margin-bottom: 20px;
-
- .setting-drawer-block-checbox-item {
- position: relative;
- margin-right: 16px;
- border-radius: 2px;
- cursor: pointer;
-
- img {
- width: 48px;
- height: 48px;
- }
-
- .setting-drawer-block-checbox-selectIcon {
- position: absolute;
- top: 0;
- right: 0;
- width: 100%;
- height: 100%;
- padding-top: 15px;
- padding-left: 24px;
- color: #1890ff;
- font-weight: 700;
- font-size: 14px;
- }
- }
- }
- }
-
- .drawer-container {
- padding: 20px;
- font-size: 14px;
- line-height: 1.5;
- word-wrap: break-word;
-
- .drawer-title {
- margin-bottom: 12px;
- color: rgba(0, 0, 0, .85);
- font-size: 14px;
- line-height: 22px;
- }
-
- .drawer-item {
- color: rgba(0, 0, 0, .65);
- font-size: 14px;
- padding: 12px 0;
- }
-
- .drawer-switch {
- float: right
- }
- }
-</style>
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue b/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
deleted file mode 100644
index c4c2d20..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/Logo.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-<template>
- <div class="sidebar-logo-container" :class="{'collapse':collapse}" :style="{ backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
- <transition name="sidebarLogoFade">
- <router-link v-if="collapse" key="collapse" class="sidebar-logo-link" to="/">
- <img v-if="logo" :src="logo" class="sidebar-logo" />
- <h1 v-else class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
- </router-link>
- <router-link v-else key="expand" class="sidebar-logo-link" to="/">
- <img v-if="logo" :src="logo" class="sidebar-logo" />
- <h1 class="sidebar-title" :style="{ color: sideTheme === 'theme-dark' ? variables.logoTitleColor : variables.logoLightTitleColor }">{{ title }} </h1>
- </router-link>
- </transition>
- </div>
-</template>
-
-<script>
-import logoImg from '@/assets/logo/logo.png'
-import variables from '@/assets/styles/variables.scss'
-
-export default {
- name: 'SidebarLogo',
- props: {
- collapse: {
- type: Boolean,
- required: true
- }
- },
- computed: {
- variables() {
- return variables;
- },
- sideTheme() {
- return this.$store.state.settings.sideTheme
- }
- },
- data() {
- return {
- title: '鏅烘収闅忚绠$悊绯荤粺',
- logo: logoImg
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-.sidebarLogoFade-enter-active {
- transition: opacity 1.5s;
-}
-
-.sidebarLogoFade-enter,
-.sidebarLogoFade-leave-to {
- opacity: 0;
-}
-
-.sidebar-logo-container {
- position: relative;
- width: 100%;
- height: 50px;
- line-height: 50px;
- background: #2b2f3a;
- text-align: center;
- overflow: hidden;
-
- & .sidebar-logo-link {
- height: 100%;
- width: 100%;
-
- & .sidebar-logo {
- width: 32px;
- height: 32px;
- vertical-align: middle;
- margin-right: 12px;
- }
-
- & .sidebar-title {
- display: inline-block;
- margin: 0;
- color: #fff;
- font-weight: 600;
- line-height: 50px;
- font-size: 14px;
- font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
- vertical-align: middle;
- }
- }
-
- &.collapse {
- .sidebar-logo {
- margin-right: 0px;
- }
- }
-}
-</style>
diff --git a/ruoyi-ui/src/layout/components/Sidebar/index.vue b/ruoyi-ui/src/layout/components/Sidebar/index.vue
deleted file mode 100644
index 51d0839..0000000
--- a/ruoyi-ui/src/layout/components/Sidebar/index.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-<template>
- <div :class="{'has-logo':showLogo}" :style="{ backgroundColor: settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
- <logo v-if="showLogo" :collapse="isCollapse" />
- <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
- <el-menu
- :default-active="activeMenu"
- :collapse="isCollapse"
- :background-color="settings.sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
- :text-color="settings.sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor"
- :unique-opened="true"
- :active-text-color="settings.theme"
- :collapse-transition="false"
- mode="vertical"
- >
- <sidebar-item
- v-for="(route, index) in sidebarRouters"
- :key="route.path + index"
- :item="route"
- :base-path="route.path"
- />
- </el-menu>
- </el-scrollbar>
- </div>
-</template>
-
-<script>
-import { mapGetters, mapState } from "vuex";
-import Logo from "./Logo";
-import SidebarItem from "./SidebarItem";
-import variables from "@/assets/styles/variables.scss";
-
-export default {
- components: { SidebarItem, Logo },
- computed: {
- ...mapState(["settings"]),
- ...mapGetters(["sidebarRouters", "sidebar"]),
- activeMenu() {
- const route = this.$route;
- const { meta, path } = route;
- // if set path, the sidebar will highlight the path you set
- if (meta.activeMenu) {
- return meta.activeMenu;
- }
- return path;
- },
- showLogo() {
- return this.$store.state.settings.sidebarLogo;
- },
- variables() {
- return variables;
- },
- isCollapse() {
- return !this.sidebar.opened;
- }
- }
-};
-</script>
diff --git a/ruoyi-ui/src/App.vue b/src/App.vue
similarity index 100%
rename from ruoyi-ui/src/App.vue
rename to src/App.vue
diff --git a/src/api/knowledge/education.js b/src/api/knowledge/education.js
new file mode 100644
index 0000000..077319f
--- /dev/null
+++ b/src/api/knowledge/education.js
@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
+
+// 淇敼瀹f暀鍒嗙被
+export function amendtag(data) {
+ return request({
+ url: '/smartor/hecategory',
+ method: 'put',
+ data: data
+ })
+};
+// 鏂板瀹f暀鍒嗙被
+export function addapitag(data) {
+ return request({
+ url: '/smartor/hecategory',
+ method: 'post',
+ data: data
+ })
+ };
+
+/**
+ *
+ * @param {鏍囩id} userId
+ * 鑾峰彇瀹f暀璇︽儏
+ * @returns
+ */
+export function detailstag(userId) {
+ return request({
+ url: '/smartor/hecategory/'+ userId,
+ method: 'get',
+ })
+ };
+
+
+ /**
+ *
+ * @param {鏍囩id} userId
+ * 鍒犻櫎鏍囩
+ * @returns
+ */
+export function deletetag(userId) {
+ return request({
+ url: '/smartor/hecategory/' + userId,
+ method: 'delete',
+ })
+ };
+ // 瀵煎嚭鏍囩鍒楄〃
+export function exporttag(data) {
+ return request({
+ url: '/smartor/hecategory/export',
+ method: 'post',
+ data: data
+ })
+ };
+ // 鏌ヨ鏍囩鍒楄〃
+export function listtag(query) {
+ return request({
+ url: '/smartor/hecategory/list',
+ method: 'get',
+ params: query
+ })
+ };
\ No newline at end of file
diff --git a/src/api/knowledge/questionbank.js b/src/api/knowledge/questionbank.js
new file mode 100644
index 0000000..66c03f7
--- /dev/null
+++ b/src/api/knowledge/questionbank.js
@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
+
+// 鏌ヨ棰樺簱鍒楄〃
+export function listpatient(query) {
+ return request({
+ url: '/smartor/patarchive/list',
+ method: 'get',
+ params: query
+ })
+};
\ No newline at end of file
diff --git a/src/api/knowledge/questionnaire.js b/src/api/knowledge/questionnaire.js
new file mode 100644
index 0000000..1edcc38
--- /dev/null
+++ b/src/api/knowledge/questionnaire.js
@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
+
+// 鏌ヨ闂嵎鍒楄〃
+export function listpatient(query) {
+ return request({
+ url: '/smartor/patarchive/list',
+ method: 'get',
+ params: query
+ })
+};
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/login.js b/src/api/login.js
similarity index 100%
rename from ruoyi-ui/src/api/login.js
rename to src/api/login.js
diff --git a/ruoyi-ui/src/api/menu.js b/src/api/menu.js
similarity index 100%
rename from ruoyi-ui/src/api/menu.js
rename to src/api/menu.js
diff --git a/ruoyi-ui/src/api/monitor/cache.js b/src/api/monitor/cache.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/cache.js
rename to src/api/monitor/cache.js
diff --git a/ruoyi-ui/src/api/monitor/job.js b/src/api/monitor/job.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/job.js
rename to src/api/monitor/job.js
diff --git a/ruoyi-ui/src/api/monitor/jobLog.js b/src/api/monitor/jobLog.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/jobLog.js
rename to src/api/monitor/jobLog.js
diff --git a/ruoyi-ui/src/api/monitor/logininfor.js b/src/api/monitor/logininfor.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/logininfor.js
rename to src/api/monitor/logininfor.js
diff --git a/ruoyi-ui/src/api/monitor/online.js b/src/api/monitor/online.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/online.js
rename to src/api/monitor/online.js
diff --git a/ruoyi-ui/src/api/monitor/operlog.js b/src/api/monitor/operlog.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/operlog.js
rename to src/api/monitor/operlog.js
diff --git a/ruoyi-ui/src/api/monitor/server.js b/src/api/monitor/server.js
similarity index 100%
rename from ruoyi-ui/src/api/monitor/server.js
rename to src/api/monitor/server.js
diff --git a/src/api/patient/homepage.js b/src/api/patient/homepage.js
new file mode 100644
index 0000000..6f3bf90
--- /dev/null
+++ b/src/api/patient/homepage.js
@@ -0,0 +1,72 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
+
+// 鏌ヨ鎮h�呭垪琛�
+export function listpatient(query) {
+ return request({
+ url: '/smartor/patarchive/list',
+ method: 'get',
+ params: query
+ })
+};
+// 鐢ㄦ埛淇℃伅鏌ヨ鎮h�呭垪琛�
+export function messagelistpatient(data) {
+ return request({
+ url: '/smartor/patarchive/patInfoByContion',
+ method: 'post',
+ data: data
+ })
+};
+// 鏍囩鏌ヨ鎮h�呭垪琛�
+export function taglistpatient(data) {
+ return request({
+ url: '/smartor/patarchive/patTagByContion',
+ method: 'post',
+ data: data
+ })
+};
+// 淇敼鎮h�呮。妗�
+export function alterpatient(data) {
+ return request({
+ url: '/smartor/patarchive',
+ method: 'put',
+ data: data
+ })
+};
+// 鏂板鎮h��
+export function addpatient(data) {
+ return request({
+ url: '/smartor/patarchive',
+ method: 'post',
+ data: data
+ })
+};
+// 鎮h�呰鎯�
+export function particularpatient(userId) {
+ return request({
+ url: '/smartor/patarchive/' + userId,
+ method: 'get',
+ })
+};
+// 鍒犻櫎鎮h�呭垪琛�
+export function deletepatient(userId) {
+ return request({
+ url: '/smartor/patarchive/' + userId,
+ method: 'delete',
+ })
+};
+
+// 瀵煎嚭鎮h�呴敊璇俊鎭�
+export function Exporterrorpatient(userId) {
+ return request({
+ url: '/smartor/patarchive/patTagByContion/'+userId,
+ method: 'get',
+ })
+};
+// 瀵煎叆鎮h�呮枃浠跺鐞�
+export function toleadpatient(userId) {
+ return request({
+ url: '/smartor/patarchive/patTagByContion/'+userId,
+ method: 'get',
+ })
+};
diff --git a/ruoyi-ui/src/api/smartor/hecategory.js b/src/api/smartor/hecategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/hecategory.js
rename to src/api/smartor/hecategory.js
diff --git a/ruoyi-ui/src/api/smartor/helibrary.js b/src/api/smartor/helibrary.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/helibrary.js
rename to src/api/smartor/helibrary.js
diff --git a/ruoyi-ui/src/api/smartor/ivrexecuteconfig.js b/src/api/smartor/ivrexecuteconfig.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrexecuteconfig.js
rename to src/api/smartor/ivrexecuteconfig.js
diff --git a/ruoyi-ui/src/api/smartor/ivrextemplate.js b/src/api/smartor/ivrextemplate.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrextemplate.js
rename to src/api/smartor/ivrextemplate.js
diff --git a/ruoyi-ui/src/api/smartor/ivrextemplatescript.js b/src/api/smartor/ivrextemplatescript.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrextemplatescript.js
rename to src/api/smartor/ivrextemplatescript.js
diff --git a/ruoyi-ui/src/api/smartor/ivrflow.js b/src/api/smartor/ivrflow.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrflow.js
rename to src/api/smartor/ivrflow.js
diff --git a/ruoyi-ui/src/api/smartor/ivrflownode.js b/src/api/smartor/ivrflownode.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrflownode.js
rename to src/api/smartor/ivrflownode.js
diff --git a/ruoyi-ui/src/api/smartor/ivrflownodebranch.js b/src/api/smartor/ivrflownodebranch.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrflownodebranch.js
rename to src/api/smartor/ivrflownodebranch.js
diff --git a/ruoyi-ui/src/api/smartor/ivrglobalconfig.js b/src/api/smartor/ivrglobalconfig.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrglobalconfig.js
rename to src/api/smartor/ivrglobalconfig.js
diff --git a/ruoyi-ui/src/api/smartor/ivrintent.js b/src/api/smartor/ivrintent.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrintent.js
rename to src/api/smartor/ivrintent.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibascript.js b/src/api/smartor/ivrlibascript.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibascript.js
rename to src/api/smartor/ivrlibascript.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibintent.js b/src/api/smartor/ivrlibintent.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibintent.js
rename to src/api/smartor/ivrlibintent.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibintentcategory.js b/src/api/smartor/ivrlibintentcategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibintentcategory.js
rename to src/api/smartor/ivrlibintentcategory.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibscript.js b/src/api/smartor/ivrlibscript.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibscript.js
rename to src/api/smartor/ivrlibscript.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibscriptcategory.js b/src/api/smartor/ivrlibscriptcategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibscriptcategory.js
rename to src/api/smartor/ivrlibscriptcategory.js
diff --git a/ruoyi-ui/src/api/smartor/ivrlibscriptmodel.js b/src/api/smartor/ivrlibscriptmodel.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrlibscriptmodel.js
rename to src/api/smartor/ivrlibscriptmodel.js
diff --git a/ruoyi-ui/src/api/smartor/ivrrecall.js b/src/api/smartor/ivrrecall.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrrecall.js
rename to src/api/smartor/ivrrecall.js
diff --git a/ruoyi-ui/src/api/smartor/ivrscene.js b/src/api/smartor/ivrscene.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrscene.js
rename to src/api/smartor/ivrscene.js
diff --git a/ruoyi-ui/src/api/smartor/ivrscenecategory.js b/src/api/smartor/ivrscenecategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrscenecategory.js
rename to src/api/smartor/ivrscenecategory.js
diff --git a/ruoyi-ui/src/api/smartor/ivrscript.js b/src/api/smartor/ivrscript.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrscript.js
rename to src/api/smartor/ivrscript.js
diff --git a/ruoyi-ui/src/api/smartor/ivrscriptmodel.js b/src/api/smartor/ivrscriptmodel.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrscriptmodel.js
rename to src/api/smartor/ivrscriptmodel.js
diff --git a/ruoyi-ui/src/api/smartor/ivrscripttarget.js b/src/api/smartor/ivrscripttarget.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrscripttarget.js
rename to src/api/smartor/ivrscripttarget.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtarget.js b/src/api/smartor/ivrtarget.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtarget.js
rename to src/api/smartor/ivrtarget.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtask.js b/src/api/smartor/ivrtask.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtask.js
rename to src/api/smartor/ivrtask.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcall.js b/src/api/smartor/ivrtaskcall.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtaskcall.js
rename to src/api/smartor/ivrtaskcall.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js b/src/api/smartor/ivrtaskcalldetail.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtaskcalldetail.js
rename to src/api/smartor/ivrtaskcalldetail.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js b/src/api/smartor/ivrtaskcallrecord.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtaskcallrecord.js
rename to src/api/smartor/ivrtaskcallrecord.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtasksms.js b/src/api/smartor/ivrtasksms.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtasksms.js
rename to src/api/smartor/ivrtasksms.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtemplate.js b/src/api/smartor/ivrtemplate.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtemplate.js
rename to src/api/smartor/ivrtemplate.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtemplatescript.js b/src/api/smartor/ivrtemplatescript.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtemplatescript.js
rename to src/api/smartor/ivrtemplatescript.js
diff --git a/ruoyi-ui/src/api/smartor/ivrtemplatetarget.js b/src/api/smartor/ivrtemplatetarget.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/ivrtemplatetarget.js
rename to src/api/smartor/ivrtemplatetarget.js
diff --git a/ruoyi-ui/src/api/smartor/patarchive.js b/src/api/smartor/patarchive.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/patarchive.js
rename to src/api/smartor/patarchive.js
diff --git a/ruoyi-ui/src/api/smartor/patinhosp.js b/src/api/smartor/patinhosp.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/patinhosp.js
rename to src/api/smartor/patinhosp.js
diff --git a/ruoyi-ui/src/api/smartor/patouthosp.js b/src/api/smartor/patouthosp.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/patouthosp.js
rename to src/api/smartor/patouthosp.js
diff --git a/ruoyi-ui/src/api/smartor/patphysical.js b/src/api/smartor/patphysical.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/patphysical.js
rename to src/api/smartor/patphysical.js
diff --git a/ruoyi-ui/src/api/smartor/schemeautofinshrule.js b/src/api/smartor/schemeautofinshrule.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemeautofinshrule.js
rename to src/api/smartor/schemeautofinshrule.js
diff --git a/ruoyi-ui/src/api/smartor/schemecalldetail.js b/src/api/smartor/schemecalldetail.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemecalldetail.js
rename to src/api/smartor/schemecalldetail.js
diff --git a/ruoyi-ui/src/api/smartor/schemecategory.js b/src/api/smartor/schemecategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemecategory.js
rename to src/api/smartor/schemecategory.js
diff --git a/ruoyi-ui/src/api/smartor/schemelibrary.js b/src/api/smartor/schemelibrary.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemelibrary.js
rename to src/api/smartor/schemelibrary.js
diff --git a/ruoyi-ui/src/api/smartor/schemeplan.js b/src/api/smartor/schemeplan.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemeplan.js
rename to src/api/smartor/schemeplan.js
diff --git a/ruoyi-ui/src/api/smartor/schemetask.js b/src/api/smartor/schemetask.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetask.js
rename to src/api/smartor/schemetask.js
diff --git a/ruoyi-ui/src/api/smartor/schemetaskconfig.js b/src/api/smartor/schemetaskconfig.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetaskconfig.js
rename to src/api/smartor/schemetaskconfig.js
diff --git a/ruoyi-ui/src/api/smartor/schemetaskrecord.js b/src/api/smartor/schemetaskrecord.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetaskrecord.js
rename to src/api/smartor/schemetaskrecord.js
diff --git a/ruoyi-ui/src/api/smartor/schemetaskrepeatconfig.js b/src/api/smartor/schemetaskrepeatconfig.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetaskrepeatconfig.js
rename to src/api/smartor/schemetaskrepeatconfig.js
diff --git a/ruoyi-ui/src/api/smartor/schemetriggerrule.js b/src/api/smartor/schemetriggerrule.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetriggerrule.js
rename to src/api/smartor/schemetriggerrule.js
diff --git a/ruoyi-ui/src/api/smartor/schemetriggerscene.js b/src/api/smartor/schemetriggerscene.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/schemetriggerscene.js
rename to src/api/smartor/schemetriggerscene.js
diff --git a/ruoyi-ui/src/api/smartor/smsaccount.js b/src/api/smartor/smsaccount.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/smsaccount.js
rename to src/api/smartor/smsaccount.js
diff --git a/ruoyi-ui/src/api/smartor/smsparam.js b/src/api/smartor/smsparam.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/smsparam.js
rename to src/api/smartor/smsparam.js
diff --git a/ruoyi-ui/src/api/smartor/smsrecords.js b/src/api/smartor/smsrecords.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/smsrecords.js
rename to src/api/smartor/smsrecords.js
diff --git a/ruoyi-ui/src/api/smartor/smstemplet.js b/src/api/smartor/smstemplet.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/smstemplet.js
rename to src/api/smartor/smstemplet.js
diff --git a/ruoyi-ui/src/api/smartor/svycategory.js b/src/api/smartor/svycategory.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svycategory.js
rename to src/api/smartor/svycategory.js
diff --git a/ruoyi-ui/src/api/smartor/svyexception.js b/src/api/smartor/svyexception.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svyexception.js
rename to src/api/smartor/svyexception.js
diff --git a/ruoyi-ui/src/api/smartor/svyfinish.js b/src/api/smartor/svyfinish.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svyfinish.js
rename to src/api/smartor/svyfinish.js
diff --git a/ruoyi-ui/src/api/smartor/svyfinishoption.js b/src/api/smartor/svyfinishoption.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svyfinishoption.js
rename to src/api/smartor/svyfinishoption.js
diff --git a/ruoyi-ui/src/api/smartor/svyfinishtopic.js b/src/api/smartor/svyfinishtopic.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svyfinishtopic.js
rename to src/api/smartor/svyfinishtopic.js
diff --git a/ruoyi-ui/src/api/smartor/svyresult.js b/src/api/smartor/svyresult.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svyresult.js
rename to src/api/smartor/svyresult.js
diff --git a/ruoyi-ui/src/api/smartor/svytitle.js b/src/api/smartor/svytitle.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svytitle.js
rename to src/api/smartor/svytitle.js
diff --git a/ruoyi-ui/src/api/smartor/svytopic.js b/src/api/smartor/svytopic.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svytopic.js
rename to src/api/smartor/svytopic.js
diff --git a/ruoyi-ui/src/api/smartor/svytopicoption.js b/src/api/smartor/svytopicoption.js
similarity index 100%
rename from ruoyi-ui/src/api/smartor/svytopicoption.js
rename to src/api/smartor/svytopicoption.js
diff --git a/ruoyi-ui/src/api/system/category.js b/src/api/system/category.js
similarity index 100%
rename from ruoyi-ui/src/api/system/category.js
rename to src/api/system/category.js
diff --git a/ruoyi-ui/src/api/system/config.js b/src/api/system/config.js
similarity index 100%
rename from ruoyi-ui/src/api/system/config.js
rename to src/api/system/config.js
diff --git a/ruoyi-ui/src/api/system/dept.js b/src/api/system/dept.js
similarity index 100%
rename from ruoyi-ui/src/api/system/dept.js
rename to src/api/system/dept.js
diff --git a/ruoyi-ui/src/api/system/dict/data.js b/src/api/system/dict/data.js
similarity index 100%
rename from ruoyi-ui/src/api/system/dict/data.js
rename to src/api/system/dict/data.js
diff --git a/ruoyi-ui/src/api/system/dict/type.js b/src/api/system/dict/type.js
similarity index 100%
rename from ruoyi-ui/src/api/system/dict/type.js
rename to src/api/system/dict/type.js
diff --git a/src/api/system/label.js b/src/api/system/label.js
new file mode 100644
index 0000000..6e68fc6
--- /dev/null
+++ b/src/api/system/label.js
@@ -0,0 +1,62 @@
+import request from '@/utils/request'
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�,und,null杞崲涓�'';
+
+// 淇敼鏍囩
+export function amendtag(data) {
+ return request({
+ url: '/base/tag',
+ method: 'put',
+ data: data
+ })
+};
+// 鏂板鏍囩
+export function addapitag(data) {
+ return request({
+ url: '/base/tag',
+ method: 'post',
+ data: data
+ })
+ };
+
+/**
+ *
+ * @param {鏍囩id} userId
+ * 鑾峰彇鏍囩璇︽儏
+ * @returns
+ */
+export function detailstag(userId) {
+ return request({
+ url: '/base/tag/'+ userId,
+ method: 'get',
+ })
+ };
+
+
+ /**
+ *
+ * @param {鏍囩id} userId
+ * 鍒犻櫎鏍囩
+ * @returns
+ */
+export function deletetag(userId) {
+ return request({
+ url: '/base/tag/' + userId,
+ method: 'delete',
+ })
+ };
+ // 瀵煎嚭鏍囩鍒楄〃
+export function exporttag(data) {
+ return request({
+ url: '/base/tag/export',
+ method: 'post',
+ data: data
+ })
+ };
+ // 鏌ヨ鏍囩鍒楄〃
+export function listtag(query) {
+ return request({
+ url: '/base/tag/list',
+ method: 'get',
+ params: query
+ })
+ };
\ No newline at end of file
diff --git a/ruoyi-ui/src/api/system/menu.js b/src/api/system/menu.js
similarity index 100%
rename from ruoyi-ui/src/api/system/menu.js
rename to src/api/system/menu.js
diff --git a/ruoyi-ui/src/api/system/notice.js b/src/api/system/notice.js
similarity index 100%
rename from ruoyi-ui/src/api/system/notice.js
rename to src/api/system/notice.js
diff --git a/ruoyi-ui/src/api/system/post.js b/src/api/system/post.js
similarity index 100%
rename from ruoyi-ui/src/api/system/post.js
rename to src/api/system/post.js
diff --git a/ruoyi-ui/src/api/system/role.js b/src/api/system/role.js
similarity index 100%
rename from ruoyi-ui/src/api/system/role.js
rename to src/api/system/role.js
diff --git a/src/api/system/tag.js b/src/api/system/tag.js
new file mode 100644
index 0000000..d7d085e
--- /dev/null
+++ b/src/api/system/tag.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ鏍囩鍒楄〃
+export function listTag(query) {
+ return request({
+ url: '/system/tag/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ鏍囩璇︾粏
+export function getTag(tagid) {
+ return request({
+ url: '/system/tag/' + tagid,
+ method: 'get'
+ })
+}
+
+// 鏂板鏍囩
+export function addTag(data) {
+ return request({
+ url: '/system/tag',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇敼鏍囩
+export function updateTag(data) {
+ return request({
+ url: '/system/tag',
+ method: 'put',
+ data: data
+ })
+}
+
+// 鍒犻櫎鏍囩
+export function delTag(tagid) {
+ return request({
+ url: '/system/tag/' + tagid,
+ method: 'delete'
+ })
+}
diff --git a/ruoyi-ui/src/api/system/user.js b/src/api/system/user.js
similarity index 96%
rename from ruoyi-ui/src/api/system/user.js
rename to src/api/system/user.js
index f2f76ef..d1f05a8 100644
--- a/ruoyi-ui/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -1,5 +1,5 @@
import request from '@/utils/request'
-import { parseStrEmpty } from "@/utils/ruoyi";
+import { parseStrEmpty } from "@/utils/ruoyi";//澶勭悊瀛楃涓�
// 鏌ヨ鐢ㄦ埛鍒楄〃
export function listUser(query) {
diff --git a/ruoyi-ui/src/api/tool/gen.js b/src/api/tool/gen.js
similarity index 100%
rename from ruoyi-ui/src/api/tool/gen.js
rename to src/api/tool/gen.js
diff --git a/ruoyi-ui/src/assets/401_images/401.gif b/src/assets/401_images/401.gif
similarity index 100%
rename from ruoyi-ui/src/assets/401_images/401.gif
rename to src/assets/401_images/401.gif
Binary files differ
diff --git a/ruoyi-ui/src/assets/404_images/404.png b/src/assets/404_images/404.png
similarity index 100%
rename from ruoyi-ui/src/assets/404_images/404.png
rename to src/assets/404_images/404.png
Binary files differ
diff --git a/ruoyi-ui/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png
similarity index 100%
rename from ruoyi-ui/src/assets/404_images/404_cloud.png
rename to src/assets/404_images/404_cloud.png
Binary files differ
diff --git a/src/assets/common/head.jpg b/src/assets/common/head.jpg
new file mode 100644
index 0000000..d961795
--- /dev/null
+++ b/src/assets/common/head.jpg
Binary files differ
diff --git a/src/assets/common/leftnavBg.png b/src/assets/common/leftnavBg.png
new file mode 100644
index 0000000..a9e1dca
--- /dev/null
+++ b/src/assets/common/leftnavBg.png
Binary files differ
diff --git a/ruoyi-ui/src/assets/icons/index.js b/src/assets/icons/index.js
similarity index 100%
rename from ruoyi-ui/src/assets/icons/index.js
rename to src/assets/icons/index.js
diff --git a/ruoyi-ui/src/assets/icons/svg/404.svg b/src/assets/icons/svg/404.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/404.svg
rename to src/assets/icons/svg/404.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/bug.svg b/src/assets/icons/svg/bug.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/bug.svg
rename to src/assets/icons/svg/bug.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/build.svg b/src/assets/icons/svg/build.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/build.svg
rename to src/assets/icons/svg/build.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/button.svg b/src/assets/icons/svg/button.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/button.svg
rename to src/assets/icons/svg/button.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/cascader.svg b/src/assets/icons/svg/cascader.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/cascader.svg
rename to src/assets/icons/svg/cascader.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/chart.svg b/src/assets/icons/svg/chart.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/chart.svg
rename to src/assets/icons/svg/chart.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/checkbox.svg b/src/assets/icons/svg/checkbox.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/checkbox.svg
rename to src/assets/icons/svg/checkbox.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/clipboard.svg b/src/assets/icons/svg/clipboard.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/clipboard.svg
rename to src/assets/icons/svg/clipboard.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/code.svg b/src/assets/icons/svg/code.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/code.svg
rename to src/assets/icons/svg/code.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/color.svg b/src/assets/icons/svg/color.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/color.svg
rename to src/assets/icons/svg/color.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/component.svg b/src/assets/icons/svg/component.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/component.svg
rename to src/assets/icons/svg/component.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/dashboard.svg b/src/assets/icons/svg/dashboard.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/dashboard.svg
rename to src/assets/icons/svg/dashboard.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/date-range.svg b/src/assets/icons/svg/date-range.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/date-range.svg
rename to src/assets/icons/svg/date-range.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/date.svg b/src/assets/icons/svg/date.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/date.svg
rename to src/assets/icons/svg/date.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/dict.svg b/src/assets/icons/svg/dict.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/dict.svg
rename to src/assets/icons/svg/dict.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/documentation.svg b/src/assets/icons/svg/documentation.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/documentation.svg
rename to src/assets/icons/svg/documentation.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/download.svg b/src/assets/icons/svg/download.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/download.svg
rename to src/assets/icons/svg/download.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/drag.svg b/src/assets/icons/svg/drag.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/drag.svg
rename to src/assets/icons/svg/drag.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/druid.svg b/src/assets/icons/svg/druid.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/druid.svg
rename to src/assets/icons/svg/druid.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/edit.svg b/src/assets/icons/svg/edit.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/edit.svg
rename to src/assets/icons/svg/edit.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/education.svg b/src/assets/icons/svg/education.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/education.svg
rename to src/assets/icons/svg/education.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/email.svg b/src/assets/icons/svg/email.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/email.svg
rename to src/assets/icons/svg/email.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/example.svg b/src/assets/icons/svg/example.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/example.svg
rename to src/assets/icons/svg/example.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/excel.svg b/src/assets/icons/svg/excel.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/excel.svg
rename to src/assets/icons/svg/excel.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg b/src/assets/icons/svg/exit-fullscreen.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/exit-fullscreen.svg
rename to src/assets/icons/svg/exit-fullscreen.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/eye-open.svg b/src/assets/icons/svg/eye-open.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/eye-open.svg
rename to src/assets/icons/svg/eye-open.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/eye.svg b/src/assets/icons/svg/eye.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/eye.svg
rename to src/assets/icons/svg/eye.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/form.svg b/src/assets/icons/svg/form.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/form.svg
rename to src/assets/icons/svg/form.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/fullscreen.svg b/src/assets/icons/svg/fullscreen.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/fullscreen.svg
rename to src/assets/icons/svg/fullscreen.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/github.svg b/src/assets/icons/svg/github.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/github.svg
rename to src/assets/icons/svg/github.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/guide.svg b/src/assets/icons/svg/guide.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/guide.svg
rename to src/assets/icons/svg/guide.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/icon.svg b/src/assets/icons/svg/icon.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/icon.svg
rename to src/assets/icons/svg/icon.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/input.svg b/src/assets/icons/svg/input.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/input.svg
rename to src/assets/icons/svg/input.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/international.svg b/src/assets/icons/svg/international.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/international.svg
rename to src/assets/icons/svg/international.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/job.svg b/src/assets/icons/svg/job.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/job.svg
rename to src/assets/icons/svg/job.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/language.svg b/src/assets/icons/svg/language.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/language.svg
rename to src/assets/icons/svg/language.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/link.svg b/src/assets/icons/svg/link.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/link.svg
rename to src/assets/icons/svg/link.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/list.svg b/src/assets/icons/svg/list.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/list.svg
rename to src/assets/icons/svg/list.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/lock.svg b/src/assets/icons/svg/lock.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/lock.svg
rename to src/assets/icons/svg/lock.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/log.svg b/src/assets/icons/svg/log.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/log.svg
rename to src/assets/icons/svg/log.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/logininfor.svg b/src/assets/icons/svg/logininfor.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/logininfor.svg
rename to src/assets/icons/svg/logininfor.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/message.svg b/src/assets/icons/svg/message.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/message.svg
rename to src/assets/icons/svg/message.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/money.svg b/src/assets/icons/svg/money.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/money.svg
rename to src/assets/icons/svg/money.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/monitor.svg b/src/assets/icons/svg/monitor.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/monitor.svg
rename to src/assets/icons/svg/monitor.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/nested.svg b/src/assets/icons/svg/nested.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/nested.svg
rename to src/assets/icons/svg/nested.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/number.svg b/src/assets/icons/svg/number.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/number.svg
rename to src/assets/icons/svg/number.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/online.svg b/src/assets/icons/svg/online.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/online.svg
rename to src/assets/icons/svg/online.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/password.svg b/src/assets/icons/svg/password.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/password.svg
rename to src/assets/icons/svg/password.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/pdf.svg b/src/assets/icons/svg/pdf.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/pdf.svg
rename to src/assets/icons/svg/pdf.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/people.svg b/src/assets/icons/svg/people.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/people.svg
rename to src/assets/icons/svg/people.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/peoples.svg b/src/assets/icons/svg/peoples.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/peoples.svg
rename to src/assets/icons/svg/peoples.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/phone.svg b/src/assets/icons/svg/phone.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/phone.svg
rename to src/assets/icons/svg/phone.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/post.svg b/src/assets/icons/svg/post.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/post.svg
rename to src/assets/icons/svg/post.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/qq.svg b/src/assets/icons/svg/qq.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/qq.svg
rename to src/assets/icons/svg/qq.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/question.svg b/src/assets/icons/svg/question.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/question.svg
rename to src/assets/icons/svg/question.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/radio.svg b/src/assets/icons/svg/radio.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/radio.svg
rename to src/assets/icons/svg/radio.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/rate.svg b/src/assets/icons/svg/rate.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/rate.svg
rename to src/assets/icons/svg/rate.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/redis-list.svg b/src/assets/icons/svg/redis-list.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/redis-list.svg
rename to src/assets/icons/svg/redis-list.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/redis.svg b/src/assets/icons/svg/redis.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/redis.svg
rename to src/assets/icons/svg/redis.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/row.svg b/src/assets/icons/svg/row.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/row.svg
rename to src/assets/icons/svg/row.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/search.svg
rename to src/assets/icons/svg/search.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/select.svg b/src/assets/icons/svg/select.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/select.svg
rename to src/assets/icons/svg/select.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/server.svg b/src/assets/icons/svg/server.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/server.svg
rename to src/assets/icons/svg/server.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/shopping.svg b/src/assets/icons/svg/shopping.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/shopping.svg
rename to src/assets/icons/svg/shopping.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/size.svg b/src/assets/icons/svg/size.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/size.svg
rename to src/assets/icons/svg/size.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/skill.svg b/src/assets/icons/svg/skill.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/skill.svg
rename to src/assets/icons/svg/skill.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/slider.svg b/src/assets/icons/svg/slider.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/slider.svg
rename to src/assets/icons/svg/slider.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/star.svg b/src/assets/icons/svg/star.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/star.svg
rename to src/assets/icons/svg/star.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/swagger.svg b/src/assets/icons/svg/swagger.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/swagger.svg
rename to src/assets/icons/svg/swagger.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/switch.svg b/src/assets/icons/svg/switch.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/switch.svg
rename to src/assets/icons/svg/switch.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/system.svg b/src/assets/icons/svg/system.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/system.svg
rename to src/assets/icons/svg/system.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/tab.svg b/src/assets/icons/svg/tab.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/tab.svg
rename to src/assets/icons/svg/tab.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/table.svg b/src/assets/icons/svg/table.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/table.svg
rename to src/assets/icons/svg/table.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/textarea.svg b/src/assets/icons/svg/textarea.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/textarea.svg
rename to src/assets/icons/svg/textarea.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/theme.svg b/src/assets/icons/svg/theme.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/theme.svg
rename to src/assets/icons/svg/theme.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/time-range.svg b/src/assets/icons/svg/time-range.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/time-range.svg
rename to src/assets/icons/svg/time-range.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/time.svg b/src/assets/icons/svg/time.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/time.svg
rename to src/assets/icons/svg/time.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/tool.svg b/src/assets/icons/svg/tool.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/tool.svg
rename to src/assets/icons/svg/tool.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/tree-table.svg b/src/assets/icons/svg/tree-table.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/tree-table.svg
rename to src/assets/icons/svg/tree-table.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/tree.svg b/src/assets/icons/svg/tree.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/tree.svg
rename to src/assets/icons/svg/tree.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/upload.svg b/src/assets/icons/svg/upload.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/upload.svg
rename to src/assets/icons/svg/upload.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/user.svg b/src/assets/icons/svg/user.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/user.svg
rename to src/assets/icons/svg/user.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/validCode.svg b/src/assets/icons/svg/validCode.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/validCode.svg
rename to src/assets/icons/svg/validCode.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/wechat.svg b/src/assets/icons/svg/wechat.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/wechat.svg
rename to src/assets/icons/svg/wechat.svg
diff --git a/ruoyi-ui/src/assets/icons/svg/zip.svg b/src/assets/icons/svg/zip.svg
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svg/zip.svg
rename to src/assets/icons/svg/zip.svg
diff --git a/ruoyi-ui/src/assets/icons/svgo.yml b/src/assets/icons/svgo.yml
similarity index 100%
rename from ruoyi-ui/src/assets/icons/svgo.yml
rename to src/assets/icons/svgo.yml
diff --git a/ruoyi-ui/src/assets/images/dark.svg b/src/assets/images/dark.svg
similarity index 100%
rename from ruoyi-ui/src/assets/images/dark.svg
rename to src/assets/images/dark.svg
diff --git a/ruoyi-ui/src/assets/images/light.svg b/src/assets/images/light.svg
similarity index 100%
rename from ruoyi-ui/src/assets/images/light.svg
rename to src/assets/images/light.svg
diff --git a/ruoyi-ui/src/assets/images/login-background.jpg b/src/assets/images/login-background.jpg
similarity index 100%
rename from ruoyi-ui/src/assets/images/login-background.jpg
rename to src/assets/images/login-background.jpg
Binary files differ
diff --git a/ruoyi-ui/src/assets/images/profile.jpg b/src/assets/images/profile.jpg
similarity index 100%
rename from ruoyi-ui/src/assets/images/profile.jpg
rename to src/assets/images/profile.jpg
Binary files differ
diff --git a/ruoyi-ui/src/assets/logo/logo.png b/src/assets/logo/logo.png
similarity index 100%
rename from ruoyi-ui/src/assets/logo/logo.png
rename to src/assets/logo/logo.png
Binary files differ
diff --git a/ruoyi-ui/src/assets/styles/btn.scss b/src/assets/styles/btn.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/btn.scss
rename to src/assets/styles/btn.scss
diff --git a/ruoyi-ui/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/element-ui.scss
rename to src/assets/styles/element-ui.scss
diff --git a/ruoyi-ui/src/assets/styles/element-variables.scss b/src/assets/styles/element-variables.scss
similarity index 96%
rename from ruoyi-ui/src/assets/styles/element-variables.scss
rename to src/assets/styles/element-variables.scss
index 1615ff2..1a7cce3 100644
--- a/ruoyi-ui/src/assets/styles/element-variables.scss
+++ b/src/assets/styles/element-variables.scss
@@ -4,7 +4,7 @@
**/
/* theme color */
-$--color-primary: #1890ff;
+$--color-primary: #3a80c2;
$--color-success: #13ce66;
$--color-warning: #ffba00;
$--color-danger: #ff4949;
diff --git a/ruoyi-ui/src/assets/styles/index.scss b/src/assets/styles/index.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/index.scss
rename to src/assets/styles/index.scss
diff --git a/ruoyi-ui/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/mixin.scss
rename to src/assets/styles/mixin.scss
diff --git a/ruoyi-ui/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/ruoyi.scss
rename to src/assets/styles/ruoyi.scss
diff --git a/ruoyi-ui/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss
similarity index 95%
rename from ruoyi-ui/src/assets/styles/sidebar.scss
rename to src/assets/styles/sidebar.scss
index ed308b8..fdb8adb 100644
--- a/ruoyi-ui/src/assets/styles/sidebar.scss
+++ b/src/assets/styles/sidebar.scss
@@ -15,7 +15,8 @@
-webkit-transition: width .28s;
transition: width 0.28s;
width: $base-sidebar-width !important;
- background-color: $base-menu-background;
+ background: -webkit-linear-gradient(bottom, #3d6df8, #5b8cff);
+
height: 100%;
position: fixed;
font-size: 0px;
@@ -33,7 +34,7 @@
}
.scrollbar-wrapper {
- overflow-x: hidden !important;
+ background: url('~@/assets/common/leftnavBg.png') no-repeat 0 100%;
}
.el-scrollbar__bar.is-vertical {
@@ -46,7 +47,7 @@
&.has-logo {
.el-scrollbar {
- height: calc(100% - 50px);
+ height: calc(100% - 28px);
}
}
diff --git a/ruoyi-ui/src/assets/styles/transition.scss b/src/assets/styles/transition.scss
similarity index 100%
rename from ruoyi-ui/src/assets/styles/transition.scss
rename to src/assets/styles/transition.scss
diff --git a/ruoyi-ui/src/assets/styles/variables.scss b/src/assets/styles/variables.scss
similarity index 90%
rename from ruoyi-ui/src/assets/styles/variables.scss
rename to src/assets/styles/variables.scss
index 34484d4..431299d 100644
--- a/ruoyi-ui/src/assets/styles/variables.scss
+++ b/src/assets/styles/variables.scss
@@ -3,22 +3,24 @@
$light-blue:#3A71A8;
$red:#C03639;
$pink: #E65D6E;
-$green: #30B08F;
+$green: #5aecd9;
$tiffany: #4AB7BD;
$yellow:#FEC171;
$panGreen: #30B08F;
+$menuActiveText:#4fa8db;
+
// 榛樿鑿滃崟涓婚椋庢牸
-$base-menu-color:#bfcbd9;
+$base-menu-color:#f7f8f8;
$base-menu-color-active:#f4f4f5;
-$base-menu-background:#304156;
+$base-menu-background:transparent;
$base-logo-title-color: #ffffff;
$base-menu-light-color:rgba(0,0,0,.70);
$base-menu-light-background:#ffffff;
$base-logo-light-title-color: #001529;
-$base-sub-menu-background:#1f2d3d;
+$base-sub-menu-background:#81bcec;
$base-sub-menu-hover:#001528;
// 鑷畾涔夋殫鑹茶彍鍗曢鏍�
diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
new file mode 100644
index 0000000..8e6be4c
--- /dev/null
+++ b/src/components/Breadcrumb/index.vue
@@ -0,0 +1,83 @@
+<!-- 椤堕儴璺緞 -->
+<template>
+ <el-breadcrumb class="app-breadcrumb" separator="/">
+ <transition-group name="breadcrumb">
+ <el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
+ <span
+ v-if="item.redirect === 'noRedirect' || index == levelList.length - 1"
+ class="no-redirect"
+ >{{ item.meta.title }}</span
+ >
+ <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
+ </el-breadcrumb-item>
+ </transition-group>
+ </el-breadcrumb>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ levelList: null,
+ };
+ },
+ watch: {
+ $route(route) {
+ // if you go to the redirect page, do not update the breadcrumbs
+ if (route.path.startsWith("/redirect/")) {
+ return;
+ }
+ this.getBreadcrumb();
+ },
+ },
+ created() {
+ this.getBreadcrumb();
+ },
+ methods: {
+ getBreadcrumb() {
+ // only show routes with meta.title
+ let matched = this.$route.matched.filter(
+ (item) => item.meta && item.meta.title
+ );
+ const first = matched[0];
+
+ if (!this.isDashboard(first)) {
+ matched = [{ path: "/index", meta: { title: "棣栭〉" } }].concat(matched);
+ }
+
+ this.levelList = matched.filter(
+ (item) => item.meta && item.meta.title && item.meta.breadcrumb !== false
+ );
+ },
+ isDashboard(route) {
+ const name = route && route.name;
+ if (!name) {
+ return false;
+ }
+ return name.trim() === "Index";
+ },
+ handleLink(item) {
+ const { redirect, path } = item;
+ if (redirect) {
+ this.$router.push(redirect);
+ return;
+ }
+ this.$router.push(path);
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.app-breadcrumb.el-breadcrumb {
+ display: inline-block;
+ font-size: 14px;
+ line-height: 50px;
+ margin-left: 8px;
+
+ .no-redirect {
+ color: #97a8be;
+ cursor: text;
+ }
+}
+</style>
diff --git a/ruoyi-ui/src/components/Crontab/day.vue b/src/components/Crontab/day.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/day.vue
rename to src/components/Crontab/day.vue
diff --git a/ruoyi-ui/src/components/Crontab/hour.vue b/src/components/Crontab/hour.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/hour.vue
rename to src/components/Crontab/hour.vue
diff --git a/ruoyi-ui/src/components/Crontab/index.vue b/src/components/Crontab/index.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/index.vue
rename to src/components/Crontab/index.vue
diff --git a/ruoyi-ui/src/components/Crontab/min.vue b/src/components/Crontab/min.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/min.vue
rename to src/components/Crontab/min.vue
diff --git a/ruoyi-ui/src/components/Crontab/month.vue b/src/components/Crontab/month.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/month.vue
rename to src/components/Crontab/month.vue
diff --git a/ruoyi-ui/src/components/Crontab/result.vue b/src/components/Crontab/result.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/result.vue
rename to src/components/Crontab/result.vue
diff --git a/ruoyi-ui/src/components/Crontab/second.vue b/src/components/Crontab/second.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/second.vue
rename to src/components/Crontab/second.vue
diff --git a/ruoyi-ui/src/components/Crontab/week.vue b/src/components/Crontab/week.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/week.vue
rename to src/components/Crontab/week.vue
diff --git a/ruoyi-ui/src/components/Crontab/year.vue b/src/components/Crontab/year.vue
similarity index 100%
rename from ruoyi-ui/src/components/Crontab/year.vue
rename to src/components/Crontab/year.vue
diff --git a/ruoyi-ui/src/components/DictData/index.js b/src/components/DictData/index.js
similarity index 100%
rename from ruoyi-ui/src/components/DictData/index.js
rename to src/components/DictData/index.js
diff --git a/ruoyi-ui/src/components/DictTag/index.vue b/src/components/DictTag/index.vue
similarity index 93%
rename from ruoyi-ui/src/components/DictTag/index.vue
rename to src/components/DictTag/index.vue
index 4c196c4..1c71696 100644
--- a/ruoyi-ui/src/components/DictTag/index.vue
+++ b/src/components/DictTag/index.vue
@@ -36,7 +36,7 @@
},
computed: {
values() {
- if (this.value !== null && typeof this.value !== 'undefined') {
+ if (this.value !== null && typeof this.value !== "undefined") {
return Array.isArray(this.value) ? this.value : [String(this.value)];
} else {
return [];
@@ -49,4 +49,4 @@
.el-tag + .el-tag {
margin-left: 10px;
}
-</style>
\ No newline at end of file
+</style>
diff --git a/ruoyi-ui/src/components/Editor/index.vue b/src/components/Editor/index.vue
similarity index 99%
rename from ruoyi-ui/src/components/Editor/index.vue
rename to src/components/Editor/index.vue
index 6bb5a18..fccd83d 100644
--- a/ruoyi-ui/src/components/Editor/index.vue
+++ b/src/components/Editor/index.vue
@@ -1,3 +1,4 @@
+<!-- 涓婁紶鍥剧墖s -->
<template>
<div>
<el-upload
diff --git a/ruoyi-ui/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
similarity index 81%
rename from ruoyi-ui/src/components/FileUpload/index.vue
rename to src/components/FileUpload/index.vue
index 6c583cf..cfc8070 100644
--- a/ruoyi-ui/src/components/FileUpload/index.vue
+++ b/src/components/FileUpload/index.vue
@@ -1,3 +1,4 @@
+<!-- 涓婁紶鏂囦欢 -->
<template>
<div class="upload-file">
<el-upload
@@ -19,20 +20,38 @@
<!-- 涓婁紶鎻愮ず -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
璇蜂笂浼�
- <template v-if="fileSize"> 澶у皬涓嶈秴杩� <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
- <template v-if="fileType"> 鏍煎紡涓� <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+ <template v-if="fileSize">
+ 澶у皬涓嶈秴杩� <b style="color: #f56c6c">{{ fileSize }}MB</b>
+ </template>
+ <template v-if="fileType">
+ 鏍煎紡涓� <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
+ </template>
鐨勬枃浠�
</div>
</el-upload>
<!-- 鏂囦欢鍒楄〃 -->
- <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
- <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
- <el-link :href="`${baseUrl}${file.url}`" :underline="false" target="_blank">
+ <transition-group
+ class="upload-file-list el-upload-list el-upload-list--text"
+ name="el-fade-in-linear"
+ tag="ul"
+ >
+ <li
+ :key="file.url"
+ class="el-upload-list__item ele-upload-list__item-content"
+ v-for="(file, index) in fileList"
+ >
+ <el-link
+ :href="`${baseUrl}${file.url}`"
+ :underline="false"
+ target="_blank"
+ >
<span class="el-icon-document"> {{ getFileName(file.name) }} </span>
</el-link>
<div class="ele-upload-list__item-content-action">
- <el-link :underline="false" @click="handleDelete(index)" type="danger">鍒犻櫎</el-link>
+ <el-link :underline="false" @click="handleDelete(index)" type="danger"
+ >鍒犻櫎</el-link
+ >
</div>
</li>
</transition-group>
@@ -65,8 +84,8 @@
// 鏄惁鏄剧ず鎻愮ず
isShowTip: {
type: Boolean,
- default: true
- }
+ default: true,
+ },
},
data() {
return {
@@ -86,9 +105,9 @@
if (val) {
let temp = 1;
// 棣栧厛灏嗗�艰浆涓烘暟缁�
- const list = Array.isArray(val) ? val : this.value.split(',');
+ const list = Array.isArray(val) ? val : this.value.split(",");
// 鐒跺悗灏嗘暟缁勮浆涓哄璞℃暟缁�
- this.fileList = list.map(item => {
+ this.fileList = list.map((item) => {
if (typeof item === "string") {
item = { name: item, url: item };
}
@@ -101,8 +120,8 @@
}
},
deep: true,
- immediate: true
- }
+ immediate: true,
+ },
},
computed: {
// 鏄惁鏄剧ず鎻愮ず
@@ -115,11 +134,13 @@
handleBeforeUpload(file) {
// 鏍℃鏂囦欢绫诲瀷
if (this.fileType) {
- const fileName = file.name.split('.');
+ const fileName = file.name.split(".");
const fileExt = fileName[fileName.length - 1];
const isTypeOk = this.fileType.indexOf(fileExt) >= 0;
if (!isTypeOk) {
- this.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join("/")}鏍煎紡鏂囦欢!`);
+ this.$modal.msgError(
+ `鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join("/")}鏍煎紡鏂囦欢!`
+ );
return false;
}
}
@@ -142,7 +163,7 @@
// 涓婁紶澶辫触
handleUploadError(err) {
this.$modal.msgError("涓婁紶鏂囦欢澶辫触锛岃閲嶈瘯");
- this.$modal.closeLoading()
+ this.$modal.closeLoading();
},
// 涓婁紶鎴愬姛鍥炶皟
handleUploadSuccess(res, file) {
@@ -187,9 +208,9 @@
for (let i in list) {
strs += list[i].url + separator;
}
- return strs != '' ? strs.substr(0, strs.length - 1) : '';
- }
- }
+ return strs != "" ? strs.substr(0, strs.length - 1) : "";
+ },
+ },
};
</script>
diff --git a/ruoyi-ui/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue
similarity index 97%
rename from ruoyi-ui/src/components/Hamburger/index.vue
rename to src/components/Hamburger/index.vue
index 368b002..11e9435 100644
--- a/ruoyi-ui/src/components/Hamburger/index.vue
+++ b/src/components/Hamburger/index.vue
@@ -1,3 +1,4 @@
+<!-- svg鍥炬爣灏佽 -->
<template>
<div style="padding: 0 15px;" @click="toggleClick">
<svg
diff --git a/ruoyi-ui/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue
similarity index 98%
rename from ruoyi-ui/src/components/HeaderSearch/index.vue
rename to src/components/HeaderSearch/index.vue
index c4d76bb..78fe2c0 100644
--- a/ruoyi-ui/src/components/HeaderSearch/index.vue
+++ b/src/components/HeaderSearch/index.vue
@@ -1,3 +1,4 @@
+<!-- 浣跨敤鍏ㄥ眬svgicon鍥炬爣 -->
<template>
<div :class="{'show':show}" class="header-search">
<svg-icon class-name="search-icon" icon-class="search" @click.stop="click" />
diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue
new file mode 100644
index 0000000..aa8d5a6
--- /dev/null
+++ b/src/components/IconSelect/index.vue
@@ -0,0 +1,82 @@
+<!-- @author zhengjie -->
+<!-- 鑷畾涔夊浘鏍囧悕绉板皝瑁� -->
+<template>
+ <div class="icon-body">
+ <el-input
+ v-model="name"
+ style="position: relative"
+ clearable
+ placeholder="璇疯緭鍏ュ浘鏍囧悕绉�"
+ @clear="filterIcons"
+ @input.native="filterIcons"
+ >
+ <i slot="suffix" class="el-icon-search el-input__icon" />
+ </el-input>
+ <div class="icon-list">
+ <div
+ v-for="(item, index) in iconList"
+ :key="index"
+ @click="selectedIcon(item)"
+ >
+ <svg-icon :icon-class="item" style="height: 30px; width: 16px" />
+ <span>{{ item }}</span>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import icons from "./requireIcons";
+export default {
+ name: "IconSelect",
+ data() {
+ return {
+ name: "",
+ iconList: icons,
+ };
+ },
+ methods: {
+ filterIcons() {
+ this.iconList = icons;
+ if (this.name) {
+ this.iconList = this.iconList.filter((item) =>
+ item.includes(this.name)
+ );
+ }
+ },
+ selectedIcon(name) {
+ this.$emit("selected", name);
+ document.body.click();
+ },
+ reset() {
+ this.name = "";
+ this.iconList = icons;
+ },
+ },
+};
+</script>
+
+<style rel="stylesheet/scss" lang="scss" scoped>
+.icon-body {
+ width: 100%;
+ padding: 10px;
+ .icon-list {
+ height: 200px;
+ overflow-y: scroll;
+ div {
+ height: 30px;
+ line-height: 30px;
+ margin-bottom: -5px;
+ cursor: pointer;
+ width: 33%;
+ float: left;
+ }
+ span {
+ display: inline-block;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+ }
+ }
+}
+</style>
diff --git a/ruoyi-ui/src/components/IconSelect/requireIcons.js b/src/components/IconSelect/requireIcons.js
similarity index 100%
rename from ruoyi-ui/src/components/IconSelect/requireIcons.js
rename to src/components/IconSelect/requireIcons.js
diff --git a/ruoyi-ui/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
similarity index 97%
rename from ruoyi-ui/src/components/ImagePreview/index.vue
rename to src/components/ImagePreview/index.vue
index 3c770c7..1423d80 100644
--- a/ruoyi-ui/src/components/ImagePreview/index.vue
+++ b/src/components/ImagePreview/index.vue
@@ -1,3 +1,4 @@
+<!-- image鍥剧墖瀹瑰櫒灏佽 -->
<template>
<el-image
:src="`${realSrc}`"
diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue
similarity index 82%
rename from ruoyi-ui/src/components/ImageUpload/index.vue
rename to src/components/ImageUpload/index.vue
index b57a15e..f70e1fc 100644
--- a/ruoyi-ui/src/components/ImageUpload/index.vue
+++ b/src/components/ImageUpload/index.vue
@@ -1,3 +1,4 @@
+<!-- 涓婁紶鏂囦欢灏佽 -->
<template>
<div class="component-upload-image">
<el-upload
@@ -15,16 +16,20 @@
:headers="headers"
:file-list="fileList"
:on-preview="handlePictureCardPreview"
- :class="{hide: this.fileList.length >= this.limit}"
+ :class="{ hide: this.fileList.length >= this.limit }"
>
<i class="el-icon-plus"></i>
</el-upload>
-
+
<!-- 涓婁紶鎻愮ず -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
璇蜂笂浼�
- <template v-if="fileSize"> 澶у皬涓嶈秴杩� <b style="color: #f56c6c">{{ fileSize }}MB</b> </template>
- <template v-if="fileType"> 鏍煎紡涓� <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
+ <template v-if="fileSize">
+ 澶у皬涓嶈秴杩� <b style="color: #f56c6c">{{ fileSize }}MB</b>
+ </template>
+ <template v-if="fileType">
+ 鏍煎紡涓� <b style="color: #f56c6c">{{ fileType.join("/") }}</b>
+ </template>
鐨勬枃浠�
</div>
@@ -55,7 +60,7 @@
},
// 澶у皬闄愬埗(MB)
fileSize: {
- type: Number,
+ type: Number,
default: 5,
},
// 鏂囦欢绫诲瀷, 渚嬪['png', 'jpg', 'jpeg']
@@ -66,8 +71,8 @@
// 鏄惁鏄剧ず鎻愮ず
isShowTip: {
type: Boolean,
- default: true
- }
+ default: true,
+ },
},
data() {
return {
@@ -81,7 +86,7 @@
headers: {
Authorization: "Bearer " + getToken(),
},
- fileList: []
+ fileList: [],
};
},
watch: {
@@ -89,14 +94,14 @@
handler(val) {
if (val) {
// 棣栧厛灏嗗�艰浆涓烘暟缁�
- const list = Array.isArray(val) ? val : this.value.split(',');
+ const list = Array.isArray(val) ? val : this.value.split(",");
// 鐒跺悗灏嗘暟缁勮浆涓哄璞℃暟缁�
- this.fileList = list.map(item => {
+ this.fileList = list.map((item) => {
if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1) {
- item = { name: this.baseUrl + item, url: this.baseUrl + item };
+ item = { name: this.baseUrl + item, url: this.baseUrl + item };
} else {
- item = { name: item, url: item };
+ item = { name: item, url: item };
}
}
return item;
@@ -107,8 +112,8 @@
}
},
deep: true,
- immediate: true
- }
+ immediate: true,
+ },
},
computed: {
// 鏄惁鏄剧ず鎻愮ず
@@ -125,7 +130,7 @@
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
- isImg = this.fileType.some(type => {
+ isImg = this.fileType.some((type) => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
@@ -135,7 +140,9 @@
}
if (!isImg) {
- this.$modal.msgError(`鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join("/")}鍥剧墖鏍煎紡鏂囦欢!`);
+ this.$modal.msgError(
+ `鏂囦欢鏍煎紡涓嶆纭�, 璇蜂笂浼�${this.fileType.join("/")}鍥剧墖鏍煎紡鏂囦欢!`
+ );
return false;
}
if (this.fileSize) {
@@ -167,8 +174,8 @@
},
// 鍒犻櫎鍥剧墖
handleDelete(file) {
- const findex = this.fileList.map(f => f.name).indexOf(file.name);
- if(findex > -1) {
+ const findex = this.fileList.map((f) => f.name).indexOf(file.name);
+ if (findex > -1) {
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
}
@@ -202,25 +209,25 @@
strs += list[i].url.replace(this.baseUrl, "") + separator;
}
}
- return strs != '' ? strs.substr(0, strs.length - 1) : '';
- }
- }
+ return strs != "" ? strs.substr(0, strs.length - 1) : "";
+ },
+ },
};
</script>
<style scoped lang="scss">
// .el-upload--picture-card 鎺у埗鍔犲彿閮ㄥ垎
::v-deep.hide .el-upload--picture-card {
- display: none;
+ display: none;
}
// 鍘绘帀鍔ㄧ敾鏁堟灉
::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active {
- transition: all 0s;
+ transition: all 0s;
}
-::v-deep .el-list-enter, .el-list-leave-active {
- opacity: 0;
- transform: translateY(0);
+::v-deep .el-list-enter,
+.el-list-leave-active {
+ opacity: 0;
+ transform: translateY(0);
}
</style>
-
diff --git a/src/components/PageTools/index.vue b/src/components/PageTools/index.vue
new file mode 100644
index 0000000..5861bf4
--- /dev/null
+++ b/src/components/PageTools/index.vue
@@ -0,0 +1,42 @@
+<!-- tag鏍囩灏佽 -->
+<template>
+ <el-card class="box-card">
+ <el-row type="flex">
+ <el-col>
+ <el-tag v-if="isShowLeft">
+ <i :class="leftIon"></i>
+ <slot name="left-tag" />
+ </el-tag>
+ </el-col>
+ <el-col>
+ <el-row type="flex" justify="end">
+ <slot name="right" />
+ </el-row>
+ </el-col>
+ </el-row>
+ </el-card>
+</template>
+
+<script>
+export default {
+ name: "PageTools",
+ data() {
+ return {};
+ },
+ props: {
+ leftIon: {
+ type: String,
+ default: "el-icon-info",
+ },
+ isShowLeft: {
+ type: Boolean,
+ default: true,
+ },
+ },
+ created() {},
+
+ methods: {},
+};
+</script>
+
+<style lang="less" scoped></style>
diff --git a/ruoyi-ui/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
similarity index 97%
rename from ruoyi-ui/src/components/Pagination/index.vue
rename to src/components/Pagination/index.vue
index 56f5a6b..3dc5b9f 100644
--- a/ruoyi-ui/src/components/Pagination/index.vue
+++ b/src/components/Pagination/index.vue
@@ -1,3 +1,5 @@
+
+<!-- 搴曢儴鍒嗛〉缁勪欢灏佽 -->
<template>
<div :class="{'hidden':hidden}" class="pagination-container">
<el-pagination
@@ -16,6 +18,7 @@
</template>
<script>
+// 寰呭畾
import { scrollTo } from '@/utils/scroll-to'
export default {
diff --git a/ruoyi-ui/src/components/PanThumb/index.vue b/src/components/PanThumb/index.vue
similarity index 98%
rename from ruoyi-ui/src/components/PanThumb/index.vue
rename to src/components/PanThumb/index.vue
index 1bcf417..ee796e7 100644
--- a/ruoyi-ui/src/components/PanThumb/index.vue
+++ b/src/components/PanThumb/index.vue
@@ -1,3 +1,4 @@
+<!-- 鍥剧墖灞曠ず椤甸潰 -->
<template>
<div :style="{zIndex:zIndex,height:height,width:width}" class="pan-item">
<div class="pan-info">
diff --git a/ruoyi-ui/src/components/ParentView/index.vue b/src/components/ParentView/index.vue
similarity index 100%
rename from ruoyi-ui/src/components/ParentView/index.vue
rename to src/components/ParentView/index.vue
diff --git a/ruoyi-ui/src/components/RightPanel/index.vue b/src/components/RightPanel/index.vue
similarity index 100%
rename from ruoyi-ui/src/components/RightPanel/index.vue
rename to src/components/RightPanel/index.vue
diff --git a/ruoyi-ui/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue
similarity index 69%
rename from ruoyi-ui/src/components/RightToolbar/index.vue
rename to src/components/RightToolbar/index.vue
index 527e07c..14dfa2d 100644
--- a/ruoyi-ui/src/components/RightToolbar/index.vue
+++ b/src/components/RightToolbar/index.vue
@@ -1,14 +1,42 @@
+<!-- 榧犳爣瑙﹀彂寮瑰嚭鎴� -->
<template>
<div class="top-right-btn" :style="style">
<el-row>
- <el-tooltip class="item" effect="dark" :content="showSearch ? '闅愯棌鎼滅储' : '鏄剧ず鎼滅储'" placement="top" v-if="search">
- <el-button size="mini" circle icon="el-icon-search" @click="toggleSearch()" />
+ <el-tooltip
+ class="item"
+ effect="dark"
+ :content="showSearch ? '闅愯棌鎼滅储' : '鏄剧ず鎼滅储'"
+ placement="top"
+ v-if="search"
+ >
+ <el-button
+ size="mini"
+ circle
+ icon="el-icon-search"
+ @click="toggleSearch()"
+ />
</el-tooltip>
<el-tooltip class="item" effect="dark" content="鍒锋柊" placement="top">
- <el-button size="mini" circle icon="el-icon-refresh" @click="refresh()" />
+ <el-button
+ size="mini"
+ circle
+ icon="el-icon-refresh"
+ @click="refresh()"
+ />
</el-tooltip>
- <el-tooltip class="item" effect="dark" content="鏄鹃殣鍒�" placement="top" v-if="columns">
- <el-button size="mini" circle icon="el-icon-menu" @click="showColumn()" />
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="鏄鹃殣鍒�"
+ placement="top"
+ v-if="columns"
+ >
+ <el-button
+ size="mini"
+ circle
+ icon="el-icon-menu"
+ @click="showColumn()"
+ />
</el-tooltip>
</el-row>
<el-dialog :title="title" :visible.sync="open" append-to-body>
@@ -37,7 +65,7 @@
props: {
showSearch: {
type: Boolean,
- default: true,
+ default: true, //required鏄惁蹇呴』锛屼负true娓叉煋鏃朵細鎶涘嚭typeError锛沝efault锛氶粯璁ゅ�硷紝
},
columns: {
type: Array,
@@ -58,7 +86,7 @@
ret.marginRight = `${this.gutter / 2}px`;
}
return ret;
- }
+ },
},
created() {
// 鏄鹃殣鍒楀垵濮嬮粯璁ら殣钘忓垪
diff --git a/ruoyi-ui/src/components/RuoYi/Doc/index.vue b/src/components/RuoYi/Doc/index.vue
similarity index 100%
rename from ruoyi-ui/src/components/RuoYi/Doc/index.vue
rename to src/components/RuoYi/Doc/index.vue
diff --git a/ruoyi-ui/src/components/RuoYi/Git/index.vue b/src/components/RuoYi/Git/index.vue
similarity index 100%
rename from ruoyi-ui/src/components/RuoYi/Git/index.vue
rename to src/components/RuoYi/Git/index.vue
diff --git a/ruoyi-ui/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue
similarity index 97%
rename from ruoyi-ui/src/components/Screenfull/index.vue
rename to src/components/Screenfull/index.vue
index d4e539c..1a81a5c 100644
--- a/ruoyi-ui/src/components/Screenfull/index.vue
+++ b/src/components/Screenfull/index.vue
@@ -1,3 +1,4 @@
+<!-- 鍥炬爣鐐瑰嚮鏀惧ぇ -->
<template>
<div>
<svg-icon :icon-class="isFullscreen?'exit-fullscreen':'fullscreen'" @click="click" />
diff --git a/src/components/SizeSelect/index.vue b/src/components/SizeSelect/index.vue
new file mode 100644
index 0000000..3cd013a
--- /dev/null
+++ b/src/components/SizeSelect/index.vue
@@ -0,0 +1,61 @@
+<!-- 涓嬫媺鑿滃崟灏佽 -->
+<template>
+ <el-dropdown trigger="click" @command="handleSetSize">
+ <div>
+ <svg-icon class-name="size-icon" icon-class="size" />
+ </div>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item
+ v-for="item of sizeOptions"
+ :key="item.value"
+ :disabled="size === item.value"
+ :command="item.value"
+ >
+ {{ item.label }}
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ sizeOptions: [
+ { label: "Default", value: "default" },
+ { label: "Medium", value: "medium" },
+ { label: "Small", value: "small" },
+ { label: "Mini", value: "mini" },
+ ],
+ };
+ },
+ computed: {
+ size() {
+ return this.$store.getters.size;
+ },
+ },
+ methods: {
+ handleSetSize(size) {
+ this.$ELEMENT.size = size;
+ this.$store.dispatch("app/setSize", size);
+ this.refreshView();
+ this.$message({
+ message: "Switch Size Success",
+ type: "success",
+ });
+ },
+ refreshView() {
+ // In order to make the cached page re-rendered
+ this.$store.dispatch("tagsView/delAllCachedViews", this.$route);
+
+ const { fullPath } = this.$route;
+
+ this.$nextTick(() => {
+ this.$router.replace({
+ path: "/redirect" + fullPath,
+ });
+ });
+ },
+ },
+};
+</script>
diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
new file mode 100644
index 0000000..97456a4
--- /dev/null
+++ b/src/components/SvgIcon/index.vue
@@ -0,0 +1,67 @@
+<!-- svg灏佽 -->
+<template>
+ <div
+ v-if="isExternal"
+ :style="styleExternalIcon"
+ class="svg-external-icon svg-icon"
+ v-on="$listeners"
+ />
+ <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners">
+ <use :xlink:href="iconName" />
+ </svg>
+</template>
+
+<script>
+import { isExternal } from "@/utils/validate";
+
+export default {
+ name: "SvgIcon",
+ props: {
+ iconClass: {
+ type: String,
+ required: true,
+ },
+ className: {
+ type: String,
+ default: "",
+ },
+ },
+ computed: {
+ isExternal() {
+ return isExternal(this.iconClass);
+ },
+ iconName() {
+ return `#icon-${this.iconClass}`;
+ },
+ svgClass() {
+ if (this.className) {
+ return "svg-icon " + this.className;
+ } else {
+ return "svg-icon";
+ }
+ },
+ styleExternalIcon() {
+ return {
+ mask: `url(${this.iconClass}) no-repeat 50% 50%`,
+ "-webkit-mask": `url(${this.iconClass}) no-repeat 50% 50%`,
+ };
+ },
+ },
+};
+</script>
+
+<style scoped>
+.svg-icon {
+ width: 1em;
+ height: 1em;
+ vertical-align: -0.15em;
+ fill: currentColor;
+ overflow: hidden;
+}
+
+.svg-external-icon {
+ background-color: currentColor;
+ mask-size: cover !important;
+ display: inline-block;
+}
+</style>
diff --git a/ruoyi-ui/src/components/ThemePicker/index.vue b/src/components/ThemePicker/index.vue
similarity index 99%
rename from ruoyi-ui/src/components/ThemePicker/index.vue
rename to src/components/ThemePicker/index.vue
index 1714e1f..aac3187 100644
--- a/ruoyi-ui/src/components/ThemePicker/index.vue
+++ b/src/components/ThemePicker/index.vue
@@ -1,3 +1,4 @@
+<!-- 棰滆壊閫夋嫨鍣� -->
<template>
<el-color-picker
v-model="theme"
diff --git a/ruoyi-ui/src/components/TopNav/index.vue b/src/components/TopNav/index.vue
similarity index 72%
rename from ruoyi-ui/src/components/TopNav/index.vue
rename to src/components/TopNav/index.vue
index 5f0edbe..aec393d 100644
--- a/ruoyi-ui/src/components/TopNav/index.vue
+++ b/src/components/TopNav/index.vue
@@ -1,3 +1,4 @@
+<!-- 椤堕儴瀵艰埅灏佽 -->
<template>
<el-menu
:default-active="activeMenu"
@@ -5,14 +6,22 @@
@select="handleSelect"
>
<template v-for="(item, index) in topMenus">
- <el-menu-item :style="{'--theme': theme}" :index="item.path" :key="index" v-if="index < visibleNumber"
+ <el-menu-item
+ :style="{ '--theme': theme }"
+ :index="item.path"
+ :key="index"
+ v-if="index < visibleNumber"
><svg-icon :icon-class="item.meta.icon" />
{{ item.meta.title }}</el-menu-item
>
</template>
<!-- 椤堕儴鑿滃崟瓒呭嚭鏁伴噺鎶樺彔 -->
- <el-submenu :style="{'--theme': theme}" index="more" v-if="topMenus.length > visibleNumber">
+ <el-submenu
+ :style="{ '--theme': theme }"
+ index="more"
+ v-if="topMenus.length > visibleNumber"
+ >
<template slot="title">鏇村鑿滃崟</template>
<template v-for="(item, index) in topMenus">
<el-menu-item
@@ -31,7 +40,7 @@
import { constantRoutes } from "@/router";
// 闅愯棌渚ц竟鏍忚矾鐢�
-const hideList = ['/index', '/user/profile'];
+const hideList = ["/index", "/user/profile"];
export default {
data() {
@@ -39,7 +48,7 @@
// 椤堕儴鏍忓垵濮嬫暟
visibleNumber: 5,
// 褰撳墠婵�娲昏彍鍗曠殑 index
- currentIndex: undefined
+ currentIndex: undefined,
};
},
computed: {
@@ -53,9 +62,9 @@
if (menu.hidden !== true) {
// 鍏煎椤堕儴鏍忎竴绾ц彍鍗曞唴閮ㄨ烦杞�
if (menu.path === "/") {
- topMenus.push(menu.children[0]);
+ topMenus.push(menu.children[0]);
} else {
- topMenus.push(menu);
+ topMenus.push(menu);
}
}
});
@@ -71,11 +80,12 @@
this.routers.map((router) => {
for (var item in router.children) {
if (router.children[item].parentPath === undefined) {
- if(router.path === "/") {
+ if (router.path === "/") {
router.children[item].path = "/" + router.children[item].path;
} else {
- if(!this.ishttp(router.children[item].path)) {
- router.children[item].path = router.path + "/" + router.children[item].path;
+ if (!this.ishttp(router.children[item].path)) {
+ router.children[item].path =
+ router.path + "/" + router.children[item].path;
}
}
router.children[item].parentPath = router.path;
@@ -89,25 +99,29 @@
activeMenu() {
const path = this.$route.path;
let activePath = path;
- if (path !== undefined && path.lastIndexOf("/") > 0 && hideList.indexOf(path) === -1) {
+ if (
+ path !== undefined &&
+ path.lastIndexOf("/") > 0 &&
+ hideList.indexOf(path) === -1
+ ) {
const tmpPath = path.substring(1, path.length);
activePath = "/" + tmpPath.substring(0, tmpPath.indexOf("/"));
if (!this.$route.meta.link) {
- this.$store.dispatch('app/toggleSideBarHide', false);
+ this.$store.dispatch("app/toggleSideBarHide", false);
}
- } else if(!this.$route.children) {
+ } else if (!this.$route.children) {
activePath = path;
- this.$store.dispatch('app/toggleSideBarHide', true);
+ this.$store.dispatch("app/toggleSideBarHide", true);
}
this.activeRoutes(activePath);
return activePath;
},
},
beforeMount() {
- window.addEventListener('resize', this.setVisibleNumber)
+ window.addEventListener("resize", this.setVisibleNumber);
},
beforeDestroy() {
- window.removeEventListener('resize', this.setVisibleNumber)
+ window.removeEventListener("resize", this.setVisibleNumber);
},
mounted() {
this.setVisibleNumber();
@@ -121,18 +135,18 @@
// 鑿滃崟閫夋嫨浜嬩欢
handleSelect(key, keyPath) {
this.currentIndex = key;
- const route = this.routers.find(item => item.path === key);
+ const route = this.routers.find((item) => item.path === key);
if (this.ishttp(key)) {
// http(s):// 璺緞鏂扮獥鍙f墦寮�
window.open(key, "_blank");
} else if (!route || !route.children) {
// 娌℃湁瀛愯矾鐢辫矾寰勫唴閮ㄦ墦寮�
this.$router.push({ path: key });
- this.$store.dispatch('app/toggleSideBarHide', true);
+ this.$store.dispatch("app/toggleSideBarHide", true);
} else {
// 鏄剧ず宸︿晶鑱斿姩鑿滃崟
this.activeRoutes(key);
- this.$store.dispatch('app/toggleSideBarHide', false);
+ this.$store.dispatch("app/toggleSideBarHide", false);
}
},
// 褰撳墠婵�娲荤殑璺敱
@@ -145,15 +159,15 @@
}
});
}
- if(routes.length > 0) {
+ if (routes.length > 0) {
this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
} else {
- this.$store.dispatch('app/toggleSideBarHide', true);
+ this.$store.dispatch("app/toggleSideBarHide", true);
}
},
ishttp(url) {
- return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1
- }
+ return url.indexOf("http://") !== -1 || url.indexOf("https://") !== -1;
+ },
},
};
</script>
@@ -168,8 +182,9 @@
margin: 0 10px !important;
}
-.topmenu-container.el-menu--horizontal > .el-menu-item.is-active, .el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
- border-bottom: 2px solid #{'var(--theme)'} !important;
+.topmenu-container.el-menu--horizontal > .el-menu-item.is-active,
+.el-menu--horizontal > .el-submenu.is-active .el-submenu__title {
+ border-bottom: 2px solid #{"var(--theme)"} !important;
color: #303133;
}
diff --git a/src/components/UploadExcel/index.vue b/src/components/UploadExcel/index.vue
new file mode 100644
index 0000000..bf6d7a9
--- /dev/null
+++ b/src/components/UploadExcel/index.vue
@@ -0,0 +1,169 @@
+<!-- excel鏂囦欢涓婁紶 -->
+<template>
+ <div class="upload-excel">
+ <div class="btn-upload">
+ <el-button
+ :loading="loading"
+ size="mini"
+ type="primary"
+ @click="handleUpload"
+ >
+ 鐐瑰嚮涓婁紶
+ </el-button>
+ </div>
+
+ <input
+ ref="excel-upload-input"
+ class="excel-upload-input"
+ type="file"
+ accept=".xlsx, .xls"
+ @change="handleClick"
+ />
+ <div
+ class="drop"
+ @drop="handleDrop"
+ @dragover="handleDragover"
+ @dragenter="handleDragover"
+ >
+ <i class="el-icon-upload" />
+ <span>灏嗘枃浠舵嫋鍒版澶�</span>
+ </div>
+ </div>
+</template>
+
+<script>
+import XLSX from "xlsx";
+export default {
+ name: "UploadExcel",
+ props: {
+ beforeUpload: Function, // eslint-disable-line
+ onSuccess: Function, // eslint-disable-line
+ },
+ data() {
+ return {
+ loading: false,
+ excelData: {
+ header: null,
+ results: null,
+ },
+ };
+ },
+ methods: {
+ generateData({ header, results }) {
+ this.excelData.header = header;
+ this.excelData.results = results;
+ this.onSuccess && this.onSuccess(this.excelData);
+ },
+ handleDrop(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ if (this.loading) return;
+ const files = e.dataTransfer.files;
+ if (files.length !== 1) {
+ this.$message.error("Only support uploading one file!");
+ return;
+ }
+ const rawFile = files[0]; // only use files[0]
+ if (!this.isExcel(rawFile)) {
+ this.$message.error(
+ "Only supports upload .xlsx, .xls, .csv suffix files"
+ );
+ return false;
+ }
+ this.upload(rawFile);
+ e.stopPropagation();
+ e.preventDefault();
+ },
+ handleDragover(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ e.dataTransfer.dropEffect = "copy";
+ },
+ handleUpload() {
+ this.$refs["excel-upload-input"].click();
+ },
+ handleClick(e) {
+ const files = e.target.files;
+ const rawFile = files[0]; // only use files[0]
+ if (!rawFile) return;
+ this.upload(rawFile);
+ },
+ upload(rawFile) {
+ this.$refs["excel-upload-input"].value = null; // fix can't select the same excel
+ if (!this.beforeUpload) {
+ this.readerData(rawFile);
+ return;
+ }
+ const before = this.beforeUpload(rawFile);
+ if (before) {
+ this.readerData(rawFile);
+ }
+ },
+ readerData(rawFile) {
+ this.loading = true;
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader();
+ reader.onload = (e) => {
+ const data = e.target.result;
+ const workbook = XLSX.read(data, { type: "array" });
+ const firstSheetName = workbook.SheetNames[0];
+ const worksheet = workbook.Sheets[firstSheetName];
+ const header = this.getHeaderRow(worksheet);
+ const results = XLSX.utils.sheet_to_json(worksheet);
+ this.generateData({ header, results });
+ this.loading = false;
+ resolve();
+ };
+ reader.readAsArrayBuffer(rawFile);
+ });
+ },
+ getHeaderRow(sheet) {
+ const headers = [];
+ const range = XLSX.utils.decode_range(sheet["!ref"]);
+ let C;
+ const R = range.s.r;
+ /* start in the first row */
+ for (C = range.s.c; C <= range.e.c; ++C) {
+ /* walk every column in the range */
+ const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })];
+ /* find the cell in the first row */
+ let hdr = "UNKNOWN " + C; // <-- replace with your desired default
+ if (cell && cell.t) hdr = XLSX.utils.format_cell(cell);
+ headers.push(hdr);
+ }
+ return headers;
+ },
+ isExcel(file) {
+ return /\.(xlsx|xls|csv)$/.test(file.name);
+ },
+ },
+};
+</script>
+
+<style scoped lang="scss">
+.upload-excel {
+ display: flex;
+ justify-content: center;
+ margin-top: 100px;
+ .excel-upload-input {
+ display: none;
+ z-index: -9999;
+ }
+ .btn-upload,
+ .drop {
+ border: 1px dashed #bbb;
+ width: 350px;
+ height: 160px;
+ text-align: center;
+ line-height: 160px;
+ }
+ .drop {
+ line-height: 80px;
+ color: #bbb;
+ i {
+ font-size: 60px;
+ display: block;
+ }
+ }
+}
+</style>
diff --git a/src/components/UploadImg/index.vue b/src/components/UploadImg/index.vue
new file mode 100644
index 0000000..c294ed7
--- /dev/null
+++ b/src/components/UploadImg/index.vue
@@ -0,0 +1,116 @@
+<!-- 鍥剧墖涓婁紶灏佽 -->
+<template>
+ <div>
+ <el-upload
+ :file-list="filelist"
+ v-loading="loading"
+ element-loading-text="鎷煎懡鍔犺浇涓�"
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ action="https://jsonplaceholder.typicode.com/posts/"
+ :http-request="uoloadimg"
+ :on-change="onChange"
+ :on-remove="onRemove"
+ :on-preview="onPreview"
+ :before-upload="onBeforeUpload"
+ list-type="picture-card"
+ :limit="1"
+ :class="filelist.length === 1 ? 'father' : ''"
+ class="custom-upload"
+ >
+ <i class="el-icon-plus"></i>
+ </el-upload>
+ <el-dialog :visible.sync="fileonPreview">
+ <img :src="fileimg" alt="" />
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import COS from "cos-js-sdk-v5";
+var cos = new COS({
+ SecretId: "AKIDxlNmyua2FDwSjmeHGVVHxNYVghSyFhus",
+ SecretKey: "nPp8D5mKgomaBawHPI1avzuhJhqombCZ",
+});
+console.log(cos);
+export default {
+ name: "UploadImg",
+ data() {
+ return {
+ filelist: [],
+ fileimg: "",
+ fileonPreview: false,
+ loading: false,
+ };
+ },
+
+ created() {},
+
+ methods: {
+ // 鍙戦�佸浘鐗囦笂浼�
+ uoloadimg({ file }) {
+ this.loading = true;
+ cos.putObject(
+ {
+ Bucket: "hmhr-31-1313341522" /* 蹇呴』 */,
+ Region: "ap-shanghai" /* 瀛樺偍妗舵墍鍦ㄥ湴鍩燂紝蹇呴』瀛楁 */,
+ Key: file.name /* 蹇呴』 */,
+ StorageClass: "STANDARD",
+ Body: file, // 涓婁紶鏂囦欢瀵硅薄
+ onProgress: function (progressData) {
+ console.log(JSON.stringify(progressData));
+ },
+ },
+ (err, data) => {
+ this.loading = false;
+ if (err || data.statusCode != 200) {
+ return this.$$message.error("");
+ }
+ this.$emit("onSuccess", {
+ url: "https://" + data.Location,
+ });
+ }
+ );
+ },
+ // 瀛樺偍鍥剧墖鍒楄〃
+ onChange(file, filelist) {
+ this.filelist = filelist;
+ },
+ //鍒犻櫎
+ onRemove(file, filelist) {
+ this.filelist = filelist;
+ },
+ // 棰勮
+ onPreview(file) {
+ console.log(file);
+ this.fileonPreview = true;
+ this.fileimg = file.url;
+ },
+ // 涓婁紶鍓嶅垽鏂�
+ onBeforeUpload(file) {
+ console.log(file);
+ const types = ["image/jpeg", "image/png", "image/gif"];
+ if (!types.includes(file.type)) {
+ this.$message.error("璇烽�夋嫨" + types.join(", ") + "鏍煎紡鍥剧墖");
+ return false;
+ }
+ const maxSize = 1024 * 1024 * 2;
+ if (file.size > maxSize) {
+ this.$message.error("閫夋嫨鍥剧墖涓嶈秴杩�2mb");
+ return false;
+ }
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.father .el-upload--picture-card {
+ display: none;
+}
+.custom-upload {
+ width: 148px;
+ height: 148px;
+ overflow: hidden;
+}
+</style>
diff --git a/ruoyi-ui/src/components/iFrame/index.vue b/src/components/iFrame/index.vue
similarity index 95%
rename from ruoyi-ui/src/components/iFrame/index.vue
rename to src/components/iFrame/index.vue
index 426857f..24a8ed5 100644
--- a/ruoyi-ui/src/components/iFrame/index.vue
+++ b/src/components/iFrame/index.vue
@@ -1,3 +1,4 @@
+<!-- 椤甸潰鍐呭祵鍏ュ皝瑁� -->
<template>
<div v-loading="loading" :style="'height:' + height">
<iframe
diff --git a/src/components/index.js b/src/components/index.js
new file mode 100644
index 0000000..07d5b01
--- /dev/null
+++ b/src/components/index.js
@@ -0,0 +1,11 @@
+import PageTools from "@/components/PageTools"
+import UploadExcel from "@/components/UploadExcel"
+import UploadImg from "@/components/UploadImg"
+const component=[PageTools,UploadExcel,UploadImg]
+export default{
+ install(Vue){
+ component.forEach((component)=>{
+ Vue.component(component.name,component)
+ })
+ }
+}
\ No newline at end of file
diff --git a/src/constant/employees.js b/src/constant/employees.js
new file mode 100644
index 0000000..88bdd9d
--- /dev/null
+++ b/src/constant/employees.js
@@ -0,0 +1,429 @@
+// 鍛樺伐
+export default {
+ // 鑱樼敤褰㈠紡
+ hireType: [
+ {
+ id: 1,
+ value: '姝e紡'
+ },
+ {
+ id: 2,
+ value: '闈炴寮�'
+ }
+ ],
+ // 绠$悊褰㈠紡
+ subjection: [
+ {
+ id: '1',
+ value: '鎬婚儴'
+ },
+ {
+ id: '2',
+ value: '鍒嗗煄甯�'
+ }
+ ],
+ // 鍦ㄨ亴鐘舵��
+ workingState: [
+ {
+ id: '1',
+ value: '鍦ㄨ亴'
+ },
+ {
+ id: '2',
+ value: '绂昏亴'
+ }
+ ],
+ // 绂昏亴绫诲瀷
+ leaveType: [
+ {
+ id: '1',
+ value: '涓诲姩绂昏亴'
+ },
+ {
+ id: '2',
+ value: '琚姩绂昏亴'
+ },
+ {
+ id: '3',
+ value: '閫�浼�'
+ }
+ ],
+ // 鍑忓憳鏈�
+ attritionMonth: [
+ {
+ id: '1',
+ value: '绂昏亴鏃ユ湰鏈�'
+ },
+ {
+ id: '2',
+ value: '绂昏亴鏃ユ鏈�'
+ }
+ ],
+ // 鑱樼敤褰㈠紡
+ informaltype: [
+ {
+ id: '2',
+ value: '瀹炰範'
+ },
+ {
+ id: '3',
+ value: '鍔冲姟'
+ },
+ {
+ id: '4',
+ value: '椤鹃棶'
+ },
+ {
+ id: '5',
+ value: '杩旇仒'
+ },
+ {
+ id: '6',
+ value: '澶栧寘'
+ }
+ ],
+ // 鏈�楂樺鍘�
+ highestDegree: [
+ {
+ id: '1',
+ value: '鍒濅腑'
+ },
+ {
+ id: '2',
+ value: '楂樹腑'
+ },
+ {
+ id: '3',
+ value: '涓笓'
+ },
+ {
+ id: '4',
+ value: '澶т笓'
+ },
+ {
+ id: '5',
+ value: '鏈'
+ },
+ {
+ id: '6',
+ value: '纭曞+'
+ },
+ {
+ id: '7',
+ value: '鍗氬+'
+ },
+ {
+ id: '8',
+ value: '鍏朵粬'
+ }
+ ],
+ // 鍥藉/鍦板尯
+ isOverseas: [
+ {
+ id: '1',
+ value: '涓浗澶ч檰'
+ },
+ {
+ id: '2',
+ value: '娓境鍙板浗澶�'
+ }
+ ],
+ // 鎬у埆
+ gender: [
+ {
+ id: '1',
+ value: '鐢�'
+ },
+ {
+ id: '2',
+ value: '濂�'
+ }
+ ],
+ // 濠氬Щ鐘跺喌
+ maritaStatus: [
+ {
+ id: '1',
+ value: '鏈'
+ },
+ {
+ id: '2',
+ value: '宸插'
+ },
+ {
+ id: '3',
+ value: '绂诲紓'
+ }
+ ],
+ // 鐢熻倴
+ animalSymbol: [
+ {
+ id: '1',
+ value: '榧�'
+ },
+ {
+ id: '2',
+ value: '鐗�'
+ },
+ {
+ id: '3',
+ value: '铏�'
+ },
+ {
+ id: '4',
+ value: '鍏�'
+ },
+ {
+ id: '5',
+ value: '榫�'
+ },
+ {
+ id: '6',
+ value: '铔�'
+ },
+ {
+ id: '7',
+ value: '椹�'
+ },
+ {
+ id: '8',
+ value: '缇�'
+ },
+ {
+ id: '9',
+ value: '鐚�'
+ },
+ {
+ id: '10',
+ value: '楦�'
+ },
+ {
+ id: '11',
+ value: '鐙�'
+ },
+ {
+ id: '12',
+ value: '鐚�'
+ }
+ ],
+ // 鏄熷骇
+ constellation: [
+ {
+ code: 1,
+ value: '姘寸摱搴�'
+ },
+ {
+ code: 2,
+ value: '鍙岄奔搴�'
+ },
+ {
+ code: 3,
+ value: '鐧界緤搴�'
+ },
+ {
+ code: 4,
+ value: '閲戠墰搴�'
+ },
+ {
+ code: 5,
+ value: '鍙屽瓙搴�'
+ },
+ {
+ code: 6,
+ value: '宸ㄨ煿搴�'
+ },
+ {
+ code: 7,
+ value: '鐙瓙搴�'
+ },
+ {
+ code: 8,
+ value: '澶勫コ搴�'
+ },
+ {
+ code: 9,
+ value: '澶╃Г搴�'
+ },
+ {
+ code: 10,
+ value: '澶╄潕搴�'
+ },
+ {
+ code: 11,
+ value: '灏勬墜搴�'
+ },
+ {
+ code: 12,
+ value: '鎽╃警搴�'
+ }
+ ],
+ // 琛�鍨�
+ bloodType: [
+ {
+ id: '1',
+ value: 'A鍨�'
+ },
+ {
+ id: '2',
+ value: 'B鍨�'
+ },
+ {
+ id: '3',
+ value: 'O鍨�'
+ },
+ {
+ id: '4',
+ value: 'AB鍨�'
+ }
+ ],
+ // 瀛﹀巻
+ educationType: [
+ {
+ id: '1',
+ value: '缁熸嫑'
+ },
+ {
+ id: '2',
+ value: '鑷��'
+ },
+ {
+ id: '3',
+ value: '鎴愯��'
+ }
+ ],
+ // 杞
+ positiveType: [
+ {
+ id: '1',
+ value: '宸茶浆姝�'
+ },
+ {
+ id: '2',
+ value: '鏈浆姝�'
+ }
+ ],
+ // 鍚堝悓鏈熼檺
+ contractPeriod: [
+ {
+ id: '1',
+ value: '6鏈�'
+ },
+ {
+ id: '2',
+ value: '12鏈�'
+ },
+ {
+ id: '3',
+ value: '24鏈�'
+ },
+ {
+ id: '4',
+ value: '36鏈�'
+ },
+ {
+ id: '5',
+ value: '鍏朵粬'
+ }
+ ],
+ // 绛剧害娆℃暟
+ renewalCount: [
+ {
+ id: 1,
+ value: '0娆�'
+ },
+ {
+ id: 2,
+ value: '1娆�'
+ },
+ {
+ id: 3,
+ value: '2娆�'
+ },
+ {
+ id: 4,
+ value: '3娆�'
+ },
+ {
+ id: 5,
+ value: '4娆℃垨浠ヤ笂'
+ }
+ ],
+ // 绠�鍘嗘潵婧�
+ resumeSource: [
+ {
+ id: '1',
+ value: '鏅鸿仈鎷涜仒'
+ },
+ {
+ id: '2',
+ value: '鎷夊嬀缃�'
+ },
+ {
+ id: '3',
+ value: '鍓嶇▼鏃犲咖'
+ },
+ {
+ id: '4',
+ value: '鐚庤仒缃�'
+ },
+ {
+ id: '5',
+ value: '鏍″洯瀹h'
+ },
+ {
+ id: '6',
+ value: '鐚庡ご'
+ },
+ {
+ id: '7',
+ value: '鍐呴儴鎺ㄨ崘'
+ }
+ ],
+ // 绀炬嫑/鏍℃嫑
+ hireSourceType: [
+ {
+ id: '1',
+ value: '绀炬嫑'
+ },
+ {
+ id: '2',
+ value: '鏍℃嫑'
+ }
+ ],
+ // 鏂板姞
+ // 閮ㄩ棬
+ departments: [
+ {
+ id: '1',
+ value: '鎬昏鍔�'
+ },
+ {
+ id: '2',
+ value: '鐮旂┒闄�'
+ }
+ ],
+ // 鑱屼綅鐘舵��
+ stausInfos: [
+ {
+ id: '1',
+ value: '鍦ㄨ亴'
+ },
+ {
+ id: '2',
+ value: '鍏ヨ亴'
+ },
+ {
+ id: '3',
+ value: '绂昏亴'
+ }
+ ],
+ // 涓婁紶鏁版嵁琛ㄥご
+ importMapKeyPath: {
+ 鍏ヨ亴鏃ユ湡: 'timeOfEntry',
+ 濮撳悕: "username",
+ 宸ュ彿: "workNumber",
+ 鎵嬫満鍙�: "mobile",
+ 杞鏃ユ湡: "correctionTime"
+}
+}
+
+
diff --git a/ruoyi-ui/src/directive/dialog/drag.js b/src/directive/dialog/drag.js
similarity index 100%
rename from ruoyi-ui/src/directive/dialog/drag.js
rename to src/directive/dialog/drag.js
diff --git a/ruoyi-ui/src/directive/dialog/dragHeight.js b/src/directive/dialog/dragHeight.js
similarity index 100%
rename from ruoyi-ui/src/directive/dialog/dragHeight.js
rename to src/directive/dialog/dragHeight.js
diff --git a/ruoyi-ui/src/directive/dialog/dragWidth.js b/src/directive/dialog/dragWidth.js
similarity index 100%
rename from ruoyi-ui/src/directive/dialog/dragWidth.js
rename to src/directive/dialog/dragWidth.js
diff --git a/ruoyi-ui/src/directive/index.js b/src/directive/index.js
similarity index 100%
rename from ruoyi-ui/src/directive/index.js
rename to src/directive/index.js
diff --git a/ruoyi-ui/src/directive/module/clipboard.js b/src/directive/module/clipboard.js
similarity index 100%
rename from ruoyi-ui/src/directive/module/clipboard.js
rename to src/directive/module/clipboard.js
diff --git a/ruoyi-ui/src/directive/permission/hasPermi.js b/src/directive/permission/hasPermi.js
similarity index 100%
rename from ruoyi-ui/src/directive/permission/hasPermi.js
rename to src/directive/permission/hasPermi.js
diff --git a/ruoyi-ui/src/directive/permission/hasRole.js b/src/directive/permission/hasRole.js
similarity index 100%
rename from ruoyi-ui/src/directive/permission/hasRole.js
rename to src/directive/permission/hasRole.js
diff --git a/src/directives/index.js b/src/directives/index.js
new file mode 100644
index 0000000..6dc4fc2
--- /dev/null
+++ b/src/directives/index.js
@@ -0,0 +1,22 @@
+export const imgError = {
+ // 褰撹缁戝畾鐨勫厓绱犳彃鍏ュ埌DOM涓�
+ inserted: function (el, { value }) {
+ // 鐩戝惉img/src鏄剧ず澶辫触鎯呭喌
+ if (!el.src) {
+ el.src = value
+ } else {
+ // 鑱氱劍
+ el.onerror = function () {
+ el.src = value
+ }
+ }
+ },
+ // 鎸囦护缁戝畾鐨勫厓绱犳洿鏂版椂鐢熸晥
+ updated(el,{ value}) {
+ if (!el.src) {
+ el.src=value
+ }
+ },
+}
+export const aa = {}
+export const bb = {}
diff --git a/src/filters/index.js b/src/filters/index.js
new file mode 100644
index 0000000..c16223a
--- /dev/null
+++ b/src/filters/index.js
@@ -0,0 +1,5 @@
+import dayjs from 'dayjs';
+// 杩囨护鍣�
+export const formatTime=(val)=>{
+ return dayjs(val).format('YYYY-MM-DD')
+ }
\ No newline at end of file
diff --git a/ruoyi-ui/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/AppMain.vue
rename to src/layout/components/AppMain.vue
diff --git a/ruoyi-ui/src/layout/components/IframeToggle/index.vue b/src/layout/components/IframeToggle/index.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/IframeToggle/index.vue
rename to src/layout/components/IframeToggle/index.vue
diff --git a/ruoyi-ui/src/layout/components/InnerLink/index.vue b/src/layout/components/InnerLink/index.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/InnerLink/index.vue
rename to src/layout/components/InnerLink/index.vue
diff --git a/ruoyi-ui/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/Navbar.vue
rename to src/layout/components/Navbar.vue
diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue
new file mode 100644
index 0000000..ac8860e
--- /dev/null
+++ b/src/layout/components/Settings/index.vue
@@ -0,0 +1,322 @@
+<template>
+ <el-drawer
+ size="280px"
+ :visible="visible"
+ :with-header="false"
+ :append-to-body="true"
+ :show-close="false"
+ >
+ <div class="drawer-container">
+ <div>
+ <div class="setting-drawer-content">
+ <div class="setting-drawer-title">
+ <h3 class="drawer-title">涓婚椋庢牸璁剧疆</h3>
+ </div>
+ <div class="setting-drawer-block-checbox">
+ <div
+ class="setting-drawer-block-checbox-item"
+ @click="handleTheme('theme-dark')"
+ >
+ <img src="@/assets/images/dark.svg" alt="dark" />
+ <div
+ v-if="sideTheme === 'theme-dark'"
+ class="setting-drawer-block-checbox-selectIcon"
+ style="display: block"
+ >
+ <i aria-label="鍥炬爣: check" class="anticon anticon-check">
+ <svg
+ viewBox="64 64 896 896"
+ data-icon="check"
+ width="1em"
+ height="1em"
+ :fill="theme"
+ aria-hidden="true"
+ focusable="false"
+ class=""
+ >
+ <path
+ d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"
+ />
+ </svg>
+ </i>
+ </div>
+ </div>
+ <div
+ class="setting-drawer-block-checbox-item"
+ @click="handleTheme('theme-light')"
+ >
+ <img src="@/assets/images/light.svg" alt="light" />
+ <div
+ v-if="sideTheme === 'theme-light'"
+ class="setting-drawer-block-checbox-selectIcon"
+ style="display: block"
+ >
+ <i aria-label="鍥炬爣: check" class="anticon anticon-check">
+ <svg
+ viewBox="64 64 896 896"
+ data-icon="check"
+ width="1em"
+ height="1em"
+ :fill="theme"
+ aria-hidden="true"
+ focusable="false"
+ class=""
+ >
+ <path
+ d="M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 0 0-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z"
+ />
+ </svg>
+ </i>
+ </div>
+ </div>
+ </div>
+
+ <div class="drawer-item">
+ <span>涓婚棰滆壊</span>
+ <theme-picker
+ style="float: right; height: 26px; margin: -3px 8px 0 0"
+ @change="themeChange"
+ />
+ </div>
+ </div>
+
+ <el-divider />
+
+ <h3 class="drawer-title">绯荤粺甯冨眬閰嶇疆</h3>
+
+ <div class="drawer-item">
+ <span>寮�鍚� TopNav</span>
+ <el-switch v-model="topNav" class="drawer-switch" />
+ </div>
+
+ <div class="drawer-item">
+ <span>寮�鍚� Tags-Views</span>
+ <el-switch v-model="tagsView" class="drawer-switch" />
+ </div>
+
+ <div class="drawer-item">
+ <span>鍥哄畾 Header</span>
+ <el-switch v-model="fixedHeader" class="drawer-switch" />
+ </div>
+
+ <div class="drawer-item">
+ <span>鏄剧ず Logo</span>
+ <el-switch v-model="sidebarLogo" class="drawer-switch" />
+ </div>
+
+ <div class="drawer-item">
+ <span>鍔ㄦ�佹爣棰�</span>
+ <el-switch v-model="dynamicTitle" class="drawer-switch" />
+ </div>
+
+ <el-divider />
+
+ <el-button
+ size="small"
+ type="primary"
+ plain
+ icon="el-icon-document-add"
+ @click="saveSetting"
+ >淇濆瓨閰嶇疆</el-button
+ >
+ <el-button
+ size="small"
+ plain
+ icon="el-icon-refresh"
+ @click="resetSetting"
+ >閲嶇疆閰嶇疆</el-button
+ >
+ </div>
+ </div>
+ </el-drawer>
+</template>
+
+<script>
+import ThemePicker from "@/components/ThemePicker";
+
+export default {
+ components: { ThemePicker },
+ data() {
+ return {
+ theme: this.$store.state.settings.theme,
+ sideTheme: this.$store.state.settings.sideTheme,
+ };
+ },
+ computed: {
+ visible: {
+ get() {
+ return this.$store.state.settings.showSettings;
+ },
+ },
+ fixedHeader: {
+ get() {
+ return this.$store.state.settings.fixedHeader;
+ },
+ set(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "fixedHeader",
+ value: val,
+ });
+ },
+ },
+ topNav: {
+ get() {
+ return this.$store.state.settings.topNav;
+ },
+ set(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "topNav",
+ value: val,
+ });
+ if (!val) {
+ this.$store.dispatch("app/toggleSideBarHide", false);
+ this.$store.commit(
+ "SET_SIDEBAR_ROUTERS",
+ this.$store.state.permission.defaultRoutes
+ );
+ }
+ },
+ },
+ tagsView: {
+ get() {
+ return this.$store.state.settings.tagsView;
+ },
+ set(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "tagsView",
+ value: val,
+ });
+ },
+ },
+ sidebarLogo: {
+ get() {
+ return this.$store.state.settings.sidebarLogo;
+ },
+ set(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "sidebarLogo",
+ value: val,
+ });
+ },
+ },
+ dynamicTitle: {
+ get() {
+ return this.$store.state.settings.dynamicTitle;
+ },
+ set(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "dynamicTitle",
+ value: val,
+ });
+ },
+ },
+ },
+ methods: {
+ themeChange(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "theme",
+ value: val,
+ });
+ this.theme = val;
+ },
+ handleTheme(val) {
+ this.$store.dispatch("settings/changeSetting", {
+ key: "sideTheme",
+ value: val,
+ });
+ this.sideTheme = val;
+ },
+ saveSetting() {
+ this.$modal.loading("姝e湪淇濆瓨鍒版湰鍦帮紝璇风◢鍊�...");
+ //瀛樺偍鏈湴鏁版嵁
+ this.$cache.local.set(
+ "layout-setting",
+ `{
+ "topNav":${this.topNav},
+ "tagsView":${this.tagsView},
+ "fixedHeader":${this.fixedHeader},
+ "sidebarLogo":${this.sidebarLogo},
+ "dynamicTitle":${this.dynamicTitle},
+ "sideTheme":"${this.sideTheme}",
+ "theme":"${this.theme}"
+ }`
+ );
+ setTimeout(this.$modal.closeLoading(), 1000);
+ },
+ resetSetting() {
+ this.$modal.loading("姝e湪娓呴櫎璁剧疆缂撳瓨骞跺埛鏂帮紝璇风◢鍊�...");
+ this.$cache.local.remove("layout-setting");
+ setTimeout("window.location.reload()", 1000);
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.setting-drawer-content {
+ .setting-drawer-title {
+ margin-bottom: 12px;
+ color: rgba(0, 0, 0, 0.85);
+ font-size: 14px;
+ line-height: 22px;
+ font-weight: bold;
+ }
+
+ .setting-drawer-block-checbox {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ margin-top: 10px;
+ margin-bottom: 20px;
+
+ .setting-drawer-block-checbox-item {
+ position: relative;
+ margin-right: 16px;
+ border-radius: 2px;
+ cursor: pointer;
+
+ img {
+ width: 48px;
+ height: 48px;
+ }
+
+ .setting-drawer-block-checbox-selectIcon {
+ position: absolute;
+ top: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ padding-top: 15px;
+ padding-left: 24px;
+ color: #1890ff;
+ font-weight: 700;
+ font-size: 14px;
+ }
+ }
+ }
+}
+
+.drawer-container {
+ padding: 20px;
+ font-size: 14px;
+ line-height: 1.5;
+ word-wrap: break-word;
+
+ .drawer-title {
+ margin-bottom: 12px;
+ color: rgba(0, 0, 0, 0.85);
+ font-size: 14px;
+ line-height: 22px;
+ }
+
+ .drawer-item {
+ color: rgba(0, 0, 0, 0.65);
+ font-size: 14px;
+ padding: 12px 0;
+ }
+
+ .drawer-switch {
+ float: right;
+ }
+}
+</style>
diff --git a/ruoyi-ui/src/layout/components/Sidebar/FixiOSBug.js b/src/layout/components/Sidebar/FixiOSBug.js
similarity index 100%
rename from ruoyi-ui/src/layout/components/Sidebar/FixiOSBug.js
rename to src/layout/components/Sidebar/FixiOSBug.js
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Item.vue b/src/layout/components/Sidebar/Item.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/Sidebar/Item.vue
rename to src/layout/components/Sidebar/Item.vue
diff --git a/ruoyi-ui/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/Sidebar/Link.vue
rename to src/layout/components/Sidebar/Link.vue
diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue
new file mode 100644
index 0000000..7245441
--- /dev/null
+++ b/src/layout/components/Sidebar/Logo.vue
@@ -0,0 +1,128 @@
+<template>
+ <div
+ class="sidebar-logo-container"
+ :class="{ collapse: collapse }"
+ :style="{
+ backgroundColor:
+ sideTheme === 'theme-dark'
+ ? variables.menuBackground
+ : variables.menuLightBackground,
+ }"
+ >
+ <transition name="sidebarLogoFade">
+ <router-link
+ v-if="collapse"
+ key="collapse"
+ class="sidebar-logo-link"
+ to="/"
+ >
+ <img v-if="logo" :src="logo" class="sidebar-logo" />
+ <h1
+ v-else
+ class="sidebar-title"
+ :style="{
+ color:
+ sideTheme === 'theme-dark'
+ ? variables.logoTitleColor
+ : variables.logoLightTitleColor,
+ }"
+ >
+ {{ title }}
+ </h1>
+ </router-link>
+ <router-link v-else key="expand" class="sidebar-logo-link" to="/">
+ <img v-if="logo" :src="logo" class="sidebar-logo" />
+ <h1
+ class="sidebar-title"
+ :style="{
+ color:
+ sideTheme === 'theme-dark'
+ ? variables.logoTitleColor
+ : variables.logoLightTitleColor,
+ }"
+ >
+ {{ title }}
+ </h1>
+ </router-link>
+ </transition>
+ </div>
+</template>
+
+<script>
+import logoImg from "@/assets/logo/logo.png";
+import variables from "@/assets/styles/variables.scss";
+
+export default {
+ name: "SidebarLogo",
+ props: {
+ collapse: {
+ type: Boolean,
+ required: true,
+ },
+ },
+ computed: {
+ variables() {
+ return variables;
+ },
+ sideTheme() {
+ return this.$store.state.settings.sideTheme;
+ },
+ },
+ data() {
+ return {
+ title: "鏅烘収闅忚绠$悊绯荤粺",
+ logo: logoImg,
+ };
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.sidebarLogoFade-enter-active {
+ transition: opacity 1.5s;
+}
+
+.sidebarLogoFade-enter,
+.sidebarLogoFade-leave-to {
+ opacity: 0;
+}
+
+.sidebar-logo-container {
+ position: relative;
+ width: 100%;
+ height: 50px;
+ line-height: 50px;
+ background: #2b2f3a;
+ text-align: center;
+ overflow: hidden;
+
+ & .sidebar-logo-link {
+ height: 100%;
+ width: 100%;
+
+ & .sidebar-logo {
+ width: 42px;
+ height: 42px;
+ vertical-align: middle;
+ margin-right: 12px;
+ }
+
+ & .sidebar-title {
+ display: inline-block;
+ margin: 0;
+ color: #fff;
+ font-weight: 600;
+ line-height: 50px;
+ font-size: 16px;
+ font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
+ vertical-align: middle;
+ }
+ }
+
+ &.collapse {
+ .sidebar-logo {
+ margin-right: 0px;
+ }
+ }
+}
+</style>
diff --git a/ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/Sidebar/SidebarItem.vue
rename to src/layout/components/Sidebar/SidebarItem.vue
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
new file mode 100644
index 0000000..f6adb6b
--- /dev/null
+++ b/src/layout/components/Sidebar/index.vue
@@ -0,0 +1,79 @@
+<template>
+ <div
+ :class="{ 'has-logo': showLogo }"
+ :style="{
+ backgroundColor:
+ settings.sideTheme === 'theme-dark'
+ ? variables.menuBackground
+ : variables.menuLightBackground,
+ }"
+ >
+ <logo v-if="showLogo" :collapse="isCollapse" />
+ <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
+ <el-menu
+ :default-active="activeMenu"
+ :collapse="isCollapse"
+ :background-color="
+ settings.sideTheme === 'theme-dark'
+ ? variables.menuBackground
+ : variables.menuLightBackground
+ "
+ :text-color="
+ settings.sideTheme === 'theme-dark'
+ ? variables.menuColor
+ : variables.menuLightColor
+ "
+ :unique-opened="true"
+ :active-text-color="variables.menuActiveText"
+ :collapse-transition="false"
+ mode="vertical"
+ >
+ <sidebar-item
+ v-for="(route, index) in sidebarRouters"
+ :key="route.path + index"
+ :item="route"
+ :base-path="route.path"
+ />
+ </el-menu>
+ </el-scrollbar>
+ </div>
+</template>
+
+<script>
+import { mapGetters, mapState } from "vuex";
+import Logo from "./Logo";
+import SidebarItem from "./SidebarItem";
+import variables from "@/assets/styles/variables.scss";
+
+export default {
+ components: { SidebarItem, Logo },
+ computed: {
+ ...mapState(["settings"]),
+ ...mapGetters(["sidebarRouters", "sidebar"]),
+ activeMenu() {
+ const route = this.$route;
+ const { meta, path } = route;
+ // if set path, the sidebar will highlight the path you set
+ if (meta.activeMenu) {
+ return meta.activeMenu;
+ }
+ return path;
+ },
+ showLogo() {
+ return this.$store.state.settings.sidebarLogo;
+ },
+ variables() {
+ return variables;
+ },
+ isCollapse() {
+ return !this.sidebar.opened;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-menu-demo {
+ font-size: 28px;
+}
+</style>
diff --git a/ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/TagsView/ScrollPane.vue
rename to src/layout/components/TagsView/ScrollPane.vue
diff --git a/ruoyi-ui/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
similarity index 100%
rename from ruoyi-ui/src/layout/components/TagsView/index.vue
rename to src/layout/components/TagsView/index.vue
diff --git a/ruoyi-ui/src/layout/components/index.js b/src/layout/components/index.js
similarity index 100%
rename from ruoyi-ui/src/layout/components/index.js
rename to src/layout/components/index.js
diff --git a/ruoyi-ui/src/layout/index.vue b/src/layout/index.vue
similarity index 100%
rename from ruoyi-ui/src/layout/index.vue
rename to src/layout/index.vue
diff --git a/ruoyi-ui/src/layout/mixin/ResizeHandler.js b/src/layout/mixin/ResizeHandler.js
similarity index 100%
rename from ruoyi-ui/src/layout/mixin/ResizeHandler.js
rename to src/layout/mixin/ResizeHandler.js
diff --git a/ruoyi-ui/src/main.js b/src/main.js
similarity index 86%
rename from ruoyi-ui/src/main.js
rename to src/main.js
index 13c6cf2..c95a818 100644
--- a/ruoyi-ui/src/main.js
+++ b/src/main.js
@@ -1,6 +1,7 @@
import Vue from 'vue'
import Cookies from 'js-cookie'
+import * as echarts from "echarts";
import Element from 'element-ui'
import './assets/styles/element-variables.scss'
@@ -37,8 +38,18 @@
import VueMeta from 'vue-meta'
// 瀛楀吀鏁版嵁缁勪欢
import DictData from '@/components/DictData'
+// 缁勪欢灏佽闆嗘垚
+import components from './components'
+// 娉ㄥ唽杩囨护鍣�
+// 鑷畾涔夋寚浠�
+import * as directives from './directives'
+import * as filters from './filters'
+for(let key in filters){
+Vue.filter(key, filters[key])
+}
// 鍏ㄥ眬鏂规硶鎸傝浇
+
Vue.prototype.getDicts = getDicts
Vue.prototype.getConfigKey = getConfigKey
Vue.prototype.parseTime = parseTime
@@ -48,7 +59,6 @@
Vue.prototype.selectDictLabels = selectDictLabels
Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
-
// 鍏ㄥ眬缁勪欢鎸傝浇
Vue.component('DictTag', DictTag)
Vue.component('Pagination', Pagination)
@@ -58,10 +68,15 @@
Vue.component('ImageUpload', ImageUpload)
Vue.component('ImagePreview', ImagePreview)
+
+// 灏佽鑷畾涔夋寚浠�
+for(let key in directives)
+Vue.directive(key, directives[key])
Vue.use(directive)
Vue.use(plugins)
Vue.use(VueMeta)
DictData.install()
+Vue.use(components)
/**
* If you don't want to use mock-server
diff --git a/ruoyi-ui/src/permission.js b/src/permission.js
similarity index 100%
rename from ruoyi-ui/src/permission.js
rename to src/permission.js
diff --git a/ruoyi-ui/src/plugins/auth.js b/src/plugins/auth.js
similarity index 100%
rename from ruoyi-ui/src/plugins/auth.js
rename to src/plugins/auth.js
diff --git a/ruoyi-ui/src/plugins/cache.js b/src/plugins/cache.js
similarity index 100%
rename from ruoyi-ui/src/plugins/cache.js
rename to src/plugins/cache.js
diff --git a/ruoyi-ui/src/plugins/download.js b/src/plugins/download.js
similarity index 100%
rename from ruoyi-ui/src/plugins/download.js
rename to src/plugins/download.js
diff --git a/ruoyi-ui/src/plugins/index.js b/src/plugins/index.js
similarity index 100%
rename from ruoyi-ui/src/plugins/index.js
rename to src/plugins/index.js
diff --git a/ruoyi-ui/src/plugins/modal.js b/src/plugins/modal.js
similarity index 100%
rename from ruoyi-ui/src/plugins/modal.js
rename to src/plugins/modal.js
diff --git a/ruoyi-ui/src/plugins/tab.js b/src/plugins/tab.js
similarity index 100%
rename from ruoyi-ui/src/plugins/tab.js
rename to src/plugins/tab.js
diff --git a/ruoyi-ui/src/router/index.js b/src/router/index.js
similarity index 100%
rename from ruoyi-ui/src/router/index.js
rename to src/router/index.js
diff --git a/ruoyi-ui/src/settings.js b/src/settings.js
similarity index 100%
rename from ruoyi-ui/src/settings.js
rename to src/settings.js
diff --git a/ruoyi-ui/src/smartor/components/dataview/xformview/xformview.vue b/src/smartor/components/dataview/xformview/xformview.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/components/dataview/xformview/xformview.vue
rename to src/smartor/components/dataview/xformview/xformview.vue
diff --git a/ruoyi-ui/src/smartor/components/dataview/xgridview/xgridview.vue b/src/smartor/components/dataview/xgridview/xgridview.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/components/dataview/xgridview/xgridview.vue
rename to src/smartor/components/dataview/xgridview/xgridview.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patarchive_base.vue b/src/smartor/dataobject/dw_patarchive_base.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patarchive_base.vue
rename to src/smartor/dataobject/dw_patarchive_base.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patarchive_list.vue b/src/smartor/dataobject/dw_patarchive_list.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patarchive_list.vue
rename to src/smartor/dataobject/dw_patarchive_list.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patinhosp_base.vue b/src/smartor/dataobject/dw_patinhosp_base.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patinhosp_base.vue
rename to src/smartor/dataobject/dw_patinhosp_base.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patinhosp_list.vue b/src/smartor/dataobject/dw_patinhosp_list.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patinhosp_list.vue
rename to src/smartor/dataobject/dw_patinhosp_list.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patouthosp_base.vue b/src/smartor/dataobject/dw_patouthosp_base.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patouthosp_base.vue
rename to src/smartor/dataobject/dw_patouthosp_base.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_patouthosp_list.vue b/src/smartor/dataobject/dw_patouthosp_list.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_patouthosp_list.vue
rename to src/smartor/dataobject/dw_patouthosp_list.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_svytopic_maint.vue b/src/smartor/dataobject/dw_svytopic_maint.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_svytopic_maint.vue
rename to src/smartor/dataobject/dw_svytopic_maint.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_svytopic_view.vue b/src/smartor/dataobject/dw_svytopic_view.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_svytopic_view.vue
rename to src/smartor/dataobject/dw_svytopic_view.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_svytopicoption_list.vue b/src/smartor/dataobject/dw_svytopicoption_list.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_svytopicoption_list.vue
rename to src/smartor/dataobject/dw_svytopicoption_list.vue
diff --git a/ruoyi-ui/src/smartor/dataobject/dw_svytopicoption_maint.vue b/src/smartor/dataobject/dw_svytopicoption_maint.vue
similarity index 100%
rename from ruoyi-ui/src/smartor/dataobject/dw_svytopicoption_maint.vue
rename to src/smartor/dataobject/dw_svytopicoption_maint.vue
diff --git a/ruoyi-ui/src/store/getters.js b/src/store/getters.js
similarity index 100%
rename from ruoyi-ui/src/store/getters.js
rename to src/store/getters.js
diff --git a/ruoyi-ui/src/store/index.js b/src/store/index.js
similarity index 100%
rename from ruoyi-ui/src/store/index.js
rename to src/store/index.js
diff --git a/ruoyi-ui/src/store/modules/app.js b/src/store/modules/app.js
similarity index 100%
rename from ruoyi-ui/src/store/modules/app.js
rename to src/store/modules/app.js
diff --git a/ruoyi-ui/src/store/modules/dict.js b/src/store/modules/dict.js
similarity index 100%
rename from ruoyi-ui/src/store/modules/dict.js
rename to src/store/modules/dict.js
diff --git a/ruoyi-ui/src/store/modules/permission.js b/src/store/modules/permission.js
similarity index 100%
rename from ruoyi-ui/src/store/modules/permission.js
rename to src/store/modules/permission.js
diff --git a/ruoyi-ui/src/store/modules/settings.js b/src/store/modules/settings.js
similarity index 96%
rename from ruoyi-ui/src/store/modules/settings.js
rename to src/store/modules/settings.js
index 2455a1e..61c197c 100644
--- a/ruoyi-ui/src/store/modules/settings.js
+++ b/src/store/modules/settings.js
@@ -5,7 +5,7 @@
const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || ''
const state = {
title: '',
- theme: storageSetting.theme || '#409EFF',
+ theme: storageSetting.theme ,
sideTheme: storageSetting.sideTheme || sideTheme,
showSettings: showSettings,
topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav,
diff --git a/ruoyi-ui/src/store/modules/tagsView.js b/src/store/modules/tagsView.js
similarity index 100%
rename from ruoyi-ui/src/store/modules/tagsView.js
rename to src/store/modules/tagsView.js
diff --git a/ruoyi-ui/src/store/modules/user.js b/src/store/modules/user.js
similarity index 100%
rename from ruoyi-ui/src/store/modules/user.js
rename to src/store/modules/user.js
diff --git a/ruoyi-ui/src/utils/auth.js b/src/utils/auth.js
similarity index 100%
rename from ruoyi-ui/src/utils/auth.js
rename to src/utils/auth.js
diff --git a/ruoyi-ui/src/utils/dict/Dict.js b/src/utils/dict/Dict.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/Dict.js
rename to src/utils/dict/Dict.js
diff --git a/ruoyi-ui/src/utils/dict/DictConverter.js b/src/utils/dict/DictConverter.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/DictConverter.js
rename to src/utils/dict/DictConverter.js
diff --git a/ruoyi-ui/src/utils/dict/DictData.js b/src/utils/dict/DictData.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/DictData.js
rename to src/utils/dict/DictData.js
diff --git a/ruoyi-ui/src/utils/dict/DictMeta.js b/src/utils/dict/DictMeta.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/DictMeta.js
rename to src/utils/dict/DictMeta.js
diff --git a/ruoyi-ui/src/utils/dict/DictOptions.js b/src/utils/dict/DictOptions.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/DictOptions.js
rename to src/utils/dict/DictOptions.js
diff --git a/ruoyi-ui/src/utils/dict/index.js b/src/utils/dict/index.js
similarity index 100%
rename from ruoyi-ui/src/utils/dict/index.js
rename to src/utils/dict/index.js
diff --git a/ruoyi-ui/src/utils/errorCode.js b/src/utils/errorCode.js
similarity index 100%
rename from ruoyi-ui/src/utils/errorCode.js
rename to src/utils/errorCode.js
diff --git a/ruoyi-ui/src/utils/generator/config.js b/src/utils/generator/config.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/config.js
rename to src/utils/generator/config.js
diff --git a/ruoyi-ui/src/utils/generator/css.js b/src/utils/generator/css.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/css.js
rename to src/utils/generator/css.js
diff --git a/ruoyi-ui/src/utils/generator/drawingDefault.js b/src/utils/generator/drawingDefault.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/drawingDefault.js
rename to src/utils/generator/drawingDefault.js
diff --git a/ruoyi-ui/src/utils/generator/html.js b/src/utils/generator/html.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/html.js
rename to src/utils/generator/html.js
diff --git a/ruoyi-ui/src/utils/generator/icon.json b/src/utils/generator/icon.json
similarity index 100%
rename from ruoyi-ui/src/utils/generator/icon.json
rename to src/utils/generator/icon.json
diff --git a/ruoyi-ui/src/utils/generator/js.js b/src/utils/generator/js.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/js.js
rename to src/utils/generator/js.js
diff --git a/ruoyi-ui/src/utils/generator/render.js b/src/utils/generator/render.js
similarity index 100%
rename from ruoyi-ui/src/utils/generator/render.js
rename to src/utils/generator/render.js
diff --git a/ruoyi-ui/src/utils/index.js b/src/utils/index.js
similarity index 100%
rename from ruoyi-ui/src/utils/index.js
rename to src/utils/index.js
diff --git a/ruoyi-ui/src/utils/jsencrypt.js b/src/utils/jsencrypt.js
similarity index 100%
rename from ruoyi-ui/src/utils/jsencrypt.js
rename to src/utils/jsencrypt.js
diff --git a/ruoyi-ui/src/utils/permission.js b/src/utils/permission.js
similarity index 100%
rename from ruoyi-ui/src/utils/permission.js
rename to src/utils/permission.js
diff --git a/ruoyi-ui/src/utils/request.js b/src/utils/request.js
similarity index 100%
rename from ruoyi-ui/src/utils/request.js
rename to src/utils/request.js
diff --git a/ruoyi-ui/src/utils/ruoyi.js b/src/utils/ruoyi.js
similarity index 100%
rename from ruoyi-ui/src/utils/ruoyi.js
rename to src/utils/ruoyi.js
diff --git a/ruoyi-ui/src/utils/scroll-to.js b/src/utils/scroll-to.js
similarity index 100%
rename from ruoyi-ui/src/utils/scroll-to.js
rename to src/utils/scroll-to.js
diff --git a/ruoyi-ui/src/utils/validate.js b/src/utils/validate.js
similarity index 100%
rename from ruoyi-ui/src/utils/validate.js
rename to src/utils/validate.js
diff --git a/ruoyi-ui/src/views/components/icons/element-icons.js b/src/views/components/icons/element-icons.js
similarity index 100%
rename from ruoyi-ui/src/views/components/icons/element-icons.js
rename to src/views/components/icons/element-icons.js
diff --git a/ruoyi-ui/src/views/components/icons/index.vue b/src/views/components/icons/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/components/icons/index.vue
rename to src/views/components/icons/index.vue
diff --git a/ruoyi-ui/src/views/components/icons/svg-icons.js b/src/views/components/icons/svg-icons.js
similarity index 100%
rename from ruoyi-ui/src/views/components/icons/svg-icons.js
rename to src/views/components/icons/svg-icons.js
diff --git a/ruoyi-ui/src/views/dashboard/BarChart.vue b/src/views/dashboard/BarChart.vue
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/BarChart.vue
rename to src/views/dashboard/BarChart.vue
diff --git a/ruoyi-ui/src/views/dashboard/LineChart.vue b/src/views/dashboard/LineChart.vue
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/LineChart.vue
rename to src/views/dashboard/LineChart.vue
diff --git a/ruoyi-ui/src/views/dashboard/PanelGroup.vue b/src/views/dashboard/PanelGroup.vue
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/PanelGroup.vue
rename to src/views/dashboard/PanelGroup.vue
diff --git a/ruoyi-ui/src/views/dashboard/PieChart.vue b/src/views/dashboard/PieChart.vue
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/PieChart.vue
rename to src/views/dashboard/PieChart.vue
diff --git a/ruoyi-ui/src/views/dashboard/RaddarChart.vue b/src/views/dashboard/RaddarChart.vue
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/RaddarChart.vue
rename to src/views/dashboard/RaddarChart.vue
diff --git a/ruoyi-ui/src/views/dashboard/mixins/resize.js b/src/views/dashboard/mixins/resize.js
similarity index 100%
rename from ruoyi-ui/src/views/dashboard/mixins/resize.js
rename to src/views/dashboard/mixins/resize.js
diff --git a/ruoyi-ui/src/views/error/401.vue b/src/views/error/401.vue
similarity index 100%
rename from ruoyi-ui/src/views/error/401.vue
rename to src/views/error/401.vue
diff --git a/ruoyi-ui/src/views/error/404.vue b/src/views/error/404.vue
similarity index 100%
rename from ruoyi-ui/src/views/error/404.vue
rename to src/views/error/404.vue
diff --git a/src/views/import/index.vue b/src/views/import/index.vue
new file mode 100644
index 0000000..2ff68b3
--- /dev/null
+++ b/src/views/import/index.vue
@@ -0,0 +1,55 @@
+<template>
+ <div>
+ <UploadExcel :deforeUpload="excelSuccess" :onSuccess="onSuccess" />
+ </div>
+</template>
+
+<script>
+//绛夊緟api鎺ュ彛
+// import { importEmployee } from "@/api/index";
+import employees from "@/constant/employees";
+import formatTime from "@/filters/index";
+const { importMapKeyPath } = employees;
+export default {
+ data() {
+ return {};
+ },
+
+ created() {},
+
+ methods: {
+ // 涓婁紶鍓嶈Е鍙�
+ excelSuccess({ name }) {
+ if (!name.endsWith(".xlsx")) {
+ return this.$message("璇烽�夋嫨xlsx鏂囦欢");
+ }
+ return true;
+ },
+ // 瑙f瀽鎴愬姛鍚庤Е鍙�
+ async onSuccess({ results, header }) {
+ const neWArr = results.map((item) => {
+ const obj = {};
+ for (let key in importMapKeyPath) {
+ if (key === "鍏ヨ亴鏃堕棿" || key === "杞鏃堕棿") {
+ // excel鏃堕棿鎴�
+ const timestamp = item[key];
+ // 杞牸寮忥紝骞跺姣旀晥楠屽樊鏃堕棿
+ const date = new Date((timestamp - 1) * 24 * 3600000);
+ date.setFullYear(data.setFullYear() - 70);
+ obj[importMapKeyPath[key]] = formatTime(date);
+ } else {
+ obj[importMapKeyPath[key]] = item[key];
+ }
+ }
+ return obj;
+ });
+ // await importEmployee(neWArr);
+ this.$message.success("瀵煎叆鎴愬姛");
+ this.$router.go(-1);
+ console.log(neWArr);
+ },
+ },
+};
+</script>
+
+<style lang="less" scoped></style>
diff --git a/ruoyi-ui/src/views/index.vue b/src/views/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/index.vue
rename to src/views/index.vue
diff --git a/ruoyi-ui/src/views/index_v1.vue b/src/views/index_v1.vue
similarity index 100%
rename from ruoyi-ui/src/views/index_v1.vue
rename to src/views/index_v1.vue
diff --git a/src/views/knowledge/education/compilequer/index.vue b/src/views/knowledge/education/compilequer/index.vue
new file mode 100644
index 0000000..81ced24
--- /dev/null
+++ b/src/views/knowledge/education/compilequer/index.vue
@@ -0,0 +1,866 @@
+<template>
+ <div class="Questionnairemanagement">
+ <!-- 宸︿晶鏍� -->
+ <div class="sidecolumn">
+ <div style="height: 200px">
+ <el-steps direction="vertical" :active="Editprogress">
+ <el-step title="鍩虹淇℃伅璁剧疆"></el-step>
+ <el-step title="瀹f暀鍐呭"></el-step>
+ </el-steps>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+ <div class="leftvlue">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div v-if="Editprogress == 1">
+ <div class="leftvlue-jbxx">
+ 鍩烘湰淇℃伅<span>褰撳墠鐗堟湰:{{ currentVersion }}</span>
+ </div>
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="瀹f暀鍚嶇О" prop="name">
+ <el-input v-model="ruleForm.name"></el-input>
+ </el-form-item>
+ <el-form-item label="瀹f暀褰㈠紡" prop="name">
+ <el-select v-model="ruleForm.shape" placeholder="璇烽�夋嫨">
+ <el-option
+ v-for="item in xjxsoptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="瀹f暀鍒嗙被" prop="region">
+ <el-select
+ v-model="ruleForm.classify"
+ size="medium"
+ multiple
+ filterable
+ placeholder="璇烽�夋嫨鍒嗙被"
+ >
+ <el-option
+ class="ruleFormaa"
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="閫傜敤鐤剧梾" prop="sickness">
+ <el-select
+ v-model="ruleForm.sickness"
+ filterable
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in sicknessoptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input
+ :rows="4"
+ type="textarea"
+ v-model="ruleForm.desc"
+ maxlength="400"
+ show-word-limit
+ ></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >涓嬩竴姝�</el-button
+ >
+ <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!-- 瀹f暀鍐呭 -->
+ <div v-if="Editprogress == 2">
+ <div class="leftvlue-jbxx">瀹f暀鍐呭</div>
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="瀹f暀浠嬬粛" prop="desc">
+ <el-cascader
+ class="demo-cascader"
+ v-model="ruleForm.templatevalue"
+ :options="asoptions"
+ :props="{ expandTrigger: 'hover' }"
+ ></el-cascader>
+ <el-select v-model="ruleForm.data2" placeholder="鎻愪氦鎻愮ず">
+ <el-option
+ v-for="item in asoptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <div style="display: flex; margin-top: 20px">
+ <div class="PreviewTemplate" @click="PreviewTemplate()">
+ 棰勮妯$増
+ </div>
+ <el-button type="primary">纭寮曠敤</el-button>
+ </div>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+ <div class="addtopic">
+ <el-select
+ v-model="addvalue"
+ @change="changeaddtopic"
+ class="addtopic-input"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </div>
+
+ <div class="presentation">
+ <div class="presentation-left">
+ <el-table v-loading="loading" :data="userList">
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userid"
+ prop="userid"
+ />
+ <el-table-column
+ label="棰樼洰"
+ align="center"
+ key="userName"
+ prop="userName"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <!-- <el-button
+ size="medium"
+ type="text"
+ @click="goQRCode(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ >
+ <span class="button-text"
+ ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="ViewQuestionnaire(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textck"
+ ><i class="el-icon-edit"></i>鏌ョ湅</span
+ ></el-button
+ > -->
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textxg"
+ ><i class="el-icon-scissors"></i>淇敼</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:user:remove']"
+ ><span class="button-textsc"
+ ><i class="el-icon-delete"></i>鍒犻櫎</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </div>
+ <div class="presentation-right">
+ <div class="headline">棰樼洰璁剧疆璇︽儏</div>
+ <div>棰樼洰鏍囬锛�<span>杩欏鏈烘瀯鎬庝箞鏍�</span></div>
+ <div>鏄惁蹇呯瓟锛�<span>鏄�</span> 鏄惁闅愯棌锛�<span>鍚�</span></div>
+ <div class="headline">閫夐」璁剧疆</div>
+ <div>
+ <p>閫夐」1:<span>鍖荤枟鏈烘瀯</span></p>
+ <p>
+ 濉啓鏄庣粏锛�<span>鏃�</span> 寮傚父閫夐」锛�<span>鏃�</span>
+ 鍒嗗�硷細<span>3</span>
+ </p>
+ <p>閫変腑鎻愮ず锛�<span>杩欎釜棰樻湁鐐归毦璇锋敞鎰�</span></p>
+ <p>閫変腑璺宠浆锛�<span>鏃�</span></p>
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >绔嬪嵆鍒涘缓</el-button
+ >
+ <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
+ <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ sidecolumnrabs: "left", //鏂瑰悜
+ Editprogress: 1, //缂栬緫杩涘害
+ currentVersion: "1.2.3", //褰撳墠鐗堟湰
+ loading: false, // 閬僵灞�
+ drawer: false, //鎺у埗灞曞紑
+ radio: "false", //鍗曢�夐閫変腑
+ radios: [], //澶氶�夐閫変腑
+ radioas: "", //濉┖棰樼瓟妗�
+ // 鎬绘潯鏁�
+ total: 1,
+ ruleForm: {
+ name: "",
+ shape: "",
+ classify: "",
+ region: "",
+ date1: "",
+ date2: "",
+ delivery: false,
+ type: [],
+ resource: "",
+ desc: "",
+ templatevalue: "",
+ data2: "",
+ },
+ rules: {},
+ rulesa: {
+ name: [
+ { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" },
+ { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" },
+ ],
+ region: [
+ { required: true, message: "璇烽�夋嫨娲诲姩鍖哄煙", trigger: "change" },
+ ],
+ date1: [
+ {
+ type: "date",
+ required: true,
+ message: "璇烽�夋嫨鏃ユ湡",
+ trigger: "change",
+ },
+ ],
+ date2: [
+ {
+ type: "date",
+ required: true,
+ message: "璇烽�夋嫨鏃堕棿",
+ trigger: "change",
+ },
+ ],
+ type: [
+ {
+ type: "array",
+ required: true,
+ message: "璇疯嚦灏戦�夋嫨涓�涓椿鍔ㄦ�ц川",
+ trigger: "change",
+ },
+ ],
+ resource: [
+ { required: true, message: "璇烽�夋嫨娲诲姩璧勬簮", trigger: "change" },
+ ],
+ desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }],
+ },
+ options: [
+ {
+ value: "閫夐」1",
+ label: "鐤剧梾瀹f暀",
+ },
+ {
+ value: "閫夐」2",
+ label: "鍏ラ櫌瀹f暀",
+ },
+ {
+ value: "閫夐」3",
+ label: "鎵嬫湳瀹f暀",
+ },
+ {
+ value: "閫夐」4",
+ label: "鎶ょ悊瀹f暀",
+ },
+ ],
+ xjxsoptions: [
+ {
+ value: "閫夐」1",
+ label: "鍥炬枃",
+ },
+ {
+ value: "閫夐」2",
+ label: "瑙嗛",
+ },
+ {
+ value: "閫夐」3",
+ label: "闊抽",
+ },
+ ],
+ sicknessoptions: [
+ {
+ value: 1,
+ label: "楂樿鍘�",
+ },
+ {
+ value: 2,
+ label: "蹇冭剰鐥�",
+ },
+ {
+ value: 3,
+ label: "绯栧翱鐥�",
+ },
+ {
+ value: 4,
+ label: "鑴婃鐐�",
+ },
+ ],
+ asoptions: [
+ {
+ value: "zhinan",
+ label: "鎸囧崡",
+ children: [
+ {
+ value: "shejiyuanze",
+ label: "璁捐鍘熷垯",
+ children: [
+ {
+ value: "yizhi",
+ label: "涓�鑷�",
+ },
+ {
+ value: "fankui",
+ label: "鍙嶉",
+ },
+ {
+ value: "xiaolv",
+ label: "鏁堢巼",
+ },
+ {
+ value: "kekong",
+ label: "鍙帶",
+ },
+ ],
+ },
+ {
+ value: "daohang",
+ label: "瀵艰埅",
+ children: [
+ {
+ value: "cexiangdaohang",
+ label: "渚у悜瀵艰埅",
+ },
+ {
+ value: "dingbudaohang",
+ label: "椤堕儴瀵艰埅",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ value: "zujian",
+ label: "缁勪欢",
+ children: [
+ {
+ value: "basic",
+ label: "Basic",
+ children: [
+ {
+ value: "layout",
+ label: "Layout 甯冨眬",
+ },
+ {
+ value: "color",
+ label: "Color 鑹插僵",
+ },
+ {
+ value: "typography",
+ label: "Typography 瀛椾綋",
+ },
+ {
+ value: "icon",
+ label: "Icon 鍥炬爣",
+ },
+ {
+ value: "button",
+ label: "Button 鎸夐挳",
+ },
+ ],
+ },
+ {
+ value: "form",
+ label: "Form",
+ children: [
+ {
+ value: "radio",
+ label: "Radio 鍗曢�夋",
+ },
+ {
+ value: "checkbox",
+ label: "Checkbox 澶氶�夋",
+ },
+ {
+ value: "input",
+ label: "Input 杈撳叆妗�",
+ },
+ {
+ value: "input-number",
+ label: "InputNumber 璁℃暟鍣�",
+ },
+ {
+ value: "select",
+ label: "Select 閫夋嫨鍣�",
+ },
+ {
+ value: "cascader",
+ label: "Cascader 绾ц仈閫夋嫨鍣�",
+ },
+ {
+ value: "switch",
+ label: "Switch 寮�鍏�",
+ },
+ {
+ value: "slider",
+ label: "Slider 婊戝潡",
+ },
+ {
+ value: "time-picker",
+ label: "TimePicker 鏃堕棿閫夋嫨鍣�",
+ },
+ {
+ value: "date-picker",
+ label: "DatePicker 鏃ユ湡閫夋嫨鍣�",
+ },
+ {
+ value: "datetime-picker",
+ label: "DateTimePicker 鏃ユ湡鏃堕棿閫夋嫨鍣�",
+ },
+ {
+ value: "upload",
+ label: "Upload 涓婁紶",
+ },
+ {
+ value: "rate",
+ label: "Rate 璇勫垎",
+ },
+ {
+ value: "form",
+ label: "Form 琛ㄥ崟",
+ },
+ ],
+ },
+ {
+ value: "data",
+ label: "Data",
+ children: [
+ {
+ value: "table",
+ label: "Table 琛ㄦ牸",
+ },
+ {
+ value: "tag",
+ label: "Tag 鏍囩",
+ },
+ {
+ value: "progress",
+ label: "Progress 杩涘害鏉�",
+ },
+ {
+ value: "tree",
+ label: "Tree 鏍戝舰鎺т欢",
+ },
+ {
+ value: "pagination",
+ label: "Pagination 鍒嗛〉",
+ },
+ {
+ value: "badge",
+ label: "Badge 鏍囪",
+ },
+ ],
+ },
+ {
+ value: "notice",
+ label: "Notice",
+ children: [
+ {
+ value: "alert",
+ label: "Alert 璀﹀憡",
+ },
+ {
+ value: "loading",
+ label: "Loading 鍔犺浇",
+ },
+ {
+ value: "message",
+ label: "Message 娑堟伅鎻愮ず",
+ },
+ {
+ value: "message-box",
+ label: "MessageBox 寮规",
+ },
+ {
+ value: "notification",
+ label: "Notification 閫氱煡",
+ },
+ ],
+ },
+ {
+ value: "navigation",
+ label: "Navigation",
+ children: [
+ {
+ value: "menu",
+ label: "NavMenu 瀵艰埅鑿滃崟",
+ },
+ {
+ value: "tabs",
+ label: "Tabs 鏍囩椤�",
+ },
+ {
+ value: "breadcrumb",
+ label: "Breadcrumb 闈㈠寘灞�",
+ },
+ {
+ value: "dropdown",
+ label: "Dropdown 涓嬫媺鑿滃崟",
+ },
+ {
+ value: "steps",
+ label: "Steps 姝ラ鏉�",
+ },
+ ],
+ },
+ {
+ value: "others",
+ label: "Others",
+ children: [
+ {
+ value: "dialog",
+ label: "Dialog 瀵硅瘽妗�",
+ },
+ {
+ value: "tooltip",
+ label: "Tooltip 鏂囧瓧鎻愮ず",
+ },
+ {
+ value: "popover",
+ label: "Popover 寮瑰嚭妗�",
+ },
+ {
+ value: "card",
+ label: "Card 鍗$墖",
+ },
+ {
+ value: "carousel",
+ label: "Carousel 璧伴┈鐏�",
+ },
+ {
+ value: "collapse",
+ label: "Collapse 鎶樺彔闈㈡澘",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ value: "ziyuan",
+ label: "璧勬簮",
+ children: [
+ {
+ value: "axure",
+ label: "Axure Components",
+ },
+ {
+ value: "sketch",
+ label: "Sketch Templates",
+ },
+ {
+ value: "jiaohu",
+ label: "缁勪欢浜や簰鏂囨。",
+ },
+ ],
+ },
+ ],
+ valssu: [
+ {
+ idd: 1,
+ wssd: "浣犳渶杩戞�庝箞鏍�",
+ sdadd: ["sss", "ssccss", "ssaas", "ss"],
+ },
+ ],
+ addvalue: "娣诲姞棰樼洰",
+ // 棰樼洰琛ㄦ牸鏁版嵁
+ userList: [
+ {
+ userid: "1",
+ userName: "涓�鍙峰鏁�",
+ },
+ {
+ userid: "2",
+ userName: "浜屽彿瀹f暀",
+ },
+ {
+ userid: "3",
+ userName: "涓夊彿瀹f暀",
+ },
+ {
+ userid: "4",
+ userName: "鍥涘彿瀹f暀",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ };
+ },
+
+ created() {},
+
+ methods: {
+ submitForm(formName) {
+ if (this.Editprogress <= 3) {
+ return this.Editprogress++;
+ }
+ this.rules = this.rulesa;
+ // 鎻愪氦
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ alert("submit!");
+ } else {
+ console.log("error submit!!");
+ return false;
+ }
+ });
+ },
+ /** 鏌ヨ棰樼洰鍒楄〃 */
+ getList() {
+ // this.loading = true;
+ listUser().then((response) => {
+ console.log(response);
+ // this.userList = response.data;
+ // this.total = response.total;
+ // this.loading = false;
+ console.log(this.userList);
+ });
+ // const { rows } = await listUser();
+ // console.log(rows);
+ // this.list = rows;
+ },
+ changeaddtopic(val) {
+ console.log(11);
+ console.log(val);
+ this.addvalue = "娣诲姞棰樼洰";
+ },
+ // 棰勮妯$増
+ PreviewTemplate() {
+ this.drawer = true;
+ },
+ laststep() {
+ this.Editprogress--;
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+ display: flex;
+}
+.sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ // margin-top: 20px;
+ margin: 20px;
+ margin-bottom: 0;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+.leftvlue {
+ // display: flex;
+ // flex: 1;
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ }
+ .leftvlue-jbxx {
+ margin-bottom: 50px;
+ font-size: 20px;
+ span {
+ position: absolute;
+ right: 80px;
+ }
+ }
+ .demo-cascader {
+ margin-right: 20px;
+ }
+ .PreviewTemplate {
+ color: #02a7f0;
+ cursor: pointer;
+ font-size: 20px;
+ margin: 0 20px;
+ }
+}
+.preview-left {
+ margin: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+}
+.addtopic {
+ margin-top: 30px;
+}
+.presentation {
+ margin: 20px 0;
+ display: flex;
+ .presentation-left {
+ width: 50%;
+ height: 500px;
+ .button-textxg {
+ color: #024df0;
+ }
+ .button-textsc {
+ color: #f52727;
+ }
+ }
+ .presentation-right {
+ width: 50%;
+ height: 500px;
+ padding: 20px;
+ font-size: 18px;
+ border: 1px solid #909091;
+ span {
+ padding: 0 35px;
+ margin-right: 10px;
+ border-bottom: 1px solid #909091;
+ }
+ .headline {
+ font-size: 20px;
+ border-left: 3px solid #41a1be;
+ padding-left: 5px;
+ margin: 15px 0;
+ }
+ }
+}
+::v-deep .addtopic-input {
+ input {
+ background: #02a7f0;
+ color: #edf1f7;
+ width: 150px;
+ }
+}
+::v-deep.el-step.is-vertical .el-step__title {
+ font-size: 25px;
+}
+::v-deep.el-input--medium {
+ font-size: 24px !important;
+}
+::v-deep.ruleFormaa.el-select {
+ display: inline-block;
+ position: relative;
+ width: 700px;
+}
+.el-select__tags {
+ font-size: 20px;
+ max-width: 888px !important;
+}
+::v-deep.el-radio__inner {
+ width: 22px;
+ height: 22px;
+}
+// ::v-deep.topic-dev.el-radio__label {
+// font-size: 24px;
+// }
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+::v-deep.el-checkbox-group {
+ span {
+ font-size: 24px;
+ }
+}
+// ::v-deep.el-form-item--medium .el-form-item__content {
+// line-height: 36px;
+// display: flex;
+// }
+</style>
diff --git a/src/views/knowledge/education/examine/index.vue b/src/views/knowledge/education/examine/index.vue
new file mode 100644
index 0000000..4813531
--- /dev/null
+++ b/src/views/knowledge/education/examine/index.vue
@@ -0,0 +1,304 @@
+<template>
+ <div class="examineemanagement">
+ <!-- 宸︿晶鏍� -->
+
+ <div class="sidecolumn">
+ <div class="sidecolumn-top">
+ <div class="top-wj">鍘嗗彶鐗堟湰</div>
+ <!-- <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div> -->
+ </div>
+ <div class="bottom-fl">
+ <el-tabs tab-position="right" v-model="activeName">
+ <el-tab-pane
+ class="tab-paness"
+ :key="index"
+ v-for="(item, index) in editableTabs"
+ >
+ <div class="mulsz" slot="label">
+ {{ item.versionsac
+ }}<span style="margin-left: 30px">{{
+ item.startUsing ? "鍚敤" : "绂佺敤"
+ }}</span>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+
+ <div class="leftvlue">
+ <div v-if="activeName == '0'">
+ <div class="examine-top">
+ <span>缂栬緫浜猴細{{ basicInformation.name }}</span>
+ <span>缂栬緫鏃堕棿锛歿{ basicInformation.day }}</span>
+ <span class="ewmyl">浜岀淮鐮侀瑙�</span>
+ </div>
+ <!-- 鍩虹淇℃伅 -->
+ <div class="examine-jic">
+ <div class="headline">鍩虹淇℃伅</div>
+ <div class="jic-value">
+ <div>
+ 瀹f暀鍚嶇О锛歿{ basicInformation.wname
+ }}<span>閫傜敤鐤剧梾锛歿{ basicInformation.jbname }}</span>
+ </div>
+ <div>
+ 瀹f暀褰㈠紡锛歿{ basicInformation.wname
+ }}<span>閫傜敤鍒嗙被锛歿{ basicInformation.jbname }}</span>
+ </div>
+ <div>琛ㄥ崟鎻忚堪锛歿{ basicInformation.miaosname }}</div>
+ </div>
+ </div>
+ <!-- 瀹f暀棰勮 -->
+ <div class="examine-jic">
+ <div class="headline">瀹f暀鍐呭</div>
+ <div class="jic-value">
+ <div>
+ 瀹f暀浠嬬粛锛�<span class="wenjuanjs"
+ >闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ</span
+ >
+ </div>
+ </div>
+ <div class="preview-left">
+ <!-- 鍗曢�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕鍗曢�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="radio">
+ <el-radio
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </div>
+ <!-- 澶氶�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕澶氶�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-checkbox-group v-model="radios">
+ <el-checkbox
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >
+ {{ items }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <!-- 濉┖ -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕濉┖]  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div v-else-if="activeName == '1'">bbb</div>
+ <div v-else-if="activeName == '2'">ccc</div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ activeName: "0",
+ radios: [], //澶氶�夐閫変腑
+
+ basicInformation: {
+ name: "鑰佸惔",
+ day: "2023骞�12鏈�11鏃�16鏃�12鍒�11绉�",
+ wname: "澶уぇ澶�",
+ jbname: "灏忓皬灏�",
+ miaosname: "闈炲父濂藉ぇ澶уぇ",
+ },
+ valssu: [
+ {
+ idd: 1,
+ wssd: "浣犳渶杩戞�庝箞鏍�",
+ sdadd: ["sss", "ssccss", "ssaas", "ss"],
+ },
+ ],
+ editableTabs: [
+ {
+ versionsac: "1.0.3",
+ startUsing: true,
+ },
+ {
+ versionsac: "1.0.2",
+ startUsing: false,
+ },
+ {
+ versionsac: "1.0.1",
+ startUsing: false,
+ },
+ ],
+ };
+ },
+
+ created() {},
+
+ methods: {
+ handleClick() {},
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.examineemanagement {
+ display: flex;
+ .sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .sidecolumn-top {
+ display: flex;
+ justify-content: space-between;
+ .top-wj {
+ font-size: 20px;
+ }
+ .top-tj {
+ font-size: 18px;
+
+ color: rgb(0, 89, 255);
+ cursor: pointer;
+ }
+ }
+ .center-ss {
+ margin-top: 30px;
+ .input-with-select {
+ height: 40px !important;
+ }
+ }
+ .bottom-fl {
+ margin-top: 30px;
+ display: center !important;
+ }
+ }
+ .leftvlue {
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ span {
+ margin-left: 30px;
+ }
+ }
+ .examine-top {
+ font-size: 20px;
+ margin-bottom: 40px;
+ span {
+ margin-right: 30px;
+ }
+ .ewmyl {
+ color: rgb(0, 81, 255);
+ cursor: pointer;
+ }
+ }
+ .examine-jic {
+ .headline {
+ font-size: 28px;
+ border-left: 8px solid #42b983;
+ padding-left: 5px;
+ margin-bottom: 15px;
+ }
+ .jic-value {
+ font-size: 20px;
+ border-top: 1px solid #a7abac;
+ padding: 20px;
+ div {
+ margin-bottom: 15px;
+ span {
+ margin-left: 180px;
+ }
+ }
+ .wenjuanjs {
+ margin-left: 15px;
+ padding-bottom: 5px;
+ border-bottom: 1px solid #a7abac;
+ }
+ }
+ .preview-left {
+ margin: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+ .examine-jieg {
+ .headline {
+ font-size: 28px;
+ padding-left: 5px;
+ border-left: 8px solid #41a1be;
+ // border-bottom: 1px solid #41a1be;
+ margin-bottom: 15px;
+ }
+ }
+ }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+ overflow: hidden;
+ align-items: center;
+ display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+ height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+ height: 40px;
+ width: 5px;
+ left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+ display: block;
+ font-size: 20px;
+}
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+::v-deep.el-checkbox-group {
+ span {
+ font-size: 24px;
+ }
+}
+</style>
diff --git a/src/views/knowledge/education/index.vue b/src/views/knowledge/education/index.vue
new file mode 100644
index 0000000..c837000
--- /dev/null
+++ b/src/views/knowledge/education/index.vue
@@ -0,0 +1,816 @@
+<template>
+ <div class="educationmanagement">
+ <!-- 宸︿晶鏍� -->
+ <div class="sidecolumn">
+ <div class="sidecolumn-top">
+ <div class="top-wj">瀹f暀绫诲瀷</div>
+ <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞绫诲埆</div>
+ </div>
+ <div class="center-ss">
+ <el-input
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="sidecolumnval"
+ class="input-with-select"
+ size="medium "
+ >
+ <el-button
+ @click="sidecolumnss"
+ slot="append"
+ icon="el-icon-search"
+ ></el-button>
+ </el-input>
+ </div>
+ <div class="bottom-fl">
+ <el-tabs tab-position="right">
+ <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+ <el-tab-pane
+ class="tab-paness"
+ :key="item.name"
+ v-for="(item, index) in editableTabs"
+ :label="item.title + ' (' + item.number + ')'"
+ ></el-tab-pane>
+
+ <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+ <div class="leftvlue">
+ <div class="leftvlue-top">
+ <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
+ <el-tab-pane name="Local">
+ <span class="mulsz" slot="label">鏈湴瀹f暀搴� </span>
+ </el-tab-pane>
+ <el-tab-pane name="sharing">
+ <span class="mulsz" slot="label">鍏变韩瀹f暀搴� </span>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ <div class="leftvlue-bg">
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="瀹f暀鍚嶇О" prop="userName">
+ <el-input
+ v-model="queryParams.userName"
+ placeholder="璇疯緭鍏�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="閫傜敤鐤剧梾" prop="sickness">
+ <el-cascader
+ v-model="queryParams.sickness"
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+ <el-form-item label="瀹f暀褰㈠紡" prop="shape">
+ <el-select
+ v-model="queryParams.shapevalue"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="item in xjxsoptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="瀹f暀鍒嗙被" prop="classify">
+ <el-select
+ v-model="queryParams.classifyvalue"
+ placeholder="璇烽�夋嫨"
+ >
+ <el-option
+ v-for="(item, index) in editableTabs"
+ :key="index++"
+ :label="item.title"
+ :value="index++"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ v-hasPermi="['system:user:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:user:remove']"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+
+ <!-- <el-col :span="1.5"> </el-col> -->
+ </el-row>
+ <!-- <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ :columns="columns"
+ ></right-toolbar> -->
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ border="true"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userid"
+ prop="userid"
+ />
+ <el-table-column
+ label="瀹f暀鍚嶇О"
+ align="center"
+ key="userName"
+ prop="userName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鐗堟湰"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="閫傜敤鐤剧梾"
+ align="center"
+ key="aphonenumber"
+ prop="aphonenumber"
+ width="120"
+ /><el-table-column
+ label="瀹f暀鎻忚堪"
+ align="center"
+ key="bphonenumber"
+ prop="bphonenumber"
+ width="120"
+ />
+ <el-table-column
+ label="鏈�杩戠紪杈�"
+ align="center"
+ key="cphonenumber"
+ prop="cphonenumber"
+ width="120"
+ />
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="goQRCode(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ >
+ <span class="button-text"
+ ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="Vieweducation(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textck"
+ ><i class="el-icon-edit"></i>鏌ョ湅</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textxg"
+ ><i class="el-icon-edit"></i>淇敼</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:user:remove']"
+ ><span class="button-textsc"
+ ><i class="el-icon-edit"></i>鍒犻櫎</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
+
+ <!-- 娣诲姞鎴栦慨鏀瑰鏁欓厤缃璇濇 -->
+ <el-dialog
+ :title="title"
+ :visible.sync="open"
+ width="900px"
+ append-to-body
+ >
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="濮撳悕" prop="nickName">
+ <el-input
+ v-model="form.nickName"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="deptId">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in dict.type.sys_user_sex"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+ <el-input
+ v-model="form.phonenumber"
+ placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+ maxlength="11"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢鍙�" prop="email">
+ <el-input
+ v-model="form.email"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+ <el-input
+ v-model="form.userName"
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+ <el-input
+ v-model="form.password"
+ placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+ type="password"
+ maxlength="20"
+ show-password
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呮爣绛�">
+ <el-cascader
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞">
+ <el-input
+ v-model="form.remark"
+ type="textarea"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+ </div>
+ <!-- 娣诲姞绫诲埆寮规 -->
+ <el-dialog width="30%" :visible.sync="dialogFormVisible">
+ <el-form :model="sidecolumnform">
+ <el-form-item label="璇疯緭鍏ョ被鍒悕绉�">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+ <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
+ <el-dialog width="30%" :visible.sync="goQRCodeVisible">
+ <div class="qrcode-dialo">
+ <div class="qrcode-text">
+ {{ nameeducation }}<span>{{ haoeducation }}</span>
+ </div>
+ <div class="qrcode-img"></div>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ listUser,
+ getUser,
+ delUser,
+ addUser,
+ updateUser,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+ name: "education",
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { Treeselect },
+ data() {
+ return {
+ topactiveName: "Local", //椤堕儴閫夋嫨
+ // 閬僵灞�
+ loading: false,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ nameeducation: "",
+ haoeducation: "",
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: [
+ {
+ userid: 1,
+ userName: "涓夊彿瀹f暀",
+ nickName: "1.2.4",
+
+ aphonenumber: "鍏宠妭鐐庣棁",
+ bphonenumber: "寰堟",
+ cphonenumber: "2022-12-12",
+ },
+ ],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ // 瑙掕壊閫夐」
+ roleOptions: [],
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ numberlb: 22,
+ numberlbs: 2,
+ sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
+ dialogFormVisible: false, //娣诲姞绫诲埆寮规
+ goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+ sidecolumnval: "", //绫诲埆鎼滅储
+ propss: { multiple: true },
+ optionss: [
+ {
+ value: 1,
+ label: "涓滃崡",
+ },
+ {
+ value: 2,
+ label: "瑗垮寳",
+ },
+ {
+ value: 3,
+ label: "浠ㄤ花浠�",
+ },
+ {
+ value: 4,
+ label: "鍏椋掗",
+ },
+ ],
+ xjxsoptions: [
+ {
+ value: 1,
+ label: "瑙嗛",
+ },
+ {
+ value: 2,
+ label: "璁插骇",
+ },
+ {
+ value: 3,
+ label: "璇煶",
+ },
+ ],
+ //绫诲埆鍒楄〃
+ editableTabs: [
+ {
+ title: "瀹f暀鍒嗙被涓�",
+ number: "1",
+ },
+ {
+ title: "瀹f暀鍒嗙被浜�",
+ number: "2",
+ },
+ {
+ title: "瀹f暀鍒嗙被涓�",
+ number: "2",
+ },
+ {
+ title: "瀹f暀鍒嗙被鍥�",
+ number: "2",
+ },
+ {
+ title: "瀹f暀鍒嗙被浜�",
+ number: "2",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ sickness: "",
+ classifyvalue: "",
+ shapevalue: "",
+ userName: undefined,
+ },
+ // 鍒椾俊鎭�
+ columns: [
+ { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+ { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+ { key: 3, label: `閮ㄩ棬`, visible: true },
+ { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+ { key: 5, label: `鐘舵�乣, visible: true },
+ { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+ ],
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ userName: [
+ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ nickName: [
+ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+ ],
+ password: [
+ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ email: [
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
+ ],
+ phonenumber: [
+ {
+ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ IDnumber: [
+ {
+ pattern:
+ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+ message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+ trigger: "blur",
+ },
+ ],
+ },
+ };
+ },
+ watch: {},
+ created() {
+ this.getList();
+ },
+
+ methods: {
+ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+ getList() {
+ // this.loading = true;
+ listUser().then((response) => {
+ console.log(response);
+ // this.userList = response.data;
+ // this.total = response.total;
+ // this.loading = false;
+ console.log(this.userList);
+ });
+ // const { rows } = await listUser();
+ // console.log(rows);
+ // this.list = rows;
+ },
+ // 娣诲姞绫诲埆
+ submitsidecolumn() {
+ this.dialogFormVisible = false;
+ },
+ //鎼滅储绫诲埆
+ sidecolumnss() {},
+ // 鍒囨崲鍏变韩/鏈湴
+ tophandleClick() {},
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ goQRCode(row) {
+ this.goQRCodeVisible = true;
+ this.nameeducation = row.userName;
+ this.haoeducation = row.nickName;
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.queryParams.deptId = undefined;
+ this.$refs.tree.setCurrentKey(null);
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.userId);
+ this.single = selection.length != 1;
+ this.multiple = !selection.length;
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.$router.push({
+ path: "/knowledge/education/compilequer/",
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.$router.push({
+ path: "/knowledge/education/compilequer/",
+ query: { id: "1" },
+ });
+ },
+ // 鏌ョ湅瀹f暀
+ Vieweducation() {
+ this.$router.push({
+ path: "/knowledge/education/examine/",
+ query: { id: "1" },
+ });
+ },
+
+ /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.userId != undefined) {
+ updateUser(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addUser(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.educationmanagement {
+ display: flex;
+}
+.sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .sidecolumn-top {
+ display: flex;
+ justify-content: space-between;
+ .top-wj {
+ font-size: 20px;
+ }
+ .top-tj {
+ font-size: 18px;
+
+ color: rgb(0, 89, 255);
+ cursor: pointer;
+ }
+ }
+ .center-ss {
+ margin-top: 30px;
+ .input-with-select {
+ height: 40px !important;
+ }
+ }
+ .bottom-fl {
+ margin-top: 30px;
+ display: center !important;
+ }
+}
+.qrcode-dialo {
+ text-align: center;
+ // display: flex;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .qrcode-text {
+ font-size: 20px;
+ span {
+ margin-left: 20px;
+ }
+ }
+ .qrcode-img {
+ width: 300px;
+ height: 400px;
+ }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+ overflow: hidden;
+ align-items: center;
+ display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+ height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+ height: 40px;
+ width: 5px;
+ left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+ display: block;
+ font-size: 20px;
+}
+.leftvlue {
+ // display: flex;
+ // flex: 1;
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ }
+}
+.button-text {
+ color: rgb(70, 204, 238);
+}
+.button-textck {
+ color: rgb(39, 167, 67);
+}
+.button-textxg {
+ color: rgb(35, 81, 233);
+}
+.button-textsc {
+ color: rgb(235, 23, 23);
+}
+</style>
diff --git a/src/views/knowledge/questionbank/index.vue b/src/views/knowledge/questionbank/index.vue
new file mode 100644
index 0000000..c16345f
--- /dev/null
+++ b/src/views/knowledge/questionbank/index.vue
@@ -0,0 +1,987 @@
+<template>
+ <div class="app-container">
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="棰樼洰鍚嶇О" prop="userName">
+ <el-input
+ v-model="queryParams.userName"
+ placeholder="璇疯緭鍏�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber">
+ <el-input
+ v-model="queryParams.IDnumber"
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
+ clearable
+ style="width: 250px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber">
+ <el-input
+ v-model="queryParams.phonenumber"
+ placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
+ clearable
+ style="width: 280px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-row>
+ <el-form-item label="鎮h�呮爣绛�" prop="status">
+ <el-cascader
+ v-model="queryParams.status"
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+ </el-row>
+
+ <!-- <el-form-item label="鍒涘缓鏃堕棿">
+ <el-date-picker
+ v-model="dateRange"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item> -->
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ v-hasPermi="['system:user:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="medium"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['system:user:edit']"
+ >淇敼</el-button
+ >
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:user:remove']"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+ <el-col :span="19">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="info"
+ plain
+ icon="el-icon-upload2"
+ size="medium"
+ @click="handleImport"
+ v-hasPermi="['system:user:import']"
+ >瀵煎叆</el-button
+ >
+ </div>
+ <div class="document">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="medium"
+ @click="handleExport"
+ v-hasPermi="['system:user:export']"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <!-- <el-col :span="1.5"> </el-col> -->
+ </el-row>
+ <!-- <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ :columns="columns"
+ ></right-toolbar> -->
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userId"
+ prop="userId"
+ v-if="columns[0].visible"
+ />
+ <el-table-column
+ label="濮撳悕"
+ align="center"
+ key="userName"
+ prop="userName"
+ v-if="columns[1].visible"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎬у埆"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ v-if="columns[2].visible"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎮h�呮爣绛�"
+ align="center"
+ key="deptName"
+ prop="dept.deptName"
+ v-if="columns[3].visible"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="璇佷欢绫诲瀷"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ /><el-table-column
+ label="璇佷欢鍙风爜"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+ <el-table-column
+ label="骞撮緞"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+ <!-- <el-table-column
+ label="鐘舵��"
+ align="center"
+ key="status"
+ v-if="columns[5].visible"
+ >
+ <template slot-scope="scope">
+ <el-switch
+ v-model="scope.row.status"
+ active-value="0"
+ inactive-value="1"
+ @change="handleStatusChange(scope.row)"
+ ></el-switch>
+ </template>
+ </el-table-column> -->
+
+ <el-table-column
+ label="鑱旂郴鏂瑰紡"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+ <el-table-column
+ label="寤烘。鏃ユ湡"
+ align="center"
+ prop="createTime"
+ v-if="columns[6].visible"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏇存柊鏃ユ湡"
+ align="center"
+ prop="createTime"
+ v-if="columns[6].visible"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="160"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope" v-if="scope.row.userId !== 1">
+ <el-button
+ size="medium"
+ type="text"
+ icon="el-icon-edit"
+ @click="$router.push('/patient/patient/profile/')"
+ v-hasPermi="['system:user:edit']"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
+
+ <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="濮撳悕" prop="nickName">
+ <el-input
+ v-model="form.nickName"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="deptId">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in dict.type.sys_user_sex"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+ <el-input
+ v-model="form.phonenumber"
+ placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+ maxlength="11"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢鍙�" prop="email">
+ <el-input
+ v-model="form.email"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+ <el-input
+ v-model="form.userName"
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+ <el-input
+ v-model="form.password"
+ placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+ type="password"
+ maxlength="20"
+ show-password
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呮爣绛�">
+ <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> -->
+ <el-cascader
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ <!-- </el-select> -->
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="12">
+ <el-form-item label="鐘舵��">
+ <el-radio-group v-model="form.status">
+ <el-radio
+ v-for="dict in dict.type.sys_normal_disable"
+ :key="dict.value"
+ :label="dict.value"
+ >{{ dict.label }}</el-radio
+ >
+ </el-radio-group>
+ </el-form-item>
+ </el-col> -->
+ </el-row>
+ <!-- <el-row>
+ <el-col :span="12">
+ <el-form-item label="宀椾綅">
+ <el-select
+ v-model="form.postIds"
+ multiple
+ placeholder="璇烽�夋嫨宀椾綅"
+ >
+ <el-option
+ v-for="item in postOptions"
+ :key="item.postId"
+ :label="item.postName"
+ :value="item.postId"
+ :disabled="item.status == 1"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑙掕壊">
+ <el-select
+ v-model="form.roleIds"
+ multiple
+ placeholder="璇烽�夋嫨瑙掕壊"
+ >
+ <el-option
+ v-for="item in roleOptions"
+ :key="item.roleId"
+ :label="item.roleName"
+ :value="item.roleId"
+ :disabled="item.status == 1"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row> -->
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞">
+ <el-input
+ v-model="form.remark"
+ type="textarea"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
+ <el-dialog
+ :title="upload.title"
+ :visible.sync="upload.open"
+ width="70%"
+ append-to-body
+ >
+ <el-steps :active="dractive" simple>
+ <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step>
+ <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step>
+ <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step>
+ </el-steps>
+ <!-- 涓婁紶瀵煎叆鏂囦欢 -->
+ <div class="download" v-if="dractive == 1">
+ <el-upload
+ class="upload-demo"
+ ref="upload"
+ :limit="1"
+ accept=".xlsx, .xls"
+ :headers="upload.headers"
+ :action="upload.url + '?updateSupport=' + upload.updateSupport"
+ :disabled="upload.isUploading"
+ :on-progress="handleFileUploadProgress"
+ :on-success="handleFileSuccess"
+ :auto-upload="false"
+ drag
+ >
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <div class="el-upload__tip text-center" slot="tip">
+ <div class="el-upload__tip" slot="tip">
+ <el-checkbox v-model="upload.updateSupport" />
+ 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ </div>
+ <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+ <el-link
+ type="primary"
+ :underline="false"
+ style="font-size: 24px; vertical-align: baseline"
+ @click="importTemplate"
+ >涓嬭浇妯℃澘</el-link
+ >
+ </div>
+ </el-upload>
+ </div>
+ <!-- 瀵煎叆妫�鏌� -->
+ <div class="uploading" v-else-if="dractive == 2">
+ <el-table :data="uploadingData" style="width: 100%">
+ <el-table-column prop="serial" label="搴忓彿"> </el-table-column>
+ <el-table-column prop="name" label="濮撳悕"> </el-table-column>
+ <el-table-column prop="sex" label="鎬у埆"> </el-table-column>
+ <el-table-column prop="certificate" label="璇佷欢绫诲瀷">
+ </el-table-column>
+ <el-table-column prop="certificatenum" label="璇佷欢鍙风爜">
+ </el-table-column>
+ <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column>
+ <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column>
+ <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡">
+ </el-table-column>
+ <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column>
+ <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column>
+ </el-table>
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="geterryList"
+ />
+ </div>
+ <!-- 瀹屾垚 -->
+ <div class="drexamine" v-else-if="dractive == 3">
+ <img
+ src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
+ />
+ <p>瀵煎叆鎮h�呮垚鍔燂紒</p>
+ <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p>
+ </div>
+
+ <div slot="footer" class="dialog-footer" v-if="dractive == 3">
+ <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> -->
+ <el-button @click="submitclose">瀹屾垚</el-button>
+ </div>
+ <div slot="footer" v-else>
+ <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button>
+ <el-button @click="submitclose">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ listUser,
+ getUser,
+ delUser,
+ addUser,
+ updateUser,
+ resetUserPwd,
+ changeUserStatus,
+ deptTreeSelect,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+ name: "User",
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { Treeselect },
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: null,
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 閮ㄩ棬鏍戦�夐」
+ deptOptions: undefined,
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 閮ㄩ棬鍚嶇О
+ deptName: undefined,
+ // 榛樿瀵嗙爜
+ initPassword: undefined,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ // 瑙掕壊閫夐」
+ roleOptions: [],
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ //瀵煎叆杩涘害
+ dractive: 1,
+ // 瀵煎叆灞曠ず琛ㄥ崟
+ uploadingData: {},
+ total: 0, // 鎬绘潯鏁�
+ ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲�
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ jobName: undefined,
+ jobGroup: undefined,
+ status: undefined,
+ },
+ propss: { multiple: true },
+ optionss: [
+ {
+ value: 1,
+ label: "涓滃崡",
+ },
+ {
+ value: 2,
+ label: "瑗垮寳",
+ },
+ {
+ value: 3,
+ label: "浠ㄤ花浠�",
+ },
+ {
+ value: 4,
+ label: "鍏椋掗",
+ },
+ ],
+ defaultProps: {
+ children: "children",
+ label: "label",
+ },
+ // 鐢ㄦ埛瀵煎叆鍙傛暟
+ upload: {
+ // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+ open: false,
+ // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
+ title: "",
+ // 鏄惁绂佺敤涓婁紶
+ isUploading: false,
+ // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ updateSupport: 0,
+ // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+ headers: { Authorization: "Bearer " + getToken() },
+ // 涓婁紶鐨勫湴鍧�
+ url: process.env.VUE_APP_BASE_API + "/system/user/importData",
+ },
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ // 鍒椾俊鎭�
+ columns: [
+ { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+ { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+ { key: 3, label: `閮ㄩ棬`, visible: true },
+ { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+ { key: 5, label: `鐘舵�乣, visible: true },
+ { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+ ],
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ userName: [
+ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ nickName: [
+ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+ ],
+ password: [
+ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ email: [
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
+ ],
+ phonenumber: [
+ {
+ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ IDnumber: [
+ {
+ pattern:
+ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+ message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+ trigger: "blur",
+ },
+ ],
+ },
+ };
+ },
+ watch: {
+ // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
+ deptName(val) {
+ this.$refs.tree.filter(val);
+ },
+ },
+ created() {
+ this.getList();
+ this.getDeptTree();
+ this.getConfigKey("sys.user.initPassword").then((response) => {
+ this.initPassword = response.msg;
+ });
+ },
+ methods: {
+ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+ getList() {
+ this.loading = true;
+ listUser(this.addDateRange(this.queryParams, this.dateRange)).then(
+ (response) => {
+ this.userList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ }
+ );
+ },
+ // 鏌ヨ瀵煎叆灞曠ず鍒楄〃
+ geterryList() {
+ this.loading = true;
+ listJob(this.queryParams).then((response) => {
+ this.jobList = 1;
+ this.total = 1;
+ this.loading = false;
+ });
+ },
+ /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
+ getDeptTree() {
+ deptTreeSelect().then((response) => {
+ this.deptOptions = response.data;
+ });
+ },
+ // 绛涢�夎妭鐐�
+ filterNode(value, data) {
+ if (!value) return true;
+ return data.label.indexOf(value) !== -1;
+ },
+ // 鑺傜偣鍗曞嚮浜嬩欢
+ handleNodeClick(data) {
+ this.queryParams.deptId = data.id;
+ this.handleQuery();
+ },
+ // 鐢ㄦ埛鐘舵�佷慨鏀�
+ handleStatusChange(row) {
+ let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+ this.$modal
+ .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+ .then(function () {
+ return changeUserStatus(row.userId, row.status);
+ })
+ .then(() => {
+ this.$modal.msgSuccess(text + "鎴愬姛");
+ })
+ .catch(function () {
+ row.status = row.status === "0" ? "1" : "0";
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.queryParams.deptId = undefined;
+ this.$refs.tree.setCurrentKey(null);
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.userId);
+ this.single = selection.length != 1;
+ this.multiple = !selection.length;
+ },
+ // 鏇村鎿嶄綔瑙﹀彂
+ handleCommand(command, row) {
+ switch (command) {
+ case "handleResetPwd":
+ this.handleResetPwd(row);
+ break;
+ case "handleAuthRole":
+ this.handleAuthRole(row);
+ break;
+ default:
+ break;
+ }
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ getUser().then((response) => {
+ this.postOptions = response.posts;
+ this.roleOptions = response.roles;
+ this.open = true;
+ this.title = "鏂板鎮h��";
+ this.form.password = this.initPassword;
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const userId = row.userId || this.ids;
+ getUser(userId).then((response) => {
+ this.form = response.data;
+ this.postOptions = response.posts;
+ this.roleOptions = response.roles;
+ this.$set(this.form, "postIds", response.postIds);
+ this.$set(this.form, "roleIds", response.roleIds);
+ this.open = true;
+ this.title = "淇敼鐢ㄦ埛";
+ this.form.password = "";
+ });
+ },
+ /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+ handleResetPwd(row) {
+ this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ closeOnClickModal: false,
+ inputPattern: /^.{5,20}$/,
+ inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ })
+ .then(({ value }) => {
+ resetUserPwd(row.userId, value).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+ });
+ })
+ .catch(() => {});
+ },
+ /** 鍒嗛厤瑙掕壊鎿嶄綔 */
+ handleAuthRole: function (row) {
+ const userId = row.userId;
+ this.$router.push("/system/user-auth/role/" + userId);
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.userId != undefined) {
+ updateUser(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addUser(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download(
+ "system/user/export",
+ {
+ ...this.queryParams,
+ },
+ `user_${new Date().getTime()}.xlsx`
+ );
+ },
+ /** 瀵煎叆鎸夐挳鎿嶄綔 */
+ handleImport() {
+ this.upload.title = "鐢ㄦ埛瀵煎叆";
+ this.upload.open = true;
+ },
+ /** 涓嬭浇妯℃澘鎿嶄綔 */
+ importTemplate() {
+ this.download(
+ "system/user/importTemplate",
+ {},
+ `user_template_${new Date().getTime()}.xlsx`
+ );
+ },
+ // 鏂囦欢涓婁紶涓鐞�
+ handleFileUploadProgress(event, file, fileList) {
+ this.upload.isUploading = true;
+ },
+ // 鏂囦欢涓婁紶鎴愬姛澶勭悊
+ handleFileSuccess(response, file, fileList) {
+ this.upload.open = false;
+ this.upload.isUploading = false;
+ this.$refs.upload.clearFiles();
+ this.$alert(
+ "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+ response.msg +
+ "</div>",
+ "瀵煎叆缁撴灉",
+ { dangerouslyUseHTMLString: true }
+ );
+ this.getList();
+ },
+ // 鎻愪氦涓婁紶鏂囦欢
+ submitFileForm() {
+ // 涓婁紶
+ if (this.dractive == 1) {
+ this.$refs.upload.submit();
+ this.dractive++;
+ } else {
+ this.dractive++;
+ }
+ },
+ submitclose() {
+ this.upload.open = false;
+ this.dractive = 1;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+ color: #ffffff;
+ background: #409eff;
+ border-color: #4fabe9;
+}
+.document {
+ width: 100px;
+ height: 50px;
+}
+.documentf {
+ display: flex;
+ justify-content: flex-end;
+}
+.download {
+ text-align: center;
+ .el-upload__tip {
+ font-size: 23px;
+ }
+ .el-upload__text {
+ font-size: 23px;
+ }
+}
+.uploading {
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #ffffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+.drexamine {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 30px;
+ background: #daeaf5;
+ img {
+ width: 100px;
+ height: 100px;
+ }
+}
+</style>
diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue
new file mode 100644
index 0000000..d5bc5ff
--- /dev/null
+++ b/src/views/knowledge/questionnaire/compilequer/index.vue
@@ -0,0 +1,1006 @@
+<template>
+ <div class="Questionnairemanagement">
+ <!-- 宸︿晶鏍� -->
+ <div class="sidecolumn">
+ <div style="height: 400px">
+ <el-steps direction="vertical" :active="Editprogress">
+ <el-step title="鍩虹淇℃伅璁剧疆"></el-step>
+ <el-step title="闂嵎璁剧疆"></el-step>
+ <el-step
+ title="闂嵎棰勮"
+ description="杩欐槸涓�娈靛緢闀垮緢闀垮緢闀跨殑鎻忚堪鎬ф枃瀛�"
+ ></el-step>
+ <el-step
+ title="缁撴灉鍙嶉"
+ description="杩欐槸涓�娈靛緢闀垮緢闀垮緢闀跨殑鎻忚堪鎬ф枃瀛�"
+ ></el-step>
+ </el-steps>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+ <div class="leftvlue">
+ <!-- 鍩烘湰淇℃伅 -->
+ <div v-if="Editprogress == 1">
+ <div class="leftvlue-jbxx">
+ 鍩烘湰淇℃伅<span>褰撳墠鐗堟湰:{{ currentVersion }}</span>
+ </div>
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="娲诲姩鍚嶇О" prop="name">
+ <el-input v-model="ruleForm.name"></el-input>
+ </el-form-item>
+ <el-form-item label="娲诲姩鍖哄煙" prop="region">
+ <el-select
+ v-model="ruleForm.region"
+ size="medium"
+ multiple
+ filterable
+ placeholder="璇烽�夋嫨娲诲姩鍖哄煙"
+ >
+ <el-option
+ class="ruleFormaa"
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input
+ :rows="4"
+ type="textarea"
+ v-model="ruleForm.desc"
+ ></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >涓嬩竴姝�</el-button
+ >
+ <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!-- 闂嵎璁剧疆 -->
+ <div v-if="Editprogress == 2">
+ <div class="leftvlue-jbxx">闂嵎璁剧疆</div>
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="闂嵎浠嬬粛" prop="desc">
+ <el-cascader
+ class="demo-cascader"
+ v-model="ruleForm.templatevalue"
+ :options="options"
+ :props="{ expandTrigger: 'hover' }"
+ ></el-cascader>
+ <el-select v-model="ruleForm.data2" placeholder="鎻愪氦鎻愮ず">
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ <div style="display: flex; margin-top: 20px">
+ <div class="PreviewTemplate" @click="PreviewTemplate()">
+ 棰勮妯$増
+ </div>
+ <el-button type="primary">纭寮曠敤</el-button>
+ </div>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+ <div class="addtopic">
+ <el-select
+ v-model="addvalue"
+ @change="changeaddtopic"
+ class="addtopic-input"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ >
+ </el-option>
+ </el-select>
+ </div>
+
+ <div class="presentation">
+ <div class="presentation-left">
+ <el-table v-loading="loading" :data="userList">
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userid"
+ prop="userid"
+ />
+ <el-table-column
+ label="棰樼洰"
+ align="center"
+ key="userName"
+ prop="userName"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <!-- <el-button
+ size="medium"
+ type="text"
+ @click="goQRCode(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ >
+ <span class="button-text"
+ ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="ViewQuestionnaire(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textck"
+ ><i class="el-icon-edit"></i>鏌ョ湅</span
+ ></el-button
+ > -->
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textxg"
+ ><i class="el-icon-scissors"></i>淇敼</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:user:remove']"
+ ><span class="button-textsc"
+ ><i class="el-icon-delete"></i>鍒犻櫎</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </div>
+ <div class="presentation-right">
+ <div class="headline">棰樼洰璁剧疆璇︽儏</div>
+ <div>棰樼洰鏍囬锛�<span>杩欏鏈烘瀯鎬庝箞鏍�</span></div>
+ <div>鏄惁蹇呯瓟锛�<span>鏄�</span> 鏄惁闅愯棌锛�<span>鍚�</span></div>
+ <div class="headline">閫夐」璁剧疆</div>
+ <div>
+ <p>閫夐」1:<span>鍖荤枟鏈烘瀯</span></p>
+ <p>
+ 濉啓鏄庣粏锛�<span>鏃�</span> 寮傚父閫夐」锛�<span>鏃�</span>
+ 鍒嗗�硷細<span>3</span>
+ </p>
+ <p>閫変腑鎻愮ず锛�<span>杩欎釜棰樻湁鐐归毦璇锋敞鎰�</span></p>
+ <p>閫変腑璺宠浆锛�<span>鏃�</span></p>
+ </div>
+ </div>
+ </div>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >涓嬩竴姝�</el-button
+ >
+ <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
+ <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <!-- 闂嵎棰勮 -->
+ <div v-if="Editprogress == 3">
+ <div class="preview-left">
+ <!-- 鍗曢�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕鍗曢�塢<span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="radio">
+ <el-radio
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </div>
+ <!-- 澶氶�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕澶氶�塢<span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-checkbox-group v-model="radios">
+ <el-checkbox
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >
+ {{ items }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <!-- 濉┖ -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕濉┖]<span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
+ </el-input>
+ </div>
+ </div>
+ </div>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >涓嬩竴姝�</el-button
+ >
+ <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
+ <!-- <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button> -->
+ </div>
+ <!-- 缁撴灉鍙嶉 -->
+ <div v-if="Editprogress == 4">
+ <el-form
+ :model="ruleForm"
+ :rules="rules"
+ ref="ruleForm"
+ label-width="100px"
+ class="demo-ruleForm"
+ >
+ <el-form-item label="娲诲姩鍚嶇О" prop="name">
+ <el-input v-model="ruleForm.name"></el-input>
+ </el-form-item>
+ <el-form-item label="娲诲姩鍖哄煙" prop="region">
+ <el-select v-model="ruleForm.region" placeholder="璇烽�夋嫨娲诲姩鍖哄煙">
+ <el-option label="鍖哄煙涓�" value="shanghai"></el-option>
+ <el-option label="鍖哄煙浜�" value="beijing"></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="娲诲姩鏃堕棿" required>
+ <el-col :span="11">
+ <el-form-item prop="date1">
+ <el-date-picker
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="ruleForm.date1"
+ style="width: 100%"
+ ></el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col class="line" :span="2">-</el-col>
+ <el-col :span="11">
+ <el-form-item prop="date2">
+ <el-time-picker
+ placeholder="閫夋嫨鏃堕棿"
+ v-model="ruleForm.date2"
+ style="width: 100%"
+ ></el-time-picker>
+ </el-form-item>
+ </el-col>
+ </el-form-item>
+ <el-form-item label="鍗虫椂閰嶉��" prop="delivery">
+ <el-switch v-model="ruleForm.delivery"></el-switch>
+ </el-form-item>
+ <el-form-item label="娲诲姩鎬ц川" prop="type">
+ <el-checkbox-group v-model="ruleForm.type">
+ <el-checkbox label="缇庨/椁愬巺绾夸笂娲诲姩" name="type"></el-checkbox>
+ <el-checkbox label="鍦版帹娲诲姩" name="type"></el-checkbox>
+ <el-checkbox label="绾夸笅涓婚娲诲姩" name="type"></el-checkbox>
+ <el-checkbox label="鍗曠函鍝佺墝鏇濆厜" name="type"></el-checkbox>
+ </el-checkbox-group>
+ </el-form-item>
+ <el-form-item label="鐗规畩璧勬簮" prop="resource">
+ <el-radio-group v-model="ruleForm.resource">
+ <el-radio label="绾夸笂鍝佺墝鍟嗚禐鍔�"></el-radio>
+ <el-radio label="绾夸笅鍦哄湴鍏嶈垂"></el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="娲诲姩褰㈠紡" prop="desc">
+ <el-input type="textarea" v-model="ruleForm.desc"></el-input>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="success" @click="submitForm('ruleForm')"
+ >绔嬪嵆鍒涘缓</el-button
+ >
+ <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button>
+ <el-button @click="resetForm('ruleForm')">閲嶇疆</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ </div>
+ <!-- 棰勮妯$増寮圭獥 -->
+ <el-drawer
+ title="闂嵎棰勮"
+ :visible.sync="drawer"
+ custom-class="demo-drawer"
+ width="50%"
+ >
+ <div class="preview-left">
+ <!-- 鍗曢�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕鍗曢�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="radio">
+ <el-radio
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </div>
+ <!-- 澶氶�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕澶氶�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-checkbox-group v-model="radios">
+ <el-checkbox
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >
+ {{ items }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <!-- 濉┖ -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕濉┖]  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </el-drawer>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ sidecolumnrabs: "left", //鏂瑰悜
+ Editprogress: 2, //缂栬緫杩涘害
+ currentVersion: "1.2.3", //褰撳墠鐗堟湰
+ loading: false, // 閬僵灞�
+ drawer: false, //鎺у埗灞曞紑
+ radio: "false", //鍗曢�夐閫変腑
+ radios: [], //澶氶�夐閫変腑
+ radioas: "", //濉┖棰樼瓟妗�
+ // 鎬绘潯鏁�
+ total: 1,
+ ruleForm: {
+ name: "",
+ region: "",
+ date1: "",
+ date2: "",
+ delivery: false,
+ type: [],
+ resource: "",
+ desc: "",
+ templatevalue: "",
+ data2: "",
+ },
+ rules: {},
+ rulesa: {
+ name: [
+ { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" },
+ { min: 3, max: 5, message: "闀垮害鍦� 3 鍒� 5 涓瓧绗�", trigger: "blur" },
+ ],
+ region: [
+ { required: true, message: "璇烽�夋嫨娲诲姩鍖哄煙", trigger: "change" },
+ ],
+ date1: [
+ {
+ type: "date",
+ required: true,
+ message: "璇烽�夋嫨鏃ユ湡",
+ trigger: "change",
+ },
+ ],
+ date2: [
+ {
+ type: "date",
+ required: true,
+ message: "璇烽�夋嫨鏃堕棿",
+ trigger: "change",
+ },
+ ],
+ type: [
+ {
+ type: "array",
+ required: true,
+ message: "璇疯嚦灏戦�夋嫨涓�涓椿鍔ㄦ�ц川",
+ trigger: "change",
+ },
+ ],
+ resource: [
+ { required: true, message: "璇烽�夋嫨娲诲姩璧勬簮", trigger: "change" },
+ ],
+ desc: [{ required: true, message: "璇峰~鍐欐椿鍔ㄥ舰寮�", trigger: "blur" }],
+ },
+ options: [
+ {
+ value: "閫夐」1",
+ label: "榛勯噾绯�",
+ },
+ {
+ value: "閫夐」2",
+ label: "鍙岀毊濂�",
+ },
+ {
+ value: "閫夐」3",
+ label: "铓典粩鐓�",
+ },
+ {
+ value: "閫夐」4",
+ label: "榫欓』闈�",
+ },
+ {
+ value: "閫夐」5",
+ label: "鍖椾含鐑ら腑",
+ },
+ ],
+ options: [
+ {
+ value: "zhinan",
+ label: "鎸囧崡",
+ children: [
+ {
+ value: "shejiyuanze",
+ label: "璁捐鍘熷垯",
+ children: [
+ {
+ value: "yizhi",
+ label: "涓�鑷�",
+ },
+ {
+ value: "fankui",
+ label: "鍙嶉",
+ },
+ {
+ value: "xiaolv",
+ label: "鏁堢巼",
+ },
+ {
+ value: "kekong",
+ label: "鍙帶",
+ },
+ ],
+ },
+ {
+ value: "daohang",
+ label: "瀵艰埅",
+ children: [
+ {
+ value: "cexiangdaohang",
+ label: "渚у悜瀵艰埅",
+ },
+ {
+ value: "dingbudaohang",
+ label: "椤堕儴瀵艰埅",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ value: "zujian",
+ label: "缁勪欢",
+ children: [
+ {
+ value: "basic",
+ label: "Basic",
+ children: [
+ {
+ value: "layout",
+ label: "Layout 甯冨眬",
+ },
+ {
+ value: "color",
+ label: "Color 鑹插僵",
+ },
+ {
+ value: "typography",
+ label: "Typography 瀛椾綋",
+ },
+ {
+ value: "icon",
+ label: "Icon 鍥炬爣",
+ },
+ {
+ value: "button",
+ label: "Button 鎸夐挳",
+ },
+ ],
+ },
+ {
+ value: "form",
+ label: "Form",
+ children: [
+ {
+ value: "radio",
+ label: "Radio 鍗曢�夋",
+ },
+ {
+ value: "checkbox",
+ label: "Checkbox 澶氶�夋",
+ },
+ {
+ value: "input",
+ label: "Input 杈撳叆妗�",
+ },
+ {
+ value: "input-number",
+ label: "InputNumber 璁℃暟鍣�",
+ },
+ {
+ value: "select",
+ label: "Select 閫夋嫨鍣�",
+ },
+ {
+ value: "cascader",
+ label: "Cascader 绾ц仈閫夋嫨鍣�",
+ },
+ {
+ value: "switch",
+ label: "Switch 寮�鍏�",
+ },
+ {
+ value: "slider",
+ label: "Slider 婊戝潡",
+ },
+ {
+ value: "time-picker",
+ label: "TimePicker 鏃堕棿閫夋嫨鍣�",
+ },
+ {
+ value: "date-picker",
+ label: "DatePicker 鏃ユ湡閫夋嫨鍣�",
+ },
+ {
+ value: "datetime-picker",
+ label: "DateTimePicker 鏃ユ湡鏃堕棿閫夋嫨鍣�",
+ },
+ {
+ value: "upload",
+ label: "Upload 涓婁紶",
+ },
+ {
+ value: "rate",
+ label: "Rate 璇勫垎",
+ },
+ {
+ value: "form",
+ label: "Form 琛ㄥ崟",
+ },
+ ],
+ },
+ {
+ value: "data",
+ label: "Data",
+ children: [
+ {
+ value: "table",
+ label: "Table 琛ㄦ牸",
+ },
+ {
+ value: "tag",
+ label: "Tag 鏍囩",
+ },
+ {
+ value: "progress",
+ label: "Progress 杩涘害鏉�",
+ },
+ {
+ value: "tree",
+ label: "Tree 鏍戝舰鎺т欢",
+ },
+ {
+ value: "pagination",
+ label: "Pagination 鍒嗛〉",
+ },
+ {
+ value: "badge",
+ label: "Badge 鏍囪",
+ },
+ ],
+ },
+ {
+ value: "notice",
+ label: "Notice",
+ children: [
+ {
+ value: "alert",
+ label: "Alert 璀﹀憡",
+ },
+ {
+ value: "loading",
+ label: "Loading 鍔犺浇",
+ },
+ {
+ value: "message",
+ label: "Message 娑堟伅鎻愮ず",
+ },
+ {
+ value: "message-box",
+ label: "MessageBox 寮规",
+ },
+ {
+ value: "notification",
+ label: "Notification 閫氱煡",
+ },
+ ],
+ },
+ {
+ value: "navigation",
+ label: "Navigation",
+ children: [
+ {
+ value: "menu",
+ label: "NavMenu 瀵艰埅鑿滃崟",
+ },
+ {
+ value: "tabs",
+ label: "Tabs 鏍囩椤�",
+ },
+ {
+ value: "breadcrumb",
+ label: "Breadcrumb 闈㈠寘灞�",
+ },
+ {
+ value: "dropdown",
+ label: "Dropdown 涓嬫媺鑿滃崟",
+ },
+ {
+ value: "steps",
+ label: "Steps 姝ラ鏉�",
+ },
+ ],
+ },
+ {
+ value: "others",
+ label: "Others",
+ children: [
+ {
+ value: "dialog",
+ label: "Dialog 瀵硅瘽妗�",
+ },
+ {
+ value: "tooltip",
+ label: "Tooltip 鏂囧瓧鎻愮ず",
+ },
+ {
+ value: "popover",
+ label: "Popover 寮瑰嚭妗�",
+ },
+ {
+ value: "card",
+ label: "Card 鍗$墖",
+ },
+ {
+ value: "carousel",
+ label: "Carousel 璧伴┈鐏�",
+ },
+ {
+ value: "collapse",
+ label: "Collapse 鎶樺彔闈㈡澘",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ value: "ziyuan",
+ label: "璧勬簮",
+ children: [
+ {
+ value: "axure",
+ label: "Axure Components",
+ },
+ {
+ value: "sketch",
+ label: "Sketch Templates",
+ },
+ {
+ value: "jiaohu",
+ label: "缁勪欢浜や簰鏂囨。",
+ },
+ ],
+ },
+ ],
+ valssu: [
+ {
+ idd: 1,
+ wssd: "浣犳渶杩戞�庝箞鏍�",
+ sdadd: ["sss", "ssccss", "ssaas", "ss"],
+ },
+ ],
+ options: [
+ {
+ value: "閫夐」1",
+ label: "鍗曢��",
+ },
+ {
+ value: "閫夐」2",
+ label: "澶氶��",
+ disabled: true,
+ },
+ {
+ value: "閫夐」3",
+ label: "濉┖",
+ },
+ ],
+ addvalue: "娣诲姞棰樼洰",
+ // 棰樼洰琛ㄦ牸鏁版嵁
+ userList: [
+ {
+ userid: "1",
+ userName: "涓�鍙烽棶鍗�",
+ },
+ {
+ userid: "2",
+ userName: "浜屽彿闂嵎",
+ },
+ {
+ userid: "3",
+ userName: "涓夊彿闂嵎",
+ },
+ {
+ userid: "4",
+ userName: "鍥涘彿闂嵎",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ };
+ },
+
+ created() {},
+
+ methods: {
+ submitForm(formName) {
+ if (this.Editprogress <= 3) {
+ return this.Editprogress++;
+ }
+ this.rules = this.rulesa;
+ // 鎻愪氦
+ this.$refs[formName].validate((valid) => {
+ if (valid) {
+ alert("submit!");
+ } else {
+ console.log("error submit!!");
+ return false;
+ }
+ });
+ },
+ /** 鏌ヨ棰樼洰鍒楄〃 */
+ getList() {
+ // this.loading = true;
+ listUser().then((response) => {
+ console.log(response);
+ // this.userList = response.data;
+ // this.total = response.total;
+ // this.loading = false;
+ console.log(this.userList);
+ });
+ // const { rows } = await listUser();
+ // console.log(rows);
+ // this.list = rows;
+ },
+ changeaddtopic(val) {
+ console.log(11);
+ console.log(val);
+ this.addvalue = "娣诲姞棰樼洰";
+ },
+ // 棰勮妯$増
+ PreviewTemplate() {
+ this.drawer = true;
+ },
+ laststep() {
+ this.Editprogress--;
+ },
+ resetForm(formName) {
+ this.$refs[formName].resetFields();
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+ display: flex;
+}
+.sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ // margin-top: 20px;
+ margin: 20px;
+ margin-bottom: 0;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+.leftvlue {
+ // display: flex;
+ // flex: 1;
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ }
+ .leftvlue-jbxx {
+ margin-bottom: 50px;
+ font-size: 20px;
+ span {
+ position: absolute;
+ right: 80px;
+ }
+ }
+ .demo-cascader {
+ margin-right: 20px;
+ }
+ .PreviewTemplate {
+ color: #02a7f0;
+ cursor: pointer;
+ font-size: 20px;
+ margin: 0 20px;
+ }
+}
+.preview-left {
+ margin: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+}
+.addtopic {
+ margin-top: 30px;
+}
+.presentation {
+ margin: 20px 0;
+ display: flex;
+ .presentation-left {
+ width: 50%;
+ height: 500px;
+ .button-textxg {
+ color: #024df0;
+ }
+ .button-textsc {
+ color: #f52727;
+ }
+ }
+ .presentation-right {
+ width: 50%;
+ height: 500px;
+ padding: 20px;
+ font-size: 18px;
+ border: 1px solid #909091;
+ span {
+ padding: 0 35px;
+ margin-right: 10px;
+ border-bottom: 1px solid #909091;
+ }
+ .headline {
+ font-size: 20px;
+ border-left: 3px solid #41a1be;
+ padding-left: 5px;
+ margin: 15px 0;
+ }
+ }
+}
+::v-deep .addtopic-input {
+ input {
+ background: #02a7f0;
+ color: #edf1f7;
+ width: 150px;
+ }
+}
+::v-deep.el-step.is-vertical .el-step__title {
+ font-size: 25px;
+}
+::v-deep.el-input--medium {
+ font-size: 24px !important;
+}
+::v-deep.ruleFormaa.el-select {
+ display: inline-block;
+ position: relative;
+ width: 700px;
+}
+.el-select__tags {
+ font-size: 20px;
+ max-width: 888px !important;
+}
+::v-deep.el-radio__inner {
+ width: 22px;
+ height: 22px;
+}
+// ::v-deep.topic-dev.el-radio__label {
+// font-size: 24px;
+// }
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+::v-deep.el-checkbox-group {
+ span {
+ font-size: 24px;
+ }
+}
+// ::v-deep.el-form-item--medium .el-form-item__content {
+// line-height: 36px;
+// display: flex;
+// }
+</style>
diff --git a/src/views/knowledge/questionnaire/examine/index.vue b/src/views/knowledge/questionnaire/examine/index.vue
new file mode 100644
index 0000000..4c840fc
--- /dev/null
+++ b/src/views/knowledge/questionnaire/examine/index.vue
@@ -0,0 +1,310 @@
+<template>
+ <div class="examineemanagement">
+ <!-- 宸︿晶鏍� -->
+
+ <div class="sidecolumn">
+ <div class="sidecolumn-top">
+ <div class="top-wj">鍘嗗彶鐗堟湰</div>
+ <!-- <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div> -->
+ </div>
+ <div class="bottom-fl">
+ <el-tabs tab-position="right" v-model="activeName">
+ <el-tab-pane
+ class="tab-paness"
+ :key="index"
+ v-for="(item, index) in editableTabs"
+ >
+ <div class="mulsz" slot="label">
+ {{ item.versionsac
+ }}<span style="margin-left: 30px">{{
+ item.startUsing ? "鍚敤" : "绂佺敤"
+ }}</span>
+ </div>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+
+ <div class="leftvlue">
+ <div v-if="activeName == '0'">
+ <div class="examine-top">
+ <span>缂栬緫浜猴細{{ basicInformation.name }}</span>
+ <span>缂栬緫鏃堕棿锛歿{ basicInformation.day }}</span>
+ <span class="ewmyl">浜岀淮鐮侀瑙�</span>
+ </div>
+ <!-- 鍩虹淇℃伅 -->
+ <div class="examine-jic">
+ <div class="headline">鍩虹淇℃伅</div>
+ <div class="jic-value">
+ <div>
+ 闂嵎鍚嶇О锛歿{ basicInformation.wname
+ }}<span>閫傜敤鐤剧梾锛歿{ basicInformation.jbname }}</span>
+ </div>
+ <div>琛ㄥ崟鎻忚堪锛歿{ basicInformation.miaosname }}</div>
+ </div>
+ </div>
+ <!-- 闂嵎棰勮 -->
+ <div class="examine-jic">
+ <div class="headline">闂嵎棰勮</div>
+ <div class="jic-value">
+ <div>
+ 闂嵎浠嬬粛锛�<span class="wenjuanjs"
+ >闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ</span
+ >
+ </div>
+ <div>
+ 闂嵎浠嬬粛锛�<span class="wenjuanjs"
+ >闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ闈炲父濂介潪甯稿ソ</span
+ >
+ </div>
+ </div>
+ <div class="preview-left">
+ <!-- 鍗曢�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕鍗曢�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-radio-group v-model="radio">
+ <el-radio
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >{{ items }}</el-radio
+ >
+ </el-radio-group>
+ </div>
+ </div>
+ <!-- 澶氶�� -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕澶氶�塢  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-checkbox-group v-model="radios">
+ <el-checkbox
+ v-for="(items, index) in item.sdadd"
+ :key="index"
+ :label="index"
+ >
+ {{ items }}
+ </el-checkbox>
+ </el-checkbox-group>
+ </div>
+ </div>
+ <!-- 濉┖ -->
+ <div class="topic-dev" v-for="item in valssu" :key="item.aaa">
+ <div class="dev-text">
+ {{ item.idd }}銆乕濉┖]  <span>{{ item.wssd }}</span>
+ </div>
+ <div class="dev-xx">
+ <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable>
+ </el-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="examine-jieg">
+ <div class="headline">缁撴灉鍙嶉</div>
+ <div></div>
+ <div></div>
+ </div>
+ </div>
+ <div v-else-if="activeName == '1'">bbb</div>
+ <div v-else-if="activeName == '2'">ccc</div>
+ </div>
+ </div>
+</template>
+
+<script>
+export default {
+ data() {
+ return {
+ activeName: "0",
+ radios: [], //澶氶�夐閫変腑
+
+ basicInformation: {
+ name: "鑰佸惔",
+ day: "2023骞�12鏈�11鏃�16鏃�12鍒�11绉�",
+ wname: "澶уぇ澶�",
+ jbname: "灏忓皬灏�",
+ miaosname: "闈炲父濂藉ぇ澶уぇ",
+ },
+ valssu: [
+ {
+ idd: 1,
+ wssd: "浣犳渶杩戞�庝箞鏍�",
+ sdadd: ["sss", "ssccss", "ssaas", "ss"],
+ },
+ ],
+ editableTabs: [
+ {
+ versionsac: "1.0.3",
+ startUsing: true,
+ },
+ {
+ versionsac: "1.0.2",
+ startUsing: false,
+ },
+ {
+ versionsac: "1.0.1",
+ startUsing: false,
+ },
+ ],
+ };
+ },
+
+ created() {},
+
+ methods: {
+ handleClick() {},
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.examineemanagement {
+ display: flex;
+ .sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .sidecolumn-top {
+ display: flex;
+ justify-content: space-between;
+ .top-wj {
+ font-size: 20px;
+ }
+ .top-tj {
+ font-size: 18px;
+
+ color: rgb(0, 89, 255);
+ cursor: pointer;
+ }
+ }
+ .center-ss {
+ margin-top: 30px;
+ .input-with-select {
+ height: 40px !important;
+ }
+ }
+ .bottom-fl {
+ margin-top: 30px;
+ display: center !important;
+ }
+ }
+ .leftvlue {
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ span {
+ margin-left: 30px;
+ }
+ }
+ .examine-top {
+ font-size: 20px;
+ margin-bottom: 40px;
+ span {
+ margin-right: 30px;
+ }
+ .ewmyl {
+ color: rgb(0, 81, 255);
+ cursor: pointer;
+ }
+ }
+ .examine-jic {
+ .headline {
+ font-size: 28px;
+ border-left: 8px solid #41a1be;
+ padding-left: 5px;
+ margin-bottom: 15px;
+ }
+ .jic-value {
+ font-size: 20px;
+ border-top: 1px solid #a7abac;
+ padding: 20px;
+ div {
+ margin-bottom: 15px;
+ span {
+ margin-left: 180px;
+ }
+ }
+ .wenjuanjs {
+ margin-left: 15px;
+ padding-bottom: 5px;
+ border-bottom: 1px solid #a7abac;
+ }
+ }
+ .preview-left {
+ margin: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .topic-dev {
+ margin-bottom: 25px;
+ font-size: 20px !important;
+ .dev-text {
+ margin-bottom: 10px;
+ }
+ }
+ }
+ }
+ .examine-jieg {
+ .headline {
+ font-size: 28px;
+ padding-left: 5px;
+ border-left: 8px solid #41a1be;
+ // border-bottom: 1px solid #41a1be;
+ margin-bottom: 15px;
+ }
+ }
+ }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+ overflow: hidden;
+ align-items: center;
+ display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+ height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+ height: 40px;
+ width: 5px;
+ left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+ display: block;
+ font-size: 20px;
+}
+::v-deep.el-radio-group {
+ span {
+ font-size: 24px;
+ }
+}
+::v-deep.el-checkbox-group {
+ span {
+ font-size: 24px;
+ }
+}
+</style>
diff --git a/src/views/knowledge/questionnaire/index.vue b/src/views/knowledge/questionnaire/index.vue
new file mode 100644
index 0000000..824de78
--- /dev/null
+++ b/src/views/knowledge/questionnaire/index.vue
@@ -0,0 +1,780 @@
+<template>
+ <div class="Questionnairemanagement">
+ <!-- 宸︿晶鏍� -->
+ <div class="sidecolumn">
+ <div class="sidecolumn-top">
+ <div class="top-wj">闂嵎绫诲瀷</div>
+ <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div>
+ </div>
+ <div class="center-ss">
+ <el-input
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="sidecolumnval"
+ class="input-with-select"
+ size="medium "
+ >
+ <el-button
+ @click="sidecolumnss"
+ slot="append"
+ icon="el-icon-search"
+ ></el-button>
+ </el-input>
+ </div>
+ <div class="bottom-fl">
+ <el-tabs tab-position="right">
+ <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+ <el-tab-pane
+ class="tab-paness"
+ :key="item.name"
+ v-for="(item, index) in editableTabs"
+ :label="item.title + ' (' + item.number + ')'"
+ ></el-tab-pane>
+
+ <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+ <div class="leftvlue">
+ <div class="leftvlue-top">
+ <el-tabs v-model="topactiveName" @tab-click="tophandleClick">
+ <el-tab-pane name="Local">
+ <span class="mulsz" slot="label">鏈湴闂嵎搴� </span>
+ </el-tab-pane>
+ <el-tab-pane name="sharing">
+ <span class="mulsz" slot="label">鍏变韩闂嵎搴� </span>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+ <div class="leftvlue-bg">
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="闂嵎鍚嶇О" prop="userName">
+ <el-input
+ v-model="queryParams.userName"
+ placeholder="璇疯緭鍏�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="閫傜敤鐤剧梾" prop="status">
+ <el-cascader
+ v-model="queryParams.status"
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ v-hasPermi="['system:user:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:user:remove']"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+
+ <!-- <el-col :span="1.5"> </el-col> -->
+ </el-row>
+ <!-- <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ :columns="columns"
+ ></right-toolbar> -->
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ border="true"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userId"
+ prop="userId"
+ v-if="columns[0].visible"
+ />
+ <el-table-column
+ label="闂嵎鍚嶇О"
+ align="center"
+ key="userName"
+ prop="userName"
+ v-if="columns[1].visible"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鐗堟湰"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ v-if="columns[2].visible"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="閫傜敤鐤剧梾"
+ align="center"
+ key="aphonenumber"
+ prop="aphonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ /><el-table-column
+ label="闂嵎鎻忚堪"
+ align="center"
+ key="bphonenumber"
+ prop="bphonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+ <el-table-column
+ label="鏈�杩戠紪杈�"
+ align="center"
+ key="cphonenumber"
+ prop="cphonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="goQRCode(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ >
+ <span class="button-text"
+ ><i class="el-icon-edit"></i>浜岀淮鐮�</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="ViewQuestionnaire(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textck"
+ ><i class="el-icon-edit"></i>鏌ョ湅</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textxg"
+ ><i class="el-icon-edit"></i>淇敼</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:user:remove']"
+ ><span class="button-textsc"
+ ><i class="el-icon-edit"></i>鍒犻櫎</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
+
+ <!-- 娣诲姞鎴栦慨鏀归棶鍗烽厤缃璇濇 -->
+ <el-dialog
+ :title="title"
+ :visible.sync="open"
+ width="900px"
+ append-to-body
+ >
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="濮撳悕" prop="nickName">
+ <el-input
+ v-model="form.nickName"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="deptId">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in dict.type.sys_user_sex"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+ <el-input
+ v-model="form.phonenumber"
+ placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+ maxlength="11"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢鍙�" prop="email">
+ <el-input
+ v-model="form.email"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+ <el-input
+ v-model="form.userName"
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+ <el-input
+ v-model="form.password"
+ placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+ type="password"
+ maxlength="20"
+ show-password
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呮爣绛�">
+ <el-cascader
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+ </el-col>
+ </el-row>
+
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞">
+ <el-input
+ v-model="form.remark"
+ type="textarea"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+ </div>
+ <!-- 娣诲姞绫诲埆寮规 -->
+ <el-dialog width="30%" :visible.sync="dialogFormVisible">
+ <el-form :model="sidecolumnform">
+ <el-form-item label="璇疯緭鍏ョ被鍒悕绉�">
+ <el-input v-model="form.name" autocomplete="off"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+ <!-- 浜岀淮鐮佸睍绀哄脊妗� -->
+ <el-dialog width="30%" :visible.sync="goQRCodeVisible">
+ <div class="qrcode-dialo">
+ <div class="qrcode-text">
+ {{ namequestionnaire }}<span>{{ haoquestionnaire }}</span>
+ </div>
+ <div class="qrcode-img"></div>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ listUser,
+ getUser,
+ delUser,
+ addUser,
+ updateUser,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+ name: "questionnaire",
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { Treeselect },
+ data() {
+ return {
+ topactiveName: "Local", //椤堕儴閫夋嫨
+ // 閬僵灞�
+ loading: false,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ namequestionnaire: "",
+ haoquestionnaire: "",
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: [
+ {
+ userid: 1,
+ userName: "涓夊彿闂嵎",
+ nickName: "1.2.4",
+ aphonenumber: "鍏宠妭鐐庣棁",
+ bphonenumber: "寰堟",
+ cphonenumber: "2022-12-12 ",
+ },
+ ],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ // 瑙掕壊閫夐」
+ roleOptions: [],
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ numberlb: 22,
+ numberlbs: 2,
+ sidecolumnform: {}, //娣诲姞绫诲埆琛ㄥ崟
+ dialogFormVisible: false, //娣诲姞绫诲埆寮规
+ goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+ sidecolumnval: "", //绫诲埆鎼滅储
+ propss: { multiple: true },
+ optionss: [
+ {
+ value: 1,
+ label: "涓滃崡",
+ },
+ {
+ value: 2,
+ label: "瑗垮寳",
+ },
+ {
+ value: 3,
+ label: "浠ㄤ花浠�",
+ },
+ {
+ value: 4,
+ label: "鍏椋掗",
+ },
+ ],
+ //绫诲埆鍒楄〃
+ editableTabs: [
+ {
+ title: "闂嵎鍒嗙被涓�",
+ number: "1",
+ },
+ {
+ title: "闂嵎鍒嗙被浜�",
+ number: "2",
+ },
+ {
+ title: "闂嵎鍒嗙被涓�",
+ number: "2",
+ },
+ {
+ title: "闂嵎鍒嗙被鍥�",
+ number: "2",
+ },
+ {
+ title: "闂嵎鍒嗙被浜�",
+ number: "2",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ // 鍒椾俊鎭�
+ columns: [
+ { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+ { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+ { key: 3, label: `閮ㄩ棬`, visible: true },
+ { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+ { key: 5, label: `鐘舵�乣, visible: true },
+ { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+ ],
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ userName: [
+ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ nickName: [
+ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+ ],
+ password: [
+ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ email: [
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
+ ],
+ phonenumber: [
+ {
+ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ IDnumber: [
+ {
+ pattern:
+ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+ message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+ trigger: "blur",
+ },
+ ],
+ },
+ };
+ },
+ watch: {},
+ created() {
+ this.getList();
+ },
+
+ methods: {
+ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+ getList() {
+ // this.loading = true;
+ listUser().then((response) => {
+ console.log(response);
+ // this.userList = response.data;
+ // this.total = response.total;
+ // this.loading = false;
+ console.log(this.userList);
+ });
+ // const { rows } = await listUser();
+ // console.log(rows);
+ // this.list = rows;
+ },
+ // 娣诲姞绫诲埆
+ submitsidecolumn() {
+ this.dialogFormVisible = false;
+ },
+ //鎼滅储绫诲埆
+ sidecolumnss() {},
+ // 鍒囨崲鍏变韩/鏈湴
+ tophandleClick() {},
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ goQRCode(row) {
+ this.goQRCodeVisible = true;
+ this.namequestionnaire = row.userName;
+ this.haoquestionnaire = row.nickName;
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.queryParams.deptId = undefined;
+ this.$refs.tree.setCurrentKey(null);
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.userId);
+ this.single = selection.length != 1;
+ this.multiple = !selection.length;
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.$router.push({
+ path: "/knowledge/questionnaire/compilequer/",
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.$router.push({
+ path: "/knowledge/questionnaire/compilequer/",
+ query: { id: "1" },
+ });
+ },
+ // 鏌ョ湅闂嵎
+ ViewQuestionnaire() {
+ this.$router.push({
+ path: "/knowledge/questionnaire/examine/",
+ query: { id: "1" },
+ });
+ },
+
+ /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.userId != undefined) {
+ updateUser(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addUser(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+ display: flex;
+}
+.sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .sidecolumn-top {
+ display: flex;
+ justify-content: space-between;
+ .top-wj {
+ font-size: 20px;
+ }
+ .top-tj {
+ font-size: 18px;
+
+ color: rgb(0, 89, 255);
+ cursor: pointer;
+ }
+ }
+ .center-ss {
+ margin-top: 30px;
+ .input-with-select {
+ height: 40px !important;
+ }
+ }
+ .bottom-fl {
+ margin-top: 30px;
+ display: center !important;
+ }
+}
+.qrcode-dialo {
+ text-align: center;
+ // display: flex;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .qrcode-text {
+ font-size: 20px;
+ span {
+ margin-left: 20px;
+ }
+ }
+ .qrcode-img {
+ width: 300px;
+ height: 400px;
+ }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+ overflow: hidden;
+ align-items: center;
+ display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+ height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+ height: 40px;
+ width: 5px;
+ left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+ display: block;
+ font-size: 20px;
+}
+.leftvlue {
+ // display: flex;
+ // flex: 1;
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ }
+}
+.button-text {
+ color: rgb(70, 204, 238);
+}
+.button-textck {
+ color: rgb(39, 167, 67);
+}
+.button-textxg {
+ color: rgb(35, 81, 233);
+}
+.button-textsc {
+ color: rgb(235, 23, 23);
+}
+</style>
diff --git a/ruoyi-ui/src/views/login.vue b/src/views/login.vue
similarity index 67%
rename from ruoyi-ui/src/views/login.vue
rename to src/views/login.vue
index 7e54a6c..6402807 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/src/views/login.vue
@@ -1,6 +1,11 @@
<template>
<div class="login">
- <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
+ <el-form
+ ref="loginForm"
+ :model="loginForm"
+ :rules="loginRules"
+ class="login-form"
+ >
<h3 class="title">鏅烘収闅忚绠$悊绯荤粺</h3>
<el-form-item prop="username">
<el-input
@@ -9,7 +14,11 @@
auto-complete="off"
placeholder="璐﹀彿"
>
- <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="user"
+ class="el-input__icon input-icon"
+ />
</el-input>
</el-form-item>
<el-form-item prop="password">
@@ -20,7 +29,11 @@
placeholder="瀵嗙爜"
@keyup.enter.native="handleLogin"
>
- <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="password"
+ class="el-input__icon input-icon"
+ />
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
@@ -31,26 +44,36 @@
style="width: 63%"
@keyup.enter.native="handleLogin"
>
- <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="validCode"
+ class="el-input__icon input-icon"
+ />
</el-input>
<div class="login-code">
- <img :src="codeUrl" @click="getCode" class="login-code-img"/>
+ <img :src="codeUrl" @click="getCode" class="login-code-img" />
</div>
</el-form-item>
- <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">璁颁綇瀵嗙爜</el-checkbox>
- <el-form-item style="width:100%;">
+ <el-checkbox
+ v-model="loginForm.rememberMe"
+ style="margin: 0px 0px 25px 0px"
+ >璁颁綇瀵嗙爜</el-checkbox
+ >
+ <el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
- style="width:100%;"
+ style="width: 100%"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">鐧� 褰�</span>
<span v-else>鐧� 褰� 涓�...</span>
</el-button>
- <div style="float: right;" v-if="register">
- <router-link class="link-type" :to="'/register'">绔嬪嵆娉ㄥ唽1</router-link>
+ <div style="float: right" v-if="register">
+ <router-link class="link-type" :to="'/register'"
+ >绔嬪嵆娉ㄥ唽1</router-link
+ >
</div>
</el-form-item>
</el-form>
@@ -64,7 +87,7 @@
<script>
import { getCodeImg } from "@/api/login";
import Cookies from "js-cookie";
-import { encrypt, decrypt } from '@/utils/jsencrypt'
+import { encrypt, decrypt } from "@/utils/jsencrypt";
export default {
name: "Login",
@@ -76,32 +99,32 @@
password: "admin123",
rememberMe: false,
code: "",
- uuid: ""
+ uuid: "",
},
loginRules: {
username: [
- { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" }
+ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" },
],
password: [
- { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" }
+ { required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" },
],
- code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }]
+ code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }],
},
loading: false,
// 楠岃瘉鐮佸紑鍏�
captchaEnabled: true,
// 娉ㄥ唽寮�鍏�
register: false,
- redirect: undefined
+ redirect: undefined,
};
},
watch: {
$route: {
- handler: function(route) {
+ handler: function (route) {
this.redirect = route.query && route.query.redirect;
},
- immediate: true
- }
+ immediate: true,
+ },
},
created() {
this.getCode();
@@ -109,8 +132,9 @@
},
methods: {
getCode() {
- getCodeImg().then(res => {
- this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+ getCodeImg().then((res) => {
+ this.captchaEnabled =
+ res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid;
@@ -120,38 +144,46 @@
getCookie() {
const username = Cookies.get("username");
const password = Cookies.get("password");
- const rememberMe = Cookies.get('rememberMe')
+ const rememberMe = Cookies.get("rememberMe");
this.loginForm = {
username: username === undefined ? this.loginForm.username : username,
- password: password === undefined ? this.loginForm.password : decrypt(password),
- rememberMe: rememberMe === undefined ? false : Boolean(rememberMe)
+ password:
+ password === undefined ? this.loginForm.password : decrypt(password),
+ rememberMe: rememberMe === undefined ? false : Boolean(rememberMe),
};
},
handleLogin() {
- this.$refs.loginForm.validate(valid => {
+ this.$refs.loginForm.validate((valid) => {
if (valid) {
this.loading = true;
if (this.loginForm.rememberMe) {
Cookies.set("username", this.loginForm.username, { expires: 30 });
- Cookies.set("password", encrypt(this.loginForm.password), { expires: 30 });
- Cookies.set('rememberMe', this.loginForm.rememberMe, { expires: 30 });
+ Cookies.set("password", encrypt(this.loginForm.password), {
+ expires: 30,
+ });
+ Cookies.set("rememberMe", this.loginForm.rememberMe, {
+ expires: 30,
+ });
} else {
Cookies.remove("username");
Cookies.remove("password");
- Cookies.remove('rememberMe');
+ Cookies.remove("rememberMe");
}
- this.$store.dispatch("Login", this.loginForm).then(() => {
- this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
- }).catch(() => {
- this.loading = false;
- if (this.captchaEnabled) {
- this.getCode();
- }
- });
+ this.$store
+ .dispatch("Login", this.loginForm)
+ .then(() => {
+ this.$router.push({ path: this.redirect || "/" }).catch(() => {});
+ })
+ .catch(() => {
+ this.loading = false;
+ if (this.captchaEnabled) {
+ this.getCode();
+ }
+ });
}
});
- }
- }
+ },
+ },
};
</script>
diff --git a/ruoyi-ui/src/views/monitor/cache/index.vue b/src/views/monitor/cache/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/cache/index.vue
rename to src/views/monitor/cache/index.vue
diff --git a/ruoyi-ui/src/views/monitor/cache/list.vue b/src/views/monitor/cache/list.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/cache/list.vue
rename to src/views/monitor/cache/list.vue
diff --git a/ruoyi-ui/src/views/monitor/druid/index.vue b/src/views/monitor/druid/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/druid/index.vue
rename to src/views/monitor/druid/index.vue
diff --git a/ruoyi-ui/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue
similarity index 99%
rename from ruoyi-ui/src/views/monitor/job/index.vue
rename to src/views/monitor/job/index.vue
index 37c8fc1..e5f808d 100644
--- a/ruoyi-ui/src/views/monitor/job/index.vue
+++ b/src/views/monitor/job/index.vue
@@ -293,6 +293,8 @@
<script>
import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus } from "@/api/monitor/job";
import Crontab from '@/components/Crontab'
+import * as echarts from "echarts";
+
export default {
components: { Crontab },
diff --git a/ruoyi-ui/src/views/monitor/job/log.vue b/src/views/monitor/job/log.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/job/log.vue
rename to src/views/monitor/job/log.vue
diff --git a/ruoyi-ui/src/views/monitor/logininfor/index.vue b/src/views/monitor/logininfor/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/logininfor/index.vue
rename to src/views/monitor/logininfor/index.vue
diff --git a/ruoyi-ui/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/online/index.vue
rename to src/views/monitor/online/index.vue
diff --git a/ruoyi-ui/src/views/monitor/operlog/index.vue b/src/views/monitor/operlog/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/operlog/index.vue
rename to src/views/monitor/operlog/index.vue
diff --git a/ruoyi-ui/src/views/monitor/server/index.vue b/src/views/monitor/server/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/monitor/server/index.vue
rename to src/views/monitor/server/index.vue
diff --git a/ruoyi-ui/src/views/system/user/authRole.vue b/src/views/patient/patient/authRole.vue
similarity index 100%
copy from ruoyi-ui/src/views/system/user/authRole.vue
copy to src/views/patient/patient/authRole.vue
diff --git a/src/views/patient/patient/index.vue b/src/views/patient/patient/index.vue
new file mode 100644
index 0000000..487ba90
--- /dev/null
+++ b/src/views/patient/patient/index.vue
@@ -0,0 +1,993 @@
+<template>
+ <div class="app-container">
+ <el-row :gutter="20">
+ <!--閮ㄩ棬鏁版嵁-->
+ <!-- <el-col :span="4" :xs="24">
+ <div class="head-container">
+ <el-input
+ v-model="deptName"
+ placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�"
+ clearable
+ size="small"
+ prefix-icon="el-icon-search"
+ style="margin-bottom: 20px"
+ />
+ </div>
+ <div class="head-container">
+ <el-tree
+ :data="deptOptions"
+ :props="defaultProps"
+ :expand-on-click-node="false"
+ :filter-node-method="filterNode"
+ ref="tree"
+ node-key="id"
+ default-expand-all
+ highlight-current
+ @node-click="handleNodeClick"
+ />
+ </div>
+ </el-col> -->
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="濮撳悕" prop="userName">
+ <el-input
+ v-model="queryParams.userName"
+ placeholder="璇疯緭鍏ュ鍚�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="韬唤璇佸彿鐮�" prop="IDnumber">
+ <el-input
+ v-model="queryParams.IDnumber"
+ placeholder="璇疯緭鍏ヨ韩浠借瘉鍙风爜"
+ clearable
+ style="width: 250px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鑱旂郴鏂瑰紡" prop="phonenumber">
+ <el-input
+ v-model="queryParams.phonenumber"
+ placeholder="璇疯緭鍏ヨ仈绯绘柟寮�"
+ clearable
+ style="width: 280px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-row>
+ <el-form-item label="鎮h�呮爣绛�" prop="status">
+ <el-cascader
+ v-model="queryParams.status"
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ </el-form-item>
+ </el-row>
+
+ <!-- <el-form-item label="鍒涘缓鏃堕棿">
+ <el-date-picker
+ v-model="dateRange"
+ style="width: 240px"
+ value-format="yyyy-MM-dd"
+ type="daterange"
+ range-separator="-"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ ></el-date-picker>
+ </el-form-item>
+ <el-form-item>
+ <el-button type="primary" icon="el-icon-search" size="medium" @click="handleQuery">鎼滅储</el-button>
+ <el-button icon="el-icon-refresh" size="medium" @click="resetQuery">閲嶇疆</el-button>
+ </el-form-item> -->
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="handleAdd"
+ v-hasPermi="['system:user:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="el-icon-edit"
+ size="medium"
+ :disabled="single"
+ @click="handleUpdate"
+ v-hasPermi="['system:user:edit']"
+ >淇敼</el-button
+ >
+ </el-col>
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:user:remove']"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+ <el-col :span="19">
+ <div class="documentf">
+ <div class="document">
+ <el-button
+ type="info"
+ plain
+ icon="el-icon-upload2"
+ size="medium"
+ @click="handleImport"
+ v-hasPermi="['system:user:import']"
+ >瀵煎叆</el-button
+ >
+ </div>
+ <div class="document">
+ <el-button
+ type="warning"
+ plain
+ icon="el-icon-download"
+ size="medium"
+ @click="handleExport"
+ v-hasPermi="['system:user:export']"
+ >瀵煎嚭</el-button
+ >
+ </div>
+ </div>
+ </el-col>
+ <!-- <el-col :span="1.5"> </el-col> -->
+ </el-row>
+ <!-- <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ :columns="columns"
+ ></right-toolbar> -->
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userId"
+ prop="userId"
+ />
+ <el-table-column
+ label="濮撳悕"
+ align="center"
+ key="userName"
+ prop="userName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎬у埆"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鎮h�呮爣绛�"
+ align="center"
+ key="deptName"
+ prop="dept.deptName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="璇佷欢绫诲瀷"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ width="120"
+ /><el-table-column
+ label="璇佷欢鍙风爜"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ width="120"
+ />
+ <el-table-column
+ label="骞撮緞"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+
+ <el-table-column
+ label="鑱旂郴鏂瑰紡"
+ align="center"
+ key="phonenumber"
+ prop="phonenumber"
+ v-if="columns[4].visible"
+ width="120"
+ />
+ <el-table-column
+ label="寤烘。鏃ユ湡"
+ align="center"
+ prop="createTime"
+ v-if="columns[6].visible"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鏇存柊鏃ユ湡"
+ align="center"
+ prop="createTime"
+ v-if="columns[6].visible"
+ width="160"
+ >
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="160"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope" v-if="scope.row.userId !== 1">
+ <el-button
+ size="medium"
+ type="text"
+ icon="el-icon-edit"
+ @click="$router.push('/patient/patient/profile/')"
+ v-hasPermi="['system:user:edit']"
+ >鏌ョ湅</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
+
+ <!-- 娣诲姞鎴栦慨鏀圭敤鎴烽厤缃璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="濮撳悕" prop="nickName">
+ <el-input
+ v-model="form.nickName"
+ placeholder="璇疯緭鍏ュ鍚�"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鎬у埆" prop="deptId">
+ <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆">
+ <el-option
+ v-for="dict in dict.type.sys_user_sex"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢绫诲瀷" prop="phonenumber">
+ <el-input
+ v-model="form.phonenumber"
+ placeholder="璇烽�夋嫨璇佷欢绫诲瀷"
+ maxlength="11"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇佷欢鍙�" prop="email">
+ <el-input
+ v-model="form.email"
+ placeholder="璇疯緭鍏ヨ瘉浠跺彿"
+ maxlength="50"
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鏈汉鎵嬫満鍙�" prop="userName">
+ <el-input
+ v-model="form.userName"
+ placeholder="璇疯緭鍏ユ墜鏈哄彿"
+ maxlength="30"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浜插睘鎵嬫満鍙�" prop="password">
+ <el-input
+ v-model="form.password"
+ placeholder="璇疯緭鍏ヤ翰灞炴墜鏈哄彿"
+ type="password"
+ maxlength="20"
+ show-password
+ />
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <el-form-item label="鎮h�呮爣绛�">
+ <!-- <el-select v-model="form.sex" placeholder="璇烽�夋嫨"> -->
+ <el-cascader
+ :options="optionss"
+ :props="propss"
+ clearable
+ ></el-cascader>
+ <!-- </el-select> -->
+ </el-form-item>
+ </el-col>
+ <!-- <el-col :span="12">
+ <el-form-item label="鐘舵��">
+ <el-radio-group v-model="form.status">
+ <el-radio
+ v-for="dict in dict.type.sys_normal_disable"
+ :key="dict.value"
+ :label="dict.value"
+ >{{ dict.label }}</el-radio
+ >
+ </el-radio-group>
+ </el-form-item>
+ </el-col> -->
+ </el-row>
+ <!-- <el-row>
+ <el-col :span="12">
+ <el-form-item label="宀椾綅">
+ <el-select
+ v-model="form.postIds"
+ multiple
+ placeholder="璇烽�夋嫨宀椾綅"
+ >
+ <el-option
+ v-for="item in postOptions"
+ :key="item.postId"
+ :label="item.postName"
+ :value="item.postId"
+ :disabled="item.status == 1"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="瑙掕壊">
+ <el-select
+ v-model="form.roleIds"
+ multiple
+ placeholder="璇烽�夋嫨瑙掕壊"
+ >
+ <el-option
+ v-for="item in roleOptions"
+ :key="item.roleId"
+ :label="item.roleName"
+ :value="item.roleId"
+ :disabled="item.status == 1"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row> -->
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="澶囨敞">
+ <el-input
+ v-model="form.remark"
+ type="textarea"
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ ></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+
+ <!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
+ <el-dialog
+ :title="upload.title"
+ :visible.sync="upload.open"
+ width="70%"
+ append-to-body
+ >
+ <el-steps :active="dractive" simple>
+ <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step>
+ <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step>
+ <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step>
+ </el-steps>
+ <!-- 涓婁紶瀵煎叆鏂囦欢 -->
+ <div class="download" v-if="dractive == 1">
+ <el-upload
+ class="upload-demo"
+ ref="upload"
+ :limit="1"
+ accept=".xlsx, .xls"
+ :headers="upload.headers"
+ :action="upload.url + '?updateSupport=' + upload.updateSupport"
+ :disabled="upload.isUploading"
+ :on-progress="handleFileUploadProgress"
+ :on-success="handleFileSuccess"
+ :auto-upload="false"
+ drag
+ >
+ <i class="el-icon-upload"></i>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <div class="el-upload__tip text-center" slot="tip">
+ <div class="el-upload__tip" slot="tip">
+ <el-checkbox v-model="upload.updateSupport" />
+ 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ </div>
+ <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+ <el-link
+ type="primary"
+ :underline="false"
+ style="font-size: 24px; vertical-align: baseline"
+ @click="importTemplate"
+ >涓嬭浇妯℃澘</el-link
+ >
+ </div>
+ </el-upload>
+ </div>
+ <!-- 瀵煎叆妫�鏌� -->
+ <div class="uploading" v-else-if="dractive == 2">
+ <el-table :data="uploadingData" style="width: 100%">
+ <el-table-column prop="serial" label="搴忓彿"> </el-table-column>
+ <el-table-column prop="name" label="濮撳悕"> </el-table-column>
+ <el-table-column prop="sex" label="鎬у埆"> </el-table-column>
+ <el-table-column prop="certificate" label="璇佷欢绫诲瀷">
+ </el-table-column>
+ <el-table-column prop="certificatenum" label="璇佷欢鍙风爜">
+ </el-table-column>
+ <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column>
+ <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column>
+ <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡">
+ </el-table-column>
+ <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column>
+ <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column>
+ </el-table>
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="geterryList"
+ />
+ </div>
+ <!-- 瀹屾垚 -->
+ <div class="drexamine" v-else-if="dractive == 3">
+ <img
+ src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
+ />
+ <p>瀵煎叆鎮h�呮垚鍔燂紒</p>
+ <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p>
+ </div>
+
+ <div slot="footer" class="dialog-footer" v-if="dractive == 3">
+ <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> -->
+ <el-button @click="submitclose">瀹屾垚</el-button>
+ </div>
+ <div slot="footer" v-else>
+ <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button>
+ <el-button @click="submitclose">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ listUser,
+ getUser,
+ delUser,
+ addUser,
+ updateUser,
+ resetUserPwd,
+ changeUserStatus,
+ deptTreeSelect,
+} from "@/api/system/user";
+import { listpatient } from "@/api/patient/homepage";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+
+export default {
+ name: "User",
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { Treeselect },
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ // 鐢ㄦ埛琛ㄦ牸鏁版嵁
+ userList: null,
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 閮ㄩ棬鏍戦�夐」
+ deptOptions: undefined,
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 閮ㄩ棬鍚嶇О
+ deptName: undefined,
+ // 榛樿瀵嗙爜
+ initPassword: undefined,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ // 瑙掕壊閫夐」
+ roleOptions: [],
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ //瀵煎叆杩涘害
+ dractive: 1,
+ // 瀵煎叆灞曠ず琛ㄥ崟
+ uploadingData: {},
+ total: 0, // 鎬绘潯鏁�
+ ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲�
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ jobName: undefined,
+ jobGroup: undefined,
+ status: undefined,
+ },
+ propss: { multiple: true },
+ optionss: [
+ {
+ value: 1,
+ label: "涓滃崡",
+ },
+ {
+ value: 2,
+ label: "瑗垮寳",
+ },
+ {
+ value: 3,
+ label: "浠ㄤ花浠�",
+ },
+ {
+ value: 4,
+ label: "鍏椋掗",
+ },
+ ],
+ defaultProps: {
+ children: "children",
+ label: "label",
+ },
+ // 鐢ㄦ埛瀵煎叆鍙傛暟
+ upload: {
+ // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
+ open: false,
+ // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
+ title: "",
+ // 鏄惁绂佺敤涓婁紶
+ isUploading: false,
+ // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ updateSupport: 0,
+ // 璁剧疆涓婁紶鐨勮姹傚ご閮�
+ headers: { Authorization: "Bearer " + getToken() },
+ // 涓婁紶鐨勫湴鍧�
+ url: process.env.VUE_APP_BASE_API + "/system/user/importData",
+ },
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ name: "鐜嬪ぇ",
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ // 鍒椾俊鎭�
+ columns: [
+ { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+ { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+ { key: 3, label: `閮ㄩ棬`, visible: true },
+ { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+ { key: 5, label: `鐘舵�乣, visible: true },
+ { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+ ],
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ userName: [
+ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ nickName: [
+ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+ ],
+ password: [
+ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ email: [
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
+ ],
+ phonenumber: [
+ {
+ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ IDnumber: [
+ {
+ pattern:
+ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+ message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+ trigger: "blur",
+ },
+ ],
+ },
+ };
+ },
+ watch: {
+ // 鏍规嵁鍚嶇О绛涢�夐儴闂ㄦ爲
+ deptName(val) {
+ this.$refs.tree.filter(val);
+ },
+ },
+ created() {
+ this.getList();
+ this.getDeptTree();
+ this.getConfigKey("sys.user.initPassword").then((response) => {
+ this.initPassword = response.msg;
+ });
+ },
+ methods: {
+ /** 鏌ヨ鎮h�呭垪琛� */
+ getList() {
+ this.loading = true;
+ listUser(this.queryParams).then((response) => {
+ console.log(response);
+ this.userList = response.rows;
+ this.total = response.total;
+ this.loading = false;
+ });
+ },
+ // 鏌ヨ瀵煎叆灞曠ず鍒楄〃
+ geterryList() {
+ this.loading = true;
+ listJob(this.queryParams).then((response) => {
+ this.jobList = 1;
+ this.total = 1;
+ this.loading = false;
+ });
+ },
+ /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */
+ getDeptTree() {
+ deptTreeSelect().then((response) => {
+ this.deptOptions = response.data;
+ });
+ },
+ // 绛涢�夎妭鐐�
+ filterNode(value, data) {
+ if (!value) return true;
+ return data.label.indexOf(value) !== -1;
+ },
+ // 鑺傜偣鍗曞嚮浜嬩欢
+ handleNodeClick(data) {
+ this.queryParams.deptId = data.id;
+ this.handleQuery();
+ },
+ // 鐢ㄦ埛鐘舵�佷慨鏀�
+ handleStatusChange(row) {
+ let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+ this.$modal
+ .confirm('纭瑕�"' + text + '""' + row.userName + '"鐢ㄦ埛鍚楋紵')
+ .then(function () {
+ return changeUserStatus(row.userId, row.status);
+ })
+ .then(() => {
+ this.$modal.msgSuccess(text + "鎴愬姛");
+ })
+ .catch(function () {
+ row.status = row.status === "0" ? "1" : "0";
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.queryParams.deptId = undefined;
+ this.$refs.tree.setCurrentKey(null);
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.userId);
+ this.single = selection.length != 1;
+ this.multiple = !selection.length;
+ },
+ // 鏇村鎿嶄綔瑙﹀彂
+ handleCommand(command, row) {
+ switch (command) {
+ case "handleResetPwd":
+ this.handleResetPwd(row);
+ break;
+ case "handleAuthRole":
+ this.handleAuthRole(row);
+ break;
+ default:
+ break;
+ }
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd() {
+ this.reset();
+ getUser().then((response) => {
+ this.postOptions = response.posts;
+ this.roleOptions = response.roles;
+ this.open = true;
+ this.title = "鏂板鎮h��";
+ this.form.password = this.initPassword;
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ const userId = row.userId || this.ids;
+ getUser(userId).then((response) => {
+ this.form = response.data;
+ this.postOptions = response.posts;
+ this.roleOptions = response.roles;
+ this.$set(this.form, "postIds", response.postIds);
+ this.$set(this.form, "roleIds", response.roleIds);
+ this.open = true;
+ this.title = "淇敼鐢ㄦ埛";
+ this.form.password = "";
+ });
+ },
+ /** 閲嶇疆瀵嗙爜鎸夐挳鎿嶄綔 */
+ handleResetPwd(row) {
+ this.$prompt('璇疯緭鍏�"' + row.userName + '"鐨勬柊瀵嗙爜', "鎻愮ず", {
+ confirmButtonText: "纭畾",
+ cancelButtonText: "鍙栨秷",
+ closeOnClickModal: false,
+ inputPattern: /^.{5,20}$/,
+ inputErrorMessage: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ })
+ .then(({ value }) => {
+ resetUserPwd(row.userId, value).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛锛屾柊瀵嗙爜鏄細" + value);
+ });
+ })
+ .catch(() => {});
+ },
+ /** 鍒嗛厤瑙掕壊鎿嶄綔 */
+ handleAuthRole: function (row) {
+ const userId = row.userId;
+ this.$router.push("/system/user-auth/role/" + userId);
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.userId != undefined) {
+ updateUser(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addUser(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ const userIds = row.userId || this.ids;
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鐢ㄦ埛缂栧彿涓�"' + userIds + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+ handleExport() {
+ this.download(
+ "smartor/patarchive/export",
+ {
+ ...this.queryParams,
+ },
+ `user_${new Date().getTime()}.xlsx`
+ );
+ },
+ /** 瀵煎叆鎸夐挳鎿嶄綔 */
+ handleImport() {
+ this.upload.title = "鐢ㄦ埛瀵煎叆";
+ this.upload.open = true;
+ },
+ /** 涓嬭浇妯℃澘鎿嶄綔 */
+ importTemplate() {
+ this.download(
+ "system/user/importTemplate",
+ {},
+ `user_template_${new Date().getTime()}.xlsx`
+ );
+ },
+ // 鏂囦欢涓婁紶涓鐞�
+ handleFileUploadProgress(event, file, fileList) {
+ this.upload.isUploading = true;
+ },
+ // 鏂囦欢涓婁紶鎴愬姛澶勭悊
+ handleFileSuccess(response, file, fileList) {
+ this.upload.open = false;
+ this.upload.isUploading = false;
+ this.$refs.upload.clearFiles();
+ this.$alert(
+ "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+ response.msg +
+ "</div>",
+ "瀵煎叆缁撴灉",
+ { dangerouslyUseHTMLString: true }
+ );
+ this.getList();
+ },
+ // 鎻愪氦涓婁紶鏂囦欢
+ submitFileForm() {
+ // 涓婁紶
+ if (this.dractive == 1) {
+ this.$refs.upload.submit();
+ this.dractive++;
+ } else {
+ this.dractive++;
+ }
+ },
+ submitclose() {
+ this.upload.open = false;
+ this.dractive = 1;
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.el-button--primary.is-plain {
+ color: #ffffff;
+ background: #409eff;
+ border-color: #4fabe9;
+}
+.document {
+ width: 100px;
+ height: 50px;
+}
+.documentf {
+ display: flex;
+ justify-content: flex-end;
+}
+.download {
+ text-align: center;
+ .el-upload__tip {
+ font-size: 23px;
+ }
+ .el-upload__text {
+ font-size: 23px;
+ }
+}
+.uploading {
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #ffffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+.drexamine {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: 30px;
+ background: #daeaf5;
+ img {
+ width: 100px;
+ height: 100px;
+ }
+}
+</style>
diff --git a/src/views/patient/patient/profile/index.vue b/src/views/patient/patient/profile/index.vue
new file mode 100644
index 0000000..cd3849d
--- /dev/null
+++ b/src/views/patient/patient/profile/index.vue
@@ -0,0 +1,767 @@
+<template>
+ <div class="app-container">
+ <el-row :gutter="20">
+ <el-col :span="4" :xs="24">
+ <el-card class="box-card">
+ <!-- <div slot="header" class="clearfix">
+ <span>涓汉淇℃伅</span>
+ </div> -->
+ <div class="personage">
+ <div class="text-center">
+ <img v-imgError="require('@/assets/common/head.jpg')" src="" />
+ </div>
+ <div class="information">
+ <div class="info-xx">
+ 鍚撮緳
+ <div class="xinz-inf">+鏂板鏍囩</div>
+ </div>
+ <div class="info-xx">鐢�<span>66宀�</span></div>
+ <div class="info-xx">13803963330</div>
+ </div>
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="18" :xs="24">
+ <el-tabs
+ type="border-card"
+ v-model="activeName"
+ @tab-click="handleClick"
+ >
+ <el-tab-pane name="health">
+ <span class="mulsz" slot="label"
+ ><i class="el-icon-date"></i> 鍋ュ悍妗f</span
+ >
+ 鍩烘湰淇℃伅
+ </el-tab-pane>
+ <el-tab-pane name="medical">
+ <span class="mulsz" slot="label"
+ ><i class="el-icon-s-management"></i> 鍖荤枟妗f</span
+ >
+ <el-tabs v-model="sonactiveName" @tab-click="handleClick">
+ <el-tab-pane name="outpatient"
+ ><span class="mulsz" slot="label"
+ >闂ㄨ瘖({{ mznumber }})</span
+ ></el-tab-pane
+ >
+ <el-tab-pane name="inhospital"
+ ><span class="mulsz" slot="label"
+ >浣忛櫌({{ zynumber }})
+ </span></el-tab-pane
+ >
+ <el-tab-pane name="checkout"
+ ><span class="mulsz" slot="label"
+ >妫�楠�({{ jynumber }})
+ </span></el-tab-pane
+ >
+ <el-tab-pane name="examine"
+ ><span class="mulsz" slot="label"
+ >妫�鏌�({{ jcnumber }})
+ </span></el-tab-pane
+ >
+ <el-tab-pane name="physical"
+ ><span class="mulsz" slot="label">
+ 浣撴({{ tjnumber }})</span
+ ></el-tab-pane
+ >
+ <el-tab-pane name="pharmacy"
+ ><span class="mulsz" slot="label"
+ >鐢ㄨ嵂({{ yynumber }})
+ </span></el-tab-pane
+ >
+ </el-tabs>
+ </el-tab-pane>
+ <el-tab-pane name="monitor">
+ <span class="mulsz" slot="label"
+ ><i class="el-icon-s-data"></i> 鍋ュ悍鐩戞祴</span
+ >
+
+ <el-tabs v-model="sontwoactiveName" @tab-click="handleClick">
+ <el-tab-pane name="blood"
+ ><span class="mulsz" slot="label"
+ ><i class="el-icon-s-operation"></i> 琛�鍘�</span
+ ></el-tab-pane
+ >
+ <el-tab-pane name="glucose"
+ ><span class="mulsz" slot="label"
+ ><i class="el-icon-odometer"></i>琛�绯�
+ </span></el-tab-pane
+ >
+ <el-tab-pane name="weight"
+ ><span class="mulsz" slot="label"
+ ><i class="el-icon-s-data"></i>浣撻噸
+ </span></el-tab-pane
+ >
+ </el-tabs></el-tab-pane
+ >
+ <el-tab-pane name="serve">
+ <span class="mulsz" slot="label"
+ ><i class="el-icon-s-custom"></i> 鏈嶅姟璁板綍</span
+ >
+
+ 瀹氭椂浠诲姟琛ュ伩</el-tab-pane
+ >
+ </el-tabs>
+ </el-col>
+ </el-row>
+ <!-- 鍋ュ悍妗f妯″潡 -->
+ <div class="information-content" v-if="activeName == 'health'">
+ <div class="top-message">
+ <div class="headline">鍩虹淇℃伅</div>
+ <div class="detailed">
+ <div class="one-column">
+ <div>鎮h�呭鍚嶏細<span class="spanvalue">鐜嬪ぇ缇�</span></div>
+ <div>鎬у埆锛�<span class="spanvalue">鐢�</span></div>
+
+ <div>璇佷欢绫诲瀷锛�<span class="spanvalue">韬唤璇�</span></div>
+ </div>
+ <div class="one-column">
+ <div>鍑虹敓鏃ユ湡锛�<span class="spanvalue">1999-01-02</span></div>
+
+ <div>骞撮緞锛�<span class="spanvalue">121</span></div>
+
+ <div class="">
+ 璇佷欢鍙风爜锛�<span class="spanvalue">312223222322232223</span>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="bottom-message">
+ <div class="headline">鍙风爜缁存姢</div>
+ <div class="Table-screen">
+ <el-table :data="tableData" style="width: 100%">
+ <el-table-column prop="name" label="濮撳悕" width="180">
+ </el-table-column>
+ <el-table-column prop="phonenumber" label="鑱旂郴鏂瑰紡" width="180">
+ </el-table-column>
+ <el-table-column prop="concern" label="鍏崇郴"> </el-table-column>
+ <el-table-column prop="source" label="鑱旂郴浜烘潵婧�">
+ </el-table-column>
+ <el-table-column prop="default" label="榛樿鑱旂郴鏂瑰紡">
+ </el-table-column>
+ <el-table-column
+ label-class-name="columcz"
+ fixed="right"
+ label="鎿嶄綔"
+ width="300"
+ >
+ <template slot-scope="scope">
+ <el-button type="success" size="small"
+ >璁句负榛樿鑱旂郴鏂瑰紡</el-button
+ >
+ <el-button type="warning" size="small">缂栬緫</el-button>
+ <el-button type="danger" size="small">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ </div>
+ </div>
+ </div>
+ <!-- 鍖荤枟妗f -->
+ <div class="medical-record" v-else-if="activeName == 'medical'">
+ <!-- 闂ㄨ瘖 -->
+ <div v-if="sonactiveName == 'outpatient'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="daya" label="灏辫瘖鏃ユ湡" width="180">
+ </el-table-column>
+ <el-table-column prop="hospitalname" label="鍖婚櫌鍚嶇О" width="180">
+ </el-table-column>
+ <el-table-column prop="result" label="璇婃柇缁撴灉"> </el-table-column>
+ <el-table-column prop="administrative" label="灏辫瘖绉戝">
+ </el-table-column>
+ <el-table-column prop="doctor" label="鍖荤敓"> </el-table-column>
+ <el-table-column label-class-name="columcz" label="鎿嶄綔" width="300">
+ <template slot-scope="scope">
+ <el-button type="text" size="small">璇︽儏</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </div>
+ <!-- 浣忛櫌 -->
+ <div v-if="sonactiveName == 'inhospital'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="godaya" label="鍏ラ櫌鏃ユ湡"> </el-table-column>
+ <el-table-column prop="hospitalname" label="鍖婚櫌鍚嶇О">
+ </el-table-column>
+ <el-table-column prop="result" label="鍏ラ櫌绉戝埆"> </el-table-column>
+ <el-table-column prop="administrative" label="鐥呭尯">
+ </el-table-column>
+ <el-table-column prop="bed" label="搴婁綅鍙�"> </el-table-column>
+ <el-table-column prop="doctor" label="鍏ラ櫌璇婃柇"> </el-table-column>
+ <el-table-column prop="today" label="鍑洪櫌鏃堕棿"> </el-table-column>
+ </el-table>
+ </div>
+ <!-- 妫�楠� -->
+ <div v-if="sonactiveName == 'checkout'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="godaya" label="妫�楠屽崟鍙�"> </el-table-column>
+ <el-table-column prop="hospitalname" label="鎶ュ憡鏃ユ湡">
+ </el-table-column>
+ <el-table-column prop="result" label="妫�楠岄」鐩�"> </el-table-column>
+ <el-table-column prop="administrative" label="鍖婚櫌鍚嶇О">
+ </el-table-column>
+ </el-table>
+ </div>
+ <!-- 妫�鏌� -->
+ <div v-if="sonactiveName == 'examine'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="godaya" label="鎶ュ憡鍗�"> </el-table-column>
+ <el-table-column prop="hospitalname" label="鎶ュ憡鏃堕棿">
+ </el-table-column>
+ <el-table-column prop="result" label="妫�鏌ラ」鐩�"> </el-table-column>
+ <el-table-column prop="administrative" label="鍖婚櫌鍚嶇О">
+ </el-table-column>
+ </el-table>
+ </div>
+ <!-- 浣撴 -->
+ <div v-if="sonactiveName == 'physical'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="daya" label="灏辫瘖鏃ユ湡"> </el-table-column>
+ <el-table-column prop="hospitalname" label="鍖婚櫌鍚嶇О">
+ </el-table-column>
+ <el-table-column prop="result" label="璇婃柇缁撴灉"> </el-table-column>
+ <el-table-column prop="administrative" label="灏辫瘖绉戝">
+ </el-table-column>
+ <el-table-column prop="doctor" label="鍖荤敓"> </el-table-column>
+ <!-- <el-table-column
+ label-class-name="columcz"
+ fixed="right"
+ label="鎿嶄綔"
+ width="300"
+ >
+ <template slot-scope="scope">
+ <el-button type="text" size="small">璇︽儏</el-button>
+ </template>
+ </el-table-column> -->
+ </el-table>
+ </div>
+ <!-- 鐢ㄨ嵂 -->
+ <div v-if="sonactiveName == 'pharmacy'">
+ <el-table :data="serviceData" style="width: 100%">
+ <el-table-column prop="daya" label="灏辫瘖鏃ユ湡"> </el-table-column>
+ <el-table-column prop="hospitalname" label="鍖婚櫌鍚嶇О">
+ </el-table-column>
+ <el-table-column prop="result" label="璇婃柇缁撴灉"> </el-table-column>
+ <el-table-column prop="administrative" label="灏辫瘖绉戝">
+ </el-table-column>
+ <el-table-column prop="doctor" label="鍖荤敓"> </el-table-column>
+ </el-table>
+ </div>
+ </div>
+
+ <!-- 鏈嶅姟璁板綍 -->
+ <div class="medical-record" v-else-if="activeName == 'serve'">sdaad</div>
+ <!-- 鍋ュ悍鐩戞祴 -->
+ <div class="medical-record" v-show="activeName == 'monitor'">
+ <!-- 琛�鍘嬪浘鏍� -->
+ <div v-show="sontwoactiveName == 'blood'">
+ <div
+ id="xyeCharts"
+ class="sontwoactiveName"
+ style="width: 1300px; height: 800px"
+ ></div>
+ </div>
+ <!-- 琛�绯� -->
+ <div v-show="sontwoactiveName == 'glucose'">
+ <div
+ id="xteCharts"
+ class="sontwoactiveName"
+ style="width: 1300px; height: 800px"
+ ></div>
+ </div>
+ <!-- 浣撻噸 -->
+ <div v-show="sontwoactiveName == 'weight'">
+ <div
+ id="tzeCharts"
+ class="sontwoactiveName"
+ style="width: 1300px; height: 800px"
+ ></div>
+ </div>
+ </div>
+
+ <!-- <div id="xyeCharts" style="width: 500px; height: 500px"></div> -->
+ </div>
+</template>
+
+<script>
+import userAvatar from "./userAvatar";
+import userInfo from "./userInfo";
+import resetPwd from "./resetPwd";
+import * as echarts from "echarts";
+
+import { getUserProfile } from "@/api/system/user";
+import { listJob } from "@/api/monitor/job"; //鑾峰彇鍒楄〃鎺ュ彛寰呭畾
+
+export default {
+ name: "Profile",
+ components: { userAvatar, userInfo, resetPwd },
+ data() {
+ return {
+ user: {},
+ roleGroup: {},
+ postGroup: {},
+ mznumber: 14,
+ zynumber: 34,
+ jynumber: 32,
+ jcnumber: 12,
+ tjnumber: 12,
+ yynumber: 12,
+ total: 0, // 鎬绘潯鏁�
+ activeTab: "userinfo",
+ activeName: "health", //涓�绫诲鑸�
+ sonactiveName: "outpatient", //鍋ュ悍鐩戞祴瀵艰埅
+ sontwoactiveName: "blood", //鍖荤枟妗f瀵艰埅
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ jobName: undefined,
+ jobGroup: undefined,
+ status: undefined,
+ },
+ echartdom: {},
+ xtechartdom: {},
+ tzechartdom: {},
+ tableData: [
+ {
+ date: "2016-05-02",
+ name: "鐜嬪皬铏�",
+ address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�",
+ },
+ {
+ date: "2016-05-04",
+ name: "鐜嬪皬铏�",
+ address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�",
+ },
+ {
+ date: "2016-05-01",
+ name: "鐜嬪皬铏�",
+ address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�",
+ },
+ {
+ date: "2016-05-03",
+ name: "鐜嬪皬铏�",
+ address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�",
+ },
+ ],
+ serviceData: [
+ {
+ daya: "2023-12-12",
+ hospitalname: "鍗忓拰",
+ result: "闊у甫鎷変激",
+ administrative: "楠ㄧ",
+ doctor: "鍚村ぇ榫�",
+ },
+ ],
+ };
+ },
+ created() {
+ this.$nextTick(function () {
+ this.echartdom = document.getElementById("xyeCharts");
+ this.xtechartdom = document.getElementById("xteCharts");
+ this.tzechartdom = document.getElementById("tzeCharts");
+ console.log(this.echartdom);
+ console.log(this.xtechartdom);
+ console.log(this.tzechartdom);
+ this.echartsInit();
+ this.xtechartsInit();
+ this.tzechartsInit();
+ });
+ this.getList();
+ },
+ methods() {},
+
+ methods: {
+ // 鏌ヨ鍒楄〃
+ getList() {
+ this.loading = true;
+ listJob(this.queryParams).then((response) => {
+ this.jobList = 1;
+ this.total = 1;
+ this.loading = false;
+ });
+ },
+ // getUser() {
+ // getUserProfile().then((response) => {
+ // this.user = response.data;
+ // this.roleGroup = response.roleGroup;
+ // this.postGroup = response.postGroup;
+ // });
+ // },
+ handleClick(tab, event) {
+ console.log(tab, event);
+ },
+
+ // 琛�鍘嬪浘琛ㄩ儴鍒�
+ echartsInit() {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ console.log(echarts);
+ console.log(this.echartdom);
+ console.log(this.$refs.xyeCharts);
+ var myxyChart = echarts.init(this.echartdom);
+ console.log(myxyChart);
+ // var myxyChart = this.$echarts.init(document.getElementById("xyeCharts"));
+ // var myxyChart = this.$echarts.init(this.$refs.xyeCharts);
+ var option = {
+ title: {
+ text: "鍘嗗彶琛�鍘嬭褰�",
+ },
+ tooltip: {
+ trigger: "axis",
+ },
+ legend: {},
+ toolbox: {
+ show: true,
+ feature: {
+ dataZoom: {
+ yAxisIndex: "none",
+ },
+ dataView: { readOnly: false },
+ magicType: { type: ["line", "bar"] },
+ restore: {},
+ saveAsImage: {},
+ },
+ },
+ xAxis: {
+ type: "category",
+ boundaryGap: false,
+ data: ["涓�鏈�", "浜屾湀", "涓夋湀", "鍥涙湀", "浜旀湀", "鍏湀", "涓冩湀"],
+ },
+ yAxis: {
+ type: "value",
+ axisLabel: {
+ formatter: "{value}",
+ },
+ },
+ series: [
+ {
+ name: "鏀剁缉鍘�",
+ type: "line",
+ data: [100, 120, 130, 121, 132, 142, 119],
+ itemStyle: {
+ normal: {
+ color: "#ff7979",
+ },
+ },
+ markPoint: {
+ data: [{ type: "max", name: "鑸掑紶鍘嬮珮鍊�" }],
+ },
+ markLine: {
+ data: [{ yAxis: 140, name: "姝e父鑸掑紶鍘嬮珮鍊�" }],
+ },
+ },
+ {
+ name: "鑸掑紶鍘�",
+ type: "line",
+ data: [71, 79, 82, 85, 93, 82, 90],
+ itemStyle: {
+ normal: {
+ color: "#409eff",
+ },
+ },
+ markPoint: {
+ data: [{ name: "鍛ㄦ渶浣�", type: "min" }],
+ },
+ markLine: {
+ data: [{ yAxis: 80, name: "姝e父鑸掑紶鍘嬮珮鍊�" }],
+ },
+ },
+ ],
+ };
+ console.log("ss");
+ // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
+ myxyChart.setOption(option);
+ },
+ // 琛�绯栧浘琛�
+ xtechartsInit() {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ // console.log(echarts);
+ console.log(this.xtechartdom);
+ var myxyChart = echarts.init(this.xtechartdom);
+ console.log(myxyChart);
+ const data = [
+ ["2000-06-05", 116],
+ ["2000-06-06", 129],
+ ["2000-06-07", 135],
+ ["2000-06-08", 86],
+ ["2000-06-09", 73],
+ ["2000-06-10", 85],
+ ["2000-06-11", 73],
+ ["2000-06-12", 68],
+ ["2000-06-13", 92],
+ ["2000-06-14", 130],
+ ["2000-06-15", 245],
+ ["2000-06-16", 139],
+ ["2000-06-17", 115],
+ ["2000-06-18", 111],
+ ["2000-06-19", 309],
+ ["2000-06-20", 206],
+ ["2000-06-21", 137],
+ ["2000-06-22", 128],
+ ["2000-06-23", 85],
+ ];
+ const dateList = data.map(function (item) {
+ return item[0];
+ });
+ const valueList = data.map(function (item) {
+ return item[1];
+ });
+ var option = {
+ title: {
+ text: "鍘嗗彶琛�绯栬褰�",
+ },
+ visualMap: [
+ {
+ show: false,
+ type: "continuous",
+ seriesIndex: 0,
+ min: 0,
+ max: 400,
+ },
+ ],
+ title: [
+ {
+ left: "center",
+ text: "琛�绯栧巻鍙茬洃娴�",
+ },
+ ],
+ tooltip: {
+ trigger: "axis",
+ },
+ xAxis: [
+ {
+ data: dateList,
+ },
+ ],
+ yAxis: [{}],
+ series: [
+ {
+ type: "line",
+ showSymbol: false,
+ data: valueList,
+ },
+ ],
+ };
+ console.log("ss");
+ // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
+ myxyChart.setOption(option);
+ },
+ // 浣撻噸鍥捐〃
+ tzechartsInit() {
+ // 鍩轰簬鍑嗗濂界殑dom锛屽垵濮嬪寲echarts瀹炰緥
+ console.log(echarts);
+ console.log(this.tzechartdom);
+ var myxyChart = echarts.init(this.tzechartdom);
+ console.log(myxyChart);
+ const data = [
+ ["2000-06-05", 116],
+ ["2000-06-06", 99],
+ ["2000-06-07", 105],
+ ["2000-06-08", 126],
+ ["2000-06-09", 73],
+ ["2000-06-10", 85],
+ ["2000-06-11", 73],
+ ["2000-06-12", 68],
+ ["2000-06-13", 92],
+ ["2000-06-14", 130],
+ ["2000-06-15", 245],
+ ["2000-06-16", 119],
+ ["2000-06-17", 115],
+ ["2000-06-18", 201],
+ ["2000-06-19", 209],
+ ["2000-06-20", 106],
+ ["2000-06-21", 137],
+ ["2000-06-22", 128],
+ ["2000-06-23", 85],
+ ];
+ const dateList = data.map(function (item) {
+ return item[0];
+ });
+ const valueList = data.map(function (item) {
+ return item[1];
+ });
+ var option = {
+ title: {
+ text: "鍘嗗彶琛�绯栬褰�",
+ },
+ toolbox: {
+ show: true,
+ feature: {
+ dataZoom: {
+ yAxisIndex: "none",
+ },
+ dataView: { readOnly: false },
+ magicType: { type: ["line", "bar"] },
+ restore: {},
+ saveAsImage: {},
+ },
+ },
+ visualMap: [
+ {
+ show: false,
+ type: "continuous",
+ seriesIndex: 0,
+ min: 0,
+ max: 400,
+ },
+ ],
+ title: [
+ {
+ left: "center",
+ text: "琛�绯栧巻鍙茬洃娴�",
+ },
+ ],
+ tooltip: {
+ trigger: "axis",
+ },
+ xAxis: [
+ {
+ data: dateList,
+ },
+ ],
+ yAxis: [{}],
+ series: [
+ {
+ type: "line",
+ showSymbol: false,
+ data: valueList,
+ lineStyle: {
+ width: 3,
+ type: "solid",
+ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+ {
+ offset: 0,
+ color: "#FE7D2F",
+ },
+ {
+ offset: 1,
+ color: "#F9D423",
+ },
+ ]),
+ },
+ },
+ ],
+ };
+ console.log("ss");
+ // 浣跨敤鍒氭寚瀹氱殑閰嶇疆椤瑰拰鏁版嵁鏄剧ず鍥捐〃銆�
+ myxyChart.setOption(option);
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.personage {
+ display: flex;
+ .text-center {
+ width: 40px;
+ height: 40px;
+ margin-right: 10px;
+ img {
+ width: 100%;
+ }
+ }
+ .information {
+ font-size: 25px;
+ .info-xx {
+ margin-top: 15px;
+ border-bottom: 2px solid rgb(65, 161, 190);
+ display: flex;
+ span {
+ margin-left: 30px;
+ }
+ .xinz-inf {
+ cursor: pointer;
+ margin-left: 20px;
+ height: 23px;
+ line-height: 23px;
+ padding: 2px;
+ align-items: center;
+ font-size: 16px;
+ color: rgb(85, 151, 250);
+ border: 1px solid #439fff;
+ border-radius: 9px;
+ }
+ }
+ }
+}
+.el-tabs--border-card {
+ font-size: 25px;
+ .mulsz {
+ font-size: 25px;
+ margin-top: 20px;
+ }
+}
+.information-content {
+ margin-top: 20px;
+ background: #ffffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .top-message {
+ margin-top: 25px;
+ margin-left: 100px;
+ .detailed {
+ width: 70%;
+ padding: 30px;
+ margin-bottom: 30px;
+ background-color: #ddf0f8;
+ .one-column {
+ display: flex;
+ font-size: 20px;
+ margin-bottom: 30px;
+ padding-bottom: 3px;
+ .spanvalue {
+ display: inline-block;
+ min-width: 200px;
+ border-bottom: 1px solid rgb(172, 172, 172);
+ }
+
+ div {
+ width: 330px;
+ }
+ }
+ }
+ }
+
+ .headline {
+ font-size: 25px;
+ padding-left: 5px;
+ margin-bottom: 10px;
+ border-left: 8px solid rgb(65, 161, 190);
+ }
+ .bottom-message {
+ margin-bottom: 25px;
+ margin-left: 100px;
+ .Table-screen {
+ width: 70%;
+ padding: 30px;
+ margin-bottom: 30px;
+ background-color: #ddf0f8;
+ font-size: 20px !important;
+ }
+ }
+}
+.medical-record {
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #ffffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+}
+.sontwoactiveName {
+ margin: 0 auto;
+}
+// .columcz {
+// align-items: center!important;
+// }
+</style>
diff --git a/ruoyi-ui/src/views/system/user/profile/resetPwd.vue b/src/views/patient/patient/profile/resetPwd.vue
similarity index 100%
copy from ruoyi-ui/src/views/system/user/profile/resetPwd.vue
copy to src/views/patient/patient/profile/resetPwd.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/src/views/patient/patient/profile/userAvatar.vue
similarity index 100%
copy from ruoyi-ui/src/views/system/user/profile/userAvatar.vue
copy to src/views/patient/patient/profile/userAvatar.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/userInfo.vue b/src/views/patient/patient/profile/userInfo.vue
similarity index 100%
copy from ruoyi-ui/src/views/system/user/profile/userInfo.vue
copy to src/views/patient/patient/profile/userInfo.vue
diff --git a/ruoyi-ui/src/views/redirect.vue b/src/views/redirect.vue
similarity index 100%
rename from ruoyi-ui/src/views/redirect.vue
rename to src/views/redirect.vue
diff --git a/ruoyi-ui/src/views/register.vue b/src/views/register.vue
similarity index 62%
rename from ruoyi-ui/src/views/register.vue
rename to src/views/register.vue
index 28a181a..5530e9a 100644
--- a/ruoyi-ui/src/views/register.vue
+++ b/src/views/register.vue
@@ -1,10 +1,24 @@
<template>
<div class="register">
- <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
+ <el-form
+ ref="registerForm"
+ :model="registerForm"
+ :rules="registerRules"
+ class="register-form"
+ >
<h3 class="title">鏅烘収闅忚绠$悊绯荤粺</h3>
<el-form-item prop="username">
- <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="璐﹀彿">
- <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
+ <el-input
+ v-model="registerForm.username"
+ type="text"
+ auto-complete="off"
+ placeholder="璐﹀彿"
+ >
+ <svg-icon
+ slot="prefix"
+ icon-class="user"
+ class="el-input__icon input-icon"
+ />
</el-input>
</el-form-item>
<el-form-item prop="password">
@@ -15,7 +29,11 @@
placeholder="瀵嗙爜"
@keyup.enter.native="handleRegister"
>
- <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="password"
+ class="el-input__icon input-icon"
+ />
</el-input>
</el-form-item>
<el-form-item prop="confirmPassword">
@@ -26,7 +44,11 @@
placeholder="纭瀵嗙爜"
@keyup.enter.native="handleRegister"
>
- <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="password"
+ class="el-input__icon input-icon"
+ />
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
@@ -37,25 +59,31 @@
style="width: 63%"
@keyup.enter.native="handleRegister"
>
- <svg-icon slot="prefix" icon-class="validCode" class="el-input__icon input-icon" />
+ <svg-icon
+ slot="prefix"
+ icon-class="validCode"
+ class="el-input__icon input-icon"
+ />
</el-input>
<div class="register-code">
- <img :src="codeUrl" @click="getCode" class="register-code-img"/>
+ <img :src="codeUrl" @click="getCode" class="register-code-img" />
</div>
</el-form-item>
- <el-form-item style="width:100%;">
+ <el-form-item style="width: 100%">
<el-button
:loading="loading"
size="medium"
type="primary"
- style="width:100%;"
+ style="width: 100%"
@click.native.prevent="handleRegister"
>
<span v-if="!loading">娉� 鍐�</span>
<span v-else>娉� 鍐� 涓�...</span>
</el-button>
- <div style="float: right;">
- <router-link class="link-type" :to="'/login'">浣跨敤宸叉湁璐︽埛鐧诲綍</router-link>
+ <div style="float: right">
+ <router-link class="link-type" :to="'/login'"
+ >浣跨敤宸叉湁璐︽埛鐧诲綍</router-link
+ >
</div>
</el-form-item>
</el-form>
@@ -86,25 +114,35 @@
password: "",
confirmPassword: "",
code: "",
- uuid: ""
+ uuid: "",
},
registerRules: {
username: [
{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勮处鍙�" },
- { min: 2, max: 20, message: '鐢ㄦ埛璐﹀彿闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿', trigger: 'blur' }
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛璐﹀彿闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
],
password: [
{ required: true, trigger: "blur", message: "璇疯緭鍏ユ偍鐨勫瘑鐮�" },
- { min: 5, max: 20, message: '鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿', trigger: 'blur' }
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
],
confirmPassword: [
{ required: true, trigger: "blur", message: "璇峰啀娆¤緭鍏ユ偍鐨勫瘑鐮�" },
- { required: true, validator: equalToPassword, trigger: "blur" }
+ { required: true, validator: equalToPassword, trigger: "blur" },
],
- code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }]
+ code: [{ required: true, trigger: "change", message: "璇疯緭鍏ラ獙璇佺爜" }],
},
loading: false,
- captchaEnabled: true
+ captchaEnabled: true,
};
},
created() {
@@ -112,8 +150,9 @@
},
methods: {
getCode() {
- getCodeImg().then(res => {
- this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;
+ getCodeImg().then((res) => {
+ this.captchaEnabled =
+ res.captchaEnabled === undefined ? true : res.captchaEnabled;
if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img;
this.registerForm.uuid = res.uuid;
@@ -121,27 +160,37 @@
});
},
handleRegister() {
- this.$refs.registerForm.validate(valid => {
+ this.$refs.registerForm.validate((valid) => {
if (valid) {
this.loading = true;
- register(this.registerForm).then(res => {
- const username = this.registerForm.username;
- this.$alert("<font color='red'>鎭枩浣狅紝鎮ㄧ殑璐﹀彿 " + username + " 娉ㄥ唽鎴愬姛锛�</font>", '绯荤粺鎻愮ず', {
- dangerouslyUseHTMLString: true,
- type: 'success'
- }).then(() => {
- this.$router.push("/login");
- }).catch(() => {});
- }).catch(() => {
- this.loading = false;
- if (this.captchaEnabled) {
- this.getCode();
- }
- })
+ register(this.registerForm)
+ .then((res) => {
+ const username = this.registerForm.username;
+ this.$alert(
+ "<font color='red'>鎭枩浣狅紝鎮ㄧ殑璐﹀彿 " +
+ username +
+ " 娉ㄥ唽鎴愬姛锛�</font>",
+ "绯荤粺鎻愮ず",
+ {
+ dangerouslyUseHTMLString: true,
+ type: "success",
+ }
+ )
+ .then(() => {
+ this.$router.push("/login");
+ })
+ .catch(() => {});
+ })
+ .catch(() => {
+ this.loading = false;
+ if (this.captchaEnabled) {
+ this.getCode();
+ }
+ });
}
});
- }
- }
+ },
+ },
};
</script>
diff --git a/ruoyi-ui/src/views/smartor/hecategory/index.vue b/src/views/smartor/hecategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/hecategory/index.vue
rename to src/views/smartor/hecategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/helibrary/index.vue b/src/views/smartor/helibrary/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/helibrary/index.vue
rename to src/views/smartor/helibrary/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrexecuteconfig/index.vue b/src/views/smartor/ivrexecuteconfig/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrexecuteconfig/index.vue
rename to src/views/smartor/ivrexecuteconfig/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrextemplate/index.vue b/src/views/smartor/ivrextemplate/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrextemplate/index.vue
rename to src/views/smartor/ivrextemplate/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrextemplatescript/index.vue b/src/views/smartor/ivrextemplatescript/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrextemplatescript/index.vue
rename to src/views/smartor/ivrextemplatescript/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrflow/index.vue b/src/views/smartor/ivrflow/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrflow/index.vue
rename to src/views/smartor/ivrflow/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrflownode/index.vue b/src/views/smartor/ivrflownode/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrflownode/index.vue
rename to src/views/smartor/ivrflownode/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrflownodebranch/index.vue b/src/views/smartor/ivrflownodebranch/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrflownodebranch/index.vue
rename to src/views/smartor/ivrflownodebranch/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrglobalconfig/index.vue b/src/views/smartor/ivrglobalconfig/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrglobalconfig/index.vue
rename to src/views/smartor/ivrglobalconfig/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrintent/index.vue b/src/views/smartor/ivrintent/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrintent/index.vue
rename to src/views/smartor/ivrintent/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibascript/index.vue b/src/views/smartor/ivrlibascript/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibascript/index.vue
rename to src/views/smartor/ivrlibascript/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibintent/index.vue b/src/views/smartor/ivrlibintent/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibintent/index.vue
rename to src/views/smartor/ivrlibintent/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibintentcategory/index.vue b/src/views/smartor/ivrlibintentcategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibintentcategory/index.vue
rename to src/views/smartor/ivrlibintentcategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibscript/index.vue b/src/views/smartor/ivrlibscript/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibscript/index.vue
rename to src/views/smartor/ivrlibscript/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibscriptcategory/index.vue b/src/views/smartor/ivrlibscriptcategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibscriptcategory/index.vue
rename to src/views/smartor/ivrlibscriptcategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrlibscriptmodel/index.vue b/src/views/smartor/ivrlibscriptmodel/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrlibscriptmodel/index.vue
rename to src/views/smartor/ivrlibscriptmodel/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrquestionlib/QuestionMaint.vue b/src/views/smartor/ivrquestionlib/QuestionMaint.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrquestionlib/QuestionMaint.vue
rename to src/views/smartor/ivrquestionlib/QuestionMaint.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrrecall/index.vue b/src/views/smartor/ivrrecall/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrrecall/index.vue
rename to src/views/smartor/ivrrecall/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrscene/index.vue b/src/views/smartor/ivrscene/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrscene/index.vue
rename to src/views/smartor/ivrscene/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrscenecategory/index.vue b/src/views/smartor/ivrscenecategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrscenecategory/index.vue
rename to src/views/smartor/ivrscenecategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrscript/index.vue b/src/views/smartor/ivrscript/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrscript/index.vue
rename to src/views/smartor/ivrscript/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrscriptmodel/index.vue b/src/views/smartor/ivrscriptmodel/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrscriptmodel/index.vue
rename to src/views/smartor/ivrscriptmodel/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrscripttarget/index.vue b/src/views/smartor/ivrscripttarget/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrscripttarget/index.vue
rename to src/views/smartor/ivrscripttarget/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtarget/index.vue b/src/views/smartor/ivrtarget/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtarget/index.vue
rename to src/views/smartor/ivrtarget/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtask/index.vue b/src/views/smartor/ivrtask/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtask/index.vue
rename to src/views/smartor/ivrtask/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue b/src/views/smartor/ivrtaskcall/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtaskcall/index.vue
rename to src/views/smartor/ivrtaskcall/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue b/src/views/smartor/ivrtaskcalldetail/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtaskcalldetail/index.vue
rename to src/views/smartor/ivrtaskcalldetail/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue b/src/views/smartor/ivrtaskcallrecord/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtaskcallrecord/index.vue
rename to src/views/smartor/ivrtaskcallrecord/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtasksms/index.vue b/src/views/smartor/ivrtasksms/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtasksms/index.vue
rename to src/views/smartor/ivrtasksms/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtemplate/index.vue b/src/views/smartor/ivrtemplate/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtemplate/index.vue
rename to src/views/smartor/ivrtemplate/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtemplatescript/index.vue b/src/views/smartor/ivrtemplatescript/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtemplatescript/index.vue
rename to src/views/smartor/ivrtemplatescript/index.vue
diff --git a/ruoyi-ui/src/views/smartor/ivrtemplatetarget/index.vue b/src/views/smartor/ivrtemplatetarget/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/ivrtemplatetarget/index.vue
rename to src/views/smartor/ivrtemplatetarget/index.vue
diff --git a/ruoyi-ui/src/views/smartor/patarchive/index.vue b/src/views/smartor/patarchive/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/patarchive/index.vue
rename to src/views/smartor/patarchive/index.vue
diff --git a/ruoyi-ui/src/views/smartor/patarchive/index0.vue b/src/views/smartor/patarchive/index0.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/patarchive/index0.vue
rename to src/views/smartor/patarchive/index0.vue
diff --git a/ruoyi-ui/src/views/smartor/patinhosp/index.vue b/src/views/smartor/patinhosp/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/patinhosp/index.vue
rename to src/views/smartor/patinhosp/index.vue
diff --git a/ruoyi-ui/src/views/smartor/patouthosp/index.vue b/src/views/smartor/patouthosp/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/patouthosp/index.vue
rename to src/views/smartor/patouthosp/index.vue
diff --git a/ruoyi-ui/src/views/smartor/patphysical/index.vue b/src/views/smartor/patphysical/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/patphysical/index.vue
rename to src/views/smartor/patphysical/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemeautofinshrule/index.vue b/src/views/smartor/schemeautofinshrule/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemeautofinshrule/index.vue
rename to src/views/smartor/schemeautofinshrule/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemecalldetail/index.vue b/src/views/smartor/schemecalldetail/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemecalldetail/index.vue
rename to src/views/smartor/schemecalldetail/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemecategory/index.vue b/src/views/smartor/schemecategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemecategory/index.vue
rename to src/views/smartor/schemecategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemelibrary/index.vue b/src/views/smartor/schemelibrary/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemelibrary/index.vue
rename to src/views/smartor/schemelibrary/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemeplan/index.vue b/src/views/smartor/schemeplan/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemeplan/index.vue
rename to src/views/smartor/schemeplan/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetask/index.vue b/src/views/smartor/schemetask/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetask/index.vue
rename to src/views/smartor/schemetask/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetaskconfig/index.vue b/src/views/smartor/schemetaskconfig/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetaskconfig/index.vue
rename to src/views/smartor/schemetaskconfig/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetaskrecord/index.vue b/src/views/smartor/schemetaskrecord/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetaskrecord/index.vue
rename to src/views/smartor/schemetaskrecord/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetaskrepeatconfig/index.vue b/src/views/smartor/schemetaskrepeatconfig/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetaskrepeatconfig/index.vue
rename to src/views/smartor/schemetaskrepeatconfig/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetriggerrule/index.vue b/src/views/smartor/schemetriggerrule/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetriggerrule/index.vue
rename to src/views/smartor/schemetriggerrule/index.vue
diff --git a/ruoyi-ui/src/views/smartor/schemetriggerscene/index.vue b/src/views/smartor/schemetriggerscene/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/schemetriggerscene/index.vue
rename to src/views/smartor/schemetriggerscene/index.vue
diff --git a/ruoyi-ui/src/views/smartor/smsaccount/index.vue b/src/views/smartor/smsaccount/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/smsaccount/index.vue
rename to src/views/smartor/smsaccount/index.vue
diff --git a/ruoyi-ui/src/views/smartor/smsparam/index.vue b/src/views/smartor/smsparam/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/smsparam/index.vue
rename to src/views/smartor/smsparam/index.vue
diff --git a/ruoyi-ui/src/views/smartor/smsrecords/index.vue b/src/views/smartor/smsrecords/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/smsrecords/index.vue
rename to src/views/smartor/smsrecords/index.vue
diff --git a/ruoyi-ui/src/views/smartor/smstemplet/index.vue b/src/views/smartor/smstemplet/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/smstemplet/index.vue
rename to src/views/smartor/smstemplet/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svycategory/index.vue b/src/views/smartor/svycategory/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svycategory/index.vue
rename to src/views/smartor/svycategory/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svyexception/index.vue b/src/views/smartor/svyexception/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svyexception/index.vue
rename to src/views/smartor/svyexception/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svyfinish/index.vue b/src/views/smartor/svyfinish/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svyfinish/index.vue
rename to src/views/smartor/svyfinish/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svyfinishoption/index.vue b/src/views/smartor/svyfinishoption/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svyfinishoption/index.vue
rename to src/views/smartor/svyfinishoption/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svyfinishtopic/index.vue b/src/views/smartor/svyfinishtopic/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svyfinishtopic/index.vue
rename to src/views/smartor/svyfinishtopic/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svyresult/index.vue b/src/views/smartor/svyresult/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svyresult/index.vue
rename to src/views/smartor/svyresult/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svytitle/index.vue b/src/views/smartor/svytitle/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytitle/index.vue
rename to src/views/smartor/svytitle/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svytitle/index0.vue b/src/views/smartor/svytitle/index0.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytitle/index0.vue
rename to src/views/smartor/svytitle/index0.vue
diff --git a/ruoyi-ui/src/views/smartor/svytitle/index1.vue b/src/views/smartor/svytitle/index1.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytitle/index1.vue
rename to src/views/smartor/svytitle/index1.vue
diff --git a/ruoyi-ui/src/views/smartor/svytopic/index.vue b/src/views/smartor/svytopic/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytopic/index.vue
rename to src/views/smartor/svytopic/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svytopic/index1.vue b/src/views/smartor/svytopic/index1.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytopic/index1.vue
rename to src/views/smartor/svytopic/index1.vue
diff --git a/ruoyi-ui/src/views/smartor/svytopic/maint.vue b/src/views/smartor/svytopic/maint.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytopic/maint.vue
rename to src/views/smartor/svytopic/maint.vue
diff --git a/ruoyi-ui/src/views/smartor/svytopicoption/index.vue b/src/views/smartor/svytopicoption/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytopicoption/index.vue
rename to src/views/smartor/svytopicoption/index.vue
diff --git a/ruoyi-ui/src/views/smartor/svytopicoption/index1.vue b/src/views/smartor/svytopicoption/index1.vue
similarity index 100%
rename from ruoyi-ui/src/views/smartor/svytopicoption/index1.vue
rename to src/views/smartor/svytopicoption/index1.vue
diff --git a/ruoyi-ui/src/views/system/category/index.vue b/src/views/system/category/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/category/index.vue
rename to src/views/system/category/index.vue
diff --git a/ruoyi-ui/src/views/system/config/index.vue b/src/views/system/config/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/config/index.vue
rename to src/views/system/config/index.vue
diff --git a/ruoyi-ui/src/views/system/dept/index.vue b/src/views/system/dept/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/dept/index.vue
rename to src/views/system/dept/index.vue
diff --git a/ruoyi-ui/src/views/system/dict/data.vue b/src/views/system/dict/data.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/dict/data.vue
rename to src/views/system/dict/data.vue
diff --git a/ruoyi-ui/src/views/system/dict/index.vue b/src/views/system/dict/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/dict/index.vue
rename to src/views/system/dict/index.vue
diff --git a/src/views/system/label/index.vue b/src/views/system/label/index.vue
new file mode 100644
index 0000000..a5f3a42
--- /dev/null
+++ b/src/views/system/label/index.vue
@@ -0,0 +1,730 @@
+<template>
+ <div class="Questionnairemanagement">
+ <!-- 宸︿晶鏍� -->
+ <div class="sidecolumn">
+ <div class="sidecolumn-top">
+ <div class="top-wj">鎮h�呮爣绛剧被鍨�</div>
+ <div class="top-tj" @click="dialogFormVisible = true">+娣诲姞</div>
+ </div>
+ <div class="center-ss">
+ <el-input
+ placeholder="璇疯緭鍏ュ唴瀹�"
+ v-model="sidecolumnval"
+ class="input-with-select"
+ size="medium "
+ >
+ <el-button
+ @click="sidecolumnss"
+ slot="append"
+ icon="el-icon-search"
+ ></el-button>
+ </el-input>
+ </div>
+ <div class="bottom-fl">
+ <el-tabs tab-position="right">
+ <el-tab-pane :label="`鍏ㄩ儴 (${numberlb})`"></el-tab-pane>
+ <el-tab-pane
+ class="tab-paness"
+ :key="item.name"
+ v-for="(item, index) in editableTabs"
+ >
+ <span slot="label">
+ {{
+ item.title + " (" + item.number + ")"
+ }}   <el-popover
+ placement="top-start"
+ width="100"
+ trigger="hover"
+ >
+ <div style="text-align: center">
+ <el-button type="text" @click="popoveramend">淇敼</el-button
+ ><el-button type="text" @click="deleteVisible = true"
+ ><span style="color: rgb(173, 55, 55)"
+ >鍒犻櫎</span
+ ></el-button
+ >
+ </div>
+ <i slot="reference" class="el-icon-share"></i> </el-popover
+ ></span>
+ </el-tab-pane>
+
+ <el-tab-pane :label="`鏈垎缁�(${numberlbs})`"></el-tab-pane>
+ </el-tabs>
+ </div>
+ </div>
+ <!-- 鍙充晶鏁版嵁 -->
+ <div class="leftvlue">
+ <div class="leftvlue-top"></div>
+ <div class="leftvlue-bg">
+ <el-row :gutter="20">
+ <!--鐢ㄦ埛鏁版嵁-->
+ <el-col :span="24" :xs="24">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ label-width="98px"
+ >
+ <el-form-item label="鏍囩鍚嶇О" prop="userName">
+ <el-input
+ v-model="queryParams.userName"
+ placeholder="璇疯緭鍏�"
+ clearable
+ style="width: 200px"
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="medium"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button
+ icon="el-icon-refresh"
+ size="medium"
+ @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="medium"
+ @click="lstamendtagVisible = true"
+ v-hasPermi="['system:user:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+
+ <el-col :span="1.5">
+ <el-button
+ type="danger"
+ plain
+ icon="el-icon-delete"
+ size="medium"
+ :disabled="multiple"
+ @click="handleDelete"
+ v-hasPermi="['system:user:remove']"
+ >鍒犻櫎</el-button
+ >
+ </el-col>
+
+ <!-- <el-col :span="1.5"> </el-col> -->
+ </el-row>
+ <!-- <right-toolbar
+ :showSearch.sync="showSearch"
+ @queryTable="getList"
+ :columns="columns"
+ ></right-toolbar> -->
+ <el-table
+ v-loading="loading"
+ :data="userList"
+ :border="true"
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column type="selection" width="50" align="center" />
+ <el-table-column
+ label="搴忓彿"
+ align="center"
+ key="userId"
+ prop="userId"
+ />
+ <el-table-column
+ label="鏍囩鍚嶇О"
+ align="center"
+ key="userName"
+ prop="userName"
+ :show-overflow-tooltip="true"
+ />
+ <el-table-column
+ label="鏈�杩戠紪杈�"
+ align="center"
+ key="nickName"
+ prop="nickName"
+ :show-overflow-tooltip="true"
+ />
+
+ <el-table-column
+ label="鏍囩鎻忚堪"
+ align="center"
+ key="aphonenumber"
+ prop="aphonenumber"
+ width="120"
+ />
+ <el-table-column
+ label="鐘舵��"
+ align="center"
+ key="aphonenumbers"
+ prop="aphonenumbers"
+ width="120"
+ >
+ <template slot-scope="scope">
+ <el-switch
+ v-model="scope.row.delivery"
+ @change="handleStatusChange(scope.row)"
+ ></el-switch>
+ </template>
+ </el-table-column>
+
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:user:edit']"
+ ><span class="button-textxg"
+ ><i class="el-icon-edit"></i>淇敼</span
+ ></el-button
+ >
+ <el-button
+ size="medium"
+ type="text"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:user:remove']"
+ ><span class="button-textsc"
+ ><i class="el-icon-delete"></i>鍒犻櫎</span
+ ></el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <pagination
+ v-show="total > 0"
+ :total="total"
+ :page.sync="queryParams.pageNum"
+ :limit.sync="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+ <!-- 娣诲姞绫诲埆寮规 -->
+ <el-dialog
+ :title="amendtag ? '淇敼绫诲埆' : '鏂板绫诲埆'"
+ width="30%"
+ :visible.sync="dialogFormVisible"
+ >
+ <el-form :model="sidecolumnform">
+ <el-form-item
+ :label="amendtag ? '璇疯緭鍏ユ柊鐨勭被鍒悕绉�' : '璇疯緭鍏ョ被鍒悕绉�'"
+ >
+ <el-input
+ v-model="sidecolumnform.classesname"
+ autocomplete="off"
+ ></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+ <!-- 鍒犻櫎绫诲埆纭妗� -->
+ <el-dialog title="璀﹀憡" :visible.sync="deleteVisible" width="40%">
+ <div style="font-size: 20px; color: rgb(247, 76, 76)">
+ 鏄惁纭鍒犻櫎鍒嗙被锛歔<span>{{ deletefenl }}</span
+ >]?
+ </div>
+ <div style="font-size: 20px">
+ 姝ゆ搷浣滀細灏嗚绫诲埆涓嬫墍鏈夋ā鍧楄浆绉昏嚦[鏈垎绫籡锛屾槸鍚︾户缁垹闄ゆ鍒嗙被锛�
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="deleteVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="deleteVisible = false"
+ >纭� 瀹�</el-button
+ >
+ </span>
+ </el-dialog>
+ <!-- 淇敼/娣诲姞鏍囩寮规 -->
+ <el-dialog
+ :title="lstamendtag ? '淇敼鏍囩' : '鏂板鏍囩'"
+ width="30%"
+ :visible.sync="lstamendtagVisible"
+ >
+ <el-form ref="form" :model="tagform" label-width="80px">
+ <el-form-item label="鏍囩鍚嶇О">
+ <el-input v-model="tagform.name"></el-input>
+ </el-form-item>
+
+ <el-form-item label="鏄惁鍚敤">
+ <el-switch v-model="tagform.delivery"></el-switch>
+ </el-form-item>
+
+ <el-form-item label="鏍囩鎻忚堪">
+ <el-input type="textarea" v-model="tagform.desc"></el-input>
+ </el-form-item>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button @click="lstamendtagVisible = false">鍙� 娑�</el-button>
+ <el-button type="primary" @click="submitsidecolumn">纭� 瀹�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ listUser,
+ getUser,
+ delUser,
+ addUser,
+ updateUser,
+} from "@/api/system/user";
+import { getToken } from "@/utils/auth";
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+export default {
+ name: "questionnaire",
+ dicts: ["sys_normal_disable", "sys_user_sex"],
+ components: { Treeselect },
+ data() {
+ return {
+ topactiveName: "Local", //椤堕儴閫夋嫨
+ // 閬僵灞�
+ loading: false,
+ // 閫変腑鏁扮粍
+ ids: [],
+ // 闈炲崟涓鐢�
+ single: true,
+ // 闈炲涓鐢�
+ multiple: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 鎬绘潯鏁�
+ total: 0,
+ amendtag: false, //鏄惁淇敼绫诲埆
+ lstamendtag: false, //鏄惁淇敼鏍囩
+ scavisible: false, //鍒犻櫎寮规
+ deleteVisible: false, //鍒嗙被鍒犻櫎寮规
+ deletefenl: "楂樿鍘�", //鍒犻櫎椤�
+ //淇敼娣诲姞鏍囩寮规鏁版嵁
+ tagform: {
+ delivery: "",
+ name: "",
+ desc: "",
+ },
+ // 鏍囩琛ㄦ牸鏁版嵁
+ userList: [
+ {
+ userId: 1,
+ userName: "涓夊彿",
+ nickName: "1.2.4",
+ aphonenumber: "鍏宠妭鐐庣棁",
+ delivery: true,
+ aphonenumbers: "",
+ bphonenumber: "寰堟",
+ cphonenumber: "2022-12-12 ",
+ },
+ ],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏃ユ湡鑼冨洿
+ dateRange: [],
+ // 宀椾綅閫夐」
+ postOptions: [],
+ // 瑙掕壊閫夐」
+ roleOptions: [],
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ numberlb: 22,
+ numberlbs: 2,
+ sidecolumnform: {
+ classesname: "",
+ }, //娣诲姞绫诲埆琛ㄥ崟
+ dialogFormVisible: false, //娣诲姞銆佷慨鏀圭被鍒脊妗�
+ lstamendtagVisible: false, //娣诲姞銆佷慨鏀规爣绛惧脊妗�
+ goQRCodeVisible: false, //浜岀淮鐮佸脊妗�
+ sidecolumnval: "", //绫诲埆鎼滅储
+ propss: { multiple: true },
+ optionss: [
+ {
+ value: 1,
+ label: "涓滃崡",
+ },
+ {
+ value: 2,
+ label: "瑗垮寳",
+ },
+ {
+ value: 3,
+ label: "浠ㄤ花浠�",
+ },
+ {
+ value: 4,
+ label: "鍏椋掗",
+ },
+ ],
+ //绫诲埆鍒楄〃
+ editableTabs: [
+ {
+ title: "楂樿鍘�",
+ number: "1",
+ },
+ {
+ title: "绯栧翱鐥�",
+ number: "2",
+ },
+ {
+ title: "楠ㄦ姌",
+ number: "2",
+ },
+ {
+ title: "蹇冭剰鐥�",
+ number: "2",
+ },
+ ],
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ pageNum: 1,
+ pageSize: 10,
+ userName: undefined,
+ phonenumber: undefined,
+ status: undefined,
+ deptId: undefined,
+ IDnumber: undefined,
+ },
+ // 鍒椾俊鎭�
+ columns: [
+ { key: 0, label: `鐢ㄦ埛缂栧彿`, visible: true },
+ { key: 1, label: `鐢ㄦ埛鍚嶇О`, visible: true },
+ { key: 2, label: `鐢ㄦ埛鏄电О`, visible: true },
+ { key: 3, label: `閮ㄩ棬`, visible: true },
+ { key: 4, label: `鎵嬫満鍙风爜`, visible: true },
+ { key: 5, label: `鐘舵�乣, visible: true },
+ { key: 6, label: `鍒涘缓鏃堕棿`, visible: true },
+ ],
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ userName: [
+ { required: true, message: "鐢ㄦ埛鍚嶇О涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 2,
+ max: 20,
+ message: "鐢ㄦ埛鍚嶇О闀垮害蹇呴』浠嬩簬 2 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ nickName: [
+ { required: true, message: "鐢ㄦ埛鏄电О涓嶈兘涓虹┖", trigger: "blur" },
+ ],
+ password: [
+ { required: true, message: "鐢ㄦ埛瀵嗙爜涓嶈兘涓虹┖", trigger: "blur" },
+ {
+ min: 5,
+ max: 20,
+ message: "鐢ㄦ埛瀵嗙爜闀垮害蹇呴』浠嬩簬 5 鍜� 20 涔嬮棿",
+ trigger: "blur",
+ },
+ ],
+ email: [
+ {
+ type: "email",
+ message: "璇疯緭鍏ユ纭殑閭鍦板潃",
+ trigger: ["blur", "change"],
+ },
+ ],
+ phonenumber: [
+ {
+ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+ message: "璇疯緭鍏ユ纭殑鎵嬫満鍙风爜",
+ trigger: "blur",
+ },
+ ],
+ IDnumber: [
+ {
+ pattern:
+ /^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/,
+ message: "璇疯緭鍏ユ纭殑韬唤璇佸彿鐮�",
+ trigger: "blur",
+ },
+ ],
+ },
+ };
+ },
+ watch: {},
+ created() {
+ this.getList();
+ },
+
+ methods: {
+ /** 鏌ヨ鐢ㄦ埛鍒楄〃 */
+ getList() {
+ // this.loading = true;
+ listUser().then((response) => {
+ console.log(response);
+ // this.userList = response.data;
+ // this.total = response.total;
+ // this.loading = false;
+ console.log(this.userList);
+ });
+ // const { rows } = await listUser();
+ // console.log(rows);
+ // this.list = rows;
+ },
+ // 娣诲姞绫诲埆
+ submitsidecolumn() {
+ this.dialogFormVisible = false;
+ this.tagform = {
+ delivery: "",
+ name: "",
+ desc: "",
+ };
+ },
+ // 淇敼寮规
+ popoveramend() {
+ this.amendtag = true;
+ this.dialogFormVisible = true;
+ },
+ //鎼滅储绫诲埆
+ sidecolumnss() {},
+ // 鍒囨崲鍏变韩/鏈湴
+ tophandleClick() {},
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ userId: undefined,
+ deptId: undefined,
+ userName: undefined,
+ nickName: undefined,
+ password: undefined,
+ phonenumber: undefined,
+ email: undefined,
+ sex: undefined,
+ status: "0",
+ remark: undefined,
+ postIds: [],
+ roleIds: [],
+ };
+ this.resetForm("form");
+ },
+ // 鐢ㄦ埛鐘舵�佷慨鏀�
+ handleStatusChange(row) {
+ let text = row.status === "0" ? "鍚敤" : "鍋滅敤";
+ this.$modal
+ .confirm('纭瑕�"' + text + '""' + row.userName + '"鏍囩鍚楋紵')
+ .then(function () {
+ // return changeUserStatus(row.userId, row.status);
+ })
+ .then(() => {
+ this.$modal.msgSuccess(text + "鎴愬姛");
+ })
+ .catch(function () {
+ row.status = row.status === "0" ? "1" : "0";
+ });
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.queryParams.pageNum = 1;
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.dateRange = [];
+ this.resetForm("queryForm");
+ this.queryParams.deptId = undefined;
+ this.$refs.tree.setCurrentKey(null);
+ this.handleQuery();
+ },
+ // 澶氶�夋閫変腑鏁版嵁
+ handleSelectionChange(selection) {
+ this.ids = selection.map((item) => item.userId);
+ this.single = selection.length != 1;
+ this.multiple = !selection.length;
+ },
+ /** 淇敼鏍囩 */
+ handleUpdate(row) {
+ console.log(row, "淇敼鏍囩");
+ this.lstamendtagVisible = true;
+ this.lstamendtag = true;
+ this.tagform = {
+ delivery: row.delivery,
+ name: row.userName,
+ desc: row.bphonenumber,
+ };
+ },
+ // 鏌ョ湅闂嵎
+ ViewQuestionnaire() {
+ this.$router.push({
+ path: "/knowledge/questionnaire/examine/",
+ query: { id: "1" },
+ });
+ },
+
+ /** 鏇存柊/淇敼鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.userId != undefined) {
+ updateUser(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addUser(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ console.log(row, "鍒犻櫎寮圭獥");
+ const userIds = row.userId || this.ids;
+ const aphonenumber = row.aphonenumber;
+ this.$modal
+ .confirm(
+ aphonenumber
+ ? '鏄惁纭鍒犻櫎鏍囩鍚嶇О涓�"' + aphonenumber + '"鐨勬暟鎹」锛�'
+ : "鏄惁纭鍒犻櫎閫変腑鐨勬暟鎹」锛�"
+ )
+ .then(function () {
+ return delUser(userIds);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ },
+};
+</script>
+
+<style lang="scss" scoped>
+.Questionnairemanagement {
+ display: flex;
+}
+.sidecolumn {
+ width: 300px;
+ min-height: 100vh;
+ text-align: center;
+ // display: flex;
+ margin-top: 20px;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .sidecolumn-top {
+ display: flex;
+ justify-content: space-between;
+ .top-wj {
+ font-size: 20px;
+ }
+ .top-tj {
+ font-size: 18px;
+
+ color: rgb(0, 89, 255);
+ cursor: pointer;
+ }
+ }
+ .center-ss {
+ margin-top: 30px;
+ .input-with-select {
+ height: 40px !important;
+ }
+ }
+ .bottom-fl {
+ margin-top: 30px;
+ display: center !important;
+ }
+}
+.qrcode-dialo {
+ text-align: center;
+ // display: flex;
+ margin: 20px;
+ padding: 30px;
+ background: #edf1f7;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .qrcode-text {
+ font-size: 20px;
+ span {
+ margin-left: 20px;
+ }
+ }
+ .qrcode-img {
+ width: 300px;
+ height: 400px;
+ }
+}
+::v-deep.el-tabs--left,
+.el-tabs--right {
+ overflow: hidden;
+ align-items: center;
+ display: flex;
+}
+::v-deep.el-input--medium .el-input__inner {
+ height: 40px !important;
+}
+::v-deep.el-tabs--right .el-tabs__active-bar.is-right {
+ height: 40px;
+ width: 5px;
+ left: 0;
+}
+::v-deep.el-tabs--right .el-tabs__item.is-right {
+ display: block;
+ text-align: left;
+ font-size: 20px;
+}
+
+.leftvlue {
+ // display: flex;
+ // flex: 1;
+ width: 80%;
+ margin-top: 20px;
+ // margin: 20px;
+ padding: 30px;
+ background: #ffff;
+ border: 1px solid #dcdfe6;
+ -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
+ 0 0 6px 0 rgba(0, 0, 0, 0.04);
+ .mulsz {
+ font-size: 20px;
+ }
+}
+.button-text {
+ color: rgb(70, 204, 238);
+}
+.button-textck {
+ color: rgb(39, 167, 67);
+}
+.button-textxg {
+ color: rgb(35, 81, 233);
+}
+.button-textsc {
+ color: rgb(235, 23, 23);
+}
+</style>
diff --git a/ruoyi-ui/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/menu/index.vue
rename to src/views/system/menu/index.vue
diff --git a/ruoyi-ui/src/views/system/notice/index.vue b/src/views/system/notice/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/notice/index.vue
rename to src/views/system/notice/index.vue
diff --git a/ruoyi-ui/src/views/system/post/index.vue b/src/views/system/post/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/post/index.vue
rename to src/views/system/post/index.vue
diff --git a/ruoyi-ui/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/role/authUser.vue
rename to src/views/system/role/authUser.vue
diff --git a/ruoyi-ui/src/views/system/role/index.vue b/src/views/system/role/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/role/index.vue
rename to src/views/system/role/index.vue
diff --git a/ruoyi-ui/src/views/system/role/selectUser.vue b/src/views/system/role/selectUser.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/role/selectUser.vue
rename to src/views/system/role/selectUser.vue
diff --git a/ruoyi-ui/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/authRole.vue
rename to src/views/system/user/authRole.vue
diff --git a/ruoyi-ui/src/views/system/user/index.vue b/src/views/system/user/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/index.vue
rename to src/views/system/user/index.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/profile/index.vue
rename to src/views/system/user/profile/index.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/profile/resetPwd.vue
rename to src/views/system/user/profile/resetPwd.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/userAvatar.vue b/src/views/system/user/profile/userAvatar.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/profile/userAvatar.vue
rename to src/views/system/user/profile/userAvatar.vue
diff --git a/ruoyi-ui/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue
similarity index 100%
rename from ruoyi-ui/src/views/system/user/profile/userInfo.vue
rename to src/views/system/user/profile/userInfo.vue
diff --git a/ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue b/src/views/tool/build/CodeTypeDialog.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue
rename to src/views/tool/build/CodeTypeDialog.vue
diff --git a/ruoyi-ui/src/views/tool/build/DraggableItem.vue b/src/views/tool/build/DraggableItem.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/DraggableItem.vue
rename to src/views/tool/build/DraggableItem.vue
diff --git a/ruoyi-ui/src/views/tool/build/IconsDialog.vue b/src/views/tool/build/IconsDialog.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/IconsDialog.vue
rename to src/views/tool/build/IconsDialog.vue
diff --git a/ruoyi-ui/src/views/tool/build/RightPanel.vue b/src/views/tool/build/RightPanel.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/RightPanel.vue
rename to src/views/tool/build/RightPanel.vue
diff --git a/ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue b/src/views/tool/build/TreeNodeDialog.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue
rename to src/views/tool/build/TreeNodeDialog.vue
diff --git a/ruoyi-ui/src/views/tool/build/index.vue b/src/views/tool/build/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/build/index.vue
rename to src/views/tool/build/index.vue
diff --git a/ruoyi-ui/src/views/tool/gen/basicInfoForm.vue b/src/views/tool/gen/basicInfoForm.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/gen/basicInfoForm.vue
rename to src/views/tool/gen/basicInfoForm.vue
diff --git a/ruoyi-ui/src/views/tool/gen/editTable.vue b/src/views/tool/gen/editTable.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/gen/editTable.vue
rename to src/views/tool/gen/editTable.vue
diff --git a/ruoyi-ui/src/views/tool/gen/genInfoForm.vue b/src/views/tool/gen/genInfoForm.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/gen/genInfoForm.vue
rename to src/views/tool/gen/genInfoForm.vue
diff --git a/ruoyi-ui/src/views/tool/gen/importTable.vue b/src/views/tool/gen/importTable.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/gen/importTable.vue
rename to src/views/tool/gen/importTable.vue
diff --git a/ruoyi-ui/src/views/tool/gen/index.vue b/src/views/tool/gen/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/gen/index.vue
rename to src/views/tool/gen/index.vue
diff --git a/ruoyi-ui/src/views/tool/swagger/index.vue b/src/views/tool/swagger/index.vue
similarity index 100%
rename from ruoyi-ui/src/views/tool/swagger/index.vue
rename to src/views/tool/swagger/index.vue
diff --git a/ruoyi-ui/vue.config.js b/vue.config.js
similarity index 100%
rename from ruoyi-ui/vue.config.js
rename to vue.config.js
--
Gitblit v1.9.3