|
@@ -683,59 +683,61 @@ export default {
|
|
|
workData: {
|
|
workData: {
|
|
|
handler(newVal, oldVal) {
|
|
handler(newVal, oldVal) {
|
|
|
const _data = JSON.parse(JSON.stringify((newVal && newVal.json) || {}));
|
|
const _data = JSON.parse(JSON.stringify((newVal && newVal.json) || {}));
|
|
|
- // 构造默认 work 值(含所有配置字段)
|
|
|
|
|
- const base = {
|
|
|
|
|
- stage: 'member',
|
|
|
|
|
- isSetting: true,
|
|
|
|
|
- members: [],
|
|
|
|
|
- scenario: '',
|
|
|
|
|
- timerEnabled: true,
|
|
|
|
|
- timerDuration: 60,
|
|
|
|
|
- timerCustomValue: 60,
|
|
|
|
|
- hats: ['white', 'red', 'black', 'yellow', 'green', 'blue'],
|
|
|
|
|
- hatContent: {},
|
|
|
|
|
- enableMemberSelect: true,
|
|
|
|
|
- enableContentConfigurable: true,
|
|
|
|
|
- autoExpandHowTo: false,
|
|
|
|
|
- customScenario: '',
|
|
|
|
|
- customTimerEnabled: true,
|
|
|
|
|
- customTimerDuration: 60,
|
|
|
|
|
- customHats: null,
|
|
|
|
|
- howToSteps: null,
|
|
|
|
|
- };
|
|
|
|
|
- const merged = Object.assign(base, _data || {});
|
|
|
|
|
-
|
|
|
|
|
- // 仅当没有任何业务数据时(首次进入)才根据配置决定初始 stage
|
|
|
|
|
- const isFresh = !(merged.members && merged.members.length)
|
|
|
|
|
- && !(merged.scenario && merged.scenario.trim())
|
|
|
|
|
- && !(merged.hatContent && Object.keys(merged.hatContent).some(k => merged.hatContent[k]));
|
|
|
|
|
-
|
|
|
|
|
- if (isFresh) {
|
|
|
|
|
- // 应用后台预设值(当 enableContentConfigurable=false 时)
|
|
|
|
|
- if (!merged.enableContentConfigurable) {
|
|
|
|
|
- if (merged.customScenario) merged.scenario = merged.customScenario;
|
|
|
|
|
- merged.timerEnabled = merged.customTimerEnabled;
|
|
|
|
|
- merged.timerDuration = merged.customTimerDuration;
|
|
|
|
|
- if (merged.customHats && merged.customHats.length) merged.hats = merged.customHats;
|
|
|
|
|
- }
|
|
|
|
|
- // 决定初始 stage
|
|
|
|
|
- if (!merged.enableMemberSelect && !merged.enableContentConfigurable) {
|
|
|
|
|
- merged.stage = 'activity';
|
|
|
|
|
- } else if (!merged.enableMemberSelect) {
|
|
|
|
|
- merged.stage = 'setup';
|
|
|
|
|
- } else if (!merged.enableContentConfigurable) {
|
|
|
|
|
- merged.stage = 'member';
|
|
|
|
|
|
|
+ if (JSON.stringify(newValue) != JSON.stringify(oldValue) || JSON.stringify(this.work) != JSON.stringify(_data)) {
|
|
|
|
|
+ // 构造默认 work 值(含所有配置字段)
|
|
|
|
|
+ const base = {
|
|
|
|
|
+ stage: 'member',
|
|
|
|
|
+ isSetting: true,
|
|
|
|
|
+ members: [],
|
|
|
|
|
+ scenario: '',
|
|
|
|
|
+ timerEnabled: true,
|
|
|
|
|
+ timerDuration: 60,
|
|
|
|
|
+ timerCustomValue: 60,
|
|
|
|
|
+ hats: ['white', 'red', 'black', 'yellow', 'green', 'blue'],
|
|
|
|
|
+ hatContent: {},
|
|
|
|
|
+ enableMemberSelect: true,
|
|
|
|
|
+ enableContentConfigurable: true,
|
|
|
|
|
+ autoExpandHowTo: false,
|
|
|
|
|
+ customScenario: '',
|
|
|
|
|
+ customTimerEnabled: true,
|
|
|
|
|
+ customTimerDuration: 60,
|
|
|
|
|
+ customHats: null,
|
|
|
|
|
+ howToSteps: null,
|
|
|
|
|
+ };
|
|
|
|
|
+ const merged = Object.assign(base, _data || {});
|
|
|
|
|
+
|
|
|
|
|
+ // 仅当没有任何业务数据时(首次进入)才根据配置决定初始 stage
|
|
|
|
|
+ const isFresh = !(merged.members && merged.members.length)
|
|
|
|
|
+ && !(merged.scenario && merged.scenario.trim())
|
|
|
|
|
+ && !(merged.hatContent && Object.keys(merged.hatContent).some(k => merged.hatContent[k]));
|
|
|
|
|
+
|
|
|
|
|
+ if (isFresh) {
|
|
|
|
|
+ // 应用后台预设值(当 enableContentConfigurable=false 时)
|
|
|
|
|
+ if (!merged.enableContentConfigurable) {
|
|
|
|
|
+ if (merged.customScenario) merged.scenario = merged.customScenario;
|
|
|
|
|
+ merged.timerEnabled = merged.customTimerEnabled;
|
|
|
|
|
+ merged.timerDuration = merged.customTimerDuration;
|
|
|
|
|
+ if (merged.customHats && merged.customHats.length) merged.hats = merged.customHats;
|
|
|
|
|
+ }
|
|
|
|
|
+ // 决定初始 stage
|
|
|
|
|
+ if (!merged.enableMemberSelect && !merged.enableContentConfigurable) {
|
|
|
|
|
+ merged.stage = 'activity';
|
|
|
|
|
+ } else if (!merged.enableMemberSelect) {
|
|
|
|
|
+ merged.stage = 'setup';
|
|
|
|
|
+ } else if (!merged.enableContentConfigurable) {
|
|
|
|
|
+ merged.stage = 'member';
|
|
|
|
|
+ }
|
|
|
|
|
+ // 初始化 UI 状态
|
|
|
|
|
+ this.showHowTo = !!merged.autoExpandHowTo;
|
|
|
|
|
+ this.setupStep = 0;
|
|
|
|
|
+ this.currentHatIdx = 0;
|
|
|
|
|
+
|
|
|
|
|
+ // 同步父组件保存,避免下次加载重复 isFresh
|
|
|
|
|
+ this.$nextTick(() => this.$emit('setTestJson', merged));
|
|
|
}
|
|
}
|
|
|
- // 初始化 UI 状态
|
|
|
|
|
- this.showHowTo = !!merged.autoExpandHowTo;
|
|
|
|
|
- this.setupStep = 0;
|
|
|
|
|
- this.currentHatIdx = 0;
|
|
|
|
|
|
|
|
|
|
- // 同步父组件保存,避免下次加载重复 isFresh
|
|
|
|
|
- this.$nextTick(() => this.$emit('setTestJson', merged));
|
|
|
|
|
|
|
+ this.work = merged;
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- this.work = merged;
|
|
|
|
|
},
|
|
},
|
|
|
deep: true,
|
|
deep: true,
|
|
|
immediate: true,
|
|
immediate: true,
|