feat(survey): 问卷创建页面增加获取问卷详情和修改问卷状态功能
- 新增 getSurveysDetail 和 changeStatus 函数 - 实现问卷详情获取和状态修改功能 - 优化 saveSetting函数,支持不同数据类型转换- 添加问卷状态检查和自动修改逻辑
This commit is contained in:
@@ -58,3 +58,17 @@ export function getSurveyTemplate(sn, params) {
|
|||||||
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 axios from 'axios';
|
||||||
|
import { showToast } from 'vant';
|
||||||
|
|
||||||
// import router from '@/router/index';
|
// import router from '@/router/index';
|
||||||
// import { A_COMMON_CLEAR_TOKEN } from '@/stores/constance/constance.common.js';
|
// 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.resolve(response);
|
||||||
}
|
}
|
||||||
// return Promise.reject(/* new Error(response.message || 'Error') */);
|
// 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;
|
export default service;
|
||||||
|
|||||||
@@ -167,7 +167,7 @@
|
|||||||
size="0.5rem"
|
size="0.5rem"
|
||||||
:active-value="1"
|
:active-value="1"
|
||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
@change="saveSetting('is_publish_number', ['publish_number'])"
|
@change="saveSetting('is_publish_number', ['publish_number'], 'number')"
|
||||||
></van-switch>
|
></van-switch>
|
||||||
</template>
|
</template>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
@@ -181,7 +181,7 @@
|
|||||||
label="投放数量最大为"
|
label="投放数量最大为"
|
||||||
input-align="right"
|
input-align="right"
|
||||||
type="number"
|
type="number"
|
||||||
@blur="saveSetting($event, 'publish_number')"
|
@blur="saveSetting"
|
||||||
>
|
>
|
||||||
<template #right-icon> 份 </template>
|
<template #right-icon> 份 </template>
|
||||||
</van-field>
|
</van-field>
|
||||||
@@ -277,7 +277,7 @@
|
|||||||
label="同一个IP地址只能作答"
|
label="同一个IP地址只能作答"
|
||||||
:border="false"
|
:border="false"
|
||||||
input-align="right"
|
input-align="right"
|
||||||
@blur="saveSetting($event, 'is_number')"
|
@blur="saveSetting"
|
||||||
>
|
>
|
||||||
<template #right-icon> 次 </template>
|
<template #right-icon> 次 </template>
|
||||||
</van-field>
|
</van-field>
|
||||||
@@ -290,7 +290,8 @@
|
|||||||
size="0.5rem"
|
size="0.5rem"
|
||||||
:active-value="1"
|
:active-value="1"
|
||||||
:inactive-value="0"
|
:inactive-value="0"
|
||||||
@change="saveSetting('is_browser_number', 'browser_number')"
|
type="number"
|
||||||
|
@change="saveSetting('is_browser_number', ['browser_number'])"
|
||||||
></van-switch>
|
></van-switch>
|
||||||
</template>
|
</template>
|
||||||
</van-cell>
|
</van-cell>
|
||||||
@@ -304,7 +305,7 @@
|
|||||||
label="同一个浏览器只能作答"
|
label="同一个浏览器只能作答"
|
||||||
:border="false"
|
:border="false"
|
||||||
input-align="right"
|
input-align="right"
|
||||||
@blur="saveSetting($event, 'browser_number')"
|
@blur="saveSetting"
|
||||||
>
|
>
|
||||||
<template #right-icon> 次 </template>
|
<template #right-icon> 次 </template>
|
||||||
</van-field>
|
</van-field>
|
||||||
@@ -342,7 +343,9 @@ import {
|
|||||||
snQuestions,
|
snQuestions,
|
||||||
sync,
|
sync,
|
||||||
saveSettings,
|
saveSettings,
|
||||||
saveProjectName
|
saveProjectName,
|
||||||
|
getSurveysDetail,
|
||||||
|
changeStatus
|
||||||
} from '@/api/design/index';
|
} from '@/api/design/index';
|
||||||
import Design from '@/views/Design/Index.vue';
|
import Design from '@/views/Design/Index.vue';
|
||||||
import { useCounterStore } from '@/stores/counter';
|
import { useCounterStore } from '@/stores/counter';
|
||||||
@@ -391,6 +394,7 @@ const onConfirmDate = (e) => {
|
|||||||
questionInfo.value.survey.end_time = e;
|
questionInfo.value.survey.end_time = e;
|
||||||
}
|
}
|
||||||
timePickerModel.value = false;
|
timePickerModel.value = false;
|
||||||
|
saveSetting();
|
||||||
};
|
};
|
||||||
|
|
||||||
// 获取选中的题目
|
// 获取选中的题目
|
||||||
@@ -489,25 +493,42 @@ const saveQuestionItem = (questionJson) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// 保存设置
|
// 保存设置
|
||||||
const saveSetting = (parentKey, childKeys) => {
|
const saveSetting = (parentKey, childKeys, type) => {
|
||||||
const query = {};
|
const query = {};
|
||||||
|
|
||||||
|
function changeValueType(type, value) {
|
||||||
|
if (type) {
|
||||||
|
switch (type) {
|
||||||
|
case 'number':
|
||||||
|
return Number(value);
|
||||||
|
default:
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
settingList.map((item) => {
|
settingList.map((item) => {
|
||||||
if (item === 'access_password') {
|
if (item === 'access_password') {
|
||||||
query[item] = JSON.stringify(questionInfo.value.survey[item]);
|
query[item] = JSON.stringify(questionInfo.value.survey[item]);
|
||||||
} else {
|
} else {
|
||||||
query[item] = questionInfo.value.survey[item];
|
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) => {
|
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) {
|
if (parentKey === 'is_time' && query[parentKey] === 0) {
|
||||||
delete query[key];
|
delete query[key];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
saveSettings({
|
saveSettings({
|
||||||
sn: route.query.sn,
|
sn: route.query.sn,
|
||||||
...query
|
...query
|
||||||
@@ -587,8 +608,21 @@ const previewQuestion = () => {
|
|||||||
router.push({ name: 'preview', query: { ...route.query } });
|
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 () => {
|
onMounted(async () => {
|
||||||
await getQuestionDetail();
|
await getQuestionDetail();
|
||||||
|
|
||||||
|
surveyDetailFun();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user