Showing
4 changed files
with
83 additions
and
65 deletions
| ... | ... | @@ -6,7 +6,7 @@ VITE_PUBLIC_PATH = / | 
| 6 | 6 | |
| 7 | 7 | # Cross-domain proxy, you can configure multiple | 
| 8 | 8 | # Please note that no line breaks | 
| 9 | -VITE_PROXY = [["/api","http://192.168.10.120:8082/api"],["/upload","http://192.168.10.120:3300/upload"]] | |
| 9 | +VITE_PROXY = [["/api","http://192.168.10.116:8082/api"],["/upload","http://192.168.10.116:3300/upload"]] | |
| 10 | 10 | # VITE_PROXY=[["/api","https://vvbin.cn/test"]] | 
| 11 | 11 | |
| 12 | 12 | # Delete console | ... | ... | 
| ... | ... | @@ -4,8 +4,8 @@ | 
| 4 | 4 | width="55rem" | 
| 5 | 5 | @register="register" | 
| 6 | 6 | :title="getTitle" | 
| 7 | - @visible-change="handleVisibleChange" | |
| 8 | 7 | @cancel="handleCancel" | 
| 8 | + @ok="handleOk" | |
| 9 | 9 | > | 
| 10 | 10 | <div class="step-form-form"> | 
| 11 | 11 | <a-steps :current="current"> | 
| ... | ... | @@ -14,8 +14,9 @@ | 
| 14 | 14 | </a-steps> | 
| 15 | 15 | </div> | 
| 16 | 16 | <div class="mt-5"> | 
| 17 | - <DeviceStep1 @next="handleStep1Next" v-show="current === 0" /> | |
| 17 | + <DeviceStep1 @next="handleStep1Next" v-show="current === 0" ref="DeviceStep1Ref" /> | |
| 18 | 18 | <DeviceStep2 | 
| 19 | + ref="DeviceStep2Ref" | |
| 19 | 20 | @prev="handleStepPrev" | 
| 20 | 21 | @next="handleStep2Next" | 
| 21 | 22 | v-show="current === 1" | 
| ... | ... | @@ -25,7 +26,7 @@ | 
| 25 | 26 | </BasicModal> | 
| 26 | 27 | </template> | 
| 27 | 28 | <script lang="ts"> | 
| 28 | - import { defineComponent, ref, nextTick, computed, unref, reactive, toRefs } from 'vue'; | |
| 29 | + import { defineComponent, ref, computed, unref, reactive, toRefs } from 'vue'; | |
| 29 | 30 | import { BasicModal, useModalInner } from '/@/components/Modal'; | 
| 30 | 31 | import DeviceStep1 from '/@/views/device/step/DeviceStep1.vue'; | 
| 31 | 32 | import DeviceStep2 from '/@/views/device/step/DeviceStep2.vue'; | 
| ... | ... | @@ -42,7 +43,10 @@ | 
| 42 | 43 | props: { | 
| 43 | 44 | userData: { type: Object }, | 
| 44 | 45 | }, | 
| 45 | - setup(props) { | |
| 46 | + setup(_) { | |
| 47 | + // const DeviceStep1Ref = ref<InstanceType<typeof DeviceStep1>>(); | |
| 48 | + const DeviceStep1Ref = ref<InstanceType<typeof DeviceStep1>>(); | |
| 49 | + const DeviceStep2Ref = ref<InstanceType<typeof DeviceStep2>>(); | |
| 46 | 50 | const state = reactive({ | 
| 47 | 51 | initStep2: false, | 
| 48 | 52 | }); | 
| ... | ... | @@ -50,10 +54,10 @@ | 
| 50 | 54 | const isUpdate = ref(true); | 
| 51 | 55 | const modelRef = ref({}); | 
| 52 | 56 | const getTitle = computed(() => (!unref(isUpdate) ? '新增设备' : '编辑设备')); | 
| 53 | - | |
| 57 | + // 所有参数 | |
| 58 | + let stepState = reactive({}); | |
| 54 | 59 | const [register] = useModalInner((data) => { | 
| 55 | 60 | isUpdate.value = !!data?.isUpdate; | 
| 56 | - data && onDataReceive(data); | |
| 57 | 61 | }); | 
| 58 | 62 | |
| 59 | 63 | function handleStepPrev() { | 
| ... | ... | @@ -62,52 +66,36 @@ | 
| 62 | 66 | function handleStep1Next(step1Values: any) { | 
| 63 | 67 | current.value++; | 
| 64 | 68 | state.initStep2 = true; | 
| 65 | - console.log(step1Values); | |
| 69 | + stepState = { ...step1Values }; | |
| 66 | 70 | } | 
| 67 | 71 | function handleStep2Next(step2Values: any) { | 
| 68 | - current.value++; | |
| 69 | - console.log(step2Values); | |
| 70 | - } | |
| 71 | - function handleRedo() { | |
| 72 | - current.value = 0; | |
| 73 | - state.initStep2 = false; | |
| 72 | + stepState = { ...stepState, ...step2Values }; | |
| 74 | 73 | } | 
| 75 | 74 | function handleCancel() { | 
| 76 | - console.log('关闭了弹框'); | |
| 77 | - } | |
| 78 | - | |
| 79 | - function onDataReceive(data) { | |
| 80 | - console.log('Data Received', data); | |
| 81 | - // 方式1; | |
| 82 | - // setFieldsValue({ | |
| 83 | - // field2: data.data, | |
| 84 | - // field1: data.info, | |
| 85 | - // }); | |
| 86 | - | |
| 87 | - // // 方式2 | |
| 88 | - modelRef.value = { field2: data.data, field1: data.info }; | |
| 89 | - | |
| 90 | - // setProps({ | |
| 91 | - // model:{ field2: data.data, field1: data.info } | |
| 92 | - // }) | |
| 75 | + current.value = 0; | |
| 76 | + DeviceStep1Ref?.value?.resetFields(); | |
| 77 | + DeviceStep2Ref?.value?.resetFields(); | |
| 78 | + console.log('关闭弹框'); | |
| 79 | + stepState = {}; | |
| 93 | 80 | } | 
| 94 | - | |
| 95 | - function handleVisibleChange(v) { | |
| 96 | - v && props.userData && nextTick(() => onDataReceive(props.userData)); | |
| 81 | + function handleOk() { | |
| 82 | + // 所有参数 | |
| 83 | + console.log(stepState); | |
| 84 | + console.log('确定了'); | |
| 97 | 85 | } | 
| 98 | - | |
| 99 | 86 | return { | 
| 100 | 87 | register, | 
| 101 | 88 | model: modelRef, | 
| 102 | 89 | getTitle, | 
| 103 | - handleVisibleChange, | |
| 104 | 90 | current, | 
| 91 | + DeviceStep1Ref, | |
| 92 | + DeviceStep2Ref, | |
| 105 | 93 | ...toRefs(state), | 
| 106 | 94 | handleStepPrev, | 
| 107 | 95 | handleStep1Next, | 
| 108 | 96 | handleStep2Next, | 
| 109 | 97 | handleCancel, | 
| 110 | - handleRedo, | |
| 98 | + handleOk, | |
| 111 | 99 | }; | 
| 112 | 100 | }, | 
| 113 | 101 | }); | ... | ... | 
| ... | ... | @@ -56,7 +56,7 @@ | 
| 56 | 56 | import { useScript } from '/@/hooks/web/useScript'; | 
| 57 | 57 | import { ScrollActionType } from '/@/components/Container/index'; | 
| 58 | 58 | import { Input, Divider, Upload, message, Modal, Form, Row, Col } from 'ant-design-vue'; | 
| 59 | - import { EnvironmentTwoTone, LoadingOutlined, PlusOutlined } from '@ant-design/icons-vue'; | |
| 59 | + import { EnvironmentTwoTone, PlusOutlined } from '@ant-design/icons-vue'; | |
| 60 | 60 | import { upload } from '/@/api/oss/ossFileUploader'; | 
| 61 | 61 | import { FileItem } from '/@/components/Upload/src/typing'; | 
| 62 | 62 | |
| ... | ... | @@ -84,7 +84,7 @@ | 
| 84 | 84 | lat: '', | 
| 85 | 85 | address: '', | 
| 86 | 86 | }); | 
| 87 | - const [register, { validate }] = useForm({ | |
| 87 | + const [register, { validate, resetFields }] = useForm({ | |
| 88 | 88 | labelWidth: 100, | 
| 89 | 89 | schemas: step1Schemas, | 
| 90 | 90 | actionColOptions: { | 
| ... | ... | @@ -172,6 +172,7 @@ | 
| 172 | 172 | visible.value = false; | 
| 173 | 173 | }; | 
| 174 | 174 | return { | 
| 175 | + resetFields, | |
| 175 | 176 | positionState, | 
| 176 | 177 | register, | 
| 177 | 178 | beforeUpload, | ... | ... | 
| 1 | 1 | <template> | 
| 2 | 2 | <div class="step2"> | 
| 3 | - <div><input type="checkbox" v-model="isCreaentials" @click="checked" /> 添加凭证 </div> | |
| 3 | + <div | |
| 4 | + ><input type="checkbox" v-model="creaentialsPassword.isCreaentials" @click="checked" /> | |
| 5 | + 添加凭证 | |
| 6 | + </div> | |
| 4 | 7 | |
| 5 | - <a-form :label-col="labelCol" :wrapper-col="wrapperCol" v-if="isCreaentials"> | |
| 6 | - <a-form-item label="凭据类型"> | |
| 8 | + <a-form | |
| 9 | + ref="formRef" | |
| 10 | + :label-col="labelCol" | |
| 11 | + :wrapper-col="wrapperCol" | |
| 12 | + v-if="creaentialsPassword.isCreaentials" | |
| 13 | + :model="creaentialsPassword" | |
| 14 | + > | |
| 15 | + <a-form-item label="凭据类型" name="creantialsType"> | |
| 7 | 16 | <a-select | 
| 8 | - v-model:value="creaentialsType" | |
| 17 | + v-model:value="creaentialsPassword.creaentialsType" | |
| 9 | 18 | style="width: 200px" | 
| 10 | 19 | @change="handleChange" | 
| 11 | 20 | placeholder="请选择凭据类型" | 
| 12 | 21 | :options="options" | 
| 13 | 22 | /> | 
| 14 | 23 | </a-form-item> | 
| 15 | - <div v-if="creaentialsType === 'Access token'"> | |
| 16 | - <a-form-item label="访问令牌"> | |
| 17 | - <a-input type="input" style="width: 200px" v-model:value="token" /> | |
| 24 | + <div v-if="creaentialsPassword.creaentialsType === 'Access token'"> | |
| 25 | + <a-form-item label="访问令牌" name="token"> | |
| 26 | + <a-input type="input" style="width: 200px" v-model:value="creaentialsPassword.token" /> | |
| 18 | 27 | </a-form-item> | 
| 19 | 28 | </div> | 
| 20 | - <div v-else-if="creaentialsType === 'X.509'"> | |
| 21 | - <a-form-item label="RSA公钥"> | |
| 22 | - <a-input type="input" style="width: 200px" v-model:value="publicKey" /> | |
| 29 | + <div v-else-if="creaentialsPassword.creaentialsType === 'X.509'"> | |
| 30 | + <a-form-item label="RSA公钥" name="publicKey"> | |
| 31 | + <a-input | |
| 32 | + type="input" | |
| 33 | + style="width: 200px" | |
| 34 | + v-model:value="creaentialsPassword.publicKey" | |
| 35 | + /> | |
| 23 | 36 | </a-form-item> | 
| 24 | 37 | </div> | 
| 25 | 38 | <div v-else> | 
| 26 | - <a-form-item label="客户端ID"> | |
| 27 | - <a-input type="input" style="width: 200px" v-model:value="clientId" /> | |
| 39 | + <a-form-item label="客户端ID" name="clientId"> | |
| 40 | + <a-input type="input" style="width: 200px" v-model:value="creaentialsPassword.clientId" /> | |
| 28 | 41 | </a-form-item> | 
| 29 | - <a-form-item label="用户名"> | |
| 30 | - <a-input type="input" style="width: 200px" v-model:value="username" /> | |
| 42 | + <a-form-item label="用户名" name="username"> | |
| 43 | + <a-input type="input" style="width: 200px" v-model:value="creaentialsPassword.username" /> | |
| 31 | 44 | </a-form-item> | 
| 32 | - <a-form-item label="密码"> | |
| 33 | - <a-input type="password" style="width: 200px" v-model:value="password" /> | |
| 45 | + <a-form-item label="密码" name="password"> | |
| 46 | + <a-input | |
| 47 | + type="password" | |
| 48 | + style="width: 200px" | |
| 49 | + v-model:value="creaentialsPassword.password" | |
| 50 | + /> | |
| 34 | 51 | </a-form-item> | 
| 35 | 52 | </div> | 
| 36 | 53 | </a-form> | 
| ... | ... | @@ -41,9 +58,9 @@ | 
| 41 | 58 | </div> | 
| 42 | 59 | </template> | 
| 43 | 60 | <script lang="ts"> | 
| 44 | - import { defineComponent, reactive, ref, toRefs } from 'vue'; | |
| 61 | + import { defineComponent, reactive, ref, watch } from 'vue'; | |
| 45 | 62 | |
| 46 | - import { Input, Form, Select, Button, SelectProps } from 'ant-design-vue'; | |
| 63 | + import { Input, Form, Select, Button } from 'ant-design-vue'; | |
| 47 | 64 | export default defineComponent({ | 
| 48 | 65 | components: { | 
| 49 | 66 | [Form.name]: Form, | 
| ... | ... | @@ -52,18 +69,19 @@ | 
| 52 | 69 | [Select.name]: Select, | 
| 53 | 70 | [Button.name]: Button, | 
| 54 | 71 | }, | 
| 55 | - emits: ['prev'], | |
| 72 | + emits: ['prev', 'next'], | |
| 56 | 73 | setup(_, { emit }) { | 
| 57 | - const isCreaentials = ref(false); | |
| 58 | - const creaentialsType = ref('Access token'); | |
| 74 | + const formRef = ref(); | |
| 59 | 75 | const creaentialsPassword = reactive({ | 
| 76 | + isCreaentials: false, | |
| 77 | + creaentialsType: 'Access token', | |
| 60 | 78 | token: '', | 
| 61 | 79 | publicKey: '', | 
| 62 | 80 | clientId: '', | 
| 63 | 81 | username: '', | 
| 64 | 82 | password: '', | 
| 65 | 83 | }); | 
| 66 | - const options = ref<SelectProps['options']>([ | |
| 84 | + const options = ref([ | |
| 67 | 85 | { | 
| 68 | 86 | value: 'Access token', | 
| 69 | 87 | label: 'Access token', | 
| ... | ... | @@ -79,11 +97,15 @@ | 
| 79 | 97 | }, | 
| 80 | 98 | ]); | 
| 81 | 99 | const checked = () => { | 
| 82 | - isCreaentials.value = !isCreaentials.value; | |
| 100 | + creaentialsPassword.isCreaentials = !creaentialsPassword.isCreaentials; | |
| 83 | 101 | }; | 
| 84 | 102 | const prevStep = () => { | 
| 85 | 103 | emit('prev'); | 
| 86 | 104 | }; | 
| 105 | + watch(creaentialsPassword, (newValue) => { | |
| 106 | + emit('next', newValue); | |
| 107 | + }); | |
| 108 | + | |
| 87 | 109 | // 切换凭证类型时,重置字段 | 
| 88 | 110 | const handleChange = (value) => { | 
| 89 | 111 | if (value === 'Access token') { | 
| ... | ... | @@ -96,16 +118,23 @@ | 
| 96 | 118 | creaentialsPassword.password = ''; | 
| 97 | 119 | } | 
| 98 | 120 | }; | 
| 121 | + | |
| 122 | + // 重置所有字段 | |
| 123 | + function resetFields() { | |
| 124 | + console.log(formRef); | |
| 125 | + formRef.value.resetFields(); | |
| 126 | + console.log('----'); | |
| 127 | + } | |
| 99 | 128 | return { | 
| 100 | - ...toRefs(creaentialsPassword), | |
| 101 | - creaentialsType, | |
| 102 | - isCreaentials, | |
| 103 | 129 | options, | 
| 130 | + formRef, | |
| 131 | + creaentialsPassword, | |
| 104 | 132 | handleChange, | 
| 105 | 133 | prevStep, | 
| 106 | 134 | checked, | 
| 107 | 135 | labelCol: { style: { width: '150px' } }, | 
| 108 | 136 | wrapperCol: { span: 18 }, | 
| 137 | + resetFields, | |
| 109 | 138 | }; | 
| 110 | 139 | }, | 
| 111 | 140 | }); | ... | ... |