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,45 +1,52 @@ <template> <GlobalWindow :title="title" width="500px" :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/> </el-form-item> <el-form-item label="车è¾ç±»å" prop="type"> <el-radio-group v-model="form.type" > <el-radio :label="0" >宿³°å ¬å¡è½¦</el-radio> <el-radio :label="1" >宿³°ç©æµè½¦</el-radio> <el-radio :label="2" >å ¶ä»</el-radio> </el-radio-group> </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> </el-select> </el-form-item> </el-form> </GlobalWindow> <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 /> </el-form-item> <el-form-item label="车è¾ç±»å" prop="type"> <el-radio-group v-model="form.type"> <el-radio :label="0">宿³°å ¬å¡è½¦</el-radio> <el-radio :label="1">宿³°ç©æµè½¦</el-radio> <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> </el-select> </el-form-item> </el-form> </GlobalWindow> </template> <script> 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, components: { GlobalWindow }, data () { data() { return { // è¡¨åæ°æ® memberList: [], @@ -47,49 +54,112 @@ 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: 'è¯·éæ©è½¦è¾ç±»å' } ] } } }, created () { created() { this.config({ api: '/business/cars', 'field.id': 'id' }) }, methods: { open (title, target) { open(title, target) { this.title = title this.visible = true this.loadMember() this.getCate() this.getCompany() // æ°å»ºç»ç» if (target == null) { this.$nextTick(() => { this.$refs.form.resetFields() this.form[this.configData['field.id']] = null this.form.type=0 this.form.type = 0 }) 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') }) } }) }, loadMember () { 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,13 +2,14 @@ <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> <el-transfer <div class="df_center"> <el-transfer v-model="selectedIds" :titles="['æªææè§è²', 'å·²ææè§è²']" :props="{ @@ -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
@@ -1,113 +1,116 @@ <template> <TableLayout :permissions="['business:member:query']"> <!-- æç´¢è¡¨å --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <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> <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="æ¯å¦ææ"> <el-option label="å·²ææ" value="1"></el-option> <el-option label="æªææ" value="0"></el-option> </el-select> </el-form-item> <el-form-item label="" prop="type" title="车è¾ç±»å"> <el-select v-model="searchForm.type" @change="search" clearable placeholder="车è¾ç±»å"> <el-option label="宿³°å ¬å¡è½¦" value="0"></el-option> <el-option label="宿³°èªæç©æµè½¦" value="1"></el-option> <el-option label="å ¶ä»" value="2"></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: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> </ul> <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"> <template slot-scope="{row}"> <span v-if="row.type == 0" >宿³°å ¬å¡è½¦</span> <span v-if="row.type == 1">宿³°èªæç©æµè½¦</span> <span v-if="row.type == 2" >å ¶ä»</span> </template> </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="companyName" label="车主ç»ç»" min-width="200px"></el-table-column> <el-table-column label="æ¯å¦ææ" align="center" min-width="100px"> <template slot-scope="{row}"> <span v-if="row.authStatus == 1" style="color: green">æ¯</span> <span v-else style="color: red">å¦</span> </template> </el-table-column> <el-table-column prop="parksName" align="center" label="å·²ææå车åº" min-width="200px"> <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> </div> <span v-if="row.parkBookList ==null ||row.parkBookList.length ==0">-</span> </template> </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.startTime || !row.endTime">é¿æææ</div> <div v-else> <span style="color: green">èµ·ï¼{{row.startTime}}</span><br/> <span style="color: red">æ¢ï¼{{row.endTime}}</span> </div> </div> <div v-else >-</div> </template> </el-table-column> <el-table-column prop="editorName" label="æä½äºº" min-width="100px"></el-table-column> <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" > <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> </template> </el-table-column> </el-table> <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="tableData.pagination" > </pagination> </template> <!-- æ°å»º/ä¿®æ¹ --> <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange"/> <OperaCarsWindow ref="operaCarsWindow" @success="handlePageChange"/> </TableLayout> <TableLayout :permissions="['business:member:query']"> <!-- æç´¢è¡¨å --> <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline> <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> <!-- <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="æ¯å¦ææ"> <el-option label="å·²ææ" value="1"></el-option> <el-option label="æªææ" value="0"></el-option> </el-select> </el-form-item> <el-form-item label="" prop="type" title="车è¾ç±»å"> <el-select v-model="searchForm.type" @change="search" clearable placeholder="车è¾ç±»å"> <el-option label="宿³°å ¬å¡è½¦" value="0"></el-option> <el-option label="宿³°èªæç©æµè½¦" value="1"></el-option> <el-option label="å ¶ä»" value="2"></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:cars:create', 'business:parkBook:create']"> <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-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="120px"> <template slot-scope="{row}"> <span v-if="row.type == 0">宿³°å ¬å¡è½¦</span> <span v-if="row.type == 1">宿³°èªæç©æµè½¦</span> <span v-if="row.type == 2">å ¶ä»</span> </template> </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}"> <span v-if="row.authStatus == 1" style="color: green">æ¯</span> <span v-else style="color: red">å¦</span> </template> </el-table-column> <el-table-column prop="parksName" align="center" label="å·²ææå车åº" min-width="200px"> <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> </div> <span v-if="row.parkBookList == null || row.parkBookList.length == 0">-</span> </template> </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.startTime || !row.endTime">é¿æææ</div> <div v-else> <span style="color: green">èµ·ï¼{{ row.startTime }}</span><br /> <span style="color: red">æ¢ï¼{{ row.endTime }}</span> </div> </div> <div v-else>-</div> </template> </el-table-column> <el-table-column prop="editorName" label="æä½äºº" min-width="100px"></el-table-column> <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"> <template slot-scope="{row}"> <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> </template> <!-- æ°å»º/ä¿®æ¹ --> <OperaCarAuthWindow ref="operaCarAuthWindow" @success="handlePageChange" /> <OperaCarsWindow v-if="isShowEdit" ref="operaCarsWindow" @close="isShowEdit = false" @success="handlePageChange" /> </TableLayout> </template> <script> @@ -119,20 +122,21 @@ export default { name: 'Cars', extends: BaseTable, components: { TableLayout, Pagination, OperaCarsWindow,OperaCarAuthWindow }, data () { components: { TableLayout, Pagination, OperaCarsWindow, OperaCarAuthWindow }, data() { return { // æç´¢ searchForm: { code: '', memberName: '', companyName: '', type:null, authStatus:null } type: null, authStatus: null }, isShowEdit: false } }, created () { created() { this.config({ module: '车è¾ä¿¡æ¯è¡¨', api: '/business/cars', @@ -142,8 +146,22 @@ 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 () { startEmpowerBatch() { if (this.tableData.selectedRows.length === 0) { this.$tip.warning('请è³å°éæ©ä¸æ¡æ°æ®') return 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.apkBinary files differ