From 4d34c293b87c2030453e1c43b0835d41cc611c60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Tue, 11 Mar 2025 20:11:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(survey):=20=E4=BC=98=E5=8C=96=E9=97=AE?= =?UTF-8?q?=E5=8D=B7=E5=88=9B=E5=BB=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增保存设置功能 - 优化题目列表渲染逻辑 - 添加断点续答、IP限制等设置项 -修复部分组件样式问题 --- package-lock.json | 6 + package.json | 1 + src/api/design/index.js | 18 +- src/components/YLPicker.vue | 8 +- src/stores/modules/common.ts | 10 +- src/views/Design/Index.vue | 4 +- .../Design/components/Questions/Choice.vue | 6 +- src/views/Survey/views/Create/Index.vue | 194 +++++++++++++----- 8 files changed, 178 insertions(+), 69 deletions(-) diff --git a/package-lock.json b/package-lock.json index 24957ab..0f39627 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "axios": "^1.8.2", "dotenv": "^16.4.7", "element-plus": "^2.7.8", + "js-base64": "^3.7.7", "lodash": "^4.17.21", "pinia": "^2.1.7", "sortablejs": "^1.15.6", @@ -7676,6 +7677,11 @@ "node": ">= 0.4" } }, + "node_modules/js-base64": { + "version": "3.7.7", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==" + }, "node_modules/js-tokens": { "version": "4.0.0", "dev": true, diff --git a/package.json b/package.json index a2c9510..acb3df2 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "axios": "^1.8.2", "dotenv": "^16.4.7", "element-plus": "^2.7.8", + "js-base64": "^3.7.7", "lodash": "^4.17.21", "pinia": "^2.1.7", "sortablejs": "^1.15.6", diff --git a/src/api/design/index.js b/src/api/design/index.js index a01a619..11acd83 100644 --- a/src/api/design/index.js +++ b/src/api/design/index.js @@ -16,8 +16,7 @@ export function saveQuestion(params) { export function sync(params) { return request({ url: `console/surveys/${params.sn}/sync`, - method: 'post', - data: params + method: 'get' }); } export function questionDetails(params) { @@ -29,3 +28,18 @@ export function questionDetails(params) { data: params }); } + +// 获取setting +export function getSetting(params) { + return request({ + url: `/console/surveys/${params.sn}/answer_setting`, + method: 'get' + }); +} +export function saveSettings(params) { + return request({ + url: `/console/surveys/${params.sn}/answer_setting`, + method: 'put', + data: params + }); +} diff --git a/src/components/YLPicker.vue b/src/components/YLPicker.vue index 1e98e52..a172ec1 100644 --- a/src/components/YLPicker.vue +++ b/src/components/YLPicker.vue @@ -167,8 +167,8 @@ const getMaxDateLimit = computed(() => { props.format ); const tempStr = '0000-12-31 23:59:59'; - const result - = props.maxDate.length !== 0 && thisMax.length > props.maxDate.length + const result = + props.maxDate.length !== 0 && thisMax.length > props.maxDate.length ? thisMax.slice(0, props.maxDate.length) + tempStr.slice(props.maxDate.length) : thisMax; return result.slice(0, props.format.length); @@ -191,8 +191,8 @@ function onChange({ selectedValues, columnIndex }) { renderMinuteColumns, renderSecondColumns ]; - updateColumns[columnIndex] - && updateColumns[columnIndex](changeValue, getMinDateLimit.value, getMaxDateLimit.value, false); + updateColumns[columnIndex] && + updateColumns[columnIndex](changeValue, getMinDateLimit.value, getMaxDateLimit.value, false); } // 渲染全部列 diff --git a/src/stores/modules/common.ts b/src/stores/modules/common.ts index bc77f9d..4f214ff 100644 --- a/src/stores/modules/common.ts +++ b/src/stores/modules/common.ts @@ -70,9 +70,13 @@ export const useCommonStore = defineStore('common', { } }, setQuestionInfo(questionInfo) { - console.log(questionInfo, 9998); - console.log(this); - this.questionsInfo = questionInfo; + // 保持原有响应式引用,仅更新变化的部分 + this.questionsInfo = Object.assign({}, this.questionsInfo, questionInfo); + + // 对嵌套结构特殊处理(如数组需要保持引用) + if (questionInfo.questions) { + this.questionsInfo.questions = [...questionInfo.questions]; + } } }, getters: { diff --git a/src/views/Design/Index.vue b/src/views/Design/Index.vue index 4e30306..d0e7121 100644 --- a/src/views/Design/Index.vue +++ b/src/views/Design/Index.vue @@ -121,7 +121,7 @@