Files
ylst-pc/src/views/planetDesign/api/api.js
2022-10-13 00:02:03 +08:00

278 lines
6.8 KiB
JavaScript

import originRequest from "@/utils/request.js";
import { computed } from "vue";
import { Modal } from "ant-design-vue";
import { setSurveyStatus } from "../../ProjectManage/api";
import { getQuesByPages } from '../Design/js/util.js';
import store from "../../../store";
import fileDownload from 'js-file-download';
import router from "../../../router";
const sn = computed(() => router.currentRoute.value.query.sn || '');
let openModal = false;
function confirm() {
const status = store.state.common.surveyStatus;
return new Promise((resolve, reject) => {
let modalText = '';
if (status === 1) {
modalText = '问卷运行中,修改内容将暂停回收数据,修改完毕后需再次发布';
} else if (status === 2) {
modalText = '问卷已结束,编辑后将重新开启'
} else {
resolve();
return
}
if (openModal) return;
openModal = true;
Modal.confirm({
title: "确认消息",
content: modalText,
cancelText: "取消",
okText: "确认",
class: "custom-modal custom-modal-title-confirm-notice",
onOk: () => {
console.log('sn', router.currentRoute.value);
openModal = false;
setSurveyStatus({
sn: sn.value,
status: 0
}).then((data) => {
store.commit("common/M_COMMON_SET_SURVEY_STATUS", +data.data.status);
}).finally(() => {
resolve();
});
},
onCancel: async () => {
console.log('sn', router.currentRoute.value);
openModal = false;
let { data = {} } = await getQuestionList(sn.value);
if (data.questions) {
console.log('data', data);
data.survey.pages = data.survey.pages || [[]];
const combineList = getQuesByPages(data.questions, data.survey.pages);
data.questions = combineList;
store.commit('common/A_COMMON_SET_QUESTIONINFO', JSON.stringify(data));
store.commit('common/M_COMMON_SET_SURVEY_STATUS', data.survey.status);
// console.log('store.state.activeQuestion',);
if (store?.state?.common?.activeQuestion) {
const result = data.questions.find(s => s?.id === store?.state?.common?.activeQuestion?.id) || undefined;
if (result) {
store.commit('common/A_COMMON_SET_ACTIVEQUESTION', JSON.stringify(result));
}
}
}
reject("Canceled");
}
});
});
}
function request(...rest) {
return confirm().then(() => originRequest(...rest)).catch((error) => Promise.reject(error || "Canceled"));
}
/* 获取问题列表 */
export function getQuestionList(params, code) {
return originRequest({
headers: {
'survey-invite-code': code || '',
},
url: `/console/surveys/${params}/questions`,
method: "get",
});
}
/* 保存问题 */
export function saveQuestion(params) {
return request({
url: `/console/surveys/${sn.value}/questions`,
method: "post",
data: params
});
}
/* 级联题csv上传 */
export function uploadCascadeCsv(params) {
return request({
url: `/console/cascade_import`,
method: "post",
data: params.data
});
}
/* 问卷标题,介绍语,结束语配置 */
export function updateSurveyConfig(params) {
return request({
url: `/console/surveys/${sn.value}/details`,
method: "post",
data: params.data
});
}
/* 作答设置 - 查询 */
export function getAnswerSetting(sn) {
return originRequest({
url: `/console/surveys/${sn}/answer_setting`,
method: "get"
});
}
/* 作答设置 - 设置*/
export function setAnswerSetting(sn, params) {
return request({
url: `/console/surveys/${sn}/answer_setting`,
method: "put",
data: params
});
}
/* 级联提下载csv*/
export function downLoadCsv(params) {
return request({
url: `/console/template/${params}`,
method: "get",
responseType: 'arraybuffer'
});
}
/* 文件类型*/
export function fileType(params) {
return request({
url: `/console/file_type`,
method: "get",
});
}
/* Maxdiff生成设计*/
export function designs(params) {
return request({
url: `/console/surveys/${params.sn}/questions/${params.question_index}/designs`,
method: "post",
data: params
});
}
/* cbc生成设计*/
export function cbcDesigns(params) {
return request({
url: `/console/surveys/${params.sn}/questions/${params.question_index}/cbc_designs`,
method: "post",
data: params
});
}
/* Maxdiff导入设计*/
export function mxd_import(params) {
return request({
url: `/console/surveys/${params.get("sn")}/questions/${params.get("question_index")}/mxd_import`,
method: "post",
data: params
});
}
/* 3d货架导入设计*/
export function cbc_shelves_import(params) {
return request({
url: `/console/surveys/${params.get("sn")}/questions/${params.get("question_index")}/cbc_shelves_import`,
method: "post",
data: params
});
}
/* Maxdiff导出设计*/
const mxd_export = async (params,name) => {
const url = params.url;
// await request({
// url: `/console/surveys/${params.sn}/questions/${params.question_index}/mxd_export`,
// method: "post",
// data: params
// });
const data = await request({
url,
method: "get",
headers: {
//'token': '...', // 根据需求添加
'Content-type': 'application/x-www-form-urlencoded'
},
withCredentials: false,
responseType: 'arraybuffer'
})
fileDownload(data, name, 'application/vnd.ms-excel');
}
/* bpto导入设计*/
export function bpto_import(params) {
return request({
url: `/console/bpto_import`,
method: "post",
data: params
});
}
/* bpto导入设计*/
const template = async (params, name) => {
const data = await request({
url: `/console/template/${params.type}`,
fileName: name,
headers: {
//'token': '...', // 根据需求添加
'Content-type': 'application/x-www-form-urlencoded'
},
responseType: 'arraybuffer'
});
fileDownload(data, name, 'application/vnd.ms-excel');
}
export { template, mxd_export };
/* bpto导入设计*/
export function getProcess(params) {
return request({
url: `/console/surveys/${params.sn}/process`,
method: "get",
params
});
}
/* bpto导入设计*/
export function postProcess(params) {
return request({
url: `/console/surveys/${params.sn}//process`,
method: "post",
data: params
});
}
/* 3d货架资源列表*/
export function getImgList() {
return request({
url: `/console/shelves_resources`,
method: "get",
});
}
/* 删除*/
export function deleteDesigns(params) {
return request({
url: `/console/surveys/${params.sn}/questions/${params.question_index}/designs`,
method: "DELETE",
data: params
});
}
/* 流程控制问题列表*/
export function processControlQuesList(sn) {
return request({
url: `/console/surveys/${sn}/process_questions`,
});
}