xm-linkopen.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <sd-form ref="form" :init-values="fields">
  3. <template v-slot="{ model }">
  4. <sd-form-item
  5. v-for="field in fields"
  6. :key="field.name"
  7. :name="field.name"
  8. :label="field.dataType === 'collection' ? null : undefined"
  9. :hidden="!!field.sdHidden"
  10. @change="(value) => valueChange(value, field.name)"
  11. >
  12. </sd-form-item>
  13. </template>
  14. </sd-form>
  15. </template>
  16. <script>
  17. import components from './_import-components/xm-linkopen-import'
  18. export const metaInfo = {
  19. name: '链接',
  20. order: 100,
  21. }
  22. export default {
  23. name: 'XmLinkopen',
  24. components,
  25. props: {
  26. dataSource: {
  27. type: Object,
  28. default: () => {},
  29. },
  30. },
  31. data() {
  32. return {
  33. fields: [
  34. {
  35. name: 'targetLink',
  36. caption: '链接地址',
  37. dataType: 'string',
  38. required: true,
  39. },
  40. {
  41. name: 'appModuleId',
  42. caption: '应用ModuleId',
  43. dataType: 'string',
  44. },
  45. {
  46. name: 'formListId',
  47. caption: '表单ListId',
  48. dataType: 'string',
  49. },
  50. {
  51. name: 'newWindow',
  52. caption: '新窗口打开',
  53. dataType: 'selectlist',
  54. attr: {
  55. defaultValue: '1',
  56. selectListItem: [
  57. { label: '是', value: '1' },
  58. { label: '否', value: '0' },
  59. ],
  60. },
  61. },
  62. ],
  63. businessTypeOptions: [],
  64. }
  65. },
  66. computed: {},
  67. created() {
  68. // 编辑时
  69. if (Object.keys(this.dataSource).length > 0) {
  70. this.fields.forEach((f) => {
  71. const value = this.dataSource[f.name]
  72. if (value && typeof value === 'object') {
  73. f.value = JSON.stringify(value)
  74. } else {
  75. f.value = value
  76. }
  77. })
  78. } else {
  79. // 新建,赋默认值
  80. this.dataSource.newWindow = '1' // 新窗口
  81. }
  82. },
  83. methods: {
  84. validate() {
  85. return this.$refs.form.validateFields()
  86. },
  87. valueChange(value, field) {
  88. this.dataSource[field] = value.target.value
  89. },
  90. },
  91. }
  92. </script>
  93. <style module lang="scss">
  94. @use '@/common/design' as *;
  95. </style>