From 43942a545271345ce26e40d82bb97138c5ea7611 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 28 六月 2024 13:54:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 admin/src/components/business/operaVisitsReportWindow.vue |  232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 232 insertions(+), 0 deletions(-)

diff --git a/admin/src/components/business/operaVisitsReportWindow.vue b/admin/src/components/business/operaVisitsReportWindow.vue
new file mode 100644
index 0000000..c0976eb
--- /dev/null
+++ b/admin/src/components/business/operaVisitsReportWindow.vue
@@ -0,0 +1,232 @@
+<template>
+  <GlobalWindow
+    title="鏂板璁垮鎶ュ"
+    width="600px"
+    :visible.sync="isShowModal"
+    :confirm-working="isWorking"
+    @confirm="confirm"
+  >
+    <el-form :model="param" ref="paramRef" :rules="rules">
+      <div class="title_tip">璁垮棰勭害</div>
+      <el-form-item label="琚浜�" prop="startTime">
+        {{ userInfo.realname }} {{ userInfo.company.companyNamePath }}
+      </el-form-item>
+      <el-form-item label="鍏ュ洯鏃堕棿" prop="starttime">
+        <el-date-picker
+          v-model="param.starttime"
+          format="yyyy-MM-dd HH:mm"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          type="datetime"
+          default-time="08:00:00"
+          :picker-options="startPickerOptions"
+          @change="changeStarttime"
+        />
+      </el-form-item>
+      <el-form-item label="绂诲洯鏃堕棿" prop="endtime">
+        <el-date-picker
+          v-model="param.endtime"
+          format="yyyy-MM-dd HH:mm"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          type="datetime"
+          default-time="08:00:00"
+          :picker-options="endPickerOptions"
+        />
+      </el-form-item>
+
+      <div class="title_tip">璁垮淇℃伅</div>
+      <el-form-item label="鑱旂郴浜�" prop="name">
+        <el-input
+          v-model="param.name"
+          placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勫鍚�"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="鎵嬫満鍙�" prop="phone">
+        <el-input
+          v-model="param.phone"
+          placeholder="璇疯緭鍏ヨ仈绯讳汉鐨勬墜鏈哄彿"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="鏉ヨ鍗曚綅" prop="companyName">
+        <el-input
+          v-model="param.companyName"
+          placeholder="璇疯緭鍏ユ潵璁跨殑鍗曚綅鍏ㄧО"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="鍏ュ洯杞﹁締" prop="carNos">
+        <el-input v-model="param.carNos" placeholder="璇疯緭鍏ヨ溅鐗屽彿"></el-input>
+      </el-form-item>
+      <el-form-item label="闅忚溅浜烘暟" prop="memberNum">
+        <el-input
+          v-model="param.memberNum"
+          placeholder="璇疯緭鍏ラ殢杞︿汉鍛樻�绘暟"
+        ></el-input>
+      </el-form-item>
+      <el-form-item label="鏉ヨ浜嬬敱" prop="reason">
+        <el-select v-model="param.reason" placeholder="璇烽�夋嫨">
+          <el-option
+            v-for="item in VisitReason"
+            :key="item.id"
+            :label="item.title"
+            :value="item.title"
+          />
+        </el-select>
+      </el-form-item>
+    </el-form>
+  </GlobalWindow>
+</template>
+
+<script>
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import UploadFaceImg from '@/components/common/UploadFaceImg'
+import dayjs from 'dayjs'
+import { createVisit, getVisitedVisitReason } from '@/api/business/visits'
+export default {
+  name: 'OperaVisitsHkWindow',
+  extends: BaseOpera,
+  components: {
+    GlobalWindow,
+    UploadFaceImg
+  },
+  data () {
+    return {
+      isShowModal: false,
+      param: {
+        type: 2,
+        starttime: '',
+        endtime: ''
+      },
+      userInfo: this.$store.state.userInfo,
+
+      VisitReason: [],
+      uploadData: {
+        folder: 'member'
+      },
+      startPickerOptions: {
+        disabledDate (time) {
+          return time.getTime() < Date.now() - 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+        },
+        selectableRange: '00:00:00 - 23:59:59' // 杩欎釜鍔犱笂涔嬪悗锛屾椂鍒嗙涓婇潰鎵嶆湁绂佹閫夋嫨鍙樼伆锛屽鏋滀笉鍔狅紝涔熷彲浠ョ姝㈤�夋嫨锛屼絾鏄笉浼氬彉鐏�
+      },
+      endPickerOptions: {
+        disabledDate: (time) => {
+          if (this.param.starttime) {
+            return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 绂佺敤瓒呰繃褰撳墠鏃堕棿鐨勬棩鏈�
+          }
+        },
+        selectableRange: '00:00:00 - 23:59:59'
+      },
+      rules: {
+        starttime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
+        endtime: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
+        reason: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        type: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+        idcardType: [{ required: true, message: '璇烽�夋嫨', trigger: 'change' }],
+
+        memberNum: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        name: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        idcardNo: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        companyName: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        phone: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        carNos: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }],
+        constructionReason: [{ required: true, message: '璇疯緭鍏�', trigger: 'blur' }]
+      }
+    }
+  },
+  created () {
+    this.initData()
+    this.$set(this.param, 'starttime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+  },
+  watch: {
+    'param.starttime': {
+      handler (newValue, oldValue) {
+        if (newValue) {
+          const date = new Date()
+          // const min = date.getMinutes()
+          // date.setMinutes(min) // 杩欓噷鍔�1鍒嗛挓锛屾槸涓轰簡瑙e喅鍊兼敼鍙樺悗锛岀郴缁熺鏁板氨杩囨湡闄愬埗浜嗭紝鏃犳硶鐐瑰嚮鈥滄鍒烩�濇寜閽紝 濡傛灉鐩戝惉 鈥滅郴缁熸椂闂粹�濈殑鏀瑰彉锛屽垯浼氬奖鍝嶆�ц兘銆�
+          const nowDate = dayjs(date).format('HH:mm:ss')
+          let st = ''
+          if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+            const hh1 = dayjs(newValue).format('HH:mm:ss')
+            // if (hh1 < nowDate) {
+            //   this.param.starttime = new Date()
+            // }
+            st = nowDate
+          } else {
+            st = '00:00:00'
+          }
+          this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
+          // this.startPickerOptions = this.startPickerOptions
+        }
+      },
+      deep: true,
+      immediate: true
+    },
+    'param.endtime': {
+      handler (newValue, oldValue) {
+        if (newValue) {
+          const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
+          let st = ''
+          if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
+            st = nowDate
+          } else {
+            st = '00:00:00'
+          }
+          this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
+          // this.startPickerOptions = this.startPickerOptions
+        }
+      },
+      deep: true,
+      immediate: true
+    }
+  },
+  methods: {
+    initData () {
+      getVisitedVisitReason({}).then(res => {
+        this.VisitReason = res || []
+      })
+    },
+    changeStarttime (e) {
+      this.$set(this.param, 'endtime', this.param.starttime)
+    },
+    uploadAvatarSuccess (file) {
+      this.$set(this.param, 'faceImg', file.imgurl)
+      this.$set(this.param, 'faceImgUrl', file.imgurlfull)
+    },
+    // 鍚屾淇℃伅
+    confirm () {
+      this.$refs.paramRef.validate((valid) => {
+        if (!valid) {
+          return
+        }
+        // 璋冪敤鏂板缓鎺ュ彛
+        this.isWorking = true
+        createVisit({
+          ...this.param,
+          receptMemberId: this.userInfo.memberId,
+          receptMemberName: this.userInfo.realname
+        })
+          .then(() => {
+            this.visible = false
+            this.$tip.apiSuccess('鎻愪氦鎴愬姛')
+            this.$emit('success')
+            this.$emit('close')
+          })
+          .catch(e => {
+            this.$tip.apiFailed(e)
+          })
+          .finally(() => {
+            this.isWorking = false
+          })
+      })
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+.title_tip {
+  font-size: 18px;
+  font-weight: 600;
+  margin-bottom: 10px;
+}
+</style>

--
Gitblit v1.9.3