xm-cascader.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <a-form-model-item label="默认值">
  3. <xm-cascadeer-com
  4. v-model="component.attr.defaultValue"
  5. :field-names="{ label: 'name', value: 'name', children: 'children' }"
  6. :options="areaData"
  7. :placeholder="placeholder"
  8. />
  9. </a-form-model-item>
  10. </template>
  11. <script>
  12. import { Cascader } from 'ant-design-vue'
  13. import components from './_import-components/xm-cascader-import'
  14. const fieldNames = { label: 'name', value: 'name', children: 'children' }
  15. export const metaInfo = {
  16. caption: '省市区',
  17. component: {
  18. props: ['designerData'],
  19. data() {
  20. return {}
  21. },
  22. render() {
  23. const val = this.designerData.attr.defaultValue
  24. ? this.designerData.attr.defaultValue.split(',')
  25. : []
  26. import('./areadata').then((res) => {
  27. this.areaData = res.default
  28. })
  29. return (
  30. <Cascader
  31. value={val}
  32. fieldNames={fieldNames}
  33. placeholder='请选择地址'
  34. options={this.areaData}
  35. />
  36. )
  37. },
  38. },
  39. icon: 'environment',
  40. order: 700,
  41. }
  42. export const fieldProps = {
  43. dataType: 'string',
  44. }
  45. export default {
  46. name: 'XmCascader',
  47. metaInfo: {
  48. title: 'XmCascader',
  49. },
  50. components: {
  51. ...components,
  52. },
  53. data() {
  54. return {
  55. areaData: [],
  56. placeholder: '请选择地址',
  57. }
  58. },
  59. created() {
  60. import('./areadata').then((areadata) => {
  61. this.areaData = areadata
  62. })
  63. },
  64. methods: {},
  65. }
  66. </script>
  67. <style module lang="scss">
  68. @use '@/common/design' as *;
  69. </style>