From 6ea0c2443653cc9989bb582b0df4826ba236a8fc Mon Sep 17 00:00:00 2001
From: miaojiale <1123971748@qq.com>
Date: Fri, 15 Dec 2023 11:28:42 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=97=AE=E5=8D=B7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/axios/api/index.js | 20 +
src/axios/request/http.js | 38 +-
src/components/FormComponents/index.vue | 702 ++++++++++++++++++++++++
src/pages/questionnaire.vue | 131 +++++
src/router/index.js | 8 +-
5 files changed, 888 insertions(+), 11 deletions(-)
create mode 100644 src/components/FormComponents/index.vue
create mode 100644 src/pages/questionnaire.vue
diff --git a/src/axios/api/index.js b/src/axios/api/index.js
index 0e10071..03841f9 100644
--- a/src/axios/api/index.js
+++ b/src/axios/api/index.js
@@ -22,5 +22,25 @@ export const API = {
},
putFeedback: (data) => {
return post(`/disease-data/follow-up/feedback`, data)
+ },
+ ////////////
+ // 获取问卷调查
+ getQuestionnaireList: (data) => {
+ return get(`/disease-data/questionnaire/list`, data)
+ },
+
+ // 获取问卷记录
+ getQuestionnaireRecords: (data) => {
+ return get(`/disease-data/questionnaire/records`, data)
+ },
+
+ // 获取用户信息
+ getPatientInfo: (data) => {
+ return get(`/disease-data/patient/info`, data)
+ },
+
+ // 提交问卷
+ setQuestionnaire: (data) => {
+ return post(`/disease-data/questionnaire`, data)
}
}
diff --git a/src/axios/request/http.js b/src/axios/request/http.js
index 5db762f..5847311 100644
--- a/src/axios/request/http.js
+++ b/src/axios/request/http.js
@@ -5,7 +5,7 @@ import qs from "qs"
import { MessageBox, Toast } from "mint-ui"
//接口报错弹出
let CommonAlert = function (msg) {
- if (msg.length > 0) {
+ if (msg && msg.length > 0) {
return Toast({
message: msg,
duration: 1500
@@ -49,7 +49,7 @@ const toLogin = () => {
axios.interceptors.response.use(
(response) => {
if (response.data.code === 0 || response.data.code === -1) {
- CommonAlert(response.data.message)
+ CommonAlert(response.data.message || response.data.msg)
} else if (response.data.code === -100) {
localStorage.removeItem("vd_token")
// window.location.hash = "/login";
@@ -128,14 +128,24 @@ axios.interceptors.response.use(
*/
export function get(url, params = {}) {
return new Promise((resolve, reject) => {
- axios.get(url, { params }).then(
- (response) => {
- resolve(response.data)
- },
- (err) => {
- reject(err)
- }
- )
+ axios
+ .get(url, { params })
+ .then(
+ (response) => {
+ resolve(response.data)
+ },
+ (err) => {
+ reject(err)
+ }
+ )
+ .catch(
+ (response) => {
+ resolve(response.data)
+ },
+ (err) => {
+ reject(err)
+ }
+ )
})
}
@@ -160,6 +170,14 @@ export function post(url, data = {}, params = {}) {
reject(err)
}
)
+ .catch(
+ (response) => {
+ resolve(response.data)
+ },
+ (err) => {
+ reject(err)
+ }
+ )
})
}
export function postForm(url, data = {}) {
diff --git a/src/components/FormComponents/index.vue b/src/components/FormComponents/index.vue
new file mode 100644
index 0000000..9a1fcc0
--- /dev/null
+++ b/src/components/FormComponents/index.vue
@@ -0,0 +1,702 @@
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.suffix }}
+
+
+
+
+
+ {{ form[item.prop] }}
+ {{ item.tag }}
+
+
+
+
+
+
+
+
+ {
+ if (!disabled) {
+ item.showPicker = true
+ }
+ }
+ "
+ :rules="item.rules"
+ :style="{
+ height: cellHeight,
+ 'border-radius': item.cellBorder,
+ margin: item.cellMargin
+ }"
+ @change="pickerCellChange(item, form[item.prop])"
+ >
+
+
+
+
+
+
+
+
+ {{ item.tag.text }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ rItem.option }}
+
+ {{ rItem.tips }}
+
+
+
+
+
+
+
+
+ {{ rItem.label }}
+
+ {{ rItem.tips }}
+
+
+
+
+ {{ child.label }}
+
+
+
+
+ {{ oItem.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ cItem.label }}
+ {{ cItem.tips }}
+
+
+
+
+
+
+
+
+ {{ item.buttonText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/questionnaire.vue b/src/pages/questionnaire.vue
new file mode 100644
index 0000000..ec0e5d2
--- /dev/null
+++ b/src/pages/questionnaire.vue
@@ -0,0 +1,131 @@
+
+
+
+ 调查表
+
+
+
+
+
+
+
+
diff --git a/src/router/index.js b/src/router/index.js
index 5ae763d..c743ade 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -5,7 +5,7 @@ Vue.use(Router);
const page = [
{
path: "/",
- redirect: "/feedback" //调试
+ // redirect: "/feedback" //调试
},
{
path: "/login",
@@ -18,6 +18,12 @@ const page = [
meta: { index: 2, keepAlive: false },
name: "feedback",
component: () => import("@/pages/feedback")
+ },
+ {
+ path: `/questionnaire/:dataId`,
+ meta: { index: 2, keepAlive: false },
+ name: "questionnaire",
+ component: () => import("@/pages/questionnaire")
}
];
--
2.22.0