import Custom from '@/pages/FormVolume/js/custom' import { dataTopic, dataResult } from '../js/config' export default { data() { return { attrShow: { panel: true, list: true, attr: true, compt: false } } }, computed: { isPutContent () { if (!this.dataItem) { return false } return ['input', 'textarea'].indexOf(this.dataItem.type) === -1 } }, methods: { async addAttrData () { try { let msg1 = '请确认当前问卷已保存,是否新增问卷?' let msg2 = '是否新增问卷?' let msg = this.data ? msg1 : msg2 await this.$dialog.confirm({ title: '提示', message: msg, }) this.selectData(dataTopic()) } catch (err) { } }, async selectData(data) { try { this.$set(this, 'data', data) let obj = data.result[0] obj && this.selectItem(obj, true) } catch (err) { console.warn(err) } }, addItem () { try { let result = this.data.result let index = result.length this.dataItem && result.some((item, i) => { if (item === this.dataItem) { index = i + 1 return true } }) let data = dataResult() result.splice(index, 0, data) this.dataItem = data } catch (err) { } }, async removeItem () { try { await this.$dialog.confirm({ title: '提示', message: '确认删除吗?', }) let result = this.data.result let index = null this.dataItem && result.some((item, i) => { if (item === this.dataItem) { index = i return true } }) if (typeof index === 'number') { result.splice(index, 1) this.dataItem = null } } catch (err) { } }, async selectItem(item, b) { try { if (!b) { this.onTipComptState() } this.dataItem = item this.attrShow.compt = true } catch (err) { } }, onChangeCompType (type) { let { val } = this.dataItem if (['checkbox'].indexOf(type) !== -1) { this.dataItem.val = [] } else { this.dataItem.val = '' } this.dataItem.type = type Custom(this.dataItem) }, moveItemIndex (n) { let i = null let result = this.data.result result.some((item, index) => { if (item && item === this.dataItem) { i = index return true } }) if (typeof i !== 'number') { return } let targetIndex = i + (n < 0 ? n : n + 1) if (targetIndex < 0) { this.$toast.fail('已经第一个了') return } if (targetIndex > result.length) { this.$toast.fail('已经是最后一个了') return } let temp = result[i] result[i] = null result.splice(targetIndex, 0, temp) this.data.result = this.data.result.filter(item => item) }, onKeyup (ev) { let { keyCode, target } = ev if (/(input|textarea)/i.test(target.nodeName) && target.value) { return } if (keyCode === 38) { this.moveItemIndex(-1) } if (keyCode === 40) { this.moveItemIndex(1) } }, async onTipComptState () { let pm try { let { mgTipComptDirectionState } = this.$store.state.manager if (mgTipComptDirectionState || !this.data) { pm = Promise.resolve() } if (!pm) { await this.$dialog.confirm({ title: '提示', message: '按 ↑ ↓ 可调整位置!', confirmButtonText: '不再提示', }) this.$store.commit('setMgTipComptDirectionState', 1) pm = Promise.resolve() } } catch (err) { pm = Promise.reject() } return pm }, async onTipAttrState() { let pm try { let { mgTipAttrSaveState } = this.$store.state.manager if (mgTipAttrSaveState || !this.data) { pm = Promise.resolve() } if (!pm) { await this.$dialog.confirm({ title: '提示', message: '切换问卷,请确认修改已保存?', confirmButtonText: '不再提示', }) this.$store.commit('setMgTipAttrSaveState', 1) pm = Promise.resolve() } } catch (err) { pm = Promise.reject() } return pm }, onChangeContent (ev) { try { let val = typeof ev === 'string' ? ev : ev.target.value console.log(val) let arr = val.split(/\n/g).map(it => { let r = it.split(/\s*\|\s*/) return { title: r[0] || '', memo: r[1] || '' } }) console.log(arr) this.dataItem.content = arr } catch (err) { } } }, created() { document.documentElement.addEventListener('keyup', this.onKeyup) }, destoryed () { document.documentElement.removeEventListener('keyup', this.onKeyup) } }