diff --git a/src/api/survey/index.js b/src/api/survey/index.js
index 7ac20a6..35b7a18 100644
--- a/src/api/survey/index.js
+++ b/src/api/survey/index.js
@@ -43,3 +43,14 @@ export function getQuestionList(params, code) {
method: 'get'
});
}
+
+/*取消投放*/
+export function modify(params, code) {
+ return request({
+ headers: {
+ 'survey-invite-code': code || ''
+ },
+ url: `/console/question/publish/modify`,
+ method: 'POST'
+ });
+}
diff --git a/src/components/contenteditable.vue b/src/components/contenteditable.vue
index 4c83590..228d599 100644
--- a/src/components/contenteditable.vue
+++ b/src/components/contenteditable.vue
@@ -75,7 +75,7 @@ const functions = {
document.execCommand('italic', false, null);
},
- uploadImage: async () => {
+ uploadImage: async() => {
// 保存当前光标位置
savedRange.value = saveSelection();
@@ -84,7 +84,7 @@ const functions = {
fileInput.click();
- fileInput.onchange = async (e) => {
+ fileInput.onchange = async(e) => {
const [file] = e.target.files;
if (!file) return;
if (file.size > 2 * 1024 * 1024) {
@@ -146,10 +146,10 @@ const isEmptyContent = (html) => {
const trimmedHtml = html.trim();
// 检查是否为空字符串、仅包含
或仅包含
return (
- trimmedHtml === '' ||
- trimmedHtml === '
' ||
- trimmedHtml === '
' ||
- trimmedHtml === ''
+ trimmedHtml === ''
+ || trimmedHtml === '
'
+ || trimmedHtml === '
'
+ || trimmedHtml === ''
);
};
@@ -157,7 +157,7 @@ const onChange = (target) => {
console.log(target.innerHTML.trim(), 123);
if (isEmptyContent(target.innerHTML)) {
editor.value.classList.add('editor-placeholder');
- //删除br
+ // 删除br
editor.value.innerHTML = editor.value.innerHTML.replace(/
/g, '');
} else {
editor.value.classList.remove('editor-placeholder');
diff --git a/src/utils/QuestionJsons/Rate.js b/src/utils/QuestionJsons/Rate.js
index 01988ac..5a74f80 100644
--- a/src/utils/QuestionJsons/Rate.js
+++ b/src/utils/QuestionJsons/Rate.js
@@ -39,7 +39,7 @@ export default {
prompt_right: '',
score_interval: 1,
score_type: 0,
- score_way: 0,
+ score_way: 1, //打分类型
prompt_score: 2
},
associate: [],
diff --git a/src/views/Design/components/Questions/MatrixCheckbox.vue b/src/views/Design/components/Questions/MatrixCheckbox.vue
index 48ad628..24c1993 100644
--- a/src/views/Design/components/Questions/MatrixCheckbox.vue
+++ b/src/views/Design/components/Questions/MatrixCheckbox.vue
@@ -105,7 +105,7 @@ function handleMatrixCheckboxChange(row: number, col: number) {
// emits('update:matrixAnswer', props.matrixAnswer);
// emits('update:rowRecord', props.rowRecord);
// };
-const emitValue = (/*val: unknown*/) => {
+const emitValue = (/* val: unknown */) => {
emit('update:element', element.value);
};
diff --git a/src/views/Survey/Index.vue b/src/views/Survey/Index.vue
index e86c5c0..1fcd424 100644
--- a/src/views/Survey/Index.vue
+++ b/src/views/Survey/Index.vue
@@ -74,7 +74,9 @@
预览
- 开启投放
+ {{
+ item.status === 1 ? '取消投放' : '开启投放'
+ }}
import { ref, onMounted } from 'vue';
import { getSurveysPage, copySurveys, deleteSurveys, saveTemplates } from '@/api/home/index.js';
+import { modify } from '@/api/survey/index.js';
import { showDialog, showConfirmDialog, showFailToast, showSuccessToast, showToast } from 'vant';
import { useRouter } from 'vue-router';
const router = useRouter();
@@ -134,7 +137,7 @@ const onLoad = () => {
fetchSurveys();
}, 500);
};
-const fetchSurveys = async() => {
+const fetchSurveys = async () => {
const params = {
page: form.value.page,
per_page: form.value.pageSize,
@@ -172,7 +175,7 @@ const deleteItem = (item) => {
showCancelButton: true,
confirmButtonColor: '#03B03C'
})
- .then(async() => {
+ .then(async () => {
const res = await deleteSurveys(item.sn);
if (res.data.message) {
showToast(res.data.message);
@@ -196,7 +199,7 @@ const copyItem = (item) => {
showCancelButton: true,
confirmButtonColor: '#03B03C'
})
- .then(async() => {
+ .then(async () => {
const res = await copySurveys(item.sn);
if (res.data.code === 200 || res.data.code === 201) {
showSuccessToast('复制成功');
@@ -221,12 +224,21 @@ const toPreview = (item) => {
});
};
const toPublish = (item) => {
- router.push({
- path: '/publish',
- query: {
- sn: item.sn
- }
- });
+ if (item.status === 1) {
+ console.log(item);
+ modify({ surveyPublishId: '' }).then((res) => {
+ if (res.data) {
+ // 吧 数据改掉
+ }
+ });
+ } else {
+ router.push({
+ path: '/publish',
+ query: {
+ sn: item.sn
+ }
+ });
+ }
};
const editItem = (item) => {
router.push({
@@ -237,7 +249,7 @@ const editItem = (item) => {
});
};
// 保存为模板
-const saveTemplate = async(item) => {
+const saveTemplate = async (item) => {
const data = JSON.parse(JSON.stringify(item));
const res = await saveTemplates(item.sn, data);
if (res.data.code === 200 || res.data.code === 201) {
diff --git a/src/views/Survey/views/Create/Index.vue b/src/views/Survey/views/Create/Index.vue
index bab2748..e63b2be 100644
--- a/src/views/Survey/views/Create/Index.vue
+++ b/src/views/Survey/views/Create/Index.vue
@@ -7,6 +7,7 @@
v-model="questionInfo.survey.title"
className="content-title"
:active="true"
+ placeholder="请输入问卷标题"
@blur="saveTitle"
>
@@ -14,6 +15,7 @@
v-model="questionInfo.survey.introduction"
className="introduction"
:active="true"
+ placeholder="请输入问卷标注"
@blur="saveTitle"
>
@@ -424,14 +426,14 @@ const questionEvent = (item) => {
options:
item.json.options.length > 0
? item.json.options.map((item) => {
- return item.map((it) => {
- return {
- ...it,
- // 主键生成
- id: uuidv4()
- };
- });
- })
+ return item.map((it) => {
+ return {
+ ...it,
+ // 主键生成
+ id: uuidv4()
+ };
+ });
+ })
: []
})
);
@@ -570,7 +572,7 @@ const previewQuestion = () => {
router.push({ name: 'preview', query: { ...route.query } });
};
-onMounted(async() => {
+onMounted(async () => {
await getQuestionDetail();
});
diff --git a/src/views/Survey/views/Preview/Index.vue b/src/views/Survey/views/Preview/Index.vue
index 2901606..65cf7c5 100644
--- a/src/views/Survey/views/Preview/Index.vue
+++ b/src/views/Survey/views/Preview/Index.vue
@@ -559,7 +559,7 @@ const {
// 第一次进入页面清空答案
-//初始化页面到第一页
+// 初始化页面到第一页
questionsData.value?.questions && clearAnswer(questionsData.value.questions);
page.value = 1;
console.log(questionsData.value);
@@ -683,9 +683,9 @@ async function answer(callback, callbackBeforePage) {
question.error = translatedText.value.ThisIsARequiredQuestion;
}
} else if (
- answer &&
- questionType === 1 &&
- Object.keys(answer).findIndex((value) => !answer[value]) !== -1
+ answer
+ && questionType === 1
+ && Object.keys(answer).findIndex((value) => !answer[value]) !== -1
) {
// 单选题
isError = true;
@@ -860,52 +860,52 @@ async function answer(callback, callbackBeforePage) {
const { value } = answer;
const newValue = value.replace(/\n|\r|\r\n/g, '');
switch (config.text_type) {
- // 字母
- case 3:
- // eslint-disable-next-line
+ // 字母
+ case 3:
+ // eslint-disable-next-line
const reg =
/^[a-zA-Z·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]]+$/;
- isError =
- config.include_mark === 1
- ? !reg.test(newValue) || !newValue.length
- : !/^[a-zA-Z]+$/.test(newValue) || !newValue.length;
- question.error = isError ? translatedText.value.PleaseEnterEnglishLetters : '';
- break;
+ isError
+ = config.include_mark === 1
+ ? !reg.test(newValue) || !newValue.length
+ : !/^[a-zA-Z]+$/.test(newValue) || !newValue.length;
+ question.error = isError ? translatedText.value.PleaseEnterEnglishLetters : '';
+ break;
// 中文
- case 4:
- isError =
- config.include_mark === 1
- ? !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|[a-zA-Z·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]])+$/.test(
- newValue
- ) || !newValue.length
- : !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/.test(
- newValue
- ) || !newValue.length;
- question.error = isError ? translatedText.value.PleaseEnterChineseWords : '';
- break;
+ case 4:
+ isError
+ = config.include_mark === 1
+ ? !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|[a-zA-Z·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]])+$/.test(
+ newValue
+ ) || !newValue.length
+ : !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/.test(
+ newValue
+ ) || !newValue.length;
+ question.error = isError ? translatedText.value.PleaseEnterChineseWords : '';
+ break;
// 邮箱
- case 5:
- isError =
- !/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
- value
- );
- question.error = isError ? translatedText.value.PleaseEnterACorrectEmail : '';
- break;
+ case 5:
+ isError
+ = !/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
+ value
+ );
+ question.error = isError ? translatedText.value.PleaseEnterACorrectEmail : '';
+ break;
// 手机号
- case 6:
- isError = !/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value);
- question.error = isError ? translatedText.value.PleaseEnterACorrectPhone : '';
- break;
+ case 6:
+ isError = !/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value);
+ question.error = isError ? translatedText.value.PleaseEnterACorrectPhone : '';
+ break;
// 身份证号
- case 7:
- isError =
- !/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/.test(
- value
- );
- question.error = isError ? translatedText.value.PleaseEnterACorrectID : '';
- break;
- default:
- break;
+ case 7:
+ isError
+ = !/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/.test(
+ value
+ );
+ question.error = isError ? translatedText.value.PleaseEnterACorrectID : '';
+ break;
+ default:
+ break;
}
if (!isError && value.length < config.min && ![1, 2].includes(config.text_type)) {
isError = true;
@@ -917,54 +917,54 @@ async function answer(callback, callbackBeforePage) {
Object.keys(answer).forEach((key) => {
const value = answer[key];
switch (config.text_type) {
- // 字母
- case 3:
- if (
- !/^[a-zA-Z·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]]+$/.test(
- value
- )
- ) {
- question.error = translatedText.value.PleaseEnterEnglishLetters;
- }
- break;
+ // 字母
+ case 3:
+ if (
+ !/^[a-zA-Z·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]]+$/.test(
+ value
+ )
+ ) {
+ question.error = translatedText.value.PleaseEnterEnglishLetters;
+ }
+ break;
// 中文
- case 4:
- if (
- !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|[·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]])+$/.test(
- value
- )
- ) {
- question.error = translatedText.value.PleaseEnterChineseWords;
- }
- break;
+ case 4:
+ if (
+ !/^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|[·~!@#¥%…&*()—\-+={}|《》?:“”【】、;‘’,。`!$^()_<>?:",./;'\\[\]])+$/.test(
+ value
+ )
+ ) {
+ question.error = translatedText.value.PleaseEnterChineseWords;
+ }
+ break;
// 邮箱
- case 5:
- if (
- !/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
- value
- )
- ) {
- question.error = translatedText.value.PleaseEnterACorrectEmail;
- }
- break;
+ case 5:
+ if (
+ !/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
+ value
+ )
+ ) {
+ question.error = translatedText.value.PleaseEnterACorrectEmail;
+ }
+ break;
// 手机号
- case 6:
- if (!/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value)) {
- question.error = translatedText.value.PleaseEnterACorrectPhone;
- }
- break;
+ case 6:
+ if (!/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(value)) {
+ question.error = translatedText.value.PleaseEnterACorrectPhone;
+ }
+ break;
// 身份证号
- case 7:
- if (
- !/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/.test(
- value
- )
- ) {
- question.error = translatedText.value.PleaseEnterACorrectID;
- }
- break;
- default:
- break;
+ case 7:
+ if (
+ !/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/.test(
+ value
+ )
+ ) {
+ question.error = translatedText.value.PleaseEnterACorrectID;
+ }
+ break;
+ default:
+ break;
}
if (!question.error && value.length < config.min && ![1, 2].includes(config.text_type)) {
question.error = translatedText.value.PleaseEnterMoreThanOneCharacters(config.min);
@@ -1041,14 +1041,14 @@ async function answer(callback, callbackBeforePage) {
currentQuestions.forEach((question, index) => {
if (index >= warnStart && index < warnEnd) {
if (repeat.repeat_type) {
- question.warning =
- translatedText.value.TheAnswerIsRepeatedMoreThanOneTimesPleaseRevise(
+ question.warning
+ = translatedText.value.TheAnswerIsRepeatedMoreThanOneTimesPleaseRevise(
repeat.allow_repeat_num,
repeat.repeat_type
);
} else {
- question.error =
- translatedText.value.TheAnswerIsRepeatedMoreThanOneTimesPleaseRevise(
+ question.error
+ = translatedText.value.TheAnswerIsRepeatedMoreThanOneTimesPleaseRevise(
repeat.allow_repeat_num,
repeat.repeat_type
);
@@ -1395,8 +1395,8 @@ function updateAnswer(auto) {
const evt1 = {};
if ([1].includes(question.question_type)) {
- evt1.value =
- Object.keys(question.answer)
+ evt1.value
+ = Object.keys(question.answer)
.map((key) => (question.answer[key] ? key : undefined))
.filter((i) => !!i)?.[0] || undefined;
evt1.options = question.list.flatMap((i) => i.options);
diff --git a/src/views/Survey/views/Publish/Index.vue b/src/views/Survey/views/Publish/Index.vue
index e6b1b53..c1bea21 100644
--- a/src/views/Survey/views/Publish/Index.vue
+++ b/src/views/Survey/views/Publish/Index.vue
@@ -196,7 +196,7 @@ watch(status, (val) => {
getCode();
}
});
-onMounted(async () => {
+onMounted(async() => {
fetchInfo();
});
@@ -211,10 +211,10 @@ onMounted(async () => {
.content {
margin: 10px;
+ padding-bottom: 25px;
border-radius: 8px;
background: #fff;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.1);
- padding-bottom: 25px;
.qrcode {
display: flex;
@@ -234,8 +234,8 @@ onMounted(async () => {
}
.desc {
- font-size: 13px;
margin-top: 8px;
+ font-size: 13px;
line-height: 16px;
}
}