addModal.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="处理留言"
  6. @visible-change="handleVisibleChange"
  7. okText="完成处理"
  8. @cancel="resetFields"
  9. @ok="handleSubmit"
  10. >
  11. <div class="pt-2px pr-3px">
  12. <BasicForm @register="registerForm" :model="model" >
  13. <template #text="{ model, field }">
  14. {{ model[field] }}
  15. </template>
  16. </BasicForm>
  17. </div>
  18. </BasicModal>
  19. </template>
  20. <script lang="ts">
  21. import { defineComponent, ref, nextTick, onMounted, reactive, h } from 'vue';
  22. import { BasicModal, useModalInner } from '/@/components/Modal';
  23. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  24. import { useMessage } from '/@/hooks/web/useMessage';
  25. import { uploadApi } from '/@/api/product/index';
  26. import { newAddNews, addOrUpdate } from '/@/api/operate'
  27. import { useI18n } from '/@/hooks/web/useI18n';
  28. import { Tinymce } from '/@/components/Tinymce/index';
  29. import { intercomMessageHandle } from '/@/api/operate'
  30. const { t } = useI18n();
  31. export default defineComponent({
  32. components: { BasicModal, BasicForm },
  33. props: {
  34. userData: { type: Object },
  35. },
  36. emits: ['update', 'register'],
  37. setup(props, { emit }) {
  38. const modelRef = ref({});
  39. const fileFlow = reactive({
  40. coverImageUrl:''
  41. })
  42. const { createMessage } = useMessage();
  43. const schemas: FormSchema[] = [
  44. {
  45. field: 'id',
  46. component: 'Input',
  47. show:false,
  48. label: 'id',
  49. required: false,
  50. },{
  51. field: 'noteContent',
  52. component: 'InputTextArea',
  53. required: true,
  54. label: '备注',
  55. componentProps: {
  56. maxLength: 200,
  57. placeholder: '请备注处理结果',
  58. },
  59. colProps: {
  60. span: 22,
  61. },
  62. },
  63. ];
  64. const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
  65. labelWidth: 120,
  66. schemas,
  67. showActionButtonGroup: false,
  68. actionColOptions: {
  69. span: 24,
  70. },
  71. });
  72. onMounted(() => {});
  73. let addListFunc = () => {};
  74. const [register, { closeModal }] = useModalInner((data) => {
  75. data && onDataReceive(data);
  76. });
  77. async function onDataReceive(data) {
  78. modelRef.value = data
  79. resetFields();
  80. setFieldsValue(data);
  81. }
  82. function NewTypeChange(val){
  83. console.log('NewTypeChange',val)
  84. updateSchema([
  85. { field: 'content', ifShow:val == 2,},
  86. { field: 'newsUrl', ifShow:val != 2,},
  87. ])
  88. }
  89. const handleSubmit = async () => {
  90. const params = await validate();
  91. const apiData = {
  92. ...params as any,
  93. coverImageUrl:params.coverImageUrl && params.coverImageUrl[0],
  94. content:params.newType == 1?params.newsUrl:params.content
  95. }
  96. try {
  97. await intercomMessageHandle(apiData);
  98. closeModal();
  99. resetFields();
  100. createMessage.success(t('common.optSuccess'));
  101. emit('update');
  102. } catch (error) {
  103. console.log('not passing', error);
  104. }
  105. };
  106. function handleVisibleChange(v) {
  107. v && props.userData && nextTick(() => onDataReceive(props.userData));
  108. }
  109. return {
  110. register,
  111. schemas,
  112. registerForm,
  113. model: modelRef,
  114. fileFlow,
  115. NewTypeChange,
  116. handleVisibleChange,
  117. handleSubmit,
  118. addListFunc,
  119. resetFields,
  120. t,
  121. };
  122. },
  123. });
  124. </script>