liukangdong
2024-06-17 4318282db1a4702e2afd3f9967b72242d87a5b19
‘’
已添加1个文件
已修改3个文件
252 ■■■■■ 文件已修改
admin/.env.test 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/carUseBook.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/operation/OperCarUseBookParamWindow.vue 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/operation/serviceCar/apprRecord.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.test
@@ -1,4 +1,4 @@
# æµ‹è¯•环境配置
NODE_ENV = 'production'
VUE_APP_API_URL  = 'http://192.168.0.172/'
VUE_APP_API_URL  = '/'
admin/src/api/business/carUseBook.js
@@ -34,7 +34,7 @@
  return request.get(`/visitsAdmin/cloudService/business/carUseBook/delete/${id}`)
}
// æ ¹æ®ID查询
export function detail(id) {
export function detail (id) {
  return request.get(`/visitsAdmin/cloudService/business/carUseBook/${id}`)
}
// æ‰¹é‡åˆ é™¤
@@ -45,3 +45,9 @@
    }
  })
}
// æŸ¥è¯¢è½¦è¾†å¯é¢„约时段
export const carCanReservationDate = (params) => {
  return request.get('/visitsAdmin/cloudService/business/carUseBook/carCanReservationDate', {
    params
  })
}
admin/src/components/operation/OperCarUseBookParamWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,196 @@
<template>
  <GlobalWindow
    :title="title"
    width="1000px"
    :visible.sync="visible"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <div class="modal_wrap">
      <el-form :model="form" ref="form" class="el_form" :rules="rules">
        <el-form-item label="用车范围" prop="type">
          <el-radio v-model="form.type" :label="0">室内用车</el-radio>
          <el-radio v-model="form.type" :label="1">室外用车</el-radio>
        </el-form-item>
        <el-form-item label="选择车辆" prop="carId">
          <el-select v-model="form.carId" placeholder="选择车辆">
            <el-option
              v-for="item in carsList"
              :key="item.carId"
              :label="item.carCode"
              :value="item.carId"
            >
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="用车时间" prop="sortnum">
          <div></div>
          <div class="sel_btn" @click="openTime">选择时间</div>
        </el-form-item>
        <el-form-item label="预计出发时间" prop="sortnum">
          <el-date-picker
            v-model="form.a"
            type="datetime"
            placeholder="选择日期时间"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="目的地" prop="sortnum">
          <el-input v-model="form.addr" placeholder="请输入内容"></el-input>
        </el-form-item>
        <el-form-item label="乘车人员" prop="sortnum"> </el-form-item>
        <el-form-item label="用车事由" prop="sortnum">
          <el-input
            v-model="form.content"
            type="textarea"
            placeholder="请输入"
            :rows="4"
          ></el-input>
        </el-form-item>
      </el-form>
      <div class="tip_wrap">111</div>
    </div>
    <el-dialog
      title="选择用车时间"
      :visible.sync="isShowTime"
      append-to-body
      width="600px"
    >
      <el-form :model="form" ref="form" class="el_form" :rules="rules">
        <el-form-item label="用车日期" prop="dateDay">
          <el-date-picker
            v-model="form.dateDay"
            value-format="yyyy-MM-dd"
            type="date"
            placeholder="选择日期"
            @change="seletedDate"
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item label="用车时间" prop="dateDay">
          <div>
            <div class="time_list">
              <div
                class="item"
                :class="{
                  disable: item.isUse == 1,
                  active: item.checked == '1',
                }"
                @click="datetimeClick(item, i)"
                v-for="(item, i) in timeList"
                :key="i"
                >{{ item.startHours }}-{{ item.endHours }}</div
              >
            </div>
          </div>
        </el-form-item>
      </el-form>
    </el-dialog>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/business/member'
import { allList as getCarList } from '@/api/business/cars'
import { carCanReservationDate } from '@/api/business/carUseBook'
export default {
  name: 'OperCarUseBookParamWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
    return {
      // è¡¨å•数据
      isShowTime: false,
      memberList: [],
      timeList: [],
      carsList: [],
      form: {
        type: 0
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入名称' }
        ]
      }
    }
  },
  created () {
    this.initData()
  },
  methods: {
    open () {
      this.title = '新建公务车用车申请'
      this.visible = true
    },
    openTime () {
      const { form } = this
      if(!form.carId){
        this.$tip.warning('请先选择车辆')
      }
      this.isShowTime = true
    },
    seletedDate (e) {
      console.log(e)
      const item = e.value[0]
      this.$set(this.param, 'carCode', item.code)
      this.$set(this.param, 'carId', item.id)
      if (this.param.carId && this.param.queryDate) {
        this.gettimes()
      }
      this.isShowCar = false
    },
    gettimes () {
      const { param } = this
      carCanReservationDate({
        dateDay: param.queryDate,
        carId: param.carId
      }).then(res => {
        if (res.code === 200) {
          this.timeList = res.data || []
          this.timeList.forEach((i, j) => {
            i.checked = '0',
            i.index = j
          })
        }
      })
    },
    initData () {
      getCarList({
        type: 1
      }).then(res => {
        this.carsList = res.data || []
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.modal_wrap {
  display: flex;
  .el_form {
    flex: 1;
    .sel_btn {
      width: 100%;
      height: 32px;
      border-radius: 4px;
      border: 1px solid #dcdfe6;
      margin-top: 32px;
      text-align: right;
      color: #999999;
      padding-right: 12px;
      box-sizing: border-box;
      cursor: pointer;
    }
  }
  .tip_wrap {
    width: 460px;
    margin-left: 30px;
  }
}
</style>
admin/src/views/operation/serviceCar/apprRecord.vue
@@ -51,8 +51,9 @@
    </el-form>
    <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
    <template v-slot:table-wrap>
      <ul class="toolbar" v-permissions="['business:empower:create', 'business:empower:delete']">
        <!--<li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导出</el-button></li> -->
      <ul class="toolbar" v-permissions="['business:carusebook:create','business:carusebook:exportExcel']">
        <li><el-button type="primary" @click="handleEdit" icon="el-icon-plus" v-permissions="['business:carusebook:create']">新建</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:carusebook:exportExcel']">导出</el-button></li>
      </ul>
      <el-table
          v-loading="isWorking.search"
@@ -109,6 +110,7 @@
      </pagination>
    </template>
    <OperaCarUseBookWindow ref="OperaDetailsWindow" @success="handlePageChange"/>
    <OperaCarUseBookParamWindow ref="OperaParamWindow" @success="handlePageChange"/>
  </TableLayout>
</template>
@@ -117,12 +119,13 @@
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow'
import OperaCarUseBookParamWindow from '@/components/operation/OperCarUseBookParamWindow.vue'
import { timeForMat } from '@/utils/util'
import { allList } from '@/api/business/hiddenDangerParam'
export default {
  name: 'Empower',
  extends: BaseTable,
  components: { TableLayout, Pagination ,OperaCarUseBookWindow},
  components: { TableLayout, Pagination, OperaCarUseBookWindow, OperaCarUseBookParamWindow },
  data () {
    return {
      // æœç´¢
@@ -169,26 +172,29 @@
      }
      this.search()
    },
    handleEdit () {
      this.$refs.OperaParamWindow.open()
    },
    loadParams () {
      allList({
      })
          .then(res => {
            if (res != null && res.length) {
              res.forEach(item => {
                if (item && item.type != null && item.type === 0) {
                  this.areaList.push(item)
                }
                if (item && item.type != null && item.type === 1) {
                  this.cateList.push(item)
                }
              })
            }
          })
          .catch(e => {
            // this.$tip.apiFailed(e)
          })
          .finally(() => {
          })
        .then(res => {
          if (res != null && res.length) {
            res.forEach(item => {
              if (item && item.type != null && item.type === 0) {
                this.areaList.push(item)
              }
              if (item && item.type != null && item.type === 1) {
                this.cateList.push(item)
              }
            })
          }
        })
        .catch(e => {
          // this.$tip.apiFailed(e)
        })
        .finally(() => {
        })
    },
    seleTime (e) {
      this.searchForm.queryStartTime = e[0]