| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- 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)
- }
- }
|