UNPKG

@wasateam/wswswswswsapicms

Version:

## Project setup ``` yarn install ```

210 lines (209 loc) 6.67 kB
import vuetify from '@/plugins/vuetify.js' export default { methods: { $_CMS_getLabelByHideLabelFields(fieldKey, fields, hideLabelFields) { if (!hideLabelFields) { return this.$_CMS_getFieldByFieldKey(fieldKey, fields).label; } else { if (hideLabelFields.indexOf(fieldKey) >= 0) { return null; } else { return this.$_CMS_getFieldByFieldKey(fieldKey, fields).label; } } }, $_CMS_getFieldByFieldKey(fieldKey, fields) { const keyArr = fieldKey.split("."); let target = fields; for (let i = 0; i < keyArr.length; i++) { const keyItem = keyArr[i]; if (i == 0) { if (target[keyItem] !== undefined) { target = target[keyItem]; } else { return null; } } else { if (target.fields[keyItem] !== undefined) { target = target.fields[keyItem]; } else { return null; } } } return target; }, $_CMS_getVersionsFields(versionsFields, keyPre = "", labelPre = "") { let versions_fields = {}; for (let versionsFieldKey in versionsFields) { const versionsField = versionsFields[versionsFieldKey]; if (versionsField.type == "locales") { versions_fields = { ...this.$_CMS_getLocalesFields( versionsField.fields, `${keyPre}last_version__`, "最新版本-" ), ...versions_fields }; } else { versions_fields[`${keyPre}last_version__${versionsFieldKey}`] = { ...versionsField, label: `${labelPre}最新版本-${versionsField.label}`, showOnly: true, }; } } return versions_fields; }, $_CMS_getLocalesFields(localesFields, keyPre = "", labelPre = "") { let locales_fields = {}; for (let localesFieldKey in localesFields) { const localesField = localesFields[localesFieldKey]; locales_fields[`${keyPre}locales_main__${localesFieldKey}`] = { ...localesField, label: `主語言-${labelPre}${localesField.label}`, showOnly: true }; const tarLocale = this.$store.state.locale.locales.find(e => { return e.code == this.$store.state.locale.selectingLocale }) locales_fields[ `${keyPre}locales_${this.$store.state.locale.selectingLocale}__${localesFieldKey}` ] = { ...localesField, label: `${labelPre}${tarLocale.name}-${localesField.label}`, showOnly: true }; // locales.forEach(locale => { // locales_fields[ // `${keyPre}locales_${locale.code}__${localesFieldKey}` // ] = { // ...localesField, // label: `${labelPre}${locale.name}-${localesField.label}`, // showOnly: true // }; // }); } return locales_fields; }, $_CMS_geUpdateFields(fields, updateHideFields) { let _fields = {}; for (let fieldKey in fields) { if (updateHideFields && updateHideFields.includes(fieldKey)) { continue } const field = fields[fieldKey]; if (field.readonly) { continue } else { _fields[fieldKey] = field; } } return _fields; }, $_CMS_getDisplayFields(fields) { let _fields = {}; for (let fieldKey in fields) { const field = fields[fieldKey]; if (field.type == "last_version") { _fields = { ...this.$_CMS_getVersionsFields(field.fields), ..._fields }; } else if (field.type == "locales") { _fields = { ...this.$_CMS_getLocalesFields(field.fields), ..._fields }; } else { _fields[fieldKey] = field; } } return _fields; }, // Get value from key in sequence string format $_CMS_getValueByFieldKey(fieldKey, valueItem) { const keyArr = fieldKey.split("."); let target = valueItem; for (let i = 0; i < keyArr.length; i++) { const keyItem = keyArr[i]; let targetKey = keyItem; if (targetKey == 'locales' && keyArr.length > 1) { continue } if (target[targetKey] !== undefined) { target = target[targetKey]; } else { return null; } } return target; }, // Model update data set for v-model $_CMS_updateDataSetFromFields(template, updateData, fields, item) { for (let fieldKey in fields) { const field = fields[fieldKey]; if (field.readonly) { continue; } let valueKey = fieldKey; if (item && item[valueKey] != undefined) { if (field.type == "last_version" && item) { template.$set(updateData, fieldKey, item[valueKey]); } else if (field.type == "belongsTo" && item) { template.$set(updateData, fieldKey, item[valueKey].id); } else if (field.type == "hasMany" && item) { const _value = []; item[fieldKey].forEach((itemValueItem) => { _value.push(itemValueItem.id); }); template.$set(updateData, fieldKey, _value); } else { template.$set(updateData, fieldKey, item[valueKey]); } } else if (field.defaultValue !== undefined) { template.$set(updateData, fieldKey, field.defaultValue); continue; } else { template.$set(updateData, fieldKey, null); } } }, }, computed: { _CMS_theme() { return vuetify.userPreset.theme.dark ? "dark" : "light"; }, _CMS_mainScope() { if (!this.$store.state.user.currentUser || !this.$store.state.user.currentUser.scopes || !this.$store.state.user.currentUser.scopes.length) { return null } if (!this.SET_scopes) { return null } const tarScope = this.SET_scopes.find(scope => { return this.$store.state.user.currentUser.scopes.includes(scope) }) return tarScope }, _CMS_menu() { let tarMenu if (!this.SET_menuByScopes) { tarMenu = this.SET_menu } else if (!this.SET_menu[this._CMS_mainScope]) { tarMenu = [] } else { tarMenu = this.SET_menu[this._CMS_mainScope] } let _CMS_menu = [ ...tarMenu, { title: '登出', link: '/signout' } ] return _CMS_menu }, }, }