m-eleplus-crud 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.full.js +1 -1
- package/dist/index.full.min.js +1 -1
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +1 -1
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +1 -1
- package/es/index.mjs +5 -5
- package/es/packages/components/crud/index.mjs +2 -2
- package/es/packages/components/crud/src/crud.mjs +53 -621
- package/es/packages/components/crud/src/crud.mjs.map +1 -1
- package/es/packages/components/crud/src/crud2.mjs +621 -53
- package/es/packages/components/crud/src/crud2.mjs.map +1 -1
- package/es/packages/components/form/src/form.mjs +1 -1
- package/es/packages/components/form/src/form.mjs.map +1 -1
- package/es/packages/components/index.mjs +5 -5
- package/es/packages/components/picture/index.mjs +2 -2
- package/es/packages/components/picture/src/picture.mjs +19 -26
- package/es/packages/components/picture/src/picture.mjs.map +1 -1
- package/es/packages/components/picture/src/picture2.mjs +26 -19
- package/es/packages/components/picture/src/picture2.mjs.map +1 -1
- package/es/packages/components/qrcode/index.mjs +2 -2
- package/es/packages/components/qrcode/src/qrcode.mjs +62 -22
- package/es/packages/components/qrcode/src/qrcode.mjs.map +1 -1
- package/es/packages/components/qrcode/src/qrcode2.mjs +22 -62
- package/es/packages/components/qrcode/src/qrcode2.mjs.map +1 -1
- package/es/packages/components/search/index.mjs +2 -2
- package/es/packages/components/search/src/search.mjs +438 -25
- package/es/packages/components/search/src/search.mjs.map +1 -1
- package/es/packages/components/search/src/search2.mjs +25 -438
- package/es/packages/components/search/src/search2.mjs.map +1 -1
- package/es/packages/components/table/index.mjs +2 -2
- package/es/packages/components/table/src/table.mjs +37 -420
- package/es/packages/components/table/src/table.mjs.map +1 -1
- package/es/packages/components/table/src/table2.mjs +420 -37
- package/es/packages/components/table/src/table2.mjs.map +1 -1
- package/lib/index.js +5 -5
- package/lib/packages/components/crud/index.js +2 -2
- package/lib/packages/components/crud/src/crud.js +54 -621
- package/lib/packages/components/crud/src/crud.js.map +1 -1
- package/lib/packages/components/crud/src/crud2.js +621 -54
- package/lib/packages/components/crud/src/crud2.js.map +1 -1
- package/lib/packages/components/form/src/form.js +1 -1
- package/lib/packages/components/form/src/form.js.map +1 -1
- package/lib/packages/components/index.js +5 -5
- package/lib/packages/components/picture/index.js +2 -2
- package/lib/packages/components/picture/src/picture.js +20 -26
- package/lib/packages/components/picture/src/picture.js.map +1 -1
- package/lib/packages/components/picture/src/picture2.js +26 -20
- package/lib/packages/components/picture/src/picture2.js.map +1 -1
- package/lib/packages/components/qrcode/index.js +2 -2
- package/lib/packages/components/qrcode/src/qrcode.js +66 -23
- package/lib/packages/components/qrcode/src/qrcode.js.map +1 -1
- package/lib/packages/components/qrcode/src/qrcode2.js +23 -66
- package/lib/packages/components/qrcode/src/qrcode2.js.map +1 -1
- package/lib/packages/components/search/index.js +2 -2
- package/lib/packages/components/search/src/search.js +438 -26
- package/lib/packages/components/search/src/search.js.map +1 -1
- package/lib/packages/components/search/src/search2.js +26 -438
- package/lib/packages/components/search/src/search2.js.map +1 -1
- package/lib/packages/components/table/index.js +2 -2
- package/lib/packages/components/table/src/table.js +38 -425
- package/lib/packages/components/table/src/table.js.map +1 -1
- package/lib/packages/components/table/src/table2.js +425 -38
- package/lib/packages/components/table/src/table2.js.map +1 -1
- package/package.json +1 -1
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud2.mjs","sources":["../../../../../../../packages/components/crud/src/crud.ts"],"sourcesContent":["import {\r\n buildProps,\r\n definePropType,\r\n isArray,\r\n isFunction,\r\n isNumber,\r\n isObject,\r\n isString,\r\n} from '@m-eleplus-crud/utils'\r\nimport { useSizeProp } from '@m-eleplus-crud/hooks'\r\nimport { ColumnType, ICommonColumn } from '../../common'\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type { FormItemRule } from 'element-plus'\r\nimport type { ITableCommonColumn, ITableCommonOption } from '../../table'\r\nimport type { ISearchCommonColumn, ISearchCommonOption } from '../../search'\r\nimport type { IFormCommonColumn, IFormCommonOption } from '../../form'\r\n\r\n// crud不需要继承form的column属性\r\ntype WithoutFormColumn = Omit<\r\n IFormCommonColumn,\r\n 'order' | 'value' | 'placeholder' | 'rules' | 'span' | 'labelWidth'\r\n>\r\n// crud不需要继承search的column属性\r\ntype WithoutSearchColumn = Omit<\r\n ISearchCommonColumn,\r\n 'order' | 'value' | 'placeholder' | 'rules' | 'span' | 'labelWidth'\r\n>\r\n\r\nexport interface ICrudCommonColumn\r\n extends ICommonColumn,\r\n ITableCommonColumn,\r\n // IFormCommonColumn,\r\n // ISearchCommonColumn,\r\n WithoutFormColumn,\r\n WithoutSearchColumn {\r\n /**\r\n * @description 搜索排序\r\n */\r\n searchOrder?: number\r\n /**\r\n * @description 表单排序\r\n */\r\n formOrder?: number\r\n /**\r\n * @description 是否开启搜索\r\n */\r\n search?: boolean\r\n /**\r\n * @description 搜索默认值\r\n */\r\n searchValue?: any\r\n /**\r\n * @description 表单默认值\r\n */\r\n formValue?: any\r\n /**\r\n * @description 搜索占位文本\r\n */\r\n searchPlaceholder?: string\r\n /**\r\n * @description 表单占位文本\r\n */\r\n formPlaceholder?: string\r\n /**\r\n * @description 搜索下拉组件等可清除\r\n */\r\n searchClearable?: boolean\r\n /**\r\n * @description 表单下拉组件等可清除\r\n */\r\n formClearable?: boolean\r\n /**\r\n * @description 搜索标签宽度\r\n */\r\n searchLabelWidth?: string\r\n /**\r\n * @description 表单标签宽度\r\n */\r\n formLabelWidth?: string\r\n /**\r\n * @description 搜索校验规则\r\n */\r\n searchRules?: FormItemRule[]\r\n /**\r\n * @description 表单校验规则\r\n */\r\n formRules?: FormItemRule[]\r\n /**\r\n * @description 列表是否显示\r\n */\r\n hide?: boolean\r\n /**\r\n * @description 新增对话框是否显示\r\n */\r\n addHide?: boolean\r\n /**\r\n * @description 查看对话框是否显示\r\n */\r\n viewHide?: boolean\r\n /**\r\n * @description 编辑对话框是否显示\r\n */\r\n editHide?: boolean\r\n /**\r\n * @description 搜索项框栅列\r\n */\r\n searchSpan?: number\r\n /**\r\n * @description 新增项框栅列\r\n */\r\n addSpan?: number\r\n /**\r\n * @description 编辑项框栅列\r\n */\r\n editSpan?: number\r\n /**\r\n * @description 查看项框栅列\r\n */\r\n viewSpan?: number\r\n /**\r\n * @description 表单项框栅列\r\n */\r\n formSpan?: number\r\n /**\r\n * @description 新增表单禁用\r\n */\r\n addDisabled?: boolean\r\n /**\r\n * @description 编辑表单禁用\r\n */\r\n editDisabled?: boolean\r\n}\r\n\r\nexport interface ICrudColumn extends ICrudCommonColumn {\r\n type?: ColumnType | 'index' | 'single' | 'selection'\r\n}\r\n\r\n/**\r\n * @description crud配置\r\n */\r\nexport interface ICrudOption\r\n extends ITableCommonOption,\r\n IFormCommonOption,\r\n ISearchCommonOption {\r\n /**\r\n * @description 新增按钮是否需要\r\n */\r\n addBtn?: boolean\r\n /**\r\n * @description 编辑按钮是否需要\r\n */\r\n editBtn?: boolean\r\n /**\r\n * @description 删除按钮是否需要\r\n */\r\n delBtn?: boolean\r\n /**\r\n * @description 新增按钮文字\r\n */\r\n addBtnText?: string\r\n /**\r\n * @description 新增按钮图标\r\n */\r\n addBtnIcon?: string\r\n /**\r\n * @description 搜索label宽度\r\n */\r\n searchLabelWidth?: string\r\n /**\r\n * @description 表单label宽度\r\n */\r\n formLabelWidth?: string\r\n /**\r\n * @description 新增弹窗标题\r\n */\r\n addDialogTitle?: string\r\n /**\r\n * @description 编辑弹窗标题\r\n */\r\n editDialogTitle?: string\r\n /**\r\n * @description 查看弹窗标题\r\n */\r\n viewDialogTitle?: string\r\n /**\r\n * @description 弹窗宽度\r\n */\r\n dialogWidth?: string\r\n /**\r\n * @description 表格高度\r\n */\r\n height?: string\r\n /**\r\n * @description 表格最大高度\r\n */\r\n maxHeight?: string\r\n /**\r\n * @description 表格高度调节(px)\r\n */\r\n calcHeight?: number\r\n /**\r\n * @description crud列配置\r\n */\r\n column: ICrudColumn[]\r\n}\r\n\r\nexport const crudProps = buildProps({\r\n /**\r\n * @description 组件尺寸大小\r\n */\r\n size: useSizeProp,\r\n /**\r\n * @description 加载状态\r\n */\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n /**\r\n * @description 表格数据\r\n */\r\n data: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * @description 搜索参数\r\n */\r\n search: {\r\n type: Object,\r\n default: () => ({}),\r\n },\r\n /**\r\n * @description 数据总数\r\n */\r\n total: {\r\n type: Number,\r\n default: 0,\r\n },\r\n /**\r\n * @description 表单绑定的值\r\n */\r\n modelValue: {\r\n type: Object,\r\n required: true,\r\n },\r\n /**\r\n * @description 权限配置\r\n */\r\n permission: {\r\n type: Object,\r\n default: () => ({\r\n // 新增按钮权限\r\n addBtn: true,\r\n // 编辑按钮权限\r\n editBtn: true,\r\n // 删除按钮权限\r\n delBtn: true,\r\n }),\r\n },\r\n /**\r\n * @description 选择的数据\r\n */\r\n select: {\r\n type: Array,\r\n default: () => [],\r\n },\r\n /**\r\n * @description 表单提交前\r\n */\r\n beforeEnter: {\r\n type: Function,\r\n },\r\n /**\r\n * @description crud配置项\r\n */\r\n option: {\r\n type: definePropType<ICrudOption>(Object),\r\n required: false,\r\n },\r\n} as const)\r\nexport type CrudProps = ExtractPropTypes<typeof crudProps>\r\n\r\nexport const crudEmits = {\r\n /**\r\n * @description 更新选择数据\r\n * @param arr 选择的数据\r\n * @returns\r\n */\r\n 'update:select': (arr: any[]) => isArray(arr),\r\n /**\r\n * @description 更新表单数据\r\n * @param value 表单数据\r\n * @returns\r\n */\r\n 'update:modelValue': (value: any) => isObject(value),\r\n /**\r\n * 查询事件触发\r\n * @param form 查询表单数据\r\n * @returns\r\n */\r\n search: (form: any) => isObject(form),\r\n /**\r\n * 重置事件触发\r\n * @returns\r\n */\r\n reset: () => true,\r\n /**\r\n * 新增\r\n * @param form 表单数据\r\n * @param done 完成\r\n * @param loading 加载\r\n * @returns\r\n */\r\n rowSave: (form: any, done: () => void, loading: () => void) =>\r\n isObject(form) && isFunction(done) && isFunction(loading),\r\n /**\r\n * 编辑\r\n * @param form 表单数据\r\n * @param done 完成\r\n * @param loading 加载\r\n * @returns\r\n */\r\n rowEdit: (form: any, done: () => void, loading: () => void) =>\r\n isObject(form) && isFunction(done) && isFunction(loading),\r\n\r\n /**\r\n * 取消\r\n * @param form 表单数据\r\n * @param index 索引\r\n * @param type 类型\r\n * @returns\r\n */\r\n rowCancel: (form: any, index: number, type: 'add' | 'edit' | 'view') =>\r\n isObject(form) && isNumber(index) && isString(type),\r\n\r\n /**\r\n * 删除\r\n * @param row 行数据\r\n * @param index 索引\r\n * @returns\r\n */\r\n rowDel: (row: any, index: number) => isObject(row) && isNumber(index),\r\n}\r\nexport type CrudEmits = typeof crudEmits\r\n"],"names":[],"mappings":";;;;;AA8MO,MAAM,YAAY,UAAW,CAAA;AAAA,EAIlC,IAAM,EAAA,WAAA;AAAA,EAIN,OAAS,EAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AAAA,EAIA,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAS,OAAO,EAAC,CAAA;AAAA,GACnB;AAAA,EAIA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,OAAO;AAAA,MAEd,MAAQ,EAAA,IAAA;AAAA,MAER,OAAS,EAAA,IAAA;AAAA,MAET,MAAQ,EAAA,IAAA;AAAA,KACV,CAAA;AAAA,GACF;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA,EAIA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,QAAA;AAAA,GACR;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAA4B,MAAM,CAAA;AAAA,IACxC,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAU,EAAA;AAGH,MAAM,SAAY,GAAA;AAAA,EAMvB,eAAiB,EAAA,CAAC,GAAe,KAAA,OAAA,CAAQ,GAAG,CAAA;AAAA,EAM5C,mBAAqB,EAAA,CAAC,KAAe,KAAA,QAAA,CAAS,KAAK,CAAA;AAAA,EAMnD,MAAQ,EAAA,CAAC,IAAc,KAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EAKpC,OAAO,MAAM,IAAA;AAAA,EAQb,OAAS,EAAA,CAAC,IAAW,EAAA,IAAA,EAAkB,OACrC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,UAAW,CAAA,IAAI,CAAK,IAAA,UAAA,CAAW,OAAO,CAAA;AAAA,EAQ1D,OAAS,EAAA,CAAC,IAAW,EAAA,IAAA,EAAkB,OACrC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,UAAW,CAAA,IAAI,CAAK,IAAA,UAAA,CAAW,OAAO,CAAA;AAAA,EAS1D,SAAW,EAAA,CAAC,IAAW,EAAA,KAAA,EAAe,IACpC,KAAA,QAAA,CAAS,IAAI,CAAA,IAAK,QAAS,CAAA,KAAK,CAAK,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EAQpD,MAAA,EAAQ,CAAC,GAAU,EAAA,KAAA,KAAkB,SAAS,GAAG,CAAA,IAAK,SAAS,KAAK,CAAA;AACtE;;;;"}
|
|
1
|
+
{"version":3,"file":"crud2.mjs","sources":["../../../../../../../packages/components/crud/src/crud.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { computed, nextTick, onMounted, ref, useSlots, watch } from 'vue'\r\nimport { ElMessageBox } from 'element-plus'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { useLocale } from '@m-eleplus-crud/hooks'\r\nimport { crudEmits, crudProps } from './crud'\r\nimport type { ISearchColumn, ISearchOption, SearchInstance } from '../../search'\r\nimport type { ITableColumn, ITableOption, TableInstance } from '../../table'\r\nimport type { ICrudColumn, ICrudOption } from './crud'\r\nimport type { FormInstance, IFormColumn, IFormOption } from '../../form'\r\n\r\nconst COMPONENT_NAME = 'MCrud'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(crudProps)\r\nconst emit = defineEmits(crudEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 国际化配置\r\nconst { t } = useLocale()\r\n\r\n// 搜索插槽\r\nconst searchSlots = computed(() => {\r\n const keys = Object.keys(slots)\r\n const result: any = {}\r\n for (const key of keys) {\r\n if (key.endsWith('Search')) {\r\n result[key.replace('Search', '')] = slots[key]\r\n }\r\n }\r\n return result\r\n})\r\n\r\n// 表单插槽\r\nconst formSlots = computed(() => {\r\n const keys = Object.keys(slots)\r\n const result: any = {}\r\n for (const key of keys) {\r\n if (key.endsWith('Form')) {\r\n result[key.replace('Form', '')] = slots[key]\r\n }\r\n }\r\n return result\r\n})\r\n\r\n// 列表插槽\r\nconst tableSlots = computed(() => {\r\n const whites = ['topLeft', 'topRight', 'addBtn']\r\n const keys = Object.keys(slots)\r\n const result: any = {}\r\n for (const key of keys) {\r\n if (\r\n !whites.includes(key) &&\r\n !key.endsWith('Search') &&\r\n !key.endsWith('Form')\r\n ) {\r\n result[key] = slots[key]\r\n }\r\n }\r\n return result\r\n})\r\n\r\n/**\r\n * @description crud配置项\r\n */\r\nconst crudOption = ref<ICrudOption>({\r\n // 默认显示添加按钮\r\n addBtn: true,\r\n // 默认显示编辑按钮\r\n editBtn: true,\r\n // 默认显示删除按钮\r\n delBtn: true,\r\n // 添加按钮文字\r\n addBtnText: t('m.crud.addBtnText'),\r\n // 添加按钮图标\r\n addBtnIcon: 'Plus',\r\n // 添加对话框标题\r\n addDialogTitle: t('m.crud.addDialogTitle'),\r\n // 编辑对话框标题\r\n editDialogTitle: t('m.crud.editDialogTitle'),\r\n // 查看对话框标题\r\n viewDialogTitle: t('m.crud.viewDialogTitle'),\r\n // 对话框宽度\r\n dialogWidth: '800px',\r\n\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description 对话框类型\r\n */\r\nconst dialogType = ref<'add' | 'edit' | 'view'>('add')\r\n\r\n/**\r\n * @description 搜索ref\r\n */\r\nconst searchRef = ref<SearchInstance>()\r\n\r\n/**\r\n * @description 表单ref\r\n */\r\nconst formRef = ref<FormInstance>()\r\n\r\n/**\r\n * @description 表格ref\r\n */\r\nconst tableRef = ref<TableInstance>()\r\n\r\n/**\r\n * @description 对话框显示状态\r\n */\r\nconst dialogVisible = ref(false)\r\n\r\n/**\r\n * @description 表格高度\r\n */\r\nconst tableHeight = ref<any>(undefined)\r\n\r\n// 备份modelForm\r\nconst _modelForm = ref<any>()\r\n\r\n// 备份列表index\r\nconst _rowIndex = ref(-1)\r\n\r\n/**\r\n * @description 对话框标题\r\n */\r\nconst dialogTitle = computed(() => {\r\n if (dialogType.value === 'add') {\r\n return crudOption.value.addDialogTitle\r\n }\r\n if (dialogType.value === 'edit') {\r\n return crudOption.value.editDialogTitle\r\n }\r\n return crudOption.value.viewDialogTitle\r\n})\r\n\r\n/**\r\n * @description 表单数据\r\n */\r\nconst modelForm = computed({\r\n get() {\r\n return props.modelValue\r\n },\r\n set(value: any) {\r\n emit('update:modelValue', value)\r\n },\r\n})\r\n\r\n// 备份第一次的modelForm\r\nconst __firstModelForm = ref<any>({})\r\n__firstModelForm.value = props.modelValue\r\n\r\n/**\r\n * @description table配置项\r\n */\r\nconst tableOption = ref<ITableOption>({\r\n // 默认显示操作栏\r\n menu: true,\r\n\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description search配置项\r\n */\r\nconst searchOption = ref<ISearchOption>({\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description form配置项\r\n */\r\nconst formOption = computed<IFormOption>(() => {\r\n let option: IFormOption = {\r\n column: [],\r\n }\r\n option = transFormOption(\r\n Object.assign({}, option, copyObjectExcept(crudOption.value, ['column']))\r\n )\r\n for (let i = 0; i < crudOption.value.column.length; i++) {\r\n const item = cloneDeep(crudOption.value.column[i])\r\n const formColumn: IFormColumn = transFormColumn(item)\r\n\r\n if (['index', 'single', 'selection'].includes(item.type || '')) {\r\n continue\r\n }\r\n\r\n if (dialogType.value === 'add') {\r\n // 新增模式\r\n if (!item.addHide) {\r\n option.column.push(formColumn)\r\n }\r\n } else if (dialogType.value === 'edit') {\r\n // 编辑模式\r\n if (!item.editHide) {\r\n option.column.push(formColumn)\r\n }\r\n } else {\r\n // 查看模式\r\n if (!item.viewHide) {\r\n option.column.push(formColumn)\r\n }\r\n }\r\n }\r\n\r\n return option\r\n})\r\n\r\n/**\r\n * @description 搜索代理\r\n */\r\nconst searchProxys = new Proxy(props.search, {\r\n get(target, key) {\r\n return get(target, key)\r\n },\r\n set(target, key, value) {\r\n set(target, key, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * @description 选择的数据\r\n */\r\nconst selectData = computed({\r\n get() {\r\n return props.select\r\n },\r\n set(value: any) {\r\n emit('update:select', value)\r\n },\r\n})\r\n\r\n/**\r\n * 转换search列\r\n * @param option 列配置\r\n */\r\nconst transSearchColumn = (column: ICrudColumn): ISearchColumn => {\r\n const result: ISearchColumn = cloneDeep(column) as ISearchColumn\r\n // 转换排序\r\n if (column.searchOrder) {\r\n result.order = column.searchOrder\r\n } else {\r\n delete result.order\r\n }\r\n // 转换默认值\r\n if (column.searchValue) {\r\n result.value = column.searchValue\r\n } else {\r\n delete result.value\r\n }\r\n // 转换占位符\r\n if (column.searchPlaceholder) {\r\n result.placeholder = column.searchPlaceholder\r\n } else {\r\n delete result.placeholder\r\n }\r\n // 转换表单校验规则\r\n if (column.searchRules) {\r\n result.rules = column.searchRules\r\n } else {\r\n delete result.rules\r\n }\r\n // 转换栅格\r\n if (column.searchSpan) {\r\n result.span = column.searchSpan\r\n } else {\r\n delete result.span\r\n }\r\n // 转换labelWidth\r\n if (column.searchLabelWidth) {\r\n result.labelWidth = column.searchLabelWidth\r\n } else {\r\n delete result.labelWidth\r\n }\r\n // 转换clearable\r\n if (column.searchClearable) {\r\n result.clearable = column.searchClearable\r\n } else {\r\n delete result.clearable\r\n }\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * 转换form列\r\n * @param column 列配置\r\n * @param type 类型\r\n */\r\nconst transFormColumn = (column: ICrudColumn): IFormColumn => {\r\n const result: IFormColumn = cloneDeep(column) as IFormColumn\r\n // 转换排序\r\n if (column.formOrder) {\r\n result.order = column.formOrder\r\n } else {\r\n delete result.order\r\n }\r\n // 转换默认值\r\n if (column.formValue) {\r\n result.value = column.formValue\r\n } else {\r\n delete result.value\r\n }\r\n // 转换占位符\r\n if (column.formPlaceholder) {\r\n result.placeholder = column.formPlaceholder\r\n } else {\r\n delete result.placeholder\r\n }\r\n // 转换表单校验规则\r\n if (column.formRules) {\r\n result.rules = column.formRules\r\n } else {\r\n delete result.rules\r\n }\r\n // 转换labelWidth\r\n if (column.formLabelWidth) {\r\n result.labelWidth = column.formLabelWidth\r\n } else {\r\n delete result.labelWidth\r\n }\r\n // 转换clearable\r\n if (column.formClearable) {\r\n result.clearable = column.formClearable\r\n } else {\r\n delete result.clearable\r\n }\r\n // 转换栅格\r\n if (column.formSpan || column.addSpan || column.editSpan || column.viewSpan) {\r\n if (column.formSpan) {\r\n result.span = column.formSpan\r\n }\r\n if (dialogType.value === 'add' && column.addSpan) {\r\n result.span = column.addSpan\r\n } else if (dialogType.value === 'edit' && column.editSpan) {\r\n result.span = column.editSpan\r\n } else if (dialogType.value === 'view' && column.viewSpan) {\r\n result.span = column.viewSpan\r\n }\r\n } else {\r\n delete result.span\r\n }\r\n if (column.addDisabled || column.editDisabled) {\r\n if (dialogType.value === 'add' && column.addDisabled) {\r\n result.disabled = column.addDisabled\r\n } else if(dialogType.value === 'edit' && column.editDisabled) {\r\n result.disabled = column.editDisabled\r\n }\r\n }\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * 转换search option\r\n * @param option crud option\r\n */\r\nconst transSearchOption = (option: ICrudOption): ISearchOption => {\r\n const result: ISearchOption = cloneDeep(option) as ISearchOption\r\n // 转换labelWidth\r\n if (option.searchLabelWidth) {\r\n result.labelWidth = option.searchLabelWidth\r\n } else {\r\n delete result.labelWidth\r\n }\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * 转换form option\r\n * @param option crud option\r\n */\r\nconst transFormOption = (option: ICrudOption): IFormOption => {\r\n const result: IFormOption = cloneDeep(option) as IFormOption\r\n // 转换labelWidth\r\n if (option.formLabelWidth) {\r\n result.labelWidth = option.formLabelWidth\r\n } else {\r\n delete result.labelWidth\r\n }\r\n\r\n return result\r\n}\r\n\r\n/**\r\n * @description 当前页发生改变\r\n */\r\nconst currentPageChange = (page: number) => {\r\n searchRef.value?.search(page)\r\n}\r\n\r\n/**\r\n * @description 页大小发生变化\r\n */\r\nconst pageSizeChange = (pageSize: number) => {\r\n searchProxys.limit = pageSize\r\n searchRef.value?.search()\r\n}\r\n\r\n/**\r\n * @description 搜索事件\r\n * @param form 搜索表单值\r\n * @param done 完成回调\r\n */\r\nconst handleSearch = (form: any) => {\r\n tableRef.value?.clearSelection()\r\n emit('search', form)\r\n}\r\n\r\n/**\r\n * @description 重置搜索\r\n */\r\nconst handleReset = () => {\r\n tableRef.value?.clearSelection()\r\n emit('reset')\r\n}\r\n\r\n/**\r\n * @description 获取表格高度\r\n */\r\nconst setTableHeight = () => {\r\n nextTick(() => {\r\n // 自动高度\r\n if (crudOption.value.height === 'auto') {\r\n // 表格style对象\r\n const tableStyle = tableRef.value?.$el\r\n // 分页对象\r\n // const pageStyle: any = document.querySelector('.m-pagination-box')\r\n // 额外可控制高度参数\r\n const calcHeight: number =\r\n crudOption.value.calcHeight || globalConfig.value?.calcHeight || 0\r\n tableHeight.value =\r\n document.documentElement.clientHeight -\r\n (tableStyle?.offsetTop || 0) -\r\n 72 -\r\n calcHeight\r\n } else {\r\n tableHeight.value = crudOption.value.height\r\n }\r\n })\r\n}\r\n\r\n/**\r\n * 打开新增对话框\r\n */\r\nconst rowAdd = () => {\r\n dialogType.value = 'add'\r\n dialogVisible.value = true\r\n}\r\n\r\n/**\r\n * @description 打开编辑修改\r\n */\r\nconst rowEdit = (row: any, index: number) => {\r\n // 备份数据\r\n _modelForm.value = cloneDeep(row)\r\n _rowIndex.value = index\r\n\r\n // 弹窗类型\r\n dialogType.value = 'edit'\r\n modelForm.value = cloneDeep(row)\r\n // 弹窗状态\r\n dialogVisible.value = true\r\n}\r\n\r\n/**\r\n * @description 打开详情\r\n */\r\nconst rowView = (row: any, index: number) => {\r\n // 备份数据\r\n _modelForm.value = cloneDeep(row)\r\n _rowIndex.value = index\r\n\r\n // 弹窗类型\r\n dialogType.value = 'view'\r\n modelForm.value = cloneDeep(row)\r\n // 弹窗状态\r\n dialogVisible.value = true\r\n}\r\n\r\n/**\r\n * @description 打开删除\r\n */\r\nconst rowDel = (row: any, index: number) => {\r\n ElMessageBox.confirm('此操作将删除该数据, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n emit('rowDel', row, index)\r\n })\r\n .catch(() => {})\r\n}\r\n\r\n/**\r\n * 对话框确认事件\r\n * @param done 完成\r\n * @param loading 结束加载\r\n */\r\nconst dialogEnter = async (done: () => void, loading: () => void) => {\r\n const valid = await formRef.value!.validForm()\r\n // 校验不通过\r\n if (!valid) {\r\n loading()\r\n return\r\n }\r\n\r\n // 表单前校验\r\n if (props.beforeEnter && !(await props.beforeEnter())) {\r\n loading()\r\n return\r\n }\r\n\r\n if (dialogType.value === 'add') {\r\n // 新增\r\n emit('rowSave', modelForm.value, done, loading)\r\n } else if (dialogType.value === 'edit') {\r\n // 修改\r\n emit('rowEdit', modelForm.value, done, loading)\r\n }\r\n}\r\n\r\nconst dialogCancel = () => {\r\n emit('rowCancel', _modelForm.value || {}, _rowIndex.value, dialogType.value)\r\n}\r\n\r\n/**\r\n * @description 弹窗关闭\r\n */\r\nconst dialogClose = () => {\r\n // 清空备份\r\n _modelForm.value = null\r\n _rowIndex.value = -1\r\n\r\n if (formRef.value) {\r\n formRef.value.clear()\r\n modelForm.value = cloneDeep(__firstModelForm.value)\r\n } else {\r\n emit('update:modelValue', cloneDeep(__firstModelForm.value))\r\n }\r\n}\r\n\r\n/**\r\n * 复制对象到新对象,排除指定key\r\n * @param sourceObj 源对象\r\n * @param excludeKeys 排除的key\r\n */\r\nconst copyObjectExcept = (sourceObj: any, excludeKeys: string[] = []) => {\r\n const result: any = {}\r\n Object.keys(sourceObj).forEach((key) => {\r\n if (!excludeKeys.includes(key)) {\r\n result[key] = sourceObj[key]\r\n }\r\n })\r\n return result\r\n}\r\n\r\nwatch(\r\n () => props.option as ICrudOption,\r\n (newVal: ICrudOption) => {\r\n if (newVal) {\r\n // crud配置项\r\n crudOption.value = Object.assign({}, crudOption.value, newVal)\r\n // table配置项\r\n tableOption.value = Object.assign(\r\n {},\r\n tableOption.value,\r\n copyObjectExcept(crudOption.value, ['column'])\r\n )\r\n // search配置项\r\n searchOption.value = transSearchOption(\r\n Object.assign(\r\n {},\r\n searchOption.value,\r\n copyObjectExcept(crudOption.value, ['column'])\r\n )\r\n )\r\n\r\n const searchColumns: ISearchColumn[] = []\r\n const tableColumns: ITableColumn[] = []\r\n if (newVal.column && newVal.column.length) {\r\n for (let i = 0; i < newVal.column.length; i++) {\r\n const item = newVal.column[i]\r\n // 处理搜索列\r\n if (\r\n item.search &&\r\n !['index', 'single', 'selection'].includes(item.type || '')\r\n ) {\r\n searchColumns.push(transSearchColumn(item))\r\n }\r\n // 列表\r\n if (!item.hide) {\r\n tableColumns.push(item)\r\n }\r\n }\r\n searchOption.value.column = searchColumns\r\n tableOption.value.column = tableColumns\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\nonMounted(() => {\r\n // 设置表格高度\r\n if (crudOption.value.height) {\r\n setTableHeight()\r\n }\r\n})\r\n\r\ndefineExpose({\r\n /**\r\n * @description 新增\r\n */\r\n rowAdd,\r\n /**\r\n * @description 编辑\r\n */\r\n rowEdit,\r\n /**\r\n * @description 查看\r\n */\r\n rowView,\r\n /**\r\n * @description 删除\r\n */\r\n rowDel,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"m-crud\">\r\n <MSearch\r\n ref=\"searchRef\"\r\n :model=\"searchProxys\"\r\n :option=\"searchOption\"\r\n :size=\"size || globalConfig.size\"\r\n :permission=\"permission\"\r\n @search=\"handleSearch\"\r\n @reset=\"handleReset\"\r\n >\r\n <!-- 搜索插槽 -->\r\n <template\r\n v-for=\"(slotKey, index) in Object.keys(searchSlots)\"\r\n :key=\"index\"\r\n #[slotKey]=\"scope\"\r\n >\r\n <slot :name=\"slotKey + 'Search'\" v-bind=\"scope\" />\r\n </template>\r\n <!---->\r\n </MSearch>\r\n <!--顶部操作区域-->\r\n <div v-if=\"crudOption.addBtn || slots.topLeft || slots.topRight\" class=\"m-search-top\">\r\n <div v-if=\"crudOption.addBtn || slots.topLeft\" class=\"m-search-left\">\r\n <el-button\r\n v-if=\"crudOption.addBtn && !slots.addBtn && permission['add'] !== false\"\r\n :size=\"size || globalConfig.size\"\r\n type=\"primary\"\r\n :icon=\"crudOption.addBtnIcon\"\r\n @click=\"rowAdd()\"\r\n >\r\n {{ crudOption.addBtnText }}\r\n </el-button>\r\n <slot name=\"addBtn\" v-if=\"permission['add'] !== false\" v-bind=\"{ size: size || globalConfig.size }\" />\r\n <slot name=\"topLeft\" v-bind=\"{ size: size || globalConfig.size }\" />\r\n </div>\r\n <div class=\"m-search-left\" v-else></div>\r\n <div class=\"m-search-right\">\r\n <slot name=\"topRight\" v-bind=\"{ size: size || globalConfig.size }\" />\r\n </div>\r\n </div>\r\n <!---->\r\n <!--表格-->\r\n <MTable\r\n ref=\"tableRef\"\r\n v-model:select=\"selectData\"\r\n :data=\"data\"\r\n :size=\"size || globalConfig.size\"\r\n :loading=\"loading\"\r\n :permission=\"permission\"\r\n :option=\"tableOption\"\r\n :height=\"tableHeight\"\r\n :max-height=\"tableHeight\"\r\n >\r\n <!-- 列表插槽 -->\r\n <template\r\n v-for=\"(slotKey, index) in Object.keys(tableSlots)\"\r\n :key=\"index\"\r\n #[slotKey]=\"scope\"\r\n >\r\n <slot :name=\"slotKey\" v-bind=\"scope\" />\r\n </template>\r\n <!---->\r\n <!--操作栏-->\r\n <template #menu=\"scope\">\r\n <el-link\r\n v-if=\"crudOption.editBtn && !slots.editBtn && permission['edit'] !== false\"\r\n class=\"m-control-btns\"\r\n type=\"primary\"\r\n :size=\"size || globalConfig.size\"\r\n underline=\"never\"\r\n icon=\"Edit\"\r\n @click=\"rowEdit(scope.row, scope.$index)\"\r\n >\r\n {{ t('m.crud.editBtnText') }}\r\n </el-link>\r\n <slot\r\n v-if=\"crudOption.editBtn && slots.editBtn && permission['edit'] !== false\"\r\n name=\"editBtn\"\r\n v-bind=\"scope\"\r\n />\r\n <el-link\r\n v-if=\"crudOption.delBtn && !slots.delBtn && permission['del'] !== false\"\r\n class=\"m-control-btns\"\r\n type=\"primary\"\r\n underline=\"never\"\r\n :size=\"size || globalConfig.size\"\r\n icon=\"Delete\"\r\n @click=\"rowDel(scope.row, scope.$index)\"\r\n >\r\n {{ t('m.crud.delBtnText') }}\r\n </el-link>\r\n <slot\r\n v-if=\"crudOption.delBtn && slots.delBtn && permission['del'] !== false\"\r\n name=\"delBtn\"\r\n v-bind=\"scope\"\r\n />\r\n <slot\r\n v-if=\"\r\n crudOption.menu && slots.menu && !(slots.editBtn || slots.delBtn)\r\n \"\r\n name=\"menu\"\r\n v-bind=\"scope\"\r\n />\r\n </template>\r\n <!---->\r\n </MTable>\r\n <!---->\r\n <!--分页区域-->\r\n <div v-if=\"searchProxys.page && total\" class=\"m-pagination-box\">\r\n <m-pagination\r\n :small=\"(size || globalConfig.size) === 'small'\"\r\n :total=\"total\"\r\n :current-page=\"searchProxys.page\"\r\n :page-size=\"searchProxys.limit\"\r\n :disabled=\"loading\"\r\n @current-page=\"currentPageChange\"\r\n @page-size=\"pageSizeChange\"\r\n />\r\n </div>\r\n <!--新增/编辑/查看对话框-->\r\n <MDialog\r\n v-model=\"dialogVisible\"\r\n :size=\"size || globalConfig.size\"\r\n :title=\"dialogTitle\"\r\n :width=\"crudOption.dialogWidth\"\r\n :save-btn=\"dialogType !== 'view'\"\r\n :cancel-btn=\"dialogType !== 'view'\"\r\n :save-btn-text=\"t('m.crud.dialogSaveBtnText')\"\r\n :cancel-btn-text=\"t('m.crud.dialogCancelBtnText')\"\r\n :save-btn-icon=\"dialogType === 'add' ? 'CirclePlus' : 'CircleCheck'\"\r\n @enter=\"dialogEnter\"\r\n @cancel=\"dialogCancel\"\r\n @close=\"dialogClose\"\r\n >\r\n <template #default=\"{ loading }\">\r\n <!--所有类型顶部-->\r\n <slot\r\n name=\"allTop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--新增/编辑类型顶部-->\r\n <slot\r\n v-if=\"dialogType !== 'view'\"\r\n name=\"formTop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--新增类型顶部-->\r\n <slot\r\n v-if=\"dialogType === 'add'\"\r\n name=\"addTop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--编辑类型顶部-->\r\n <slot\r\n v-if=\"dialogType === 'edit'\"\r\n name=\"editTop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--查看类型顶部-->\r\n <slot\r\n v-if=\"dialogType === 'view'\"\r\n name=\"viewTop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <MForm\r\n ref=\"formRef\"\r\n :loading=\"loading\"\r\n :size=\"size || globalConfig.size\"\r\n :option=\"formOption\"\r\n :model=\"modelForm\"\r\n :readonly=\"dialogType === 'view'\"\r\n >\r\n <!-- 表单插槽 -->\r\n <template\r\n v-for=\"(slotKey, index) in Object.keys(formSlots)\"\r\n :key=\"index\"\r\n #[slotKey]=\"scope\"\r\n >\r\n <slot :name=\"slotKey + 'Form'\" v-bind=\"scope\" />\r\n </template>\r\n <!---->\r\n </MForm>\r\n <!--所有类型底部-->\r\n <slot\r\n name=\"allBottom\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--新增/编辑类型底部-->\r\n <slot\r\n v-if=\"dialogType !== 'view'\"\r\n name=\"formBottom\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--新增类型底部-->\r\n <slot\r\n v-if=\"dialogType === 'add'\"\r\n name=\"addBottom\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--编辑类型底部-->\r\n <slot\r\n v-if=\"dialogType === 'edit'\"\r\n name=\"editBottom\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--查看类型底部-->\r\n <slot\r\n v-if=\"dialogType === 'view'\"\r\n name=\"viewBottom\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n </template>\r\n </MDialog>\r\n <!---->\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent"],"mappings":"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"}
|
|
@@ -573,7 +573,7 @@ const _sfc_main = defineComponent({
|
|
|
573
573
|
column.type === "picture" ? (openBlock(), createBlock(_component_MPicture, {
|
|
574
574
|
key: 0,
|
|
575
575
|
src: getDetailPic(unref(proxys), column)[0],
|
|
576
|
-
"preview-src-list": getDetailPic(unref(proxys), column)
|
|
576
|
+
"preview-src-list": getDetailPic(unref(proxys), column),
|
|
577
577
|
"img-width": "100px",
|
|
578
578
|
"img-height": "100px"
|
|
579
579
|
}, null, 8, ["src", "preview-src-list"])) : NEED_DIC_TYPE.includes(column.type || "") ? (openBlock(), createElementBlock(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.mjs","sources":["../../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { computed, ref, useSlots, watch } from 'vue'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { debugWarn } from '@m-eleplus-crud/utils'\r\nimport { formEmits, formProps } from './form'\r\nimport type { IDictValue } from '@m-eleplus-crud/components/common'\r\nimport type { FormInstance } from 'element-plus'\r\nimport type { IFormColumn, IFormOption } from './form'\r\n\r\nconst COMPONENT_NAME = 'MForm'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(formProps)\r\ndefineEmits(formEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 表单实例\r\nconst formRef = ref<FormInstance>()\r\n\r\n// 表单输入类型\r\nconst INPUT_TYPES = [\r\n 'input',\r\n 'textarea',\r\n 'number',\r\n 'password',\r\n 'qrcode',\r\n 'barcode',\r\n]\r\n\r\n// 日期类型\r\nconst DATE_TYPES = [\r\n 'year',\r\n 'month',\r\n 'date',\r\n 'datetime',\r\n 'week',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'time',\r\n 'timerange',\r\n]\r\n\r\n// 需要字典显示处理\r\nconst NEED_DIC_TYPE = ['select', 'checkbox', 'radio', 'switch']\r\n\r\n// 表单配置\r\nconst formOption = ref<IFormOption>({\r\n // 默认标签宽度80px\r\n labelWidth: '80px',\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description 计算详情模式下的表格行\r\n */\r\nconst detailTableRows = computed(() => {\r\n const rows = []\r\n let currentRow = []\r\n let currentTotal = 0\r\n for (const item of formOption.value.column || []) {\r\n const req = item.span || 12\r\n // 若当前行加入该项超过总列数,则开启新行\r\n if (currentTotal + req > 24) {\r\n rows.push(currentRow)\r\n currentRow = []\r\n currentTotal = 0\r\n }\r\n currentRow.push(item)\r\n currentTotal += req\r\n }\r\n if (currentRow.length) rows.push(currentRow)\r\n return rows\r\n})\r\n\r\n// 表单model\r\nconst proxys = new Proxy(props.model as any, {\r\n get(target, property) {\r\n return get(target, property)\r\n },\r\n set(target, property, value) {\r\n set(target, property, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * @description 初始化表单的值\r\n */\r\nconst initValue = () => {\r\n // 初始化搜索表单的值\r\n if (formOption.value && formOption.value.column) {\r\n for (let i = 0; i < formOption.value.column?.length; i++) {\r\n const column = formOption.value.column[i]\r\n if (column.prop && proxys[column.prop] === undefined) {\r\n if (column.value) {\r\n proxys[column.prop] = column.value\r\n } else {\r\n const ARR_TYPES = [\r\n 'checkbox',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'timerange',\r\n ]\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n ARR_TYPES.includes(column.type || '')\r\n ) {\r\n proxys[column.prop] = []\r\n } else {\r\n proxys[column.prop] = ''\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据类型获取默认时间格式\r\n * @param type 类型\r\n */\r\nconst getValueFormatByType = (type: string) => {\r\n let format = ''\r\n switch (type) {\r\n case 'yearrange':\r\n case 'year':\r\n format = 'YYYY'\r\n break\r\n case 'monthrange':\r\n case 'month':\r\n format = 'YYYY-MM'\r\n break\r\n case 'daterange':\r\n case 'week':\r\n case 'date':\r\n format = 'YYYY-MM-DD'\r\n break\r\n case 'datetimerange':\r\n case 'datetime':\r\n format = 'YYYY-MM-DD HH:mm:ss'\r\n break\r\n case 'time':\r\n format = 'HH:mm:ss'\r\n break\r\n }\r\n return format\r\n}\r\n\r\n/**\r\n * 处理需要远程获取字典的配置\r\n */\r\nconst getAllRemoteDics = () => {\r\n const hasDicUrl = formOption.value?.column?.some((column) => column.dicUrl)\r\n if (hasDicUrl && !globalConfig.value?.httpGet) {\r\n debugWarn('MForm', 'global config httpGet is null')\r\n return\r\n }\r\n /**\r\n * 调用接口设置到dicData\r\n * @param column 列配置\r\n */\r\n const updateRemoteDic = (column: IFormColumn) => {\r\n return new Promise((resolve) => {\r\n let isSuccess = false\r\n // @ts-ignore\r\n globalConfig.value\r\n .httpGet(column.dicUrl, column.dicQuery, column.dicHeaders)\r\n .then((e: any) => {\r\n // @ts-ignore\r\n const { list, label, value } = column.dicFormatter(e)\r\n if (list && Array.isArray(list)) {\r\n column['dicData'] = list.map((item) => {\r\n const lastLabel = label.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return item[key] || match\r\n })\r\n return {\r\n label: lastLabel,\r\n value: item[value],\r\n }\r\n })\r\n isSuccess = true\r\n }\r\n })\r\n .finally(() => {\r\n if (!isSuccess) {\r\n column['dicData'] = []\r\n }\r\n resolve(null)\r\n })\r\n })\r\n }\r\n for (let i = 0; i < (formOption.value?.column || []).length; i++) {\r\n // @ts-ignore\r\n const column = formOption.value.column[i]\r\n if (column.dicUrl) {\r\n if (!column.dicFormatter) {\r\n debugWarn('MForm', 'dicUrl and dicFormatter must be used together')\r\n continue\r\n }\r\n updateRemoteDic(column)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据配置获取表单项的绑定事件\r\n * @param column\r\n */\r\nconst getFormItemEventBind = (column: IFormColumn): object => {\r\n const result: any = {}\r\n for (const key in column) {\r\n if (key.startsWith('event')) {\r\n let funName = key.replace('event', '')\r\n funName = funName.charAt(0).toLowerCase() + funName.slice(1)\r\n // @ts-ignore\r\n result[funName] = column[key]\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * 解析字典并展示\r\n * @param row 行数据\r\n * @param column 列配置\r\n */\r\nconst formatDicValue = (row: any, column: IFormColumn) => {\r\n // 未拿到字典值的placeholder\r\n let dictLabel: string | undefined = ''\r\n // 查找\r\n const findLabelByValue = (dicData: IDictValue[], value: any) => {\r\n const dictItem = (dicData || []).find((dict) => dict.value === value)\r\n if (dictItem === undefined) {\r\n return dictLabel\r\n }\r\n return dictItem.label\r\n }\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n column.type === 'checkbox'\r\n ) {\r\n // select下拉且开启多选/多选模式\r\n let values: any = []\r\n\r\n if (\r\n row[column.prop || ''] != null &&\r\n row[column.prop || ''] != undefined &&\r\n row[column.prop || ''] !== ''\r\n ) {\r\n if (Array.isArray(row[column.prop || ''])) {\r\n // 数据就是数组\r\n values = row[column.prop || '']\r\n } else if (typeof row[column.prop || ''] === 'string') {\r\n // 数据是字符串,启动字符分割,后续需要弄成从配置读取\r\n values = row[column.prop || ''].split(',')\r\n } else {\r\n // 最后情况变成数组\r\n values = [row[column.prop || '']]\r\n }\r\n }\r\n // 结果集合\r\n const result: string[] = []\r\n for (const value of values) {\r\n dictLabel = findLabelByValue(column.dicData || [], value)\r\n if (dictLabel === undefined) {\r\n break\r\n }\r\n result.push(dictLabel)\r\n }\r\n return result.join(',')\r\n }\r\n // 单模式\r\n dictLabel = findLabelByValue(column.dicData || [], row[column.prop || ''])\r\n return dictLabel\r\n}\r\n\r\n/**\r\n * 拿到详情模式下的图片集合\r\n * @param row\r\n * @param column\r\n */\r\nconst getDetailPic = (row: any, column: IFormColumn) => {\r\n if (!row || !row[column.prop || '']) {\r\n return []\r\n }\r\n const pics: string[] = row[column.prop || '']\r\n .split(column.imgSuffix || ';')\r\n .map((pic: string) => (column.imgPrefix || '') + pic)\r\n return pics\r\n}\r\n\r\nconst getValueColspan = (\r\n item: IFormColumn,\r\n rows: IFormColumn[],\r\n index: number\r\n) => {\r\n const getRemaining = (row: IFormColumn[]) => {\r\n const used = row.reduce((acc, item) => acc + (item.span || 12), 0)\r\n return 24 - used\r\n }\r\n if (index === rows.length - 1) {\r\n return (item.span || 12) + getRemaining(rows) - 1\r\n }\r\n return (item.span || 12) - 1\r\n}\r\n\r\n/**\r\n * @description 校验表单\r\n */\r\nconst validForm = (): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n formRef.value!.validate((valid) => {\r\n resolve(valid)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * @description 清空数据和校验规则\r\n */\r\nconst clear = () => {\r\n // 清空校验规则\r\n formRef.value?.clearValidate()\r\n // 清空表单数据\r\n formRef.value?.resetFields()\r\n}\r\n\r\nwatch(\r\n () => props.option as IFormOption,\r\n (newVal: IFormOption) => {\r\n if (newVal) {\r\n formOption.value = Object.assign({}, formOption.value, newVal)\r\n if (newVal.column) {\r\n formOption.value.column = cloneDeep(\r\n newVal.column\r\n .filter(\r\n (column) => !(props.permission[column.prop || ''] === false)\r\n )\r\n .sort((a, b) => (b.order || 0) - (a.order || 0))\r\n )\r\n // 处理远程字典的配置\r\n getAllRemoteDics()\r\n if (!props.readonly) {\r\n // 初始化表单的值\r\n initValue()\r\n }\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\ndefineExpose({\r\n /**\r\n * @description 校验表单\r\n */\r\n validForm,\r\n /**\r\n * @description 清空表单\r\n */\r\n clear,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"m-form\">\r\n <!--编辑模式-->\r\n <el-form\r\n v-if=\"!readonly\"\r\n ref=\"formRef\"\r\n :model=\"proxys\"\r\n :disabled=\"loading\"\r\n :size=\"size || globalConfig.size\"\r\n :label-width=\"formOption.labelWidth\"\r\n style=\"width: 100%\"\r\n @submit.prevent\r\n >\r\n <el-row :gutter=\"0\">\r\n <el-col\r\n v-for=\"(column, columnIndex) in formOption.column\"\r\n :key=\"columnIndex\"\r\n :span=\"column.span || 12\"\r\n >\r\n <el-form-item\r\n style=\"width: 100%\"\r\n :label=\"column.label + ':'\"\r\n :prop=\"column.prop\"\r\n :rules=\"column.rules\"\r\n :label-width=\"column.labelWidth || formOption.labelWidth\"\r\n >\r\n <!--插槽信息-->\r\n <slot\r\n v-if=\"slots[column.prop || '']\"\r\n :name=\"column.prop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--输入框-->\r\n <el-input\r\n v-else-if=\"!column.type || INPUT_TYPES.includes(column.type)\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :placeholder=\"column.placeholder\"\r\n :maxlength=\"column.maxlength\"\r\n :show-word-limit=\"column.showWordLimit\"\r\n :show-password=\"column.showPassword\"\r\n :disabled=\"column.disabled || false\"\r\n :type=\"\r\n !column.type || column.type === 'input' ? 'text' : column.type\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <!---->\r\n <!--下拉框-->\r\n <el-select\r\n v-else-if=\"column.type === 'select'\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n :placeholder=\"column.placeholder\"\r\n :multiple=\"column.multiple\"\r\n :clearable=\"column.clearable\"\r\n :filterable=\"column.filterable\"\r\n :filter-method=\"column.filterMethod\"\r\n :remote=\"column.remote\"\r\n :remote-method=\"column.remoteMethod\"\r\n :loading=\"column.loading\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-option\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-select>\r\n <!---->\r\n <!--radio-->\r\n <el-radio-group\r\n v-else-if=\"column.type === 'radio'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n style=\"width: 100%\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-radio\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :value=\"dicItem.value\"\r\n :label=\"dicItem.value\"\r\n >\r\n {{ dicItem.label }}\r\n </el-radio>\r\n </el-radio-group>\r\n <!---->\r\n <!--checkbox-->\r\n <el-checkbox-group\r\n v-else-if=\"column.type === 'checkbox'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-checkbox\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-checkbox-group>\r\n <!---->\r\n <!--switch-->\r\n <template v-else-if=\"column.type === 'switch'\">\r\n <span\r\n v-if=\"!column.dicData || column.dicData.length != 2\"\r\n style=\"\r\n color: var(--el-text-color-placeholder);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\"dicData/dicUrl的结果\"未设置或长度不等于2</span\r\n >\r\n <template v-else>\r\n <el-switch\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :active-value=\"column.dicData[0].value\"\r\n :inactive-value=\"column.dicData[1].value\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <span\r\n style=\"\r\n font-size: var(--el-font-size-base);\r\n color: var(--el-text-color-regular);\r\n margin-left: 6px;\r\n \"\r\n >{{\r\n proxys[column.prop || ''] === column.dicData[0].value\r\n ? column.dicData[0].label\r\n : column.dicData[1].label\r\n }}</span\r\n >\r\n </template>\r\n </template>\r\n <!---->\r\n <!--时间-->\r\n <template v-else-if=\"DATE_TYPES.includes(column.type)\">\r\n <el-date-picker\r\n v-if=\"column.type !== 'time' && column.type !== 'timerange'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :type=\"column.type\"\r\n :clearable=\"column.clearable\"\r\n :disabled=\"column.disabled || false\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :format=\"column.format\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <el-time-picker\r\n v-else\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :is-range=\"column.type === 'timerange'\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n </template>\r\n <!---->\r\n <!--picture-->\r\n <span\r\n v-else-if=\"column.type === 'picture'\"\r\n style=\"\r\n color: var(--el-text-color-regular);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\r\n 暂不支持picture,请使用插槽自行实现\r\n </span>\r\n <!---->\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!---->\r\n <!--详情模式-->\r\n <template v-else>\r\n <table class=\"detail-desc\">\r\n <tbody>\r\n <tr v-for=\"(row, rowIndex) in detailTableRows\" :key=\"rowIndex\">\r\n <template v-for=\"(column, index) in row\" :key=\"index\">\r\n <td\r\n :style=\"{ width: column.labelWidth || formOption.labelWidth }\"\r\n colspan=\"1\"\r\n class=\"label\"\r\n >\r\n {{ column.label }}\r\n </td>\r\n <td :colspan=\"getValueColspan(column, row, index)\">\r\n <template v-if=\"column.type === 'picture'\">\r\n <MPicture\r\n :src=\"getDetailPic(proxys, column)[0]\"\r\n :preview-src-list=\"getDetailPic(proxys, column)[0]\"\r\n img-width=\"100px\"\r\n img-height=\"100px\"\r\n />\r\n </template>\r\n <template v-else-if=\"NEED_DIC_TYPE.includes(column.type || '')\">\r\n {{ formatDicValue(proxys, column) }}\r\n </template>\r\n <template v-else-if=\"column.type === 'qrcode'\">\r\n <MQrcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.type === 'barcode'\">\r\n <MBarcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else>\r\n {{ proxys[column.prop || ''] }}\r\n </template>\r\n </td>\r\n </template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent","item"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"form.mjs","sources":["../../../../../../../packages/components/form/src/form.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nimport { computed, ref, useSlots, watch } from 'vue'\r\nimport { cloneDeep, get, set } from 'lodash-unified'\r\nimport { useGlobalConfig } from '@m-eleplus-crud/components'\r\nimport { debugWarn } from '@m-eleplus-crud/utils'\r\nimport { formEmits, formProps } from './form'\r\nimport type { IDictValue } from '@m-eleplus-crud/components/common'\r\nimport type { FormInstance } from 'element-plus'\r\nimport type { IFormColumn, IFormOption } from './form'\r\n\r\nconst COMPONENT_NAME = 'MForm'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(formProps)\r\ndefineEmits(formEmits)\r\n\r\n// 插槽信息\r\nconst slots = useSlots() as any\r\n\r\n// 全局配置\r\nconst globalConfig = useGlobalConfig()\r\n\r\n// 表单实例\r\nconst formRef = ref<FormInstance>()\r\n\r\n// 表单输入类型\r\nconst INPUT_TYPES = [\r\n 'input',\r\n 'textarea',\r\n 'number',\r\n 'password',\r\n 'qrcode',\r\n 'barcode',\r\n]\r\n\r\n// 日期类型\r\nconst DATE_TYPES = [\r\n 'year',\r\n 'month',\r\n 'date',\r\n 'datetime',\r\n 'week',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'time',\r\n 'timerange',\r\n]\r\n\r\n// 需要字典显示处理\r\nconst NEED_DIC_TYPE = ['select', 'checkbox', 'radio', 'switch']\r\n\r\n// 表单配置\r\nconst formOption = ref<IFormOption>({\r\n // 默认标签宽度80px\r\n labelWidth: '80px',\r\n column: [],\r\n})\r\n\r\n/**\r\n * @description 计算详情模式下的表格行\r\n */\r\nconst detailTableRows = computed(() => {\r\n const rows = []\r\n let currentRow = []\r\n let currentTotal = 0\r\n for (const item of formOption.value.column || []) {\r\n const req = item.span || 12\r\n // 若当前行加入该项超过总列数,则开启新行\r\n if (currentTotal + req > 24) {\r\n rows.push(currentRow)\r\n currentRow = []\r\n currentTotal = 0\r\n }\r\n currentRow.push(item)\r\n currentTotal += req\r\n }\r\n if (currentRow.length) rows.push(currentRow)\r\n return rows\r\n})\r\n\r\n// 表单model\r\nconst proxys = new Proxy(props.model as any, {\r\n get(target, property) {\r\n return get(target, property)\r\n },\r\n set(target, property, value) {\r\n set(target, property, value)\r\n return true\r\n },\r\n})\r\n\r\n/**\r\n * @description 初始化表单的值\r\n */\r\nconst initValue = () => {\r\n // 初始化搜索表单的值\r\n if (formOption.value && formOption.value.column) {\r\n for (let i = 0; i < formOption.value.column?.length; i++) {\r\n const column = formOption.value.column[i]\r\n if (column.prop && proxys[column.prop] === undefined) {\r\n if (column.value) {\r\n proxys[column.prop] = column.value\r\n } else {\r\n const ARR_TYPES = [\r\n 'checkbox',\r\n 'datetimerange',\r\n 'daterange',\r\n 'monthrange',\r\n 'yearrange',\r\n 'timerange',\r\n ]\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n ARR_TYPES.includes(column.type || '')\r\n ) {\r\n proxys[column.prop] = []\r\n } else {\r\n proxys[column.prop] = ''\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据类型获取默认时间格式\r\n * @param type 类型\r\n */\r\nconst getValueFormatByType = (type: string) => {\r\n let format = ''\r\n switch (type) {\r\n case 'yearrange':\r\n case 'year':\r\n format = 'YYYY'\r\n break\r\n case 'monthrange':\r\n case 'month':\r\n format = 'YYYY-MM'\r\n break\r\n case 'daterange':\r\n case 'week':\r\n case 'date':\r\n format = 'YYYY-MM-DD'\r\n break\r\n case 'datetimerange':\r\n case 'datetime':\r\n format = 'YYYY-MM-DD HH:mm:ss'\r\n break\r\n case 'time':\r\n format = 'HH:mm:ss'\r\n break\r\n }\r\n return format\r\n}\r\n\r\n/**\r\n * 处理需要远程获取字典的配置\r\n */\r\nconst getAllRemoteDics = () => {\r\n const hasDicUrl = formOption.value?.column?.some((column) => column.dicUrl)\r\n if (hasDicUrl && !globalConfig.value?.httpGet) {\r\n debugWarn('MForm', 'global config httpGet is null')\r\n return\r\n }\r\n /**\r\n * 调用接口设置到dicData\r\n * @param column 列配置\r\n */\r\n const updateRemoteDic = (column: IFormColumn) => {\r\n return new Promise((resolve) => {\r\n let isSuccess = false\r\n // @ts-ignore\r\n globalConfig.value\r\n .httpGet(column.dicUrl, column.dicQuery, column.dicHeaders)\r\n .then((e: any) => {\r\n // @ts-ignore\r\n const { list, label, value } = column.dicFormatter(e)\r\n if (list && Array.isArray(list)) {\r\n column['dicData'] = list.map((item) => {\r\n const lastLabel = label.replace(/\\{(\\w+)\\}/g, (match, key) => {\r\n return item[key] || match\r\n })\r\n return {\r\n label: lastLabel,\r\n value: item[value],\r\n }\r\n })\r\n isSuccess = true\r\n }\r\n })\r\n .finally(() => {\r\n if (!isSuccess) {\r\n column['dicData'] = []\r\n }\r\n resolve(null)\r\n })\r\n })\r\n }\r\n for (let i = 0; i < (formOption.value?.column || []).length; i++) {\r\n // @ts-ignore\r\n const column = formOption.value.column[i]\r\n if (column.dicUrl) {\r\n if (!column.dicFormatter) {\r\n debugWarn('MForm', 'dicUrl and dicFormatter must be used together')\r\n continue\r\n }\r\n updateRemoteDic(column)\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 根据配置获取表单项的绑定事件\r\n * @param column\r\n */\r\nconst getFormItemEventBind = (column: IFormColumn): object => {\r\n const result: any = {}\r\n for (const key in column) {\r\n if (key.startsWith('event')) {\r\n let funName = key.replace('event', '')\r\n funName = funName.charAt(0).toLowerCase() + funName.slice(1)\r\n // @ts-ignore\r\n result[funName] = column[key]\r\n }\r\n }\r\n return result\r\n}\r\n\r\n/**\r\n * 解析字典并展示\r\n * @param row 行数据\r\n * @param column 列配置\r\n */\r\nconst formatDicValue = (row: any, column: IFormColumn) => {\r\n // 未拿到字典值的placeholder\r\n let dictLabel: string | undefined = ''\r\n // 查找\r\n const findLabelByValue = (dicData: IDictValue[], value: any) => {\r\n const dictItem = (dicData || []).find((dict) => dict.value === value)\r\n if (dictItem === undefined) {\r\n return dictLabel\r\n }\r\n return dictItem.label\r\n }\r\n if (\r\n (column.type === 'select' && column.multiple) ||\r\n column.type === 'checkbox'\r\n ) {\r\n // select下拉且开启多选/多选模式\r\n let values: any = []\r\n\r\n if (\r\n row[column.prop || ''] != null &&\r\n row[column.prop || ''] != undefined &&\r\n row[column.prop || ''] !== ''\r\n ) {\r\n if (Array.isArray(row[column.prop || ''])) {\r\n // 数据就是数组\r\n values = row[column.prop || '']\r\n } else if (typeof row[column.prop || ''] === 'string') {\r\n // 数据是字符串,启动字符分割,后续需要弄成从配置读取\r\n values = row[column.prop || ''].split(',')\r\n } else {\r\n // 最后情况变成数组\r\n values = [row[column.prop || '']]\r\n }\r\n }\r\n // 结果集合\r\n const result: string[] = []\r\n for (const value of values) {\r\n dictLabel = findLabelByValue(column.dicData || [], value)\r\n if (dictLabel === undefined) {\r\n break\r\n }\r\n result.push(dictLabel)\r\n }\r\n return result.join(',')\r\n }\r\n // 单模式\r\n dictLabel = findLabelByValue(column.dicData || [], row[column.prop || ''])\r\n return dictLabel\r\n}\r\n\r\n/**\r\n * 拿到详情模式下的图片集合\r\n * @param row\r\n * @param column\r\n */\r\nconst getDetailPic = (row: any, column: IFormColumn) => {\r\n if (!row || !row[column.prop || '']) {\r\n return []\r\n }\r\n const pics: string[] = row[column.prop || '']\r\n .split(column.imgSuffix || ';')\r\n .map((pic: string) => (column.imgPrefix || '') + pic)\r\n return pics\r\n}\r\n\r\nconst getValueColspan = (\r\n item: IFormColumn,\r\n rows: IFormColumn[],\r\n index: number\r\n) => {\r\n const getRemaining = (row: IFormColumn[]) => {\r\n const used = row.reduce((acc, item) => acc + (item.span || 12), 0)\r\n return 24 - used\r\n }\r\n if (index === rows.length - 1) {\r\n return (item.span || 12) + getRemaining(rows) - 1\r\n }\r\n return (item.span || 12) - 1\r\n}\r\n\r\n/**\r\n * @description 校验表单\r\n */\r\nconst validForm = (): Promise<boolean> => {\r\n return new Promise((resolve) => {\r\n formRef.value!.validate((valid) => {\r\n resolve(valid)\r\n })\r\n })\r\n}\r\n\r\n/**\r\n * @description 清空数据和校验规则\r\n */\r\nconst clear = () => {\r\n // 清空校验规则\r\n formRef.value?.clearValidate()\r\n // 清空表单数据\r\n formRef.value?.resetFields()\r\n}\r\n\r\nwatch(\r\n () => props.option as IFormOption,\r\n (newVal: IFormOption) => {\r\n if (newVal) {\r\n formOption.value = Object.assign({}, formOption.value, newVal)\r\n if (newVal.column) {\r\n formOption.value.column = cloneDeep(\r\n newVal.column\r\n .filter(\r\n (column) => !(props.permission[column.prop || ''] === false)\r\n )\r\n .sort((a, b) => (b.order || 0) - (a.order || 0))\r\n )\r\n // 处理远程字典的配置\r\n getAllRemoteDics()\r\n if (!props.readonly) {\r\n // 初始化表单的值\r\n initValue()\r\n }\r\n }\r\n }\r\n },\r\n {\r\n immediate: true,\r\n deep: true,\r\n }\r\n)\r\n\r\ndefineExpose({\r\n /**\r\n * @description 校验表单\r\n */\r\n validForm,\r\n /**\r\n * @description 清空表单\r\n */\r\n clear,\r\n})\r\n</script>\r\n\r\n<template>\r\n <div class=\"m-form\">\r\n <!--编辑模式-->\r\n <el-form\r\n v-if=\"!readonly\"\r\n ref=\"formRef\"\r\n :model=\"proxys\"\r\n :disabled=\"loading\"\r\n :size=\"size || globalConfig.size\"\r\n :label-width=\"formOption.labelWidth\"\r\n style=\"width: 100%\"\r\n @submit.prevent\r\n >\r\n <el-row :gutter=\"0\">\r\n <el-col\r\n v-for=\"(column, columnIndex) in formOption.column\"\r\n :key=\"columnIndex\"\r\n :span=\"column.span || 12\"\r\n >\r\n <el-form-item\r\n style=\"width: 100%\"\r\n :label=\"column.label + ':'\"\r\n :prop=\"column.prop\"\r\n :rules=\"column.rules\"\r\n :label-width=\"column.labelWidth || formOption.labelWidth\"\r\n >\r\n <!--插槽信息-->\r\n <slot\r\n v-if=\"slots[column.prop || '']\"\r\n :name=\"column.prop\"\r\n v-bind=\"{ size: size || globalConfig.size, loading: loading }\"\r\n />\r\n <!---->\r\n <!--输入框-->\r\n <el-input\r\n v-else-if=\"!column.type || INPUT_TYPES.includes(column.type)\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :placeholder=\"column.placeholder\"\r\n :maxlength=\"column.maxlength\"\r\n :show-word-limit=\"column.showWordLimit\"\r\n :show-password=\"column.showPassword\"\r\n :disabled=\"column.disabled || false\"\r\n :type=\"\r\n !column.type || column.type === 'input' ? 'text' : column.type\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <!---->\r\n <!--下拉框-->\r\n <el-select\r\n v-else-if=\"column.type === 'select'\"\r\n v-model.trim=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n :placeholder=\"column.placeholder\"\r\n :multiple=\"column.multiple\"\r\n :clearable=\"column.clearable\"\r\n :filterable=\"column.filterable\"\r\n :filter-method=\"column.filterMethod\"\r\n :remote=\"column.remote\"\r\n :remote-method=\"column.remoteMethod\"\r\n :loading=\"column.loading\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-option\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-select>\r\n <!---->\r\n <!--radio-->\r\n <el-radio-group\r\n v-else-if=\"column.type === 'radio'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n style=\"width: 100%\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-radio\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :value=\"dicItem.value\"\r\n :label=\"dicItem.value\"\r\n >\r\n {{ dicItem.label }}\r\n </el-radio>\r\n </el-radio-group>\r\n <!---->\r\n <!--checkbox-->\r\n <el-checkbox-group\r\n v-else-if=\"column.type === 'checkbox'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n style=\"width: 100%\"\r\n :disabled=\"column.disabled || false\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n >\r\n <el-checkbox\r\n v-for=\"(dicItem, dicIndex) in column.dicData || []\"\r\n :key=\"dicIndex\"\r\n :label=\"dicItem.label\"\r\n :value=\"dicItem.value\"\r\n />\r\n </el-checkbox-group>\r\n <!---->\r\n <!--switch-->\r\n <template v-else-if=\"column.type === 'switch'\">\r\n <span\r\n v-if=\"!column.dicData || column.dicData.length != 2\"\r\n style=\"\r\n color: var(--el-text-color-placeholder);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\"dicData/dicUrl的结果\"未设置或长度不等于2</span\r\n >\r\n <template v-else>\r\n <el-switch\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :active-value=\"column.dicData[0].value\"\r\n :inactive-value=\"column.dicData[1].value\"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <span\r\n style=\"\r\n font-size: var(--el-font-size-base);\r\n color: var(--el-text-color-regular);\r\n margin-left: 6px;\r\n \"\r\n >{{\r\n proxys[column.prop || ''] === column.dicData[0].value\r\n ? column.dicData[0].label\r\n : column.dicData[1].label\r\n }}</span\r\n >\r\n </template>\r\n </template>\r\n <!---->\r\n <!--时间-->\r\n <template v-else-if=\"DATE_TYPES.includes(column.type)\">\r\n <el-date-picker\r\n v-if=\"column.type !== 'time' && column.type !== 'timerange'\"\r\n v-model=\"proxys[column.prop || '']\"\r\n :type=\"column.type\"\r\n :clearable=\"column.clearable\"\r\n :disabled=\"column.disabled || false\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :format=\"column.format\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n <el-time-picker\r\n v-else\r\n v-model=\"proxys[column.prop || '']\"\r\n :disabled=\"column.disabled || false\"\r\n :is-range=\"column.type === 'timerange'\"\r\n :clearable=\"column.clearable\"\r\n :start-placeholder=\"column.startPlaceholder\"\r\n :end-placeholder=\"column.endPlaceholder\"\r\n :value-format=\"\r\n column.valueFormat || getValueFormatByType(column.type)\r\n \"\r\n v-on=\"getFormItemEventBind(column)\"\r\n />\r\n </template>\r\n <!---->\r\n <!--picture-->\r\n <span\r\n v-else-if=\"column.type === 'picture'\"\r\n style=\"\r\n color: var(--el-text-color-regular);\r\n line-height: 32px;\r\n height: 32px;\r\n \"\r\n >\r\n 暂不支持picture,请使用插槽自行实现\r\n </span>\r\n <!---->\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <!---->\r\n <!--详情模式-->\r\n <template v-else>\r\n <table class=\"detail-desc\">\r\n <tbody>\r\n <tr v-for=\"(row, rowIndex) in detailTableRows\" :key=\"rowIndex\">\r\n <template v-for=\"(column, index) in row\" :key=\"index\">\r\n <td\r\n :style=\"{ width: column.labelWidth || formOption.labelWidth }\"\r\n colspan=\"1\"\r\n class=\"label\"\r\n >\r\n {{ column.label }}\r\n </td>\r\n <td :colspan=\"getValueColspan(column, row, index)\">\r\n <template v-if=\"column.type === 'picture'\">\r\n <MPicture\r\n :src=\"getDetailPic(proxys, column)[0]\"\r\n :preview-src-list=\"getDetailPic(proxys, column)\"\r\n img-width=\"100px\"\r\n img-height=\"100px\"\r\n />\r\n </template>\r\n <template v-else-if=\"NEED_DIC_TYPE.includes(column.type || '')\">\r\n {{ formatDicValue(proxys, column) }}\r\n </template>\r\n <template v-else-if=\"column.type === 'qrcode'\">\r\n <MQrcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else-if=\"column.type === 'barcode'\">\r\n <MBarcode\r\n v-if=\"proxys[column.prop || '']\"\r\n :text=\"proxys[column.prop || '']\"\r\n align=\"center\"\r\n />\r\n </template>\r\n <template v-else>\r\n {{ proxys[column.prop || ''] }}\r\n </template>\r\n </td>\r\n </template>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </template>\r\n </div>\r\n</template>\r\n"],"names":["DO_defineComponent","item"],"mappings":"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"}
|
|
@@ -11,13 +11,13 @@ export { MPagination } from './pagination/index.mjs';
|
|
|
11
11
|
export { configProviderProps } from './config-provider/src/config-provider-props.mjs';
|
|
12
12
|
export { configProviderContextKey } from './config-provider/src/constants.mjs';
|
|
13
13
|
export { provideGlobalConfig, useGlobalComponentSettings, useGlobalConfig } from './config-provider/src/hooks/use-global-config.mjs';
|
|
14
|
-
export { tableEmits, tableProps } from './table/src/
|
|
15
|
-
export { searchEmits, searchProps } from './search/src/
|
|
16
|
-
export { pictureEmits, pictureProps } from './picture/src/
|
|
14
|
+
export { tableEmits, tableProps } from './table/src/table.mjs';
|
|
15
|
+
export { searchEmits, searchProps } from './search/src/search2.mjs';
|
|
16
|
+
export { pictureEmits, pictureProps } from './picture/src/picture.mjs';
|
|
17
17
|
export { dialogEmits, dialogProps } from './dialog/src/dialog2.mjs';
|
|
18
|
-
export { qrcodeEmits, qrcodeProps } from './qrcode/src/
|
|
18
|
+
export { qrcodeEmits, qrcodeProps } from './qrcode/src/qrcode2.mjs';
|
|
19
19
|
export { barcodeEmits, barcodeProps } from './barcode/src/barcode2.mjs';
|
|
20
20
|
export { formEmits, formProps } from './form/src/form2.mjs';
|
|
21
|
-
export { crudEmits, crudProps } from './crud/src/
|
|
21
|
+
export { crudEmits, crudProps } from './crud/src/crud.mjs';
|
|
22
22
|
export { paginationEmits, paginationProps } from './pagination/src/pagination.mjs';
|
|
23
23
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Picture from './src/
|
|
2
|
-
export { pictureEmits, pictureProps } from './src/
|
|
1
|
+
import Picture from './src/picture2.mjs';
|
|
2
|
+
export { pictureEmits, pictureProps } from './src/picture.mjs';
|
|
3
3
|
import { withInstall } from '../../utils/vue/install.mjs';
|
|
4
4
|
|
|
5
5
|
const MPicture = withInstall(Picture);
|
|
@@ -1,31 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { pictureProps, pictureEmits } from './picture2.mjs';
|
|
3
|
-
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
|
|
1
|
+
import { buildProps } from '../../../utils/vue/props/runtime.mjs';
|
|
4
2
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
style: normalizeStyle({ width: _ctx.imgWidth, height: _ctx.imgHeight }),
|
|
22
|
-
"preview-teleported": true
|
|
23
|
-
}, null, 8, ["src", "preview-src-list", "style"])
|
|
24
|
-
]);
|
|
25
|
-
};
|
|
3
|
+
const pictureProps = buildProps({
|
|
4
|
+
src: {
|
|
5
|
+
type: String,
|
|
6
|
+
required: true
|
|
7
|
+
},
|
|
8
|
+
previewSrcList: {
|
|
9
|
+
type: Array,
|
|
10
|
+
required: true
|
|
11
|
+
},
|
|
12
|
+
imgWidth: {
|
|
13
|
+
type: String,
|
|
14
|
+
default: "70px"
|
|
15
|
+
},
|
|
16
|
+
imgHeight: {
|
|
17
|
+
type: String,
|
|
18
|
+
default: "70px"
|
|
26
19
|
}
|
|
27
20
|
});
|
|
28
|
-
|
|
21
|
+
const pictureEmits = {};
|
|
29
22
|
|
|
30
|
-
export {
|
|
23
|
+
export { pictureEmits, pictureProps };
|
|
31
24
|
//# sourceMappingURL=picture.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picture.mjs","sources":["../../../../../../../packages/components/picture/src/picture.
|
|
1
|
+
{"version":3,"file":"picture.mjs","sources":["../../../../../../../packages/components/picture/src/picture.ts"],"sourcesContent":["import { buildProps } from '@m-eleplus-crud/utils'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\n\r\nexport const pictureProps = buildProps({\r\n /**\r\n * @description 图片url资源\r\n */\r\n src: {\r\n type: String,\r\n required: true,\r\n },\r\n /**\r\n * @description 预览图片url资源集合\r\n */\r\n previewSrcList: {\r\n type: Array,\r\n required: true,\r\n },\r\n /**\r\n * @description 图片宽度\r\n */\r\n imgWidth: {\r\n type: String,\r\n default: '70px',\r\n },\r\n /**\r\n * @description 图片高度\r\n */\r\n imgHeight: {\r\n type: String,\r\n default: '70px',\r\n },\r\n} as const)\r\nexport type PictureProps = ExtractPropTypes<typeof pictureProps>\r\n\r\nexport const pictureEmits = {}\r\nexport type PictureEmits = typeof pictureEmits\r\n"],"names":[],"mappings":";;AAIO,MAAM,eAAe,UAAW,CAAA;AAAA,EAIrC,GAAK,EAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,cAAgB,EAAA;AAAA,IACd,IAAM,EAAA,KAAA;AAAA,IACN,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EAIA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AAAA,EAIA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,MAAA;AAAA,GACX;AACF,CAAU,EAAA;AAGH,MAAM,eAAe;;;;"}
|
|
@@ -1,24 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineComponent, resolveComponent, openBlock, createElementBlock, createVNode, normalizeStyle } from 'vue';
|
|
2
|
+
import { pictureProps, pictureEmits } from './picture.mjs';
|
|
3
|
+
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
|
|
2
4
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
5
|
+
const COMPONENT_NAME = "MPicture";
|
|
6
|
+
const __default__ = defineComponent({
|
|
7
|
+
name: COMPONENT_NAME
|
|
8
|
+
});
|
|
9
|
+
const _sfc_main = defineComponent({
|
|
10
|
+
...__default__,
|
|
11
|
+
props: pictureProps,
|
|
12
|
+
emits: pictureEmits,
|
|
13
|
+
setup(__props) {
|
|
14
|
+
return (_ctx, _cache) => {
|
|
15
|
+
const _component_el_image = resolveComponent("el-image");
|
|
16
|
+
return openBlock(), createElementBlock("div", { class: "m-picture" }, [
|
|
17
|
+
createVNode(_component_el_image, {
|
|
18
|
+
src: _ctx.src,
|
|
19
|
+
"preview-src-list": _ctx.previewSrcList,
|
|
20
|
+
fit: "cover",
|
|
21
|
+
style: normalizeStyle({ width: _ctx.imgWidth, height: _ctx.imgHeight }),
|
|
22
|
+
"preview-teleported": true
|
|
23
|
+
}, null, 8, ["src", "preview-src-list", "style"])
|
|
24
|
+
]);
|
|
25
|
+
};
|
|
19
26
|
}
|
|
20
27
|
});
|
|
21
|
-
|
|
28
|
+
var Picture = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "picture.vue"]]);
|
|
22
29
|
|
|
23
|
-
export {
|
|
30
|
+
export { Picture as default };
|
|
24
31
|
//# sourceMappingURL=picture2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"picture2.mjs","sources":["../../../../../../../packages/components/picture/src/picture.
|
|
1
|
+
{"version":3,"file":"picture2.mjs","sources":["../../../../../../../packages/components/picture/src/picture.vue"],"sourcesContent":["<template>\r\n <div class=\"m-picture\">\r\n <el-image\r\n :src=\"src\"\r\n :preview-src-list=\"previewSrcList\"\r\n fit=\"cover\"\r\n :style=\"{ width: imgWidth, height: imgHeight }\"\r\n :preview-teleported=\"true\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { pictureEmits, pictureProps } from './picture'\r\n\r\nconst COMPONENT_NAME = 'MPicture'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\ndefineProps(pictureProps)\r\ndefineEmits(pictureEmits)\r\n</script>\r\n"],"names":["DO_defineComponent"],"mappings":";;;;;AAgBc,MAAA,cAAAA,eAAA,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Qrcode from './src/
|
|
2
|
-
export { qrcodeEmits, qrcodeProps } from './src/
|
|
1
|
+
import Qrcode from './src/qrcode.mjs';
|
|
2
|
+
export { qrcodeEmits, qrcodeProps } from './src/qrcode2.mjs';
|
|
3
3
|
import { withInstall } from '../../utils/vue/install.mjs';
|
|
4
4
|
|
|
5
5
|
const MQrcode = withInstall(Qrcode);
|
|
@@ -1,27 +1,67 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { defineComponent, ref, computed, watch, openBlock, createElementBlock, normalizeStyle } from 'vue';
|
|
2
|
+
import Qrcode$1 from 'qrcodejs2-fix';
|
|
3
|
+
import { qrcodeProps, qrcodeEmits } from './qrcode2.mjs';
|
|
4
|
+
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
|
|
3
5
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
const COMPONENT_NAME = "MQrcode";
|
|
7
|
+
const __default__ = defineComponent({
|
|
8
|
+
name: COMPONENT_NAME
|
|
9
|
+
});
|
|
10
|
+
const _sfc_main = defineComponent({
|
|
11
|
+
...__default__,
|
|
12
|
+
props: qrcodeProps,
|
|
13
|
+
emits: qrcodeEmits,
|
|
14
|
+
setup(__props, { emit: __emit }) {
|
|
15
|
+
const props = __props;
|
|
16
|
+
const emit = __emit;
|
|
17
|
+
const qrcodeRef = ref();
|
|
18
|
+
const alignComputed = computed(() => {
|
|
19
|
+
if (!props.align || props.align === "left") {
|
|
20
|
+
return "flex-start";
|
|
21
|
+
}
|
|
22
|
+
if (props.align === "right") {
|
|
23
|
+
return "flex-end";
|
|
24
|
+
}
|
|
25
|
+
return "center";
|
|
26
|
+
});
|
|
27
|
+
watch(
|
|
28
|
+
() => props.text,
|
|
29
|
+
(newVal) => {
|
|
30
|
+
if (!newVal)
|
|
31
|
+
return;
|
|
32
|
+
setTimeout(() => {
|
|
33
|
+
qrcodeRef.value.innerHTML = "";
|
|
34
|
+
new Qrcode$1(qrcodeRef.value, {
|
|
35
|
+
text: newVal,
|
|
36
|
+
width: props.qrcodeWidth,
|
|
37
|
+
height: props.qrcodeHeight
|
|
38
|
+
});
|
|
39
|
+
const img = qrcodeRef.value.querySelector("img");
|
|
40
|
+
img.onclick = () => {
|
|
41
|
+
emit("click", newVal);
|
|
42
|
+
};
|
|
43
|
+
}, 0);
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
immediate: true
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
return (_ctx, _cache) => {
|
|
50
|
+
return openBlock(), createElementBlock(
|
|
51
|
+
"div",
|
|
52
|
+
{
|
|
53
|
+
ref_key: "qrcodeRef",
|
|
54
|
+
ref: qrcodeRef,
|
|
55
|
+
class: "m-qrcode-box",
|
|
56
|
+
style: normalizeStyle("justify-content: " + alignComputed.value)
|
|
57
|
+
},
|
|
58
|
+
null,
|
|
59
|
+
4
|
|
60
|
+
);
|
|
61
|
+
};
|
|
20
62
|
}
|
|
21
63
|
});
|
|
22
|
-
|
|
23
|
-
click: (val) => isString(val)
|
|
24
|
-
};
|
|
64
|
+
var Qrcode = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "qrcode.vue"]]);
|
|
25
65
|
|
|
26
|
-
export {
|
|
66
|
+
export { Qrcode as default };
|
|
27
67
|
//# sourceMappingURL=qrcode.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qrcode.mjs","sources":["../../../../../../../packages/components/qrcode/src/qrcode.
|
|
1
|
+
{"version":3,"file":"qrcode.mjs","sources":["../../../../../../../packages/components/qrcode/src/qrcode.vue"],"sourcesContent":["<template>\r\n <div\r\n ref=\"qrcodeRef\"\r\n class=\"m-qrcode-box\"\r\n :style=\"'justify-content: ' + alignComputed\"\r\n />\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { computed, ref, watch } from 'vue'\r\n// @ts-ignore\r\nimport Qrcode from 'qrcodejs2-fix'\r\nimport { qrcodeEmits, qrcodeProps } from './qrcode'\r\n\r\nconst COMPONENT_NAME = 'MQrcode'\r\ndefineOptions({\r\n name: COMPONENT_NAME,\r\n})\r\n\r\nconst props = defineProps(qrcodeProps)\r\nconst emit = defineEmits(qrcodeEmits)\r\n\r\nconst qrcodeRef = ref<any>()\r\n\r\nconst alignComputed = computed(() => {\r\n if (!props.align || props.align === 'left') {\r\n return 'flex-start'\r\n }\r\n if (props.align === 'right') {\r\n return 'flex-end'\r\n }\r\n return 'center'\r\n})\r\n\r\nwatch(\r\n () => props.text as string,\r\n (newVal: string) => {\r\n if (!newVal) return\r\n setTimeout(() => {\r\n qrcodeRef.value.innerHTML = ''\r\n new Qrcode(qrcodeRef.value, {\r\n text: newVal,\r\n width: props.qrcodeWidth,\r\n height: props.qrcodeHeight,\r\n })\r\n const img = qrcodeRef.value.querySelector('img')\r\n img.onclick = () => {\r\n emit('click', newVal)\r\n }\r\n }, 0)\r\n },\r\n {\r\n immediate: true,\r\n }\r\n)\r\n</script>\r\n"],"names":["DO_defineComponent","Qrcode"],"mappings":";;;;;;AAec,MAAA,cAAAA,eAAA,CAAA;AAAA,EACZ,IAAM,EAAA,cAAA;AACR;;;;;;AAEA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AAEb,IAAA,MAAM,YAAY,GAAS,EAAA,CAAA;AAErB,IAAA,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,MAAA,IAAI,CAAC,KAAA,CAAM,KAAS,IAAA,KAAA,CAAM,UAAU,MAAQ,EAAA;AACnC,QAAA,OAAA,YAAA,CAAA;AAAA,OACT;AACI,MAAA,IAAA,KAAA,CAAM,UAAU,OAAS,EAAA;AACpB,QAAA,OAAA,UAAA,CAAA;AAAA,OACT;AACO,MAAA,OAAA,QAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,CAAC,MAAmB,KAAA;AAClB,QAAA,IAAI,CAAC,MAAA;AAAQ,UAAA,OAAA;AACb,QAAA,UAAA,CAAW,MAAM;AACf,UAAA,SAAA,CAAU,MAAM,SAAY,GAAA,EAAA,CAAA;AACxB,UAAA,IAAAC,QAAA,CAAO,UAAU,KAAO,EAAA;AAAA,YAC1B,IAAM,EAAA,MAAA;AAAA,YACN,OAAO,KAAM,CAAA,WAAA;AAAA,YACb,QAAQ,KAAM,CAAA,YAAA;AAAA,WACf,CAAA,CAAA;AACD,UAAA,MAAM,GAAM,GAAA,SAAA,CAAU,KAAM,CAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AAC/C,UAAA,GAAA,CAAI,UAAU,MAAM;AAClB,YAAA,IAAA,CAAK,SAAS,MAAM,CAAA,CAAA;AAAA,WACtB,CAAA;AAAA,WACC,CAAC,CAAA,CAAA;AAAA,OACN;AAAA,MACA;AAAA,QACE,SAAW,EAAA,IAAA;AAAA,OACb;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;"}
|