ll
liukangdong
2024-10-09 05cd6a216ba17cfe357bbe52e4a9e53494d5717c
ll
已添加3个文件
已删除2个文件
已修改13个文件
598 ■■■■■ 文件已修改
admin/.env.production 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.test 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/category.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/business/company.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/platform/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/assets/style/style.scss 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarsWindow.vue 112 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCategoryWindow.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaTrainTimeImportWindow.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/system/user/RoleConfigWindow.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/category.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/relativeMember.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/statistics/platformRecord.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/cars.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/category.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/components/OperaCategoryWindow.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/vehicle/parkBook.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk 补丁 | 查看 | 原始文档 | blame | 历史
admin/.env.production
@@ -1,4 +1,4 @@
# ç”Ÿäº§çŽ¯å¢ƒé…ç½®
NODE_ENV = 'production'
VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
# VUE_APP_API_URL  = 'http://10.50.250.178:8088/gateway_interface'
admin/.env.test
@@ -1,4 +1,4 @@
# æµ‹è¯•环境配置
NODE_ENV = 'production'
VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
# VUE_APP_API_URL  = 'http://192.168.5.13/gateway_interface'
admin/src/api/business/category.js
@@ -6,12 +6,21 @@
    trim: true
  })
}
// ä¸€çº§åˆ†ç±»æŸ¥è¯¢
export function fetchCateList (data) {
  return request.post('/visitsAdmin/cloudService/business/category/list', data, {
    trim: true
  })
}
// åˆ›å»º
export function create (data) {
  return request.post('/visitsAdmin/cloudService/business/category/create', data)
}
// è¯¦æƒ…
export function getInfoById (id) {
  return request.get('/visitsAdmin/cloudService/business/category/' + id)
}
// ä¿®æ”¹
export function updateById (data) {
  return request.post('/visitsAdmin/cloudService/business/category/updateById', data)
admin/src/api/business/company.js
@@ -37,6 +37,10 @@
export function companySync (data) {
  return request.post('/visitsAdmin/cloudService/business/company/syncAll', data)
}
// åˆ†é¡µæŸ¥è¯¢
export function companyGetList (data) {
  return request.post('/visitsAdmin/cloudService/business/company/page', data)
}
// åˆ é™¤
export function deleteById (id) {
admin/src/api/platform/index.js
@@ -97,6 +97,10 @@
export function platformJobPage(data) {
  return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
}
// ç»Ÿè®¡æœˆå°ä½œä¸šä»»åŠ¡ åˆ†é¡µåˆ—表
export function platformLogPage(data) {
  return request.post('/visitsAdmin/cloudService/business/platformLog/page', data)
}
// æœˆå°ä½œä¸šç»Ÿè®¡ åˆ†é¡µåˆ—表
export function platformWorkReportPage(data) {
  return request.post('/visitsAdmin/cloudService/business/platform/platformWorkReportPage', data)
admin/src/assets/style/style.scss
@@ -291,6 +291,11 @@
.df{
  display: flex;
}
.df_center{
  display: flex;
  align-items: center;
  justify-content: center;
}
.df_ac{
  display: flex;
  align-items: center;
admin/src/components/business/OperaCarsWindow.vue
@@ -1,11 +1,5 @@
<template>
    <GlobalWindow
        :title="title"
        width="500px"
        :visible.sync="visible"
        :confirm-working="isWorking"
        @confirm="confirm"
    >
  <GlobalWindow :title="title" width="500px" @close="close" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm">
      <el-form :model="form" ref="form" :rules="rules">
          <el-form-item label="车牌号" prop="code">
            <el-input v-model="form.code" placeholder="请输入车牌号" v-trim/>
@@ -17,13 +11,22 @@
              <el-radio  :label="2"  >其他</el-radio>
            </el-radio-group>
          </el-form-item>
      <el-form-item label="选择分类:" prop="type">
        <el-cascader v-model="form.cateId" @change="changeSel" :options="cateList" :props="{
          label: 'name',
          value: 'id',
          children: 'childCategoryList',
        }"></el-cascader>
      </el-form-item>
      <el-form-item label="选择组织:" prop="groupId">
        <el-select v-model="form.groupId" @change="changeSel" clearable filterable placeholder="请选择">
          <el-option v-for="item in companyList" :key="item.id" :label="item.name" :value="item.id">
          </el-option>
        </el-select>
      </el-form-item>
          <el-form-item label="选择车主:" prop="memberId">
            <el-select v-model="form.memberId" clearable filterable placeholder="请选择">
              <el-option
                  v-for="item in memberList"
                  :key="item.id"
                  :label="item.name"
                  :value="item.id">
          <el-option v-for="item in memberList" :key="item.id" :label="item.name" :value="item.id">
              </el-option>
            </el-select>
          </el-form-item>
@@ -35,6 +38,10 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { allList } from '@/api/business/member'
import { fetchList } from '@/api/business/category.js'
import { create, updateById } from '@/api/business/cars'
import { companyGetList } from '@/api/business/company'
import { Message } from 'element-ui'
export default {
  name: 'OperaInternalCompanyWindow',
  extends: BaseOpera,
@@ -47,13 +54,16 @@
        id: null,
        code: null,
        memberId: null,
        type: 0
        type: 0,
        groupId: null,
        cateId: [],
      },
      cateList: [],
      companyList: [],
      // éªŒè¯è§„则
      rules: {
        code: [
          { required: true, message: '请输入车牌号' }
        ],
        code: [{ required: true, message: '请输入车牌号' }],
        groupId: [{ required: true, message: '请选择组织' }],
        type: [
          { required: true, message: '请选择车辆类型' }
        ]
@@ -70,7 +80,8 @@
    open (title, target) {
      this.title = title
      this.visible = true
      this.loadMember()
      this.getCate()
      this.getCompany()
      // æ–°å»ºç»„织
      if (target == null) {
        this.$nextTick(() => {
@@ -81,15 +92,74 @@
        return
      }
      // ç¼–辑
      this.$nextTick(() => {
        for (const key in this.form) {
          this.form[key] = target[key]
      // this.$nextTick(() => {
      //   for (const key in this.form) {
      //     this.form[key] = target[key]
      //   }
      // })
    },
    changeSel() {
      const { form } = this
      if (form.groupId) {
        this.loadMember()
        }
    },
    confirm() {
      console.log('form', this.form.cateId)
      const { form } = this
      if(form.cateId && form.cateId.length == 2){
      }else{
        return Message.error('请选择二级分类')
      }
      this.$refs['form'].validate((valid) => {
        if (valid) {
          let fn = form.id ? updateById : create
          fn({
            ...form,
            cateId: form.cateId[1]
          }).then(res => {
            Message.success('保存成功')
            this.visible = false
            this.$emit('success')
          })
        }
      })
    },
    close() {
      this.visible = false
      this.$emit('close')
    },
    handleChange(val) {
    },
    getCate() {
      fetchList({
        model: {},
        capacity: 1000,
        page: 1,
      }).then(res => {
        this.cateList = res.records || []
      })
    },
    getCompany() {
      companyGetList({
        model: {},
        capacity: 1000,
        page: 1,
      }).then(res => {
        this.companyList = res.records || []
      })
    },
    loadMember () {
      const { form } = this
      allList({
        type: 2
        type: 2,
        companyId: form.groupId,
      })
        .then(res => {
          this.memberList = res
admin/src/components/business/OperaCategoryWindow.vue
ÎļþÒÑɾ³ý
admin/src/components/business/OperaTrainTimeImportWindow.vue
@@ -12,7 +12,7 @@
      1.请先下载文件模板,并按照模板要去填写表格内容;<br>
    </p>
    <el-form class="demo-form-inline" >
      <el-form-item label="人员培训期名单" required>
      <el-form-item label="人员名单" required>
        <div style="width: 100%;display: flex;align-items: center;">
          <el-button type="primary" :loading="importing"   @click="clickRef">点击上传</el-button>
          <el-button type="text" @click="exportTemplate">点击下载模版.EXCEL</el-button>
admin/src/components/system/user/RoleConfigWindow.vue
@@ -2,12 +2,13 @@
  <GlobalWindow
    :visible.sync="visible"
    :confirm-working="isWorking"
    width="582px"
    width="620px"
    title="配置用户角色"
    @confirm="confirm"
  >
    <p class="tip" v-if="user != null">为用户 <em>{{user.realname}}</em> é…ç½®è§’色</p>
    <p class="tip-warn"><i class="el-icon-warning"></i>提醒:角色配置后需重新登录后生效</p>
    <div class="df_center">
    <el-transfer
      v-model="selectedIds"
      :titles="['未授权角色', '已授权角色']"
@@ -17,6 +18,7 @@
      }"
      :data="roles">
    </el-transfer>
    </div>
  </GlobalWindow>
</template>
admin/src/views/business/category.vue
ÎļþÒÑɾ³ý
admin/src/views/business/relativeMember.vue
@@ -61,7 +61,7 @@
        <li><el-button type="primary" @click="$refs.OperaMemberImportWindow.open('人员导入', searchForm.companyType)"
            icon="el-icon-plus" v-permissions="['business:member:create']">人员导入</el-button></li>
        <li><el-button type="primary"
            @click="$refs.OperaTrainTimeImportWindow.open('培训期导入', department, searchForm.companyType)"
            @click="$refs.OperaTrainTimeImportWindow.open('培训有效期导入', department, searchForm.companyType)"
            icon="el-icon-plus" v-permissions="['business:traintime:create']">培训期导入</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
            v-permissions="['business:member:delete']">批量删除</el-button></li>
admin/src/views/statistics/platformRecord.vue
@@ -6,9 +6,10 @@
      <el-table-column prop="platformGroupName" label="月台组" min-width="100" show-overflow-tooltip />
      <el-table-column prop="carCodeFront" label="车前牌照号" min-width="100" show-overflow-tooltip />
      <el-table-column prop="carCodeBack" label="车后牌照号" min-width="100" show-overflow-tooltip />
      <el-table-column prop="startDate" label="作业开始" min-width="100" show-overflow-tooltip />
      <el-table-column prop="doneDate" label="作业结束" min-width="100" show-overflow-tooltip />
      <el-table-column prop="workTime" label="作业时长" min-width="100" show-overflow-tooltip /><el-table-column prop="name"
      <el-table-column prop="param1" label="作业开始" min-width="100" show-overflow-tooltip />
      <el-table-column prop="param2" label="作业结束" min-width="100" show-overflow-tooltip />
      <el-table-column prop="workTime" label="作业时长" min-width="100" show-overflow-tooltip />
      <el-table-column prop="name"
        label="运输单号/合同号" min-width="100" show-overflow-tooltip>
        <template v-slot="scope">
          <span>{{ scope.row.billCode || scope.row.contractNum }}</span>
@@ -27,7 +28,7 @@
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
dayjs.extend(duration)
import { platformJobPage, getPlatformGroupList } from '@/api'
import { platformLogPage, getPlatformGroupList } from '@/api'
export default {
  components: {
    Pagination,
@@ -99,14 +100,14 @@
    getList(page) {
      const { pagination, filters } = this
      this.loading = true
      platformJobPage({
      platformLogPage({
        model: {
          ...filters,
          queryStatus: '5,6,9,10',
          queryStatus: '6,7,8',
          beginWorkDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
          beginWorkDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
        },
        sorts: [{ direction: 'DESC', property: 'START_DATE' }],
        sorts: [{ direction: 'DESC', property: 'param1' }],
        capacity: pagination.pageSize,
        page: page || pagination.page,
      }).then(res => {
@@ -115,7 +116,7 @@
        this.list.forEach(item => {
          item.inTypeTemp = item.inType == 0 ? '整托盘' : '件烟'
          item.taskOrigin = 'WMS获取'
          item.workTime = dayjs.duration(item.workTime, 'seconds').format('H时m分s秒')
          item.workTime = dayjs.duration(item.param3, 'seconds').format('H时m分s秒')
        })
        this.pagination.total = res.total || 0
      }, () => {
admin/src/views/vehicle/cars.vue
@@ -5,11 +5,17 @@
            <el-form-item label="" prop="code" title="车牌号">
                <el-input v-model="searchForm.code" clearable placeholder="车牌号" @keypress.enter.native="search"></el-input>
            </el-form-item>
          <el-form-item label="" prop="memberName" title="车主姓名/手机号">
            <el-input v-model="searchForm.memberName" clearable placeholder="车主姓名/手机号" @keypress.enter.native="search"></el-input>
      <el-form-item label="" prop="memberName" title="车主信息">
        <el-input v-model="searchForm.memberName" clearable placeholder="车主信息"
          @keypress.enter.native="search"></el-input>
          </el-form-item>
          <el-form-item label="" prop="companyName" title="车主部门名称">
            <el-input v-model="searchForm.companyName" clearable placeholder="车主部门名称" @keypress.enter.native="search"></el-input>
      <!-- <el-form-item label="" prop="cateName" title="车辆分类名称">
        <el-input v-model="searchForm.cateName" clearable placeholder="车辆分类名称"
          @keypress.enter.native="search"></el-input>
      </el-form-item> -->
      <el-form-item label="" prop="companyName" title="车主组织名称">
        <el-input v-model="searchForm.companyName" clearable placeholder="车主组织名称"
          @keypress.enter.native="search"></el-input>
          </el-form-item>
          <el-form-item label="" prop="authStatus" title="是否授权">
            <el-select v-model="searchForm.authStatus" @change="search" clearable placeholder="是否授权">
@@ -32,18 +38,15 @@
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:cars:create', 'business:parkBook:create']">
                <li><el-button type="primary" @click="$refs.operaCarsWindow.open('新建车辆')" icon="el-icon-plus" v-permissions="['business:cars:create']">新建</el-button></li>
                <li><el-button type="primary" @click="startEmpowerBatch" icon="el-icon-plus" v-permissions="['business:parkbook:create']">下发授权</el-button></li>
        <li><el-button type="primary" @click="handleEdit" icon="el-icon-plus"
            v-permissions="['business:cars:create']">新建</el-button></li>
        <li><el-button type="primary" @click="startEmpowerBatch" icon="el-icon-plus"
            v-permissions="['business:parkbook:create']">下发授权</el-button></li>
            </ul>
            <el-table
                v-loading="isWorking.search"
                :data="tableData.list"
                stripe
                @selection-change="handleSelectionChange"
            >
      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column prop="code" label="车牌号" min-width="100px"></el-table-column>
                <el-table-column label="车辆类型" min-width="100px">
        <el-table-column label="车辆类型" min-width="120px">
                    <template slot-scope="{row}">
                      <span v-if="row.type == 0" >安泰公务车</span>
                      <span v-if="row.type == 1">安泰自有物流车</span>
@@ -52,6 +55,7 @@
                </el-table-column>
              <el-table-column prop="memberName" label="车主姓名"  min-width="100px"></el-table-column>
              <el-table-column prop="memberPhone" label="车主手机号" min-width="100px"></el-table-column>
        <el-table-column prop="cateName" label="车辆分类" min-width="160px"></el-table-column>
              <el-table-column prop="companyName" label="车主组织" min-width="200px"></el-table-column>
              <el-table-column label="是否授权" align="center" min-width="100px">
                <template slot-scope="{row}">
@@ -63,7 +67,9 @@
                <template slot-scope="{row}">
                  <div  v-if="row.parkBookList && row.parkBookList.length" >
                    <span v-for="item in row.parkBookList"  :key="item.id" style="display: block">
                      <span  :style="(item.hkStatus== 0?'color:#2080f7':(item.hkStatus== 1?'color:green':(item.hkStatus== 2?'color:red':'')))">【{{item.hkStatus== 0?'等待下发':(item.hkStatus== 1?'下发成功':(item.hkStatus== 2?'下发失败':''))}}】 </span>{{item.parksName}}
                <span
                  :style="(item.hkStatus == 0 ? 'color:#2080f7' : (item.hkStatus == 1 ? 'color:green' : (item.hkStatus == 2 ? 'color:red' : '')))">【{{ item.hkStatus ==
                    0 ? '等待下发' : (item.hkStatus == 1 ? '下发成功' : (item.hkStatus == 2?'下发失败':''))}}】 </span>{{ item.parksName }}
                    </span>
                  </div>
                  <span  v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span>
@@ -71,7 +77,8 @@
              </el-table-column>
              <el-table-column label="下发有效期" align="center" min-width="170px">
                <template slot-scope="{row}">
                  <div v-if="row.authStatus !=null && row.authStatus == 1 && row.parkBookList!=null && row.parkBookList.length>0">
            <div
              v-if="row.authStatus != null && row.authStatus == 1 && row.parkBookList != null && row.parkBookList.length > 0">
                    <div v-if="!row.startTime || !row.endTime">长期有效</div>
                    <div v-else>
                      <span style="color: green">起:{{row.startTime}}</span><br/>
@@ -85,28 +92,24 @@
                <el-table-column prop="editDate" label="操作时间" min-width="140px"></el-table-column>
              <el-table-column
                  v-if="containPermissions(['business:member:update', 'business:member:delete','business:empower:create'])"
                  label="操作"
                  min-width="200"
                  align="center"
                  fixed="right"
              >
          label="操作" min-width="200" align="center" fixed="right">
                <template slot-scope="{row}">
                  <el-button type="text" icon="el-icon-edit" @click="$refs.operaCarsWindow.open('编辑车辆信息',row)" v-permissions="['business:cars:update']">编辑</el-button>
                  <el-button type="text" icon="el-icon-edit" @click="$refs.operaCarAuthWindow.open('下发授权',[row.id],[row.code])" v-permissions="['business:parkbook:create']">下发授权</el-button>
                  <el-button  type="text"  icon="el-icon-delete" @click="deleteById(row)" style="color: red" v-permissions="['business:empower:delete']">删除</el-button>
            <el-button type="text" icon="el-icon-edit" @click="handleEdit(row)"
              v-permissions="['business:cars:update']">编辑</el-button>
            <el-button type="text" icon="el-icon-edit"
              @click="$refs.operaCarAuthWindow.open('下发授权', [row.id], [row.code])"
              v-permissions="['business:parkbook:create']">下发授权</el-button>
            <el-button type="text" icon="el-icon-delete" @click="deleteById(row)" style="color: red"
              v-permissions="['business:empower:delete']">删除</el-button>
                </template>
              </el-table-column>
            </el-table>
            <pagination
                @size-change="handleSizeChange"
                @current-change="handlePageChange"
                :pagination="tableData.pagination"
            >
      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination">
            </pagination>
        </template>
        <!-- æ–°å»º/修改 -->
        <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange"/>
        <OperaCarsWindow ref="operaCarsWindow" @success="handlePageChange"/>
    <OperaCarsWindow v-if="isShowEdit" ref="operaCarsWindow" @close="isShowEdit = false" @success="handlePageChange" />
    </TableLayout>
</template>
@@ -129,7 +132,8 @@
        companyName: '',
        type:null,
        authStatus:null
      }
      },
      isShowEdit: false
    }
  },
  created () {
@@ -142,6 +146,20 @@
    this.search()
  },
  methods: {
    handleEdit(row) {
      this.isShowEdit = true
      let str = row && row.id ? '编辑车辆' : '新建车辆'
      this.$nextTick(() => {
        this.$refs.operaCarsWindow.open(str, row)
        if (row && row.id) {
          let form = { ...row, cateId: []}
          if(row.catePId){ form.cateId.push(row.catePId) }
          if(row.cateId){ form.cateId.push(row.cateId) }
          this.$refs.operaCarsWindow.form = form
          this.$refs.operaCarsWindow.loadMember()
        }
      })
    },
    // åŒæ­¥ä¿¡æ¯
    startEmpowerBatch () {
      if (this.tableData.selectedRows.length === 0) {
admin/src/views/vehicle/category.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,120 @@
<template>
    <TableLayout>
        <!-- æœç´¢è¡¨å• -->
        <!-- <el-form ref="searchForm" slot="search-form" label-width="100px" inline>
            <el-form-item label="状态" prop="status">
                <el-select v-model="filters.status" placeholder="请选择">
                    <el-option label="启用" value="0"></el-option>
                    <el-option label="禁用" value="1"></el-option>
                </el-select>
            </el-form-item>
            <section>
                <el-button type="primary" @click="search">搜索</el-button>
                <el-button @click="reset">重置</el-button>
            </section>
        </el-form> -->
        <!-- è¡¨æ ¼å’Œåˆ†é¡µ -->
        <template v-slot:table-wrap>
            <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']">
                <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus"
                        v-permissions="['business:category:create']">新建</el-button></li>
            </ul>
            <el-table row-key="id" :tree-props="{children: 'childCategoryList'}" v-loading="isWorking.search" :data="dataList" stripe @selection-change="handleSelectionChange">
                <el-table-column prop="name" label="分类名称" min-width="100px"></el-table-column>
                <el-table-column prop="remark" label="备注" min-width="100px"></el-table-column>
                <!-- <el-table-column prop="status" label="状态" min-width="100px">
                    <template slot-scope="{row}">
                        <span v-if="row.status === 0">启用</span>
                        <span v-if="row.status === 1">禁用</span>
                    </template>
                </el-table-column> -->
                <el-table-column prop="createDate" label="创建时间" min-width="100px"></el-table-column>
                <el-table-column v-if="containPermissions(['business:category:update', 'business:category:delete'])"
                    label="操作" min-width="120" fixed="right">
                    <template slot-scope="{row}">
                        <el-button type="text" @click="handleEdit(row)" icon="el-icon-edit"
                            v-permissions="['business:category:update']">编辑</el-button>
                        <el-button type="text" @click="deleteById(row)" icon="el-icon-delete"
                            v-permissions="['business:category:delete']">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="tableData.pagination">
            </pagination>
        </template>
        <!-- æ–°å»º/修改 -->
        <OperaCategoryWindow v-if="isShowEdit" @close="isShowEdit = false" ref="operaCategoryWindow" @success="getList" />
    </TableLayout>
</template>
<script>
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
import OperaCategoryWindow from './components/OperaCategoryWindow'
import { fetchList, deleteById } from '@/api/business/category.js'
export default {
    name: 'Category',
    extends: BaseTable,
    components: { TableLayout, Pagination, OperaCategoryWindow },
    data() {
        return {
            // æœç´¢
            filters: {
                parentId: ''
            },
            isShowEdit: false,
            loading: false,
            pagination: {
                pageSize: 10,
                page: 1,
                total: 0,
            },
            dataList: []
        }
    },
    created() {
        this.getList()
    },
    methods: {
        handleEdit(row) {
            this.isShowEdit = true
            let str = row && row.id ? '编辑车辆分类' : '新建车辆分类'
            this.$nextTick(() => {
                this.$refs.operaCategoryWindow.open(str)
                this.$refs.operaCategoryWindow.getList()
                if(row && row.id){
                    this.$refs.operaCategoryWindow.getDetail(row.id)
                }
            })
        },
        deleteById(row) {
            this.$confirm(`您确认要删除该分类吗`, '温馨提示', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning'
            }).then(() => {
                deleteById(row.id).then(res => {
                    this.getList()
                })
            })
        },
        getList() {
            const { pagination, filters } = this
            this.loading = true
            fetchList({
                model: { ...filters },
                capacity: pagination.pageSize,
                page: pagination.page,
            }).then(res => {
                this.loading = false
                this.dataList = res.records || []
                this.pagination.total = res.total || 0
            }, () => {
                this.loading = false
            })
        },
    }
}
</script>
admin/src/views/vehicle/components/OperaCategoryWindow.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
<template>
  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" width="600px" @close="close" @confirm="confirm">
    <el-form :model="form" ref="form" :rules="rules">
      <el-form-item label="一级分类" prop="parentId">
        <el-select v-model="form.parentId" placeholder="不填为则一级分类">
          <el-option v-for="op in dataList" :key="op.id" :label="op.name" :value="op.id"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="二级分类" prop="name">
        <el-input v-model="form.name" placeholder="请输入二级分类" v-trim />
      </el-form-item>
      <!-- <el-form-item label="状态" prop="status">
        <el-select v-model="form.status" placeholder="请选择">
          <el-option label="启用" value="0"></el-option>
          <el-option label="禁用" value="1"></el-option>
        </el-select>
      </el-form-item> -->
      <el-form-item label="备注" prop="remark">
        <el-input type="textarea" v-model="form.remark" placeholder="请输入备注" v-trim />
      </el-form-item>
    </el-form>
  </GlobalWindow>
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import { create, fetchCateList, getInfoById } from '@/api/business/category.js'
export default {
  name: 'OperaCategoryWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data() {
    return {
      // è¡¨å•数据
      form: {
        parentId: null,
        name: '',
        remark: '',
        status: '',
        type: 1
      },
      // éªŒè¯è§„则
      rules: {
        name: [
          { required: true, message: '请输入二级分类名称', trigger: 'blur' }
        ],
        status: [
          { required: true, message: '请选择是否启用', trigger: 'change' }
        ]
      },
      dataList: []
    }
  },
  created() {
    this.config({
      api: '/business/category',
      'field.id': 'id'
    })
  },
  methods: {
    getList() {
      fetchCateList({}).then(res => {
        this.dataList = res || []
      })
    },
    close() {
      this.visible = false
      this.$emit('close')
    },
    getDetail(id) {
      getInfoById(id).then(res => {
        this.form = res
      })
    },
  }
}
</script>
admin/src/views/vehicle/parkBook.vue
@@ -5,8 +5,8 @@
            <el-form-item title="车牌号" prop="carCode">
                <el-input v-model="searchForm.carCode" placeholder="车牌号" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item title="车主姓名/手机号" prop="memberName">
                <el-input v-model="searchForm.memberName" placeholder="员工姓名/手机号" @keypress.enter.native="search"></el-input>
            <el-form-item title="车主信息" prop="memberName">
                <el-input v-model="searchForm.memberName" placeholder="车主信息" @keypress.enter.native="search"></el-input>
            </el-form-item>
            <el-form-item title="车主组织" prop="companyName">
                <el-input v-model="searchForm.companyName" placeholder="车主组织名称" @keypress.enter.native="search"></el-input>
h5_meeting/unpackage/release/apk/__UNI__EF8BAA7__20241008151948.apk
Binary files differ