putModal.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="设备入库"
  6. @visible-change="handleVisibleChange"
  7. @cancel="resetFields"
  8. @ok="handleSubmit"
  9. :min-height="0"
  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 } 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 { cameraIn } from '/@/api/device'
  26. import { companyUploadExcel, downTemplate } from '/@/api/customer';
  27. import { useI18n } from '/@/hooks/web/useI18n';
  28. const { t } = useI18n();
  29. export default defineComponent({
  30. components: { BasicModal, BasicForm },
  31. props: {
  32. userData: { type: Object },
  33. },
  34. emits: ['reload',],
  35. setup(_, { emit }) {
  36. const modelRef = ref({});
  37. const fileFlow = reactive({
  38. file: null,
  39. });
  40. const { createMessage } = useMessage();
  41. const schemas: FormSchema[] = [
  42. {
  43. field: 'wifiName',
  44. component: 'Input',
  45. label: 'wifi名称',
  46. colProps: {
  47. span: 18,
  48. },
  49. helpMessage:'wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。',
  50. rules: [
  51. {
  52. required: true,
  53. // @ts-ignore
  54. validator: async (rule, value) => {
  55. // var reg = /\S+@\S+\.\S+/;
  56. if (!value) {
  57. return Promise.reject('请输入wifi名称');
  58. }
  59. var list:string[] = ['4DKKPRO_','4DKKMI_','4DSS_','4DKK_'];
  60. const some = list.some(item=>{
  61. return value.indexOf(item) != -1
  62. })
  63. console.log('validator',some)
  64. if(!some){
  65. return Promise.reject('wifi名称需包含前缀,如“4DKKPRO_”、“4DKKMI_”、“4DSS_”、“4DKK_”。');
  66. }
  67. return Promise.resolve();
  68. },
  69. trigger: 'change',
  70. },
  71. ],
  72. }
  73. ];
  74. const [registerForm, { validate, resetFields, setFieldsValue }] = useForm({
  75. labelWidth: 120,
  76. schemas,
  77. showActionButtonGroup: false,
  78. actionColOptions: {
  79. span: 24,
  80. },
  81. });
  82. onMounted(() => {});
  83. let addListFunc = () => {};
  84. const [register, { closeModal }] = useModalInner((data) => {
  85. // console.log(data);
  86. data && onDataReceive(data);
  87. });
  88. function onDataReceive(data) {
  89. modelRef.value = data;
  90. resetFields();
  91. setFieldsValue({
  92. type: data.sceneName,
  93. });
  94. }
  95. function handleVisibleChange() {
  96. }
  97. const handleSubmit = async () => {
  98. try {
  99. const params = await validate();
  100. await cameraIn(params);
  101. closeModal();
  102. resetFields();
  103. createMessage.success(t('common.optSuccess'));
  104. emit('reload');
  105. } catch (error) {
  106. console.log('not passing', error);
  107. }
  108. };
  109. return {
  110. register,
  111. schemas,
  112. registerForm,
  113. model: modelRef,
  114. fileFlow,
  115. handleVisibleChange,
  116. handleSubmit,
  117. addListFunc,
  118. resetFields,
  119. t,
  120. };
  121. },
  122. });
  123. </script>