diff --git a/src/api/design/index.js b/src/api/design/index.js
index c87e8d5..a113c6c 100644
--- a/src/api/design/index.js
+++ b/src/api/design/index.js
@@ -58,3 +58,17 @@ export function getSurveyTemplate(sn, params) {
params
});
}
+export function getSurveysDetail(sn, params) {
+ return request({
+ url: `/console/surveys/${sn}`,
+ method: 'get',
+ params
+ });
+}
+export function changeStatus(params) {
+ return request({
+ url: `/console/surveys/${params.sn}/status`,
+ method: 'PATCH',
+ data: params
+ });
+}
diff --git a/src/utils/request.js b/src/utils/request.js
index 183d93c..0d3daef 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -1,4 +1,5 @@
import axios from 'axios';
+import { showToast } from 'vant';
// import router from '@/router/index';
// import { A_COMMON_CLEAR_TOKEN } from '@/stores/constance/constance.common.js';
@@ -55,39 +56,45 @@ service.interceptors.response.use(
return Promise.resolve(response);
}
// return Promise.reject(/* new Error(response.message || 'Error') */);
+ },
+ (error) => {
+ // for debug
+ // if (error.response.status === 401) {
+ // const query = router.currentRoute.value.query;
+ // //关闭已弹出的所有弹框,防止弹框重叠
+ // // Modal.destroyAll();
+ // store.dispatch(A_COMMON_CLEAR_TOKEN);
+ // window.parent.postMessage(
+ // {
+ // code: '301',
+ // params: {}
+ // },
+ // '*'
+ // );
+ // store.commit('common/M_COMMON_SET_TOKEN_UNAUTHORIZED', false);
+ // } else if (error.response.status === 403) {
+ // router.push({
+ // path: '/error/403'
+ // });
+ // } else if (error.response.status === 404) {
+ // router.push({
+ // path: '/error/404'
+ // });
+ // } else if (error.response.status === 500) {
+ // router.push({
+ // path: '/error/500'
+ // });
+ // } else {
+ // // message.error(error.response.data?.message || '服务器错误');
+ // }
+ if (error.response.data?.message) {
+ showToast({
+ message: error.response.data?.message
+ });
+ }
+
+ return Promise.reject(error.response);
}
- // (error) => {
- // // for debug
- // if (error.response.status === 401) {
- // const query = router.currentRoute.value.query;
- // //关闭已弹出的所有弹框,防止弹框重叠
- // // Modal.destroyAll();
- // store.dispatch(A_COMMON_CLEAR_TOKEN);
- // window.parent.postMessage(
- // {
- // code: '301',
- // params: {}
- // },
- // '*'
- // );
- // store.commit('common/M_COMMON_SET_TOKEN_UNAUTHORIZED', false);
- // } else if (error.response.status === 403) {
- // router.push({
- // path: '/error/403'
- // });
- // } else if (error.response.status === 404) {
- // router.push({
- // path: '/error/404'
- // });
- // } else if (error.response.status === 500) {
- // router.push({
- // path: '/error/500'
- // });
- // } else {
- // // message.error(error.response.data?.message || '服务器错误');
- // }
- // return Promise.reject(error.response);
- // }
);
export default service;
diff --git a/src/views/Survey/views/Create/Index.vue b/src/views/Survey/views/Create/Index.vue
index 6954c49..6df78df 100644
--- a/src/views/Survey/views/Create/Index.vue
+++ b/src/views/Survey/views/Create/Index.vue
@@ -167,7 +167,7 @@
size="0.5rem"
:active-value="1"
:inactive-value="0"
- @change="saveSetting('is_publish_number', ['publish_number'])"
+ @change="saveSetting('is_publish_number', ['publish_number'], 'number')"
>
@@ -181,7 +181,7 @@
label="投放数量最大为"
input-align="right"
type="number"
- @blur="saveSetting($event, 'publish_number')"
+ @blur="saveSetting"
>
份
@@ -277,7 +277,7 @@
label="同一个IP地址只能作答"
:border="false"
input-align="right"
- @blur="saveSetting($event, 'is_number')"
+ @blur="saveSetting"
>
次
@@ -290,7 +290,8 @@
size="0.5rem"
:active-value="1"
:inactive-value="0"
- @change="saveSetting('is_browser_number', 'browser_number')"
+ type="number"
+ @change="saveSetting('is_browser_number', ['browser_number'])"
>
@@ -304,7 +305,7 @@
label="同一个浏览器只能作答"
:border="false"
input-align="right"
- @blur="saveSetting($event, 'browser_number')"
+ @blur="saveSetting"
>
次
@@ -342,7 +343,9 @@ import {
snQuestions,
sync,
saveSettings,
- saveProjectName
+ saveProjectName,
+ getSurveysDetail,
+ changeStatus
} from '@/api/design/index';
import Design from '@/views/Design/Index.vue';
import { useCounterStore } from '@/stores/counter';
@@ -391,6 +394,7 @@ const onConfirmDate = (e) => {
questionInfo.value.survey.end_time = e;
}
timePickerModel.value = false;
+ saveSetting();
};
// 获取选中的题目
@@ -489,25 +493,42 @@ const saveQuestionItem = (questionJson) => {
};
// 保存设置
-const saveSetting = (parentKey, childKeys) => {
+const saveSetting = (parentKey, childKeys, type) => {
const query = {};
+
+ function changeValueType(type, value) {
+ if (type) {
+ switch (type) {
+ case 'number':
+ return Number(value);
+ default:
+ return value;
+ }
+ } else {
+ return value;
+ }
+ }
+
settingList.map((item) => {
if (item === 'access_password') {
query[item] = JSON.stringify(questionInfo.value.survey[item]);
} else {
query[item] = questionInfo.value.survey[item];
+ if (item === 'is_time' && query[item] === 0) {
+ delete query['start_time'];
+ delete query['end_time'];
+ }
}
});
// 增删 修改 数据结构
- if (parentKey) {
+ if (childKeys) {
childKeys.map((key) => {
- query[key] = query[parentKey] === 1 ? query[key] : 0;
+ query[key] = query[parentKey] === 1 ? changeValueType(type, query[key]) : 0;
if (parentKey === 'is_time' && query[parentKey] === 0) {
delete query[key];
}
});
}
-
saveSettings({
sn: route.query.sn,
...query
@@ -587,8 +608,21 @@ const previewQuestion = () => {
router.push({ name: 'preview', query: { ...route.query } });
};
+const surveyDetailFun = (back) => {
+ getSurveysDetail(route.query.sn).then((res) => {
+ if (res.data) {
+ // 投放中
+ if (res.data.data.status === 1) {
+ changeStatus({ sn: route.query.sn, status: 0 });
+ }
+ }
+ });
+};
+
onMounted(async () => {
await getQuestionDetail();
+
+ surveyDetailFun();
});