feat(survey): 问卷创建页面增加获取问卷详情和修改问卷状态功能
- 新增 getSurveysDetail 和 changeStatus 函数 - 实现问卷详情获取和状态修改功能 - 优化 saveSetting函数,支持不同数据类型转换- 添加问卷状态检查和自动修改逻辑
This commit is contained in:
@@ -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
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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')"
|
||||
></van-switch>
|
||||
</template>
|
||||
</van-cell>
|
||||
@@ -181,7 +181,7 @@
|
||||
label="投放数量最大为"
|
||||
input-align="right"
|
||||
type="number"
|
||||
@blur="saveSetting($event, 'publish_number')"
|
||||
@blur="saveSetting"
|
||||
>
|
||||
<template #right-icon> 份 </template>
|
||||
</van-field>
|
||||
@@ -277,7 +277,7 @@
|
||||
label="同一个IP地址只能作答"
|
||||
:border="false"
|
||||
input-align="right"
|
||||
@blur="saveSetting($event, 'is_number')"
|
||||
@blur="saveSetting"
|
||||
>
|
||||
<template #right-icon> 次 </template>
|
||||
</van-field>
|
||||
@@ -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'])"
|
||||
></van-switch>
|
||||
</template>
|
||||
</van-cell>
|
||||
@@ -304,7 +305,7 @@
|
||||
label="同一个浏览器只能作答"
|
||||
:border="false"
|
||||
input-align="right"
|
||||
@blur="saveSetting($event, 'browser_number')"
|
||||
@blur="saveSetting"
|
||||
>
|
||||
<template #right-icon> 次 </template>
|
||||
</van-field>
|
||||
@@ -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();
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user