ソースを参照

一键更新增加弹窗和时间选择

ylong 7 ヶ月 前
コミット
5801ab75f6

+ 1 - 0
src/views/recycle/bookPushErpLog/components/book-push-erp-log-search.vue

@@ -42,6 +42,7 @@
 
     const searchRef = ref(null);
     function search(data) {
+        delete data.time;
         emit('search', { ...data });
     }
 </script>

+ 80 - 0
src/views/recycle/components/one-update.vue

@@ -0,0 +1,80 @@
+<!-- 一键更新弹窗 -->
+<template>
+  <ele-modal form :width="440" v-model="visible" title="一键更新" @open="handleOpen">
+    <SimpleForm :items="items" labelWidth="80px" ref="formRef" :initKeys="form"></SimpleForm>
+    <template #footer>
+      <el-button @click="handleCancel">取消</el-button>
+      <el-button type="primary" @click="handleSubmit">确定</el-button>
+    </template>
+  </ele-modal>
+</template>
+
+<script setup>
+import { ref, reactive, nextTick } from 'vue';
+import SimpleForm from '@/components/CommonPage/SimpleForm.vue';
+import dayjs from 'dayjs';
+
+/** 弹窗是否打开 */
+const visible = defineModel({ type: Boolean });
+
+/** 关闭弹窗 */
+const handleCancel = () => {
+  visible.value = false;
+  nextTick(() => {
+    formRef.value?.resetForm();
+  });
+};
+
+const form = ref({
+  alarmType: null,
+  reloadTime: ''
+});
+
+// 获取当天凌晨3点的时间
+const getTodayThreeAM = () => {
+  const now = dayjs();
+  const today3AM = dayjs().hour(3).minute(0).second(0);
+  // 如果当前时间已经过了今天3点,则返回明天3点
+  return now.isAfter(today3AM) ? today3AM.add(1, 'day') : today3AM;
+};
+
+/** 弹窗打开事件 */
+const handleOpen = () => {
+  visible.value = true;
+  nextTick(() => {
+    form.value.reloadTime = getTodayThreeAM().format('YYYY-MM-DD HH:mm:ss');
+    formRef.value?.setData(form.value);
+  });
+};
+
+const items = reactive([
+  {
+    label: '更新时间',
+    prop: 'reloadTime',
+    type: 'datetime',
+    required: true,
+    props: {
+      placeholder: '请选择更新时间',
+      format: 'YYYY-MM-DD HH:mm:ss',
+      valueFormat: 'YYYY-MM-DD HH:mm:ss',
+      disabledDate: (time) => {
+        return time.getTime() < Date.now() - 8.64e7; // 不能选择今天之前的日期
+      }
+    }
+  }
+]);
+
+const formRef = ref();
+
+const emit = defineEmits(['submit']);
+const handleSubmit = () => {
+  formRef.value?.submitForm().then((data) => {
+    emit('submit', data);
+    visible.value = false;
+  });
+};
+
+defineExpose({
+  handleOpen
+});
+</script> 

+ 16 - 7
src/views/recycle/inventoryAlert/index.vue

@@ -131,6 +131,7 @@
     <setParams ref="setParamsRef" @refresh="reload" />
     <addDiscount ref="addDiscountRef" @refresh="reload" />
     <orderBlacklist ref="blacklistRef" @refresh="reload" />
+    <oneUpdate ref="oneUpdateRef" @submit="handleOneUpdateSubmit" />
   </ele-page>
 </template>
 
@@ -144,7 +145,9 @@
   import setParams from '@/views/recycle/components/set-params.vue';
   import addDiscount from '@/views/recycle/components/add-discount.vue';
   import orderBlacklist from '@/views/recycleOrder/detail/order-blacklist.vue';
+  import oneUpdate from '@/views/recycle/components/one-update.vue';
   import dayjs from 'dayjs';
+  import { ElMessage } from 'element-plus';
 
   const { proxy } = getCurrentInstance();
   defineOptions({ name: 'inventoryAlert' });
@@ -325,14 +328,20 @@
   }
 
   //一键更新
+  const oneUpdateRef = ref(null);
   function handleOneUpdate() {
-    let data = {
-      alarmType: 2,
-      reloadTime: dayjs().format('YYYY-MM-DD HH:mm:ss')
-    };
-    pageRef.value?.messageBoxConfirm({
-      message: '确定一键更新吗?',
-      fetch: () => proxy.$http.post('/book/stockAlarm/alarmReload', data)
+    oneUpdateRef.value?.handleOpen();
+  }
+
+  //处理一键更新提交
+  function handleOneUpdateSubmit(data) {
+    data.alarmType = 2;
+    proxy.$http.post('/book/stockAlarm/alarmReload', data).then((res) => {
+      if (res.data.code == 200) {
+        ElMessage.success('操作成功');
+      } else {
+        ElMessage.error(res.data.msg);
+      }
     });
   }
 </script>

+ 16 - 7
src/views/recycle/priceAlert/index.vue

@@ -163,6 +163,7 @@
         <modifyMaxRecycle ref="maxRecycleRef" @refresh="reload" />
         <modifyDiscount ref="modifyDiscountRef" @refresh="reload" />
         <orderBlacklist ref="blacklistRef" @refresh="reload" />
+        <oneUpdate ref="oneUpdateRef" @submit="handleOneUpdateSubmit" />
     </ele-page>
 </template>
 
@@ -177,8 +178,10 @@
     import modifyMaxRecycle from '@/views/recycle/components/modify-max-recycle.vue';
     import modifyDiscount from '@/views/recycle/components/modify-discount.vue';
     import orderBlacklist from '@/views/recycleOrder/detail/order-blacklist.vue';
+    import oneUpdate from '@/views/recycle/components/one-update.vue';
     import dayjs from 'dayjs';
     import { useBookOperation } from '@/utils/use-book-operation';
+    import { ElMessage } from 'element-plus';
 
     const { proxy } = getCurrentInstance();
 
@@ -289,14 +292,20 @@
     }
 
     //一键更新
+    const oneUpdateRef = ref(null);
     function handleOneUpdate() {
-        let data = {
-            alarmType: 3,
-            reloadTime: dayjs().format('YYYY-MM-DD HH:mm:ss')
-        };
-        pageRef.value?.messageBoxConfirm({
-            message: '确定一键更新吗?',
-            fetch: () => proxy.$http.post('/book/stockAlarm/alarmReload', data)
+        oneUpdateRef.value?.handleOpen();
+    }
+
+    //处理一键更新提交
+    function handleOneUpdateSubmit(data) {
+        data.alarmType = 3;
+        proxy.$http.post('/book/stockAlarm/alarmReload', data).then((res) => {
+            if (res.data.code == 200) {
+                ElMessage.success('操作成功');
+            } else {
+                ElMessage.error(res.data.msg);
+            }
         });
     }
 

+ 16 - 8
src/views/recycle/stockFullAlert/index.vue

@@ -165,6 +165,7 @@
         <modifyMaxRecycle ref="maxRecycleRef" @refresh="reload" />
         <modifyDiscount ref="modifyDiscountRef" @refresh="reload" />
         <orderBlacklist ref="blacklistRef" @refresh="reload" />
+        <oneUpdate ref="oneUpdateRef" @submit="handleOneUpdateSubmit" />
     </ele-page>
 </template>
 
@@ -179,8 +180,9 @@
     import modifyMaxRecycle from '@/views/recycle/components/modify-max-recycle.vue';
     import modifyDiscount from '@/views/recycle/components/modify-discount.vue';
     import orderBlacklist from '@/views/recycleOrder/detail/order-blacklist.vue';
-    import dayjs from 'dayjs';
+    import oneUpdate from '@/views/recycle/components/one-update.vue';
     import { useBookOperation } from '@/utils/use-book-operation';
+    import { ElMessage } from 'element-plus';
 
     const { proxy } = getCurrentInstance();
 
@@ -287,14 +289,20 @@
     }
 
     //一键更新
+    const oneUpdateRef = ref(null);
     function handleOneUpdate() {
-        let data = {
-            alarmType: 1,
-            reloadTime: dayjs().format('YYYY-MM-DD HH:mm:ss')
-        };
-        pageRef.value?.messageBoxConfirm({
-            message: '确定一键更新吗?',
-            fetch: () => proxy.$http.post('/book/stockAlarm/alarmReload', data)
+        oneUpdateRef.value?.handleOpen();
+    }
+
+    //处理一键更新提交
+    function handleOneUpdateSubmit(data) {
+        data.alarmType = 1;
+        proxy.$http.post('/book/stockAlarm/alarmReload', data).then((res) => {
+            if (res.data.code == 200) {
+                ElMessage.success('操作成功');
+            } else {
+                ElMessage.error(res.data.msg);
+            }
         });
     }