Explorar o código

[Feat 0000] 为瓦斯均压添加修改密码功能以及更新自动调节功能

houzekong hai 1 semana
pai
achega
7722032fc4

+ 13 - 1
src/views/vent/monitorManager/balancePressMonitor/balancePress.api.ts

@@ -1,5 +1,4 @@
 import { defHttp } from '/@/utils/http/axios';
-import { Modal } from 'ant-design-vue';
 
 enum Api {
   list = '/monitor/device',
@@ -8,6 +7,8 @@ enum Api {
   submit = '/monitor/demo/avePress/add',
   submitEdit = '/monitor/demo/avePress/edit',
   subList = '/monitor/demo/avePress/list',
+  updatePassword = '/monitor/demo/avePress/update/password',
+  validPassword = '/monitor/demo/avePress/valid/password',
 }
 /**
  * 列表接口
@@ -44,3 +45,14 @@ export const subList = (params) => defHttp.get({ url: Api.subList, params });
  * @param params
  */
 export const submitEdit = (params) => defHttp.post({ url: Api.submitEdit, params });
+
+export const updatePassword = (params) =>
+  defHttp.get({ url: Api.updatePassword, params }).then((e) => {
+    if (e.success) return Promise.resolve(e.result);
+    throw e.message;
+  });
+export const validPassword = (params) =>
+  defHttp.get({ url: Api.validPassword, params }).then((e) => {
+    if (e.success) return Promise.resolve(e.result);
+    throw e.message;
+  });

+ 51 - 10
src/views/vent/monitorManager/balancePressMonitor/components/balancePressHomeBD.vue

@@ -48,13 +48,13 @@
           <template #container>
             <div class="vent-flex-row-between auto-control mt-10px mb-10px">
               <div class="title">自动调节:</div>
-              <a-radio-group v-model:value="avePress.isAuto" name="radioGroup">
+              <a-radio-group :value="avePress.isAuto" name="radioGroup" @change="changeIsAuto">
                 <a-radio :value="false">关闭</a-radio>
                 <a-radio :value="true">开启</a-radio>
               </a-radio-group>
             </div>
             <div class="btn-box" style="text-align: center">
-              <div class="btn btn1" @click="modalVisible = true">提交</div>
+              <div class="btn btn1" @click="openModal">控制密码修改</div>
             </div>
           </template>
         </ventBox1>
@@ -71,12 +71,13 @@
       />
     </div>
     <PasswordModal :modal-is-show="modalVisible" modal-title="提交" @handle-ok="handleControl" @handle-cancel="modalVisible = false" />
+    <UpdatePassword @register="updatePwdRegister" @submit="changePassword" />
   </a-spin>
 </template>
 <script setup lang="ts">
   import { ref, onMounted, onUnmounted, defineProps } from 'vue';
   import { mountedThree, destroy, setModelType, updateText, play } from '../balancePress.threejs';
-  import { list, submitEdit, subList } from '../balancePress.api';
+  import { list, submitEdit, subList, updatePassword, validPassword } from '../balancePress.api';
   import ModuleCommon from '../../../home/configurable/components/ModuleCommon.vue';
   import { useInitConfigs } from '../../../home/configurable/hooks/useInit';
   import { useGlobSetting } from '/@/hooks/setting';
@@ -84,7 +85,9 @@
   import { message } from 'ant-design-vue';
   import ventBox1 from '/@/components/vent/ventBox1.vue';
   import PasswordModal from '../../comment/components/PasswordModal.vue';
+  import UpdatePassword from '../../comment/components/UpdatePassword.vue';
   import { get } from 'lodash-es';
+  import { useModal } from '/@/components/Modal';
   // import { Config } from '../../../deviceManager/configurationTable/types';
 
   const props = defineProps({
@@ -325,9 +328,17 @@
 
   // const { configs, fetchConfigs } = useInitConfigs();
 
-  const formData = ref({});
+  const formData = ref({
+    isAuto: false,
+  });
   // 默认初始是第一行
   const isAutoControl = ref('1');
+
+  function changeIsAuto({ target }) {
+    formData.value.isAuto = target.value;
+    modalVisible.value = true;
+  }
+
   const changeType = (isAutoControl) => {
     isAutoControl;
     //
@@ -336,20 +347,28 @@
   const modalVisible = ref(false);
 
   function handleControl(password) {
-    submitEdit({
+    validPassword({
       id: avePress.value.id,
       password,
-      isAuto: avePress.value.isAuto,
     })
       .then(() => {
-        message.success('操作成功');
-        getAvePress();
+        return submitEdit({
+          id: avePress.value.id,
+          isAuto: formData.value.isAuto,
+        })
+          .then(() => {
+            message.success('操作成功');
+          })
+          .catch(() => {
+            message.error('操作失败');
+          });
       })
-      .catch(() => {
-        message.error('操作失败');
+      .catch((e) => {
+        message.error(e);
       })
       .finally(() => {
         modalVisible.value = false;
+        getAvePress();
       });
   }
 
@@ -364,6 +383,28 @@
 
   const { configs, fetchConfigs } = useInitConfigs();
 
+  const [updatePwdRegister, { openModal, closeModal, setModalProps }] = useModal();
+
+  function changePassword(values) {
+    setModalProps({ confirmLoading: true });
+    updatePassword({
+      id: avePress.value.id,
+      newPassword: values.password,
+      oldPassword: values.oldpassword,
+    })
+      .then(() => {
+        message.success('操作成功');
+      })
+      .catch((e) => {
+        message.error(e);
+      })
+      .finally(() => {
+        setModalProps({ confirmLoading: false });
+        closeModal();
+        getAvePress();
+      });
+  }
+
   onMounted(() => {
     // getMonitor()
     fetchConfigs('balancePressHome');

+ 55 - 0
src/views/vent/monitorManager/comment/components/UpdatePassword.vue

@@ -0,0 +1,55 @@
+<template>
+  <BasicModal v-bind="$attrs" @register="registerModal" title="修改密码" @ok="handleSubmit" width="600px">
+    <BasicForm @register="registerForm" />
+  </BasicModal>
+</template>
+<script lang="ts" setup>
+  import { rules } from '/@/utils/helper/validator';
+  import { BasicModal, useModalInner } from '/@/components/Modal';
+  import BasicForm from '/@/components/Form/src/BasicForm.vue';
+  import { useForm } from '/@/components/Form/src/hooks/useForm';
+
+  // 声明Emits
+  const emit = defineEmits(['register', 'submit']);
+  //表单配置
+  const [registerForm, { validate }] = useForm({
+    schemas: [
+      {
+        label: '旧密码',
+        field: 'oldpassword',
+        component: 'InputPassword',
+        required: true,
+      },
+      {
+        label: '新密码',
+        field: 'password',
+        component: 'InputPassword',
+        // component: 'StrengthMeter',
+        componentProps: {
+          placeholder: '请输入新密码',
+        },
+        rules: [
+          {
+            required: true,
+            message: '请输入新密码',
+          },
+        ],
+      },
+      {
+        label: '确认新密码',
+        field: 'confirmpassword',
+        component: 'InputPassword',
+        dynamicRules: ({ values }) => rules.confirmPassword(values, true),
+      },
+    ],
+    showActionButtonGroup: false,
+  });
+  //表单赋值
+  const [registerModal] = useModalInner();
+
+  //表单提交事件
+  async function handleSubmit() {
+    const values = await validate();
+    emit('submit', values);
+  }
+</script>