From e36eed2cdc9335fc4d1b84c8e4e306422638542f Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 27 十一月 2024 08:53:51 +0800
Subject: [PATCH] ll

---
 admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue |  196 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 172 insertions(+), 24 deletions(-)

diff --git a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
index 0f933b6..0e58415 100644
--- a/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
+++ b/admin/src/views/Inspection/components/OperaYwPatrolSchemeWindow.vue
@@ -1,38 +1,52 @@
 <template>
-  <GlobalWindow width="520px" :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
+  <GlobalWindow width="520px" :title="title" @close="close" :visible.sync="visible" :confirm-working="isWorking"
+    @confirm="confirm">
+    <div class="warnning">
+      {{ form.id ? '缂栬緫璁″垝瀵瑰凡鐢熸垚鐨勪换鍔℃棤鏁堬紝浼氬湪涓嬫鐢熸垚浠诲姟鏃剁敓鏁堬紝涓斿綋澶╀笉浼氱敓鎴愪袱涓换鍔�' : '鏂板缓宸℃璁″垝浼氫粠褰撳ぉ寮�濮嬶紝鎸夌収閰嶇疆瑙勫垯浜х敓瀵瑰簲鐨勫贰妫�浠诲姟' }}
+    </div>
     <el-form :model="form" ref="form" :rules="rules">
       <el-form-item label="璁″垝鍚嶇О" prop="title">
         <el-input v-model="form.title" placeholder="璇疯緭鍏ユ爣棰�" v-trim />
       </el-form-item>
-      <el-form-item label="宸℃绾胯矾">
-        <el-select v-model="form.status" filterable clearable>
-          <el-option value="0" label="姣忓ぉ"></el-option>
-          <el-option value="1" label="姣忓懆"></el-option>
-          <el-option value="2" label="姣忔湀"></el-option>
+      <el-form-item label="宸℃绾胯矾" prop="lineId">
+        <el-select v-model="form.lineId" filterable clearable>
+          <el-option v-for="item in lineList" :value="item.id" :label="item.name"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="宸℃璐熻矗浜�">
+      <el-form-item label="宸℃璐熻矗浜�" prop="userIds">
         <el-select v-model="form.userIds" filterable clearable>
-          <el-option value="0" label="姣忓ぉ"></el-option>
-          <el-option value="1" label="姣忓懆"></el-option>
-          <el-option value="2" label="姣忔湀"></el-option>
+          <el-option v-for="item in staffList" :value="item.id" :label="item.realname"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item label="璁″垝寮�濮嬫棩鏈�-缁撴潫鏃ユ湡">
-        <el-date-picker v-model="form.selDate" is-range range-separator="-" value-format="yyyy-MM-dd" type="daterange"
-          start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" class="w400" />
+      <el-form-item label="璁″垝寮�濮嬫棩鏈�-缁撴潫鏃ユ湡" prop="selDate">
+        <el-date-picker v-model="form.selDate" @change="changeDate" is-range range-separator="-"
+          value-format="yyyy-MM-dd" type="daterange" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" />
       </el-form-item>
       <el-form-item label="璁″垝鎵ц鏃堕棿">
-        <el-time-picker v-model="form.selTime" is-range range-separator="-" format="HH:mm" value-format="HH:mm:ss"
-          start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" class="w400" />
+        <el-time-picker v-model="form.selTime" @change="changeTime" is-range range-separator="-" format="HH:mm"
+          value-format="HH:mm:ss" start-placeholder="寮�濮嬫椂闂�" end-placeholder="缁撴潫鏃堕棿" placeholder="閫夋嫨鏃堕棿鑼冨洿" />
       </el-form-item>
-      <el-form-item label="寰幆鍛ㄦ湡">
-        <el-select v-model="form.circleType" filterable clearable>
-          <el-option value="0" label="姣忓ぉ"></el-option>
-          <el-option value="1" label="姣忓懆"></el-option>
-          <el-option value="2" label="姣忔湀"></el-option>
+      <el-form-item label="閲嶅棰戠巼">
+        <el-select v-model="form.circleType" @change="changeType" filterable>
+          <el-option :value="0" label="姣忓ぉ"></el-option>
+          <el-option :value="1" label="姣忓懆"></el-option>
+          <el-option :value="2" label="姣忔湀"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item v-if="form.circleType == 1" prop="circleDays" label="閲嶅瑙勫垯">
+        <div class="weeks">
+          <div class="week" @click="weekClick(i)" :class="{ active: item.sel }" v-for="item, i in weeks">{{ item.la }}
+          </div>
+        </div>
+      </el-form-item>
+      <el-form-item v-if="form.circleType == 2" prop="circleDays" label="閲嶅瑙勫垯">
+        <div class="weeks">
+          <div class="week" @click="monthClick(i)" :class="{ active: item.sel }" v-for="item, i in monthsList">{{
+            item.la
+            }}</div>
+        </div>
+      </el-form-item>
+
     </el-form>
   </GlobalWindow>
 </template>
@@ -40,6 +54,9 @@
 <script>
 import BaseOpera from '@/components/base/BaseOpera'
 import GlobalWindow from '@/components/common/GlobalWindow'
+import { fetchList as getLineList } from '@/api/Inspection/ywPatrolLine'
+import { detailById } from '@/api/Inspection/ywPatrolScheme'
+import { getUserList } from '@/api/system/user'
 export default {
   name: 'OperaYwPatrolSchemeWindow',
   extends: BaseOpera,
@@ -63,7 +80,7 @@
         dealUserId: '',
         dealDate: '',
         dealInfo: '',
-        circleType: '',
+        circleType: 0,
         circleDays: '',
         startDate: '',
         endDate: '',
@@ -71,10 +88,26 @@
         endTime: '',
         processStatus: '',
         selDate: [],
-        selTime: [],
       },
-      // 楠岃瘉瑙勫垯
+      lineList: [],
+      staffList: [],
+      weeks: [
+        { la: '鍛ㄤ竴', va: 1, sel: false },
+        { la: '鍛ㄤ簩', va: 2, sel: false },
+        { la: '鍛ㄤ笁', va: 3, sel: false },
+        { la: '鍛ㄥ洓', va: 4, sel: false },
+        { la: '鍛ㄤ簲', va: 5, sel: false },
+        { la: '鍛ㄥ叚', va: 6, sel: false },
+        { la: '鍛ㄦ棩', va: 7, sel: false },
+      ],
+      monthsList: [],
+      selCircleDays: [],
       rules: {
+        title: [{ required: true, message: '璇疯緭鍏�' }],
+        lineId: [{ required: true, message: '璇烽�夋嫨' }],
+        userIds: [{ required: true, message: '璇烽�夋嫨' }],
+        selDate: [{ type: 'array', required: true, message: '璇烽�夋嫨' }],
+        circleDays: [{ required: true, message: '璇烽�夋嫨' }],
       }
     }
   },
@@ -85,10 +118,125 @@
     })
   },
   methods: {
+    weekClick(i) {
+      this.weeks.forEach((item, index) => {
+        if (i == index) { item.sel = !item.sel }
+      })
+      this.$set(this.form, 'circleDays', this.weeks.filter(j => j.sel).map(a => a.va).join(','))
+    },
+    monthClick(i) {
+      this.monthsList.forEach((item, index) => {
+        if (i == index) { item.sel = !item.sel }
+      })
+      this.$set(this.form, 'circleDays', this.monthsList.filter(j => j.sel).map(a => a.va).join(','))
+    },
+    changeTime(e) {
+      if (e && e.length > 0) {
+        this.$set(this.form, 'startTime', e[0])
+        this.$set(this.form, 'endTime', e[1])
+      } else {
+        this.$set(this.form, 'startTime', '')
+        this.$set(this.form, 'endTime', '')
+      }
+    },
+    changeDate(e) {
+      if (e && e.length > 0) {
+        this.$set(this.form, 'startDate', e[0])
+        this.$set(this.form, 'endDate', e[1])
+      } else {
+        this.$set(this.form, 'startDate', '')
+        this.$set(this.form, 'endDate', '')
+      }
+    },
+    changeType() {
+      this.$set(this.form, 'circleDays', '')
+    },
+    getDetail(id) {
+      detailById(id).then(res => {
+        this.form = res
+        if (res.userIds) {
+          this.$set(this.form, 'userIds', Number(res.userIds))
+        }
+        if (res.startTime) {
+          this.$set(this.form, 'selTime', [res.startTime, res.endTime])
+        }
+        if (res.circleDays) {
+          const circleDays = res.circleDays.split(',')
+          if (res.circleType == 1) {
+            circleDays.forEach(i => {
+              this.weeks.forEach(j => {
+                if (i == j.va) {
+                  j.sel = true
+                }
+              })
+            })
+          } else {
+            setTimeout(() => {
+              circleDays.forEach(i => {
+                this.monthsList.forEach(j => {
+                  if (i == j.va) {
+                    j.sel = true
+                  }
+                })
+              })
+            }, 500)
+          }
+        }
+        this.$set(this.form, 'selDate', [res.startDate, res.endDate])
+      })
+    },
     initData() {
-
+      getLineList({
+        model: {},
+        capacity: 9999,
+        page: 1,
+      }).then(res => {
+        this.lineList = res.records
+      })
+      getUserList({}).then(res => {
+        this.staffList = res
+      })
+      this.monthsList = []
+      for (let i = 1; i < 32; i++) {
+        this.monthsList.push({ la: i, va: i, sel: false })
+      }
+    },
+    close() {
+      this.$refs.form.resetFields()
+      this.visible = false
     }
   }
 
 }
 </script>
+<style lang="scss" scoped>
+@import '@/assets/style/variables.scss';
+.warnning{
+  padding: 6px 10px;
+  background-color: #fcf3e6;
+  font-size: 12px;
+  color: #333333;
+}
+.weeks {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+
+  .week {
+    border: 1px solid #999999;
+    width: 40px;
+    height: 18px;
+    text-align: center;
+    line-height: 18px;
+    font-size: 12px;
+    margin-right: 8px;
+    cursor: pointer;
+    margin-bottom: 6px;
+  }
+
+  .active {
+    color: $primary-color;
+    border: 1px solid $primary-color;
+  }
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3