From d06afcaf821b178b8b6169779842a56b423bd6e6 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 22 四月 2025 17:04:15 +0800
Subject: [PATCH] 代码初始化

---
 admin/src/views/business/workorderShe.vue                                       |   52 ++++++++++--
 admin/src/views/business/workorderDbh.vue                                       |   45 +++++++++-
 admin/src/views/business/workorderDcaChild.vue                                  |   51 +++++++++++-
 server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java |    4 
 server/src/main/resources/application-dev.yml                                   |    3 
 server/src/main/java/com/doumee/dao/business/model/Workorder.java               |    7 +
 admin/src/utils/util.js                                                         |   25 ++++++
 admin/src/views/business/workorderDca.vue                                       |   47 ++++++++++-
 8 files changed, 204 insertions(+), 30 deletions(-)

diff --git a/admin/src/utils/util.js b/admin/src/utils/util.js
index 276e62d..b69763d 100644
--- a/admin/src/utils/util.js
+++ b/admin/src/utils/util.js
@@ -23,3 +23,28 @@
   }
   return data
 }
+
+
+export function timeForMat (count) {
+  // 鎷兼帴鏃堕棿
+  const time1 = new Date()
+  const time2 = new Date()
+  if (count === 1) {
+    // time1.setTime(time1.getTime() - (24 * 60 * 60 * 1000))
+    time1.setTime(time1.getTime())
+  } else {
+    time1.setTime(time1.getTime())
+  }
+
+  const Y1 = time1.getFullYear()
+  const M1 = ((time1.getMonth() + 1) > 9 ? (time1.getMonth() + 1) : '0' + (time1.getMonth() + 1))
+  const D1 = (time1.getDate() > 9 ? time1.getDate() : '0' + time1.getDate())
+  const timer1 = Y1 + '-' + M1 + '-' + D1 + ' ' + '23:59:59' // 褰撳墠鏃堕棿
+
+  time2.setTime(time2.getTime() - (24 * 60 * 60 * 1000 * count))
+  const Y2 = time2.getFullYear()
+  const M2 = ((time2.getMonth() + 1) > 9 ? (time2.getMonth() + 1) : '0' + (time2.getMonth() + 1))
+  const D2 = (time2.getDate() > 9 ? time2.getDate() : '0' + time2.getDate())
+  const timer2 = Y2 + '-' + M2 + '-' + D2 + ' ' + '00:00:00' // 涔嬪墠鐨�7澶╂垨鑰�30澶�
+  return [timer2, timer1]
+}
diff --git a/admin/src/views/business/workorderDbh.vue b/admin/src/views/business/workorderDbh.vue
index 36bcd57..4be20da 100644
--- a/admin/src/views/business/workorderDbh.vue
+++ b/admin/src/views/business/workorderDbh.vue
@@ -4,12 +4,6 @@
     <div slot="search-form">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
         <el-form-item label="椋庨櫓绫诲瀷" prop="typeIdPath">
-<!--          <el-cascader  v-model="searchForm.categoryList" :options="categorys" @change="handleChangeCategory" :show-all-levels="false"
-                        clearable filterable :props="categoryprops"  >
-            <template slot-scope="{ node, data }">
-              <span>{{ data.name }}</span> &lt;!&ndash; 鑷畾涔夋樉绀哄唴瀹� &ndash;&gt;
-            </template>
-          </el-cascader>-->
           <treeselect
               style="width: 150px"
               v-model="searchForm.typeIdPath"
@@ -28,6 +22,21 @@
         </el-form-item>
         <el-form-item label="宸ュ崟鍙�" prop="code">
           <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="鎻愪氦鏃堕棿" prop="queryStartTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryStartTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="璇烽�夋嫨寮�濮嬫椂闂�" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="queryEndTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryEndTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="璇烽�夋嫨缁撴潫鏃堕棿" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="radio">
+          <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+            <el-radio-button label="0">褰撳ぉ</el-radio-button>
+            <el-radio-button label="1">杩�7澶�</el-radio-button>
+            <el-radio-button label="2">杩�30澶�</el-radio-button>
+          </el-radio-group>
         </el-form-item>
         <section>
           <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -104,6 +113,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaWorkorderDetailDbhWindow from '@/components/business/OperaWorkorderDetailDbhWindow'
 import { treeList } from '@/api/business/category'
+import { timeForMat } from '@/utils/util'
 export default {
   name: 'Workorder',
   extends: BaseTable,
@@ -112,6 +122,9 @@
     return {
       // 鎼滅储
       searchForm: {
+        queryStartTime: null,
+        queryEndTime: null,
+        radio: null,
         type: '3',
         memberName: '',
         memberCompanyId: '',
@@ -141,6 +154,26 @@
     this.search()
   },
   methods: {
+    changeRadio(e) {
+      if (e === '0') {
+        this.searchForm.queryStartTime = timeForMat(0)[0]
+        this.searchForm.queryEndTime = timeForMat(0)[1]
+      } else if (e === '1') {
+        this.searchForm.queryStartTime = timeForMat(6)[0]
+        this.searchForm.queryEndTime = timeForMat(6)[1]
+      } else if (e === '2') {
+        this.searchForm.queryStartTime = timeForMat(29)[0]
+        this.searchForm.queryEndTime = timeForMat(29)[1]
+      } else {
+        this.searchForm.radio = ''
+      }
+      if (this.searchForm.queryStartTime && this.searchForm.endTime && new Date(this.searchForm.startTime).getTime() > new Date(this.searchForm.endTime).getTime()) {
+        this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+        this.searchForm.queryStartTime = ''
+        return
+      }
+      this.search()
+    },
     normalizeOptions(node) {
       if (node.childList && !node.childList.length) {
         // 鍘绘帀children=[]鐨刢hildren灞炴��
diff --git a/admin/src/views/business/workorderDca.vue b/admin/src/views/business/workorderDca.vue
index 8664863..84a77db 100644
--- a/admin/src/views/business/workorderDca.vue
+++ b/admin/src/views/business/workorderDca.vue
@@ -4,7 +4,7 @@
     <div slot="search-form">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
         <el-form-item label="瑙傚療涓婚" prop="typeId">
-          <el-select v-model="searchForm.typeId" @change="search">
+          <el-select v-model="searchForm.typeId" @change="search" style="width: 120px">
           <el-option  clearable filterable
               v-for="item in categorys"
               :key="item.id"
@@ -14,12 +14,25 @@
           </el-select>
         </el-form-item>
         <el-form-item label="涓婃姤浜哄憳" prop="memberName">
-          <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
-
-
+          <el-input v-model="searchForm.memberName" style="width: 120px" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
         </el-form-item>
         <el-form-item label="宸ュ崟鍙�" prop="code">
-          <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.code" clearable style="width: 150px" placeholder="宸ュ崟鍙�" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="鎻愪氦鏃堕棿" prop="queryStartTime">
+          <el-date-picker  style="width: 185px" type="datetime" v-model="searchForm.queryStartTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="寮�濮嬫椂闂�" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="queryEndTime">
+          <el-date-picker style="width: 185px" type="datetime" v-model="searchForm.queryEndTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="缁撴潫鏃堕棿" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="radio">
+          <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+            <el-radio-button label="0">褰撳ぉ</el-radio-button>
+            <el-radio-button label="1">杩�7澶�</el-radio-button>
+            <el-radio-button label="2">杩�30澶�</el-radio-button>
+          </el-radio-group>
         </el-form-item>
         <section>
           <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -92,6 +105,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaWorkorderDetailDcaWindow from '@/components/business/OperaWorkorderDetailDcaWindow'
 import { allList } from '@/api/business/category'
+import { timeForMat } from '@/utils/util'
 export default {
   name: 'Workorder',
   extends: BaseTable,
@@ -100,6 +114,9 @@
     return {
       // 鎼滅储
       searchForm: {
+        queryStartTime: null,
+        queryEndTime: null,
+        radio: null,
         type: '1',
         memberName: '',
         memberCompanyId: '',
@@ -128,6 +145,26 @@
     this.search()
   },
   methods: {
+    changeRadio(e) {
+      if (e === '0') {
+        this.searchForm.queryStartTime = timeForMat(0)[0]
+        this.searchForm.queryEndTime = timeForMat(0)[1]
+      } else if (e === '1') {
+        this.searchForm.queryStartTime = timeForMat(6)[0]
+        this.searchForm.queryEndTime = timeForMat(6)[1]
+      } else if (e === '2') {
+        this.searchForm.queryStartTime = timeForMat(29)[0]
+        this.searchForm.queryEndTime = timeForMat(29)[1]
+      } else {
+        this.searchForm.radio = ''
+      }
+      if (this.searchForm.queryStartTime && this.searchForm.endTime && new Date(this.searchForm.startTime).getTime() > new Date(this.searchForm.endTime).getTime()) {
+        this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+        this.searchForm.queryStartTime = ''
+        return
+      }
+      this.search()
+    },
     handleChangeCategory (value) {
       if (this.searchForm.categoryList && this.searchForm.categoryList.length >= 1) {
         this.searchForm.typeId = this.searchForm.categoryList[this.searchForm.categoryList.length - 1]
diff --git a/admin/src/views/business/workorderDcaChild.vue b/admin/src/views/business/workorderDcaChild.vue
index 0284d0c..4238c5b 100644
--- a/admin/src/views/business/workorderDcaChild.vue
+++ b/admin/src/views/business/workorderDcaChild.vue
@@ -4,18 +4,18 @@
     <div slot="search-form">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
         <el-form-item label="瑙傚療涓婚" prop="typeId">
-          <el-select v-model="searchForm.typeId" @change="changeType" style="width: 120px">
+          <el-select v-model="searchForm.typeId" placeholder="涓�绾т富棰�" clearable @change="changeType" style="width: 120px">
           <el-option  clearable filterable
               v-for="item in categorys"
               :key="item.id"
               :label="item.name"
               :value="item.id">
           </el-option>
-          </el-select> -
+          </el-select>
         </el-form-item>
         <el-form-item label="" prop="categoryId">
-          <el-select v-model="searchForm.categoryId" @change="search" style="width: 120px">
-          <el-option  clearable filterable
+          <el-select v-model="searchForm.categoryId" clearable  placeholder="浜岀骇涓婚"  style="width: 120px"  @change="search" >
+          <el-option   filterable
               v-for="item in categorys1"
               :key="item.id"
               :label="item.name"
@@ -24,10 +24,25 @@
           </el-select>
         </el-form-item>
         <el-form-item label="涓婃姤浜哄憳" prop="memberName">
-          <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.memberName" style="width: 120px"  clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
         </el-form-item>
         <el-form-item label="宸ュ崟鍙�" prop="code">
-          <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.code" style="width: 120px"  clearable placeholder="宸ュ崟鍙�" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="鎻愪氦鏃堕棿" prop="queryStartTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryStartTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="寮�濮嬫椂闂�" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="queryEndTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryEndTime" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="缁撴潫鏃堕棿" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="radio">
+          <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+            <el-radio-button label="0">褰撳ぉ</el-radio-button>
+            <el-radio-button label="1">杩�7澶�</el-radio-button>
+            <el-radio-button label="2">杩�30澶�</el-radio-button>
+          </el-radio-group>
         </el-form-item>
         <section>
           <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -108,6 +123,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaWorkorderDetailDcaInfoWindow from '@/components/business/OperaWorkorderDetailDcaInfoWindow'
 import { allList } from '@/api/business/category'
+import {timeForMat} from "@/utils/util";
 export default {
   name: 'Workorder',
   extends: BaseTable,
@@ -116,6 +132,9 @@
     return {
       // 鎼滅储
       searchForm: {
+        queryStartTime: null,
+        queryEndTime: null,
+        radio: null,
         type: '2',
         memberName: '',
         memberCompanyId: '',
@@ -146,6 +165,26 @@
     this.search()
   },
   methods: {
+    changeRadio(e) {
+      if (e === '0') {
+        this.searchForm.queryStartTime = timeForMat(0)[0]
+        this.searchForm.queryEndTime = timeForMat(0)[1]
+      } else if (e === '1') {
+        this.searchForm.queryStartTime = timeForMat(6)[0]
+        this.searchForm.queryEndTime = timeForMat(6)[1]
+      } else if (e === '2') {
+        this.searchForm.queryStartTime = timeForMat(29)[0]
+        this.searchForm.queryEndTime = timeForMat(29)[1]
+      } else {
+        this.searchForm.radio = ''
+      }
+      if (this.searchForm.queryStartTime && this.searchForm.endTime && new Date(this.searchForm.startTime).getTime() > new Date(this.searchForm.endTime).getTime()) {
+        this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+        this.searchForm.queryStartTime = ''
+        return
+      }
+      this.search()
+    },
     changeType(){
       this.search()
       this.categorys1 = []
diff --git a/admin/src/views/business/workorderShe.vue b/admin/src/views/business/workorderShe.vue
index 7b7e7e8..4e073ac 100644
--- a/admin/src/views/business/workorderShe.vue
+++ b/admin/src/views/business/workorderShe.vue
@@ -4,14 +4,8 @@
     <div slot="search-form">
       <el-form ref="searchForm" :model="searchForm" label-width="100px" inline>
         <el-form-item label="浼ゅ绫诲瀷" prop="typeIdPath">
-<!--          <el-cascader  v-model="searchForm.categoryList" :options="categorys" @change="handleChangeCategory" :show-all-levels="false"
-                        clearable filterable :props="categoryprops"  >
-            <template slot-scope="{ node, data }">
-              <span>{{ data.name }}</span> &lt;!&ndash; 鑷畾涔夋樉绀哄唴瀹� &ndash;&gt;
-            </template>
-          </el-cascader>-->
           <treeselect
-              style="width: 150px"
+              style="width: 200px"
               v-model="searchForm.typeIdPath"
               placeholder="浼ゅ绫诲瀷"
               clearable
@@ -24,10 +18,25 @@
               noResultsText="娌℃湁鍖归厤鐨勭粨鏋�" />
         </el-form-item>
         <el-form-item label="涓婃姤浜哄憳" prop="memberName">
-          <el-input v-model="searchForm.memberName" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.memberName" style="width: 150px" clearable placeholder="浜哄憳濮撳悕鎴栨墜鏈哄彿" @keypress.enter.native="search"></el-input>
         </el-form-item>
         <el-form-item label="宸ュ崟鍙�" prop="code">
-          <el-input v-model="searchForm.code" clearable placeholder="璇疯緭鍏ュ伐鍗曞彿" @keypress.enter.native="search"></el-input>
+          <el-input v-model="searchForm.code" clearable style="width: 150px" placeholder="宸ュ崟鍙�" @keypress.enter.native="search"></el-input>
+        </el-form-item>
+        <el-form-item label="鎻愪氦鏃堕棿" prop="queryStartTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryStartTime" style="width: 190px" value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="寮�濮嬫椂闂�" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="queryEndTime">
+          <el-date-picker type="datetime" v-model="searchForm.queryEndTime"  style="width: 190px"  value-format="yyyy-MM-dd HH:mm:ss"
+                          placeholder="缁撴潫鏃堕棿" @change="changeRadio" />
+        </el-form-item>
+        <el-form-item label="" prop="radio">
+          <el-radio-group v-model="searchForm.radio" size="small" @input="changeRadio">
+            <el-radio-button label="0">褰撳ぉ</el-radio-button>
+            <el-radio-button label="1">杩�7澶�</el-radio-button>
+            <el-radio-button label="2">杩�30澶�</el-radio-button>
+          </el-radio-group>
         </el-form-item>
         <section>
           <el-button type="primary" @click="search">鎼滅储</el-button>
@@ -128,6 +137,7 @@
 import Pagination from '@/components/common/Pagination'
 import OperaWorkorderDetailSheWindow from '@/components/business/OperaWorkorderDetailSheWindow'
 import { treeList } from '@/api/business/category'
+import {timeForMat} from "@/utils/util";
 export default {
   name: 'Workorder',
   extends: BaseTable,
@@ -136,6 +146,9 @@
     return {
       // 鎼滅储
       searchForm: {
+        queryStartTime: null,
+        queryEndTime: null,
+        radio: null,
         type: '0',
         memberName: '',
         memberCompanyId: '',
@@ -165,6 +178,27 @@
     this.search()
   },
   methods: {
+
+    changeRadio(e) {
+      if (e === '0') {
+        this.searchForm.queryStartTime = timeForMat(0)[0]
+        this.searchForm.queryEndTime = timeForMat(0)[1]
+      } else if (e === '1') {
+        this.searchForm.queryStartTime = timeForMat(6)[0]
+        this.searchForm.queryEndTime = timeForMat(6)[1]
+      } else if (e === '2') {
+        this.searchForm.queryStartTime = timeForMat(29)[0]
+        this.searchForm.queryEndTime = timeForMat(29)[1]
+      } else {
+        this.searchForm.radio = ''
+      }
+      if (this.searchForm.queryStartTime && this.searchForm.endTime && new Date(this.searchForm.startTime).getTime() > new Date(this.searchForm.endTime).getTime()) {
+        this.$message.error('寮�濮嬫椂闂翠笉鑳藉ぇ浜庣粨鏉熸椂闂�')
+        this.searchForm.queryStartTime = ''
+        return
+      }
+      this.search()
+    },
     normalizeOptions(node) {
       if (node.childList && !node.childList.length) {
         // 鍘绘帀children=[]鐨刢hildren灞炴��
diff --git a/server/src/main/java/com/doumee/dao/business/model/Workorder.java b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
index c59d449..2c08031 100644
--- a/server/src/main/java/com/doumee/dao/business/model/Workorder.java
+++ b/server/src/main/java/com/doumee/dao/business/model/Workorder.java
@@ -238,4 +238,11 @@
     @TableField(exist = false)
     private List<Workorder> dcaChildList;
 
+    @ApiModelProperty(value = "鏌ヨ寮�濮嬫椂闂�")
+    @TableField(exist = false)
+    private Date queryStartTime;
+    @ApiModelProperty(value = "鏌ヨ缁撴潫鏃堕棿")
+    @TableField(exist = false)
+    private Date queryEndTime;
+
 }
diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
index 1a32444..8b80a22 100644
--- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
+++ b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java
@@ -757,7 +757,9 @@
                 .eq( pageWrap.getDcaNoNum() != null, Workorder::getDcaNoNum,  pageWrap.getDcaNoNum())
                 .eq( pageWrap.getDcaRecordId() != null, Workorder::getDcaRecordId,  pageWrap.getDcaRecordId())
                 .likeRight( pageWrap.getTypeIdPath() != null,"c3.id_path",  pageWrap.getTypeIdPath())
-                .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds,  pageWrap.getDcaCsIds()) ;
+                .eq( pageWrap.getDcaCsIds() != null, Workorder::getDcaCsIds,  pageWrap.getDcaCsIds())
+                .ge( pageWrap.getQueryStartTime() != null, Workorder::getCreateDate,pageWrap.getQueryStartTime())
+                .le( pageWrap.getQueryEndTime() != null, Workorder::getCreateDate,pageWrap.getQueryEndTime()) ;
         if ( pageWrap.getMemberName() != null) {
             queryWrapper.and( ms->ms.like(Member::getName, pageWrap.getMemberName())
                     .or().like(Member::getPhone, pageWrap.getMemberName()) );
diff --git a/server/src/main/resources/application-dev.yml b/server/src/main/resources/application-dev.yml
index 938c49d..a478110 100644
--- a/server/src/main/resources/application-dev.yml
+++ b/server/src/main/resources/application-dev.yml
@@ -4,9 +4,6 @@
 spring:
   # 鏁版嵁婧愰厤缃�
   datasource:
-#    url: jdbc:mysql://localhost:3306/lianhelihua_sh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
-#    username: root
-#    password: Titi@168.com
     url: jdbc:mysql://112.26.66.25:3306/lianhelihua_sh?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
     username: root
     password: Doumee@168&QWERT

--
Gitblit v1.9.3