From bc04553e17adb00ab8205dfa9bfed58d0e0a2963 Mon Sep 17 00:00:00 2001 From: zhangzeli <123456> Date: 星期三, 24 十一月 2021 09:04:33 +0800 Subject: [PATCH] 车辆 --- src/views/your/area-manage/areaManage.vue | 48 src/views/your/car-manage/carManage.vue | 1 src/views/your/addOilInfo-manage/exportColumn.js | 56 + src/views/your/accident-manage/accidentManage.vue | 1 src/views/your/addOilInfo-manage/addOilInfoManage.vue | 899 ++++++++++++++++++++++++ src/views/your/carInfo-manage/exportColumn.js | 53 + src/views/your/addOil-manage/addOilManage.vue | 70 + src/views/your/addOilInfo-manage/addOilInfoManage.less | 13 src/views/your/suggest-manage/suggestManage.vue | 18 src/views/your/carInfo-manage/carInfoManage.less | 13 src/api/open.js | 24 src/views/your/carInfo-manage/carInfoManage.vue | 964 ++++++++++++++++++++++++++ 12 files changed, 2,106 insertions(+), 54 deletions(-) diff --git a/src/api/open.js b/src/api/open.js index 617e84f..0526a65 100644 --- a/src/api/open.js +++ b/src/api/open.js @@ -64,7 +64,7 @@ // 鑾峰彇鎵�鏈夎溅杈嗕俊鎭� export const getAll = (params) => { - return getRequest('/car/getAll', params) + return getRequest('/car/getAllCar', params) } // 鍒嗛〉鑾峰彇鍔犳补淇℃伅 @@ -180,4 +180,24 @@ // 鏌ヨ鐗囧尯淇℃伅 export const getSuggest = (params) => { return getRequest('/suggest/getByPage', params) -} \ No newline at end of file +} + +// 鍒犻櫎鎺ヨ揣浜轰俊鎭� +export const deleteSuggest = (params) => { + return postRequest('/suggest/delByIds', params) +} + +// 鏌ヨ鎺ヨ揣浜轰俊鎭� +export const getCar = (params) => { + return getRequest('/car/getAll', params) +} + +// 瀵煎嚭excel +export const getOilExcel = (params) => { + return getRequest('/addOil/getExcel', params) +} + +// 鏍规嵁杞﹁締ID鏌ヨ鍔犳补璁板綍 +export const getByDate = (params) => { + return getRequest('/addOil/getByDate', params) +} diff --git a/src/views/your/accident-manage/accidentManage.vue b/src/views/your/accident-manage/accidentManage.vue index e20fadd..edede87 100644 --- a/src/views/your/accident-manage/accidentManage.vue +++ b/src/views/your/accident-manage/accidentManage.vue @@ -8,7 +8,6 @@ <Card> <Row class="operation"> <Button @click="addOil" type="primary" icon="md-add">娣诲姞浜嬫晠璁板綍</Button> - <Button @click="delAll" icon="md-trash">鎵归噺鍒犻櫎</Button> <Button @click="init" icon="md-refresh">鍒锋柊</Button> <Button type="dashed" @click="openTip = !openTip">{{ openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" diff --git a/src/views/your/addOil-manage/addOilManage.vue b/src/views/your/addOil-manage/addOilManage.vue index e96119f..1cd128a 100644 --- a/src/views/your/addOil-manage/addOilManage.vue +++ b/src/views/your/addOil-manage/addOilManage.vue @@ -8,7 +8,6 @@ <Card> <Row class="operation"> <Button @click="addOil" type="primary" icon="md-add">娣诲姞鍔犳补璁板綍</Button> - <Button @click="delAll" icon="md-trash">鎵归噺鍒犻櫎</Button> <Button @click="init" icon="md-refresh">鍒锋柊</Button> <Button type="dashed" @click="openTip = !openTip">{{ openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" @@ -66,29 +65,46 @@ :label-width="80" :rules="addOilFormValidate" > - <FormItem label="杞﹁締" prop="carId"> - <Select v-model="addOilForm.carId" filterable> - <Option v-for="item in carList" :value="item.id">{{ item.carNo }}</Option> - </Select> - </FormItem> - <Form-item label="鍔犳补鏃ユ湡" prop="addDate"> - <Row> - <Col span="11"> + <Row :gutter="0"> + <Col span="12"> + <FormItem label="杞﹁締" prop="carId"> + <Select v-model="addOilForm.carId" filterable> + <Option v-for="item in carList" :value="item.id">{{ item.carNo }}</Option> + </Select> + </FormItem> + </Col> + <Col span="12"> + <Form-item label="鍔犳补鏃ユ湡" prop="addDate"> <Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" v-model="addOilForm.addDate"></Date-picker> - </Col> - </Row> - </Form-item> - <FormItem label="鍔犳补閲�" prop="amount"> - <Input v-model="addOilForm.amount" type="number"/> - </FormItem> - <FormItem label="鍗曚环" prop="unitPrice"> - <Input v-model="addOilForm.unitPrice" type="number"/> - </FormItem> - <FormItem label="鍔犳补閲戦" prop="money"> - <Input v-model="addOilForm.money" type="number"/> - </FormItem> - <FormItem label="鍔犳补鏃堕噷绋�" prop="mileage"> - <Input v-model="addOilForm.mileage" type="number"/> + </Form-item> + </Col> + </Row> + <Row :gutter="0"> + <Col span="12"> + <FormItem label="鍔犳补閲�" prop="amount"> + <Input v-model="addOilForm.amount" type="number"/> + </FormItem> + </Col> + <Col span="12"> + <FormItem label="鍗曚环" prop="unitPrice"> + <Input v-model="addOilForm.unitPrice" type="number"/> + </FormItem> + </Col> + </Row> + <Row :gutter="0"> + <Col span="12"> + <FormItem label="鍔犳补閲戦" prop="money"> + <Input v-model="addOilForm.money" type="number"/> + </FormItem> + </Col> + <Col span="12"> + <FormItem label="閲岀▼" prop="mileage"> + <Input v-model="addOilForm.mileage" type="number"/> + </FormItem> + </Col> + </Row> + <FormItem label="鍔犳补鍗″彿" prop="addOilCode"> + <Input v-model="addOilForm.addOilCode" /> </FormItem> <FormItem label="澶囨敞" prop="remarks"> <Input v-model="addOilForm.remarks" /> @@ -262,6 +278,12 @@ sortable: true, }, { + title: "鍔犳补鍗″彿", + key: "addOilCode", + width: 100, + sortable: true, + }, + { title: "鍔犳补鏃ユ湡", key: "addDate", width: 150, @@ -424,7 +446,7 @@ this.loading = false; if (res.success) { this.data = res.result.records; - this.total = res.result.total; + this.total = res.result.length; } }); }, diff --git a/src/views/your/addOilInfo-manage/addOilInfoManage.less b/src/views/your/addOilInfo-manage/addOilInfoManage.less new file mode 100644 index 0000000..789f8db --- /dev/null +++ b/src/views/your/addOilInfo-manage/addOilInfoManage.less @@ -0,0 +1,13 @@ +.permModal { + .ivu-modal-body { + max-height: 560px; + overflow: auto; + } +} + +.depModal { + .ivu-modal-body { + max-height: 500px; + overflow: auto; + } +} \ No newline at end of file diff --git a/src/views/your/addOilInfo-manage/addOilInfoManage.vue b/src/views/your/addOilInfo-manage/addOilInfoManage.vue new file mode 100644 index 0000000..7f39e8b --- /dev/null +++ b/src/views/your/addOilInfo-manage/addOilInfoManage.vue @@ -0,0 +1,899 @@ +<style lang="less"> + @import "@/styles/table-common.less"; + @import "@/styles/drawer-common.less"; + @import "./addOilInfoManage.less"; +</style> +<template> + <div class="search"> + <Card> + <Row class="operation"> + <Button @click="init" icon="md-refresh">鍒锋柊</Button> + <Button type="dashed" @click="openTip = !openTip">{{ + openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" + }}</Button> + <Date-picker v-model="value" @on-change="getDataList" + value-format="yyyy-MM-dd" type="daterange" placement="bottom-end" placeholder="璇烽�夋嫨鏃ユ湡" style="width: 240px;padding-left: 20px"> + </Date-picker> + <Dropdown @on-click="handleDropdown" style="padding-left: 20px"> + <Button> + 瀵煎嚭鏁版嵁 + <Icon type="md-arrow-dropdown" /> + </Button> + <DropdownMenu slot="list"> + <DropdownItem name="exportAll">瀵煎嚭鎵�閫夋棩鏈熸暟鎹�</DropdownItem> + </DropdownMenu> + </Dropdown> + </Row> + <Alert show-icon v-show="openTip"> + 宸查�夋嫨 + <span class="select-count">{{ selectList.length }}</span> 椤� + <a class="select-clear" @click="clearSelectAll">娓呯┖</a> + </Alert> + <Table + :loading="loading" + border + :columns="columns" + :data="data" + ref="table" + sortable="custom" + @on-sort-change="changeSort" + @on-selection-change="changeSelect" + ></Table> + <Row type="flex" justify="end" class="page"> + <Page + :current="searchForm.pageNumber" + :total="total" + :page-size="searchForm.pageSize" + @on-change="changePage" + @on-page-size-change="changePageSize" + :page-size-opts="[10, 20, 50]" + size="small" + show-total + show-elevator + show-sizer + v-show="this.page" + ></Page> + </Row> + </Card> + + <!-- 缂栬緫 --> + <Modal + :title="modalTitle" + v-model="roleModalVisible" + :mask-closable="false" + :width="500" + > + </Modal> + <!-- 鑿滃崟鏉冮檺 --> + <Drawer + :title="modalTitle" + v-model="permModalVisible" + :mask-closable="false" + :width="500" + draggable + > + <div :style="{ maxHeight: maxHeight }" class="drawer-content"> + <div style="position: relative"> + <Tree + ref="tree" + :data="permData" + show-checkbox + :render="renderContent" + :check-strictly="true" + ></Tree> + <Spin size="large" fix v-if="treeLoading"></Spin> + </div> + </div> + <div class="drawer-footer br"> + <Button + type="primary" + :loading="submitPermLoading" + @click="submitPermEdit" + >鎻愪氦</Button + > + <Button @click="selectTreeAll">鍏ㄩ��/鍙嶉��</Button> + <Select + v-model="openLevel" + @on-change="changeOpen" + style="width: 110px" + transfer + > + <Option value="0">灞曞紑鎵�鏈�</Option> + <Option value="1">鏀跺悎鎵�鏈�</Option> + <Option value="2">浠呭睍寮�涓�绾�</Option> + <Option value="3">浠呭睍寮�涓ょ骇</Option> + </Select> + <Button type="text" @click="cancelPermEdit">鍙栨秷</Button> + </div> + </Drawer> + <!-- 鏁版嵁鏉冮檺 --> + <Modal + :title="modalTitle" + v-model="carModalVisible" + :mask-closable="false" + :width="500" + class="depModal" + > + <Form :label-width="85" ref="removeForm" :model="removeForm"> + <FormItem label="绉婚櫎鍘熷洜" prop="removeReason"> + <Input v-model="removeForm.removeReason"/> + </FormItem> + </Form> + <div v-show="dataType == 1" style="margin-top: 15px"> + <div style="position: relative"> + <Tree + ref="depTree" + :data="depData" + :load-data="loadData" + @on-toggle-expand="expandCheckDep" + multiple + style="margin-top: 15px" + ></Tree> + <Spin size="large" fix v-if="depTreeLoading"></Spin> + </div> + </div> + <div slot="footer"> + <Button type="text" @click="depModalVisible = false">鍙栨秷</Button> + <Button + type="primary" + :loading="submitDepLoading" + @click="submitRemove" + >鎻愪氦</Button + > + </div> + </Modal> + <Modal + v-model="exportModalVisible" + :title="exportTitle" + :loading="loadingExport" + @on-ok="exportCustomData" + > + <Form ref="exportForm" :label-width="100"> + <FormItem label="瀵煎嚭鏂囦欢鍚�"> + <Input v-model="filename" /> + </FormItem> + </Form> + </Modal> + </div> +</template> + +<script> + import { + getAllPermissionList, + setDefaultRole, + editRolePerm, + initDepartment, + loadDepartment, + editRoleDep, + } from "@/api/index"; + + import { + getAll, + getAddOilList, + addOil, + deleteAddOil, + getCarList, + editCar, + deleteCar, + getByDate, + getOilExcel + } from "@/api/open"; + import util from "@/libs/util.js"; + import excel from "@/libs/excel.js"; + import XLSX from 'xlsx'; + import {exportColumn} from "./exportColumn"; + export default { + name: "car-manage", + data() { + return { + maxHeight: 510, + openTip: true, + openLevel: "0", + loading: true, + treeLoading: true, + depTreeLoading: true, + submitPermLoading: false, + submitDepLoading: false, + searchKey: "", + sortColumn: "createTime", + sortType: "desc", + modalType: 0, + roleModalVisible: false, + page: true, + carModalVisible: false, + exportModalVisible: false, + loadingExport: true, + permModalVisible: false, + depModalVisible: false, + modalTitle: "", + searchForm: { + // 鎼滅储妗嗗垵濮嬪寲瀵硅薄 + pageNumber: 1, // 褰撳墠椤垫暟 + pageSize: 10, // 椤甸潰澶у皬 + sort: "createTime", // 榛樿鎺掑簭瀛楁 + order: "desc", // 榛樿鎺掑簭鏂瑰紡 + key: "", + }, + addOilForm: { + status : 0 + }, + removeForm: { + status : 1 + }, + addOilFormValidate: { + name: [ + { required: true, message: "瑙掕壊鍚嶇О涓嶈兘涓虹┖", trigger: "change" }, + ], + }, + submitLoading: false, + selectList: [], + columns: [ + { + type: "selection", + width: 60, + align: "center", + }, + { + type: "index", + width: 60, + align: "center", + }, + { + title: "杞︾墝鍙�", + key: "carNo", + width: 100, + }, + { + title: "鍔犳补鍗″彿", + key: "addOilCode", + width: 130, + sortable: true, + align: "center", + }, + { + title: "鍔犳补鏃ユ湡", + key: "addDate", + width: 120, + sortable: true, + align: "center", + }, + { + title: "鍔犳补閲戦(鍏�)", + key: "money", + minWidth: 130, + sortable: true, + align: "center", + render: (h, params) => { + return h("div",params.row.money==0 ? '':params.row.money); + } + }, + { + title: "鍔犳补閲�(鍗�)", + key: "amount", + width: 130, + sortable: true, + align: "center", + render: (h, params) => { + return h("div",params.row.amount==0 ? '':params.row.amount); + } + }, + { + title: "琛屼娇閲岀▼(KM)", + key: "mileage", + minWidth: 130, + sortable: true, + align: "center", + render: (h, params) => { + return h("div",params.row.mileage==0 ? '':params.row.mileage); + } + }, + { + title: "鐧惧叕閲屾补鑰�(鍗�)", + key: "oilWear", + minWidth: 150, + align: "center", + sortable: true, + }, + { + title: "澶囨敞", + key: "remarks", + align: "center", + minWidth: 150, + }, + ], + data: [], + chooseColumns: [], + total: 0, + permData: [], + exportColumns: exportColumn, + filename: "鍔犳补鏁版嵁", + exportTitle: "纭瀵煎嚭", + editRolePermId: "", + selectAllFlag: false, + depData: [], + dataType: 0, + editDepartments: [], + buyYear:'', + carList:[], + value:[] + }; + }, + methods: { + change1(e){ + this.addDate = e; + }, + init() { + this.getDataList(); + // 鑾峰彇鎵�鏈夎彍鍗曟潈闄愭爲 + this.getPermList(); + this.getAllCar(); + }, + renderContent(h, { root, node, data }) { + let icon = ""; + if (data.level == 0) { + icon = "ios-navigate"; + } else if (data.level == 1) { + icon = "md-list-box"; + } else if (data.level == 2) { + icon = "md-list"; + } else if (data.level == 3) { + icon = "md-radio-button-on"; + } else { + icon = "md-radio-button-off"; + } + return h( + "span", + { + style: { + display: "inline-block", + cursor: "pointer", + }, + on: { + click: () => { + if (data.status == -1) { + return; + } + data.checked = !data.checked; + }, + }, + }, + [ + h("span", [ + h("Icon", { + props: { + type: icon, + size: "16", + }, + style: { + "margin-right": "8px", + "margin-bottom": "3px", + }, + }), + h("span", data.title), + ]), + ] + ); + }, + handleDropdown(name) { + if (name == "refresh") { + this.getDataList(); + } else if (name == "exportData") { + if (this.selectList.length <= 0) { + this.$Message.warning("鎮ㄨ繕鏈�夋嫨瑕佸鍑虹殑鏁版嵁"); + return; + } + this.exportType = "part"; + this.exportModalVisible = true; + this.exportTitle = + "纭瀵煎嚭鏁版嵁"; + } else if (name == "exportAll") { + this.exportType = "all"; + this.exportModalVisible = true; + this.exportTitle = "纭瀵煎嚭鍏ㄩ儴鏁版嵁"; + getOilExcel(this.searchForm).then((res) => { + if (res.success) { + this.exportData = res.result; + } + }); + } else if (name == "importData") { + this.importModalVisible = true; + } + }, + //瀵煎嚭鏁版嵁 + exportCustomData() { + if (this.filename == "") { + this.filename = "鍔犳补鏁版嵁"; + } + // 鍒ゆ柇鍕鹃�夊鍑哄垪 + let exportColumns = []; + this.exportColumns.forEach((e) => { + exportColumns.push(e); + }); + this.exportModalVisible = false; + let title = []; + let key = []; + exportColumns.forEach((e) => { + title.push(e.title); + key.push(e.key); + }); + console.log(this.exportData) + const params = { + title: title, + key: key, + data: this.exportData, + autoWidth: true, + filename: this.filename, + }; + this.exportData.forEach((i) => { + console.log(i); + + i.amount = i.amount == 0 ? '': i.amount ; + i.unitPrice = i.unitPrice == 0 ? '' : i.unitPrice; + i.money = i.money == 0 ? '' : i.money; + i.mileage = i.mileage == 0 ? '' : i.mileage; + }); + excel.export_array_to_excel(params); + }, + changePage(v) { + this.searchForm.pageNumber = v; + this.getDataList(); + this.clearSelectAll(); + }, + changePageSize(v) { + this.searchForm.pageSize = v; + this.getDataList(); + }, + changeSort(e) { + this.searchForm.sort = e.key; + this.searchForm.order = e.order; + if (e.order == "normal") { + this.searchForm.order = ""; + } + this.getDataList(); + }, + selectDate(dateData) { + let date = new Date (dateData) + let y = date . getFullYear() + let m = date . getMonth() + 1 + m=m<10?('0'+m):m + let d = date.getDate() + d = d< 10?('0'+ d):d + const time = y + '-' + m + '-' + d; + return time + }, + getDataList() { + this.loading = true; + if (this.value[0]!="" && this.value[1]!=""){ + this.searchForm.beginTime = this.selectDate(this.value[0]); + this.searchForm.endTime = this.selectDate(this.value[1]); + this.page=false; + }else{ + this.searchForm.beginTime = ""; + this.searchForm.endTime = ""; + } + getOilExcel(this.searchForm).then((res) => { + this.loading = false; + if (res.success) { + this.data = res.result; + this.total = res.result.length; + } + }); + }, + getPermList() { + this.treeLoading = true; + getAllPermissionList().then((res) => { + if (res.success) { + this.deleteDisableNode(res.result); + this.permData = res.result; + this.treeLoading = false; + } + this.treeLoading = false; + }); + }, + // 閫掑綊鏍囪绂佺敤鑺傜偣 + deleteDisableNode(permData) { + let that = this; + permData.forEach(function (e) { + if (e.status == -1) { + e.title = "[宸茬鐢╙ " + e.title; + e.disabled = true; + } + if (e.children && e.children.length > 0) { + that.deleteDisableNode(e.children); + } + }); + }, + carRole() { + this.roleModalVisible = false; + }, + submitAddOil() { + this.addOilForm.addDate = this.addDate; + this.$refs.addOilForm.validate((valid) => { + if (valid) { + if (this.modalType == 0) { + // 娣诲姞 + this.submitLoading = true; + addOil(this.addOilForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.roleModalVisible = false; + } + }); + } else { + this.submitLoading = true; + addOil(this.addOilForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.roleModalVisible = false; + } + }); + } + } + }); + }, + submitRemove(){ + this.$refs.removeForm.validate((valid) => { + if (valid) { + this.submitLoading = true; + editCar(this.removeForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.carModalVisible = false; + } + }); + } + }); + }, + addOil() { + this.modalType = 0; + this.modalTitle = "娣诲姞鍔犳补璁板綍"; + this.$refs.addOilForm.resetFields(); + delete this.addOilForm.id; + this.roleModalVisible = true; + }, + edit(v) { + this.getAllCar(); + this.addDate = v.addDate; + this.modalType = 1; + this.modalTitle = "缂栬緫鍔犳补淇℃伅"; + this.$refs.addOilForm.resetFields(); + // 杞崲null涓�"" + for (let attr in v) { + if (v[attr] == null) { + v[attr] = ""; + } + } + let str = JSON.stringify(v); + let roleInfo = JSON.parse(str); + + this.addOilForm = roleInfo; + this.roleModalVisible = true; + }, + removeCar(v) { + this.dataType = 0; + this.modalTitle = "绉婚櫎杞﹁締"; + this.$refs.addOilForm.resetFields(); + // 杞崲null涓�"" + for (let attr in v) { + if (v[attr] == null) { + v[attr] = ""; + } + } + let str = JSON.stringify(v); + let roleInfo = JSON.parse(str); + roleInfo.status=1 + console.log(roleInfo); + this.removeForm = roleInfo; + this.carModalVisible = true; + + }, + getAllCar(){ + getAll().then((res) => { + if(res.success){ + this.carList = res.result; + console.log(this.carList); + } + }); + }, + remove(v) { + this.$Modal.confirm({ + title: "纭鍒犻櫎", + content: "鎮ㄧ‘璁よ鍒犻櫎鍚� ", + loading: true, + onOk: () => { + deleteAddOil({ ids: v.id }).then((res) => { + this.$Modal.remove(); + if (res.success) { + this.clearSelectAll(); + this.$Message.success("鍒犻櫎鎴愬姛"); + this.getDataList(); + } + }); + }, + }); + }, + setDefault(v) { + this.loading = true; + let params = { + id: v.id, + isDefault: true, + }; + setDefaultRole(params).then((res) => { + this.loading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + } + }); + }, + cancelDefault(v) { + this.loading = true; + let params = { + id: v.id, + isDefault: false, + }; + setDefaultRole(params).then((res) => { + this.loading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + } + }); + }, + clearSelectAll() { + this.$refs.table.selectAll(false); + }, + changeSelect(e) { + this.selectList = e; + }, + delAll() { + if (this.selectList.length <= 0) { + this.$Message.warning("鎮ㄨ繕鏈�夋嫨瑕佸垹闄ょ殑鏁版嵁"); + return; + } + this.$Modal.confirm({ + title: "纭鍒犻櫎", + content: "鎮ㄧ‘璁よ鍒犻櫎鎵�閫夌殑 " + this.selectList.length + " 鏉℃暟鎹�?", + loading: true, + onOk: () => { + let ids = ""; + this.selectList.forEach(function (e) { + ids += e.id + ","; + }); + ids = ids.substring(0, ids.length - 1); + deleteCar({ ids: ids }).then((res) => { + this.$Modal.remove(); + if (res.success) { + this.$Message.success("鍒犻櫎鎴愬姛"); + this.clearSelectAll(); + this.getDataList(); + } + }); + }, + }); + }, + editPerm(v) { + this.editRolePermId = v.id; + this.modalTitle = "鍒嗛厤 " + v.name + " 鐨勮彍鍗曟潈闄�"; + // 鍖归厤鍕鹃�� + let rolePerms = v.permissions; + if (this.treeLoading) { + this.$Message.warning("鑿滃崟鏉冮檺鏁版嵁鍔犺浇涓紝璇风◢鍚庣偣鍑绘煡鐪�"); + return; + } + // 閫掑綊鍒ゆ柇瀛愯妭鐐� + this.checkPermTree(this.permData, rolePerms); + this.permModalVisible = true; + }, + // 閫掑綊鍒ゆ柇瀛愯妭鐐� + checkPermTree(permData, rolePerms) { + let that = this; + permData.forEach(function (p) { + if (that.hasPerm(p, rolePerms) && p.status != -1) { + p.checked = true; + } else { + p.checked = false; + } + if (p.children && p.children.length > 0) { + that.checkPermTree(p.children, rolePerms); + } + }); + }, + // 鍒ゆ柇瑙掕壊鎷ユ湁鐨勬潈闄愯妭鐐瑰嬀閫� + hasPerm(p, rolePerms) { + let flag = false; + for (let i = 0; i < rolePerms.length; i++) { + if (p.id == rolePerms[i].permissionId) { + flag = true; + break; + } + } + if (flag) { + return true; + } + return false; + }, + // 鍏ㄩ�夊弽閫� + selectTreeAll() { + this.selectAllFlag = !this.selectAllFlag; + let select = this.selectAllFlag; + this.selectedTreeAll(this.permData, select); + }, + // 閫掑綊鍏ㄩ�夎妭鐐� + selectedTreeAll(permData, select) { + let that = this; + permData.forEach(function (e) { + e.checked = select; + if (e.children && e.children.length > 0) { + that.selectedTreeAll(e.children, select); + } + }); + }, + submitPermEdit() { + this.submitPermLoading = true; + let permIds = ""; + let selectedNodes = this.$refs.tree.getCheckedNodes(); + selectedNodes.forEach(function (e) { + permIds += e.id + ","; + }); + permIds = permIds.substring(0, permIds.length - 1); + editRolePerm({ + roleId: this.editRolePermId, + permIds: permIds, + }).then((res) => { + this.submitPermLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + // 鏍囪閲嶆柊鑾峰彇鑿滃崟鏁版嵁 + this.$store.commit("setAdded", false); + util.initRouter(this); + this.getDataList(); + this.permModalVisible = false; + } + }); + }, + cancelPermEdit() { + this.permModalVisible = false; + }, + loadData(item, callback) { + loadDepartment(item.id, { openDataFilter: false }).then((res) => { + if (res.success) { + res.result.forEach(function (e) { + e.selected = false; + if (e.isParent) { + e.loading = false; + e.children = []; + } + if (e.status == -1) { + e.title = "[宸茬鐢╙ " + e.title; + e.disabled = true; + } + }); + callback(res.result); + } + }); + }, + expandCheckDep(v) { + // 鍒ゆ柇灞曞紑瀛愯妭鐐� + this.checkDepTree(v.children, this.editDepartments); + }, + // 鍒ゆ柇瀛愯妭鐐� + checkDepTree(depData, roleDepIds) { + let that = this; + depData.forEach(function (p) { + if (that.hasDepPerm(p, roleDepIds)) { + p.selected = true; + } else { + p.selected = false; + } + }); + }, + // 鍒ゆ柇瑙掕壊鎷ユ湁鐨勬潈闄愯妭鐐瑰嬀閫� + hasDepPerm(p, roleDepIds) { + let flag = false; + for (let i = 0; i < roleDepIds.length; i++) { + if (p.id == roleDepIds[i].departmentId) { + flag = true; + break; + } + } + if (flag) { + return true; + } + return false; + }, + submitDepEdit() { + let depIds = ""; + if (this.dataType == 1) { + let selectedNodes = this.$refs.depTree.getSelectedNodes(); + selectedNodes.forEach(function (e) { + depIds += e.id + ","; + }); + depIds = depIds.substring(0, depIds.length - 1); + } + this.submitDepLoading = true; + editRoleDep({ + roleId: this.editRolePermId, + dataType: this.dataType, + depIds: depIds, + }).then((res) => { + this.submitDepLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.depModalVisible = false; + } + }); + }, + changeOpen(v) { + if (v == "0") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = true; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = true; + }); + } + }); + } + }); + } else if (v == "1") { + this.permData.forEach((e) => { + e.expand = false; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = false; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } else if (v == "2") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = false; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } else if (v == "3") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = true; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } + }, + }, + mounted() { + this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px"; + this.init(); + }, + }; +</script> \ No newline at end of file diff --git a/src/views/your/addOilInfo-manage/exportColumn.js b/src/views/your/addOilInfo-manage/exportColumn.js new file mode 100644 index 0000000..c64f701 --- /dev/null +++ b/src/views/your/addOilInfo-manage/exportColumn.js @@ -0,0 +1,56 @@ +export const exportColumn = [ + { + title: "杞︾墝鍙�", + key: "carNo", + width: 100, + align: "center", + }, + { + title: "鍔犳补鍗″彿", + key: "addOilCode", + width: 140, + sortable: true, + align: "center", + }, + { + title: "鍔犳补鏃ユ湡", + key: "addDate", + width: 150, + sortable: true, + align: "center", + }, + { + title: "鍔犳补閲戦(鍏�)", + key: "money", + minWidth: 100, + sortable: true, + align: "center", + }, + { + title: "鍔犳补閲�(鍗�)", + key: "amount", + width: 130, + sortable: true, + align: "center", + }, + { + title: "琛屼娇閲岀▼(KM)", + key: "mileage", + minWidth: 100, + sortable: true, + align: "center", + }, + { + title: "鐧惧叕閲屾补鑰�(鍗�)", + key: "oilWear", + minWidth: 100, + sortable: true, + align: "center", + }, + { + title: "澶囨敞", + key: "remarks", + minWidth: 150, + align: "center", + }, +] \ No newline at end of file diff --git a/src/views/your/area-manage/areaManage.vue b/src/views/your/area-manage/areaManage.vue index d9c42b1..8b49c36 100644 --- a/src/views/your/area-manage/areaManage.vue +++ b/src/views/your/area-manage/areaManage.vue @@ -89,7 +89,7 @@ </Table> - </Modal>05 + </Modal> <Modal :title="modalTitle3" v-model="customerVisible" :mask-closable="false" :width="1050"> <Row class="operation" style="padding-bottom: 20px"> <Button @click="addCustomer" type="primary" icon="md-add">娣诲姞</Button> @@ -135,22 +135,36 @@ <FormItem label="鍟嗘埛缂栧彿" prop="code"> <Input v-model="customerForm.code" /> </FormItem> - <FormItem label="鑱旂郴鏂瑰紡" prop="phone"> - <Input v-model="customerForm.phone" /> - </FormItem> - <FormItem label="缁忓害" prop="lng"> - <Input v-model="customerForm.lng" /> - </FormItem> - <FormItem label="绾害" prop="lat"> - <Input v-model="customerForm.lat" /> - </FormItem> - <Form-item label="涓婃閰嶉�佹棩鏈�" prop="lastTime"> - <Row> - <Col> - <Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" v-model="customerForm.lastTime"></Date-picker> - </Col> - </Row> - </Form-item> + + <Row :gutter="0"> + <Col span="12"> + <FormItem label="缁忓害" prop="lng"> + <Input v-model="customerForm.lng" /> + </FormItem> + </Col> + <Col span="12"> + <FormItem label="绾害" prop="lat"> + <Input v-model="customerForm.lat" /> + </FormItem> + </Col> + </Row> + <Row :gutter="0"> + <Col span="12"> + <Form-item label="涓婃閰嶉�佹棩鏈�" prop="lastTime"> + <Row> + <Col> + <Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" v-model="customerForm.lastTime"></Date-picker> + </Col> + </Row> + </Form-item> + </Col> + <Col span="12"> + <FormItem label="鑱旂郴鏂瑰紡" prop="phone"> + <Input v-model="customerForm.phone" type="number"/> + </FormItem> + </Col> + </Row> + <FormItem label="鍟嗘埛娉ㄥ唽鍦板潃" prop="registeredAddress"> <Input v-model="customerForm.registeredAddress" /> </FormItem> diff --git a/src/views/your/car-manage/carManage.vue b/src/views/your/car-manage/carManage.vue index 6df3551..6c89acb 100644 --- a/src/views/your/car-manage/carManage.vue +++ b/src/views/your/car-manage/carManage.vue @@ -8,7 +8,6 @@ <Card> <Row class="operation"> <Button @click="addCar" type="primary" icon="md-add">娣诲姞杞﹁締</Button> - <Button @click="delAll" icon="md-trash">鎵归噺鍒犻櫎</Button> <Button @click="init" icon="md-refresh">鍒锋柊</Button> <Button type="dashed" @click="openTip = !openTip">{{ openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" diff --git a/src/views/your/carInfo-manage/carInfoManage.less b/src/views/your/carInfo-manage/carInfoManage.less new file mode 100644 index 0000000..789f8db --- /dev/null +++ b/src/views/your/carInfo-manage/carInfoManage.less @@ -0,0 +1,13 @@ +.permModal { + .ivu-modal-body { + max-height: 560px; + overflow: auto; + } +} + +.depModal { + .ivu-modal-body { + max-height: 500px; + overflow: auto; + } +} \ No newline at end of file diff --git a/src/views/your/carInfo-manage/carInfoManage.vue b/src/views/your/carInfo-manage/carInfoManage.vue new file mode 100644 index 0000000..217e4b9 --- /dev/null +++ b/src/views/your/carInfo-manage/carInfoManage.vue @@ -0,0 +1,964 @@ +<style lang="less"> + @import "@/styles/table-common.less"; + @import "@/styles/drawer-common.less"; + @import "src/views/your/carInfo-manage/carInfoManage.less"; +</style> +<template> + <div class="search"> + <Card> + <Row class="operation"> + <Button @click="init" icon="md-refresh">鍒锋柊</Button> + <Button type="dashed" @click="openTip = !openTip">{{ + openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" + }}</Button> + + <Date-picker v-model="value" @on-change="getDataList" + value-format="yyyy-MM-dd" type="daterange" placement="bottom-end" placeholder="璇烽�夋嫨鏃ユ湡" style="width: 240px;padding-left: 20px"> + </Date-picker> + <Dropdown @on-click="handleDropdown" style="padding-left: 20px"> + <Button> + 瀵煎嚭鏁版嵁 + <Icon type="md-arrow-dropdown" /> + </Button> + <DropdownMenu slot="list"> + <DropdownItem name="exportData">瀵煎嚭鎵�閫夋暟鎹�</DropdownItem> + <DropdownItem name="exportAll">瀵煎嚭鍏ㄩ儴鏁版嵁</DropdownItem> + </DropdownMenu> + </Dropdown> + </Row> + + <Alert show-icon v-show="openTip"> + 宸查�夋嫨 + <span class="select-count">{{ selectList.length }}</span> 椤� + <a class="select-clear" @click="clearSelectAll">娓呯┖</a> + </Alert> + <Table + :loading="loading" + border + :columns="columns" + :data="data" + ref="table" + sortable="custom" + @on-sort-change="changeSort" + @on-selection-change="changeSelect" + ></Table> + <Row type="flex" justify="end" class="page"> + <Page + :current="searchForm.pageNumber" + :total="total" + :page-size="searchForm.pageSize" + @on-change="changePage" + @on-page-size-change="changePageSize" + :page-size-opts="[10, 20, 50]" + size="small" + show-total + show-elevator + show-sizer + ></Page> + </Row> + </Card> + + <!-- 缂栬緫 --> + <Modal + :title="modalTitle" + v-model="roleModalVisible" + :mask-closable="false" + :width="500" + > + <div slot="footer"> + <Button type="text" @click="carRole">鍙栨秷</Button> + <Button type="primary" :loading="submitLoading" @click="submitAddOil" + >鎻愪氦</Button + > + </div> + </Modal> + <!-- 鑷畾涔夊鍑烘暟鎹� --> + <Modal + v-model="exportModalVisible" + :title="exportTitle" + :loading="loadingExport" + @on-ok="exportCustomData" + > + <Form ref="exportForm" :label-width="100"> + <FormItem label="瀵煎嚭鏂囦欢鍚�"> + <Input v-model="filename" /> + </FormItem> + </Form> + </Modal> + <!-- 鑿滃崟鏉冮檺 --> + <Drawer + :title="modalTitle" + v-model="permModalVisible" + :mask-closable="false" + :width="500" + draggable + > + <div :style="{ maxHeight: maxHeight }" class="drawer-content"> + <div style="position: relative"> + <Tree + ref="tree" + :data="permData" + show-checkbox + :render="renderContent" + :check-strictly="true" + ></Tree> + <Spin size="large" fix v-if="treeLoading"></Spin> + </div> + </div> + <div class="drawer-footer br"> + <Button + type="primary" + :loading="submitPermLoading" + @click="submitPermEdit" + >鎻愪氦</Button + > + <Button @click="selectTreeAll">鍏ㄩ��/鍙嶉��</Button> + <Select + v-model="openLevel" + @on-change="changeOpen" + style="width: 110px" + transfer + > + <Option value="0">灞曞紑鎵�鏈�</Option> + <Option value="1">鏀跺悎鎵�鏈�</Option> + <Option value="2">浠呭睍寮�涓�绾�</Option> + <Option value="3">浠呭睍寮�涓ょ骇</Option> + </Select> + <Button type="text" @click="cancelPermEdit">鍙栨秷</Button> + </div> + </Drawer> + <!-- 鏁版嵁鏉冮檺 --> + <Modal + :title="modalTitle" + v-model="carModalVisible" + :mask-closable="false" + :width="500" + class="depModal" + > + <Form :label-width="85" ref="removeForm" :model="removeForm"> + <FormItem label="绉婚櫎鍘熷洜" prop="removeReason"> + <Input v-model="removeForm.removeReason"/> + </FormItem> + </Form> + <div v-show="dataType == 1" style="margin-top: 15px"> + <div style="position: relative"> + <Tree + ref="depTree" + :data="depData" + :load-data="loadData" + @on-toggle-expand="expandCheckDep" + multiple + style="margin-top: 15px" + ></Tree> + <Spin size="large" fix v-if="depTreeLoading"></Spin> + </div> + </div> + <div slot="footer"> + <Button type="text" @click="depModalVisible = false">鍙栨秷</Button> + <Button + type="primary" + :loading="submitDepLoading" + @click="submitRemove" + >鎻愪氦</Button + > + </div> + </Modal> + </div> +</template> + +<script> + import { + getAllPermissionList, + setDefaultRole, + editRolePerm, + initDepartment, + loadDepartment, + editRoleDep, + } from "@/api/index"; + + import { + getAll, + getAddOilList, + addOil, + deleteAddOil, + getCarList, + editCar, + deleteCar, + getCar, + getSuggest, + deleteSuggest, + } from "@/api/open"; + import util from "@/libs/util.js"; + import excel from "@/libs/excel.js"; + import {exportColumn} from "./exportColumn"; + export default { + name: "car-manage", + data() { + return { + maxHeight: 510, + openTip: true, + openLevel: "0", + loading: true, + treeLoading: true, + depTreeLoading: true, + submitPermLoading: false, + submitDepLoading: false, + searchKey: "", + sortColumn: "createTime", + sortType: "desc", + modalType: 0, + loadingExport: true, + roleModalVisible: false, + exportModalVisible: false, + carModalVisible: false, + permModalVisible: false, + depModalVisible: false, + modalTitle: "", + searchForm: { + // 鎼滅储妗嗗垵濮嬪寲瀵硅薄 + pageNumber: 1, // 褰撳墠椤垫暟 + pageSize: 10, // 椤甸潰澶у皬 + sort: "createTime", // 榛樿鎺掑簭瀛楁 + order: "desc", // 榛樿鎺掑簭鏂瑰紡 + key: "", + }, + addOilForm: { + status : 0 + }, + removeForm: { + status : 1 + }, + addOilFormValidate: { + name: [ + { required: true, message: "瑙掕壊鍚嶇О涓嶈兘涓虹┖", trigger: "change" }, + ], + }, + submitLoading: false, + selectList: [], + columns: [ + { + type: "selection", + width: 60, + align: "center", + }, + { + type: "index", + width: 60, + align: "center", + }, + { + title: "閫佽揣绾胯矾", + key: "areaName", + width: 130, + render: (h, params) => { + return h("div",params.row.car.areaName); + } + }, + { + title: "杞︾墝鍙�", + key: "carNo", + width: 120, + render: (h, params) => { + return h("div",params.row.car.carNo); + } + }, + { + title: "鍔犳补鍗″彿", + key: "addOilCode", + width: 140, + sortable: true, + render: (h, params) => { + return h("div",params.row.car.addOilCode); + } + }, + { + title: "璧峰閲岀▼(鍏噷)", + key: "beginMileage", + width: 140, + }, + { + title: "鏈熸湯閲岀▼(鍏噷)", + key: "endMileage", + width: 140, + }, + { + title: "鏈堣椹堕噷绋�(鍏噷)", + key: "mileage", + width: 150, + render: (h, params) => { + return h("div",params.row.endMileage-params.row.beginMileage); + } + }, + { + title: "鏈堟补鑰�(鍗�)", + key: "oilWear", + width: 130, + }, + { + title: "鐧惧叕閲屾补鑰�", + key: "oil", + width: 130, + render: (h, params) => { + var mileage = params.row.endMileage-params.row.beginMileage; + if (mileage==0 || params.row.oilWear==0){ + return h("div","0"); + }else { + return h("div",(parseFloat(params.row.oilWear/mileage*100).toFixed(2))); + } + } + }, + { + title: "椹鹃┒鍛�", + key: "nickname", + width: 120, + render: (h, params) => { + return h("div",params.row.car.nickName); + } + }, + { + title: "鏈堝姞娌归噾棰�(鍏�)", + key: "money", + width: 140, + }, + { + title: "鎿嶄綔", + key: "action", + align: "center", + width: 120, + render: (h, params) => { + return h("div", [ + h( + "a", + { + on: { + click: () => { + this.remove(params.row); + }, + }, + }, + "鍒犻櫎" + ), + ]); + }, + }, + ], + data: [], + chooseColumns: [], + total: 0, + permData: [], + exportColumns: exportColumn, + filename: "杞﹁締鏁版嵁", + exportTitle: "纭瀵煎嚭", + editRolePermId: "", + selectAllFlag: false, + depData: [], + dataType: 0, + editDepartments: [], + buyYear:'', + carList:[], + value:[], + exportData: [], + }; + }, + methods: { + change1(e){ + this.addDate = e; + }, + init() { + this.getDataList(); + // 鑾峰彇鎵�鏈夎彍鍗曟潈闄愭爲 + this.getPermList(); + // 鍒濆鍖栧鍑哄垪鏁版嵁 + let array = []; + this.exportColumns.forEach((e) => { + // 鎸囧畾鍒楅檺鍒舵潈闄� + if ( + !this.getStore("roles").includes("ROLE_ADMIN") && + e.key == "mobile" + ) { + e.title = "[鏃犳潈瀵煎嚭] " + e.title; + e.disabled = true; + } else { + e.disabled = false; + } + array.push(e.title); + }); + this.chooseColumns = array; + }, + renderContent(h, { root, node, data }) { + let icon = ""; + if (data.level == 0) { + icon = "ios-navigate"; + } else if (data.level == 1) { + icon = "md-list-box"; + } else if (data.level == 2) { + icon = "md-list"; + } else if (data.level == 3) { + icon = "md-radio-button-on"; + } else { + icon = "md-radio-button-off"; + } + return h( + "span", + { + style: { + display: "inline-block", + cursor: "pointer", + }, + on: { + click: () => { + if (data.status == -1) { + return; + } + data.checked = !data.checked; + }, + }, + }, + [ + h("span", [ + h("Icon", { + props: { + type: icon, + size: "16", + }, + style: { + "margin-right": "8px", + "margin-bottom": "3px", + }, + }), + h("span", data.title), + ]), + ] + ); + }, + changePage(v) { + this.searchForm.pageNumber = v; + this.getDataList(); + this.clearSelectAll(); + }, + changePageSize(v) { + this.searchForm.pageSize = v; + this.getDataList(); + }, + changeSort(e) { + this.searchForm.sort = e.key; + this.searchForm.order = e.order; + if (e.order == "normal") { + this.searchForm.order = ""; + } + this.getDataList(); + }, + getDataList() { + this.loading = true; + if (this.value[0]!="" && this.value[1]!=""){ + this.searchForm.beginTime = this.selectDate(this.value[0]); + this.searchForm.endTime = this.selectDate(this.value[1]); + }else{ + this.searchForm.beginTime = ""; + this.searchForm.endTime = ""; + } + getCar(this.searchForm).then((res) => { + this.loading = false; + if (res.success) { + this.data = res.result; + this.total = res.result.length; + } + }); + }, + selectDate(dateData) { + let date = new Date (dateData) + let y = date . getFullYear() + let m = date . getMonth() + 1 + m=m<10?('0'+m):m + let d = date.getDate() + d = d< 10?('0'+ d):d + const time = y + '-' + m + '-' + d; + return time + }, + getPermList() { + this.treeLoading = true; + getAllPermissionList().then((res) => { + if (res.success) { + this.deleteDisableNode(res.result); + this.permData = res.result; + this.treeLoading = false; + } + this.treeLoading = false; + }); + }, + // 閫掑綊鏍囪绂佺敤鑺傜偣 + deleteDisableNode(permData) { + let that = this; + permData.forEach(function (e) { + if (e.status == -1) { + e.title = "[宸茬鐢╙ " + e.title; + e.disabled = true; + } + if (e.children && e.children.length > 0) { + that.deleteDisableNode(e.children); + } + }); + }, + carRole() { + this.roleModalVisible = false; + }, + submitAddOil() { + this.addOilForm.addDate = this.addDate; + this.$refs.addOilForm.validate((valid) => { + if (valid) { + if (this.modalType == 0) { + // 娣诲姞 + this.submitLoading = true; + addOil(this.addOilForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.roleModalVisible = false; + } + }); + } else { + this.submitLoading = true; + addOil(this.addOilForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.roleModalVisible = false; + } + }); + } + } + }); + }, + handleDropdown(name) { + if (name == "refresh") { + this.getDataList(); + } else if (name == "exportData") { + if (this.selectList.length <= 0) { + this.$Message.warning("鎮ㄨ繕鏈�夋嫨瑕佸鍑虹殑鏁版嵁"); + return; + } + this.exportType = "part"; + this.exportModalVisible = true; + this.exportTitle = + "纭瀵煎嚭 " + this.selectList.length + " 鏉℃暟鎹�"; + } else if (name == "exportAll") { + this.exportType = "all"; + this.exportModalVisible = true; + this.exportTitle = "纭瀵煎嚭鍏ㄩ儴 " + this.total + " 鏉℃暟鎹�"; + getCar().then((res) => { + if (res.success) { + this.exportData = this.data; + } + }); + } else if (name == "importData") { + this.importModalVisible = true; + } + }, + //瀵煎嚭鏁版嵁 + exportCustomData() { + if (this.filename == "") { + this.filename = "杞﹁締鏁版嵁"; + } + // 鍒ゆ柇鍕鹃�夊鍑哄垪 + let exportColumns = []; + this.exportColumns.forEach((e) => { + exportColumns.push(e); + }); + this.exportModalVisible = false; + let title = []; + let key = []; + exportColumns.forEach((e) => { + title.push(e.title); + key.push(e.key); + }); + + + console.log(this.exportData) + const params = { + title: title, + key: key, + data: this.exportData, + autoWidth: true, + filename: this.filename, + }; + this.exportData.forEach((i) => { + i.areaName = i.car.areaName; + i.carNo = i.car.carNo; + i.addOilCode = i.car.addOilCode; + i.oil = i.car.oil; + i.nickName = i.car.nickName; + i.mileage=i.endMileage-i.beginMileage; + if (i.oilWear!=0 && i.mileage!=0){ + i.oil=parseFloat((i.oilWear/i.mileage*100).toFixed(2)); + }else { + i.oil=0 + } + }); + excel.export_array_to_excel(params); + }, + submitRemove(){ + this.$refs.removeForm.validate((valid) => { + if (valid) { + this.submitLoading = true; + editCar(this.removeForm).then((res) => { + this.submitLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.carModalVisible = false; + } + }); + } + }); + }, + addOil() { + this.getAllCar(); + this.modalType = 0; + this.modalTitle = "娣诲姞鍔犳补璁板綍"; + this.$refs.addOilForm.resetFields(); + delete this.addOilForm.id; + this.roleModalVisible = true; + }, + edit(v) { + this.getAllCar(); + this.addDate = v.addDate; + this.modalType = 1; + this.modalTitle = "缂栬緫鍔犳补淇℃伅"; + this.$refs.addOilForm.resetFields(); + // 杞崲null涓�"" + for (let attr in v) { + if (v[attr] == null) { + v[attr] = ""; + } + } + let str = JSON.stringify(v); + let roleInfo = JSON.parse(str); + + this.addOilForm = roleInfo; + this.roleModalVisible = true; + }, + removeCar(v) { + this.dataType = 0; + this.modalTitle = "绉婚櫎杞﹁締"; + this.$refs.addOilForm.resetFields(); + // 杞崲null涓�"" + for (let attr in v) { + if (v[attr] == null) { + v[attr] = ""; + } + } + let str = JSON.stringify(v); + let roleInfo = JSON.parse(str); + roleInfo.status=1 + this.removeForm = roleInfo; + this.carModalVisible = true; + + }, + getAllCar(){ + getAll().then((res) => { + if(res.success){ + this.carList = res.result; + console.log(this.carList); + } + }); + }, + remove(v) { + this.$Modal.confirm({ + title: "纭鍒犻櫎", + content: "鎮ㄧ‘璁よ鍒犻櫎鍚� ", + loading: true, + onOk: () => { + deleteSuggest({ ids: v.id }).then((res) => { + this.$Modal.remove(); + if (res.success) { + this.clearSelectAll(); + this.$Message.success("鍒犻櫎鎴愬姛"); + this.getDataList(); + } + }); + }, + }); + }, + setDefault(v) { + this.loading = true; + let params = { + id: v.id, + isDefault: true, + }; + setDefaultRole(params).then((res) => { + this.loading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + } + }); + }, + cancelDefault(v) { + this.loading = true; + let params = { + id: v.id, + isDefault: false, + }; + setDefaultRole(params).then((res) => { + this.loading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + } + }); + }, + clearSelectAll() { + this.$refs.table.selectAll(false); + }, + + changeSelect(e) { + this.exportData = e; + this.selectList = e; + }, + delAll() { + if (this.selectList.length <= 0) { + this.$Message.warning("鎮ㄨ繕鏈�夋嫨瑕佸垹闄ょ殑鏁版嵁"); + return; + } + this.$Modal.confirm({ + title: "纭鍒犻櫎", + content: "鎮ㄧ‘璁よ鍒犻櫎鎵�閫夌殑 " + this.selectList.length + " 鏉℃暟鎹�?", + loading: true, + onOk: () => { + let ids = ""; + this.selectList.forEach(function (e) { + ids += e.id + ","; + }); + ids = ids.substring(0, ids.length - 1); + deleteCar({ ids: ids }).then((res) => { + this.$Modal.remove(); + if (res.success) { + this.$Message.success("鍒犻櫎鎴愬姛"); + this.clearSelectAll(); + this.getDataList(); + } + }); + }, + }); + }, + editPerm(v) { + this.editRolePermId = v.id; + this.modalTitle = "鍒嗛厤 " + v.name + " 鐨勮彍鍗曟潈闄�"; + // 鍖归厤鍕鹃�� + let rolePerms = v.permissions; + if (this.treeLoading) { + this.$Message.warning("鑿滃崟鏉冮檺鏁版嵁鍔犺浇涓紝璇风◢鍚庣偣鍑绘煡鐪�"); + return; + } + // 閫掑綊鍒ゆ柇瀛愯妭鐐� + this.checkPermTree(this.permData, rolePerms); + this.permModalVisible = true; + }, + // 閫掑綊鍒ゆ柇瀛愯妭鐐� + checkPermTree(permData, rolePerms) { + let that = this; + permData.forEach(function (p) { + if (that.hasPerm(p, rolePerms) && p.status != -1) { + p.checked = true; + } else { + p.checked = false; + } + if (p.children && p.children.length > 0) { + that.checkPermTree(p.children, rolePerms); + } + }); + }, + // 鍒ゆ柇瑙掕壊鎷ユ湁鐨勬潈闄愯妭鐐瑰嬀閫� + hasPerm(p, rolePerms) { + let flag = false; + for (let i = 0; i < rolePerms.length; i++) { + if (p.id == rolePerms[i].permissionId) { + flag = true; + break; + } + } + if (flag) { + return true; + } + return false; + }, + // 鍏ㄩ�夊弽閫� + selectTreeAll() { + this.selectAllFlag = !this.selectAllFlag; + let select = this.selectAllFlag; + this.selectedTreeAll(this.permData, select); + }, + // 閫掑綊鍏ㄩ�夎妭鐐� + selectedTreeAll(permData, select) { + let that = this; + permData.forEach(function (e) { + e.checked = select; + if (e.children && e.children.length > 0) { + that.selectedTreeAll(e.children, select); + } + }); + }, + submitPermEdit() { + this.submitPermLoading = true; + let permIds = ""; + let selectedNodes = this.$refs.tree.getCheckedNodes(); + selectedNodes.forEach(function (e) { + permIds += e.id + ","; + }); + permIds = permIds.substring(0, permIds.length - 1); + editRolePerm({ + roleId: this.editRolePermId, + permIds: permIds, + }).then((res) => { + this.submitPermLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + // 鏍囪閲嶆柊鑾峰彇鑿滃崟鏁版嵁 + this.$store.commit("setAdded", false); + util.initRouter(this); + this.getDataList(); + this.permModalVisible = false; + } + }); + }, + cancelPermEdit() { + this.permModalVisible = false; + }, + loadData(item, callback) { + loadDepartment(item.id, { openDataFilter: false }).then((res) => { + if (res.success) { + res.result.forEach(function (e) { + e.selected = false; + if (e.isParent) { + e.loading = false; + e.children = []; + } + if (e.status == -1) { + e.title = "[宸茬鐢╙ " + e.title; + e.disabled = true; + } + }); + callback(res.result); + } + }); + }, + expandCheckDep(v) { + // 鍒ゆ柇灞曞紑瀛愯妭鐐� + this.checkDepTree(v.children, this.editDepartments); + }, + // 鍒ゆ柇瀛愯妭鐐� + checkDepTree(depData, roleDepIds) { + let that = this; + depData.forEach(function (p) { + if (that.hasDepPerm(p, roleDepIds)) { + p.selected = true; + } else { + p.selected = false; + } + }); + }, + // 鍒ゆ柇瑙掕壊鎷ユ湁鐨勬潈闄愯妭鐐瑰嬀閫� + hasDepPerm(p, roleDepIds) { + let flag = false; + for (let i = 0; i < roleDepIds.length; i++) { + if (p.id == roleDepIds[i].departmentId) { + flag = true; + break; + } + } + if (flag) { + return true; + } + return false; + }, + submitDepEdit() { + let depIds = ""; + if (this.dataType == 1) { + let selectedNodes = this.$refs.depTree.getSelectedNodes(); + selectedNodes.forEach(function (e) { + depIds += e.id + ","; + }); + depIds = depIds.substring(0, depIds.length - 1); + } + this.submitDepLoading = true; + editRoleDep({ + roleId: this.editRolePermId, + dataType: this.dataType, + depIds: depIds, + }).then((res) => { + this.submitDepLoading = false; + if (res.success) { + this.$Message.success("鎿嶄綔鎴愬姛"); + this.getDataList(); + this.depModalVisible = false; + } + }); + }, + changeOpen(v) { + if (v == "0") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = true; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = true; + }); + } + }); + } + }); + } else if (v == "1") { + this.permData.forEach((e) => { + e.expand = false; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = false; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } else if (v == "2") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = false; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } else if (v == "3") { + this.permData.forEach((e) => { + e.expand = true; + if (e.children && e.children.length > 0) { + e.children.forEach((c) => { + c.expand = true; + if (c.children && c.children.length > 0) { + c.children.forEach(function (b) { + b.expand = false; + }); + } + }); + } + }); + } + }, + }, + mounted() { + this.maxHeight = Number(document.documentElement.clientHeight - 121) + "px"; + this.init(); + }, + }; +</script> \ No newline at end of file diff --git a/src/views/your/carInfo-manage/exportColumn.js b/src/views/your/carInfo-manage/exportColumn.js new file mode 100644 index 0000000..b5af350 --- /dev/null +++ b/src/views/your/carInfo-manage/exportColumn.js @@ -0,0 +1,53 @@ +export const exportColumn = [ + { + title: "閫佽揣绾胯矾", + key: "areaName", + width: 130, + }, + { + title: "杞︾墝鍙�", + key: "carNo", + width: 120, + }, + { + title: "鍔犳补鍗″彿", + key: "addOilCode", + width: 140, + sortable: true, + }, + { + title: "璧峰閲岀▼", + key: "beginMileage", + width: 130, + }, + { + title: "鏈熸湯閲岀▼", + key: "endMileage", + width: 130, + }, + { + title: "鏈堣椹堕噷绋�", + key: "mileage", + width: 130, + }, + { + title: "鏈堟补鑰�", + key: "oilWear", + width: 130, + }, + { + title: "鐧惧叕閲屾补鑰�", + key: "oil", + width: 130, + }, + { + title: "椹鹃┒鍛�", + key: "nickName", + width: 120, + }, + { + title: "鏈堝姞娌归噾棰�", + key: "money", + width: 120, + } +] \ No newline at end of file diff --git a/src/views/your/suggest-manage/suggestManage.vue b/src/views/your/suggest-manage/suggestManage.vue index bc975a7..8994f67 100644 --- a/src/views/your/suggest-manage/suggestManage.vue +++ b/src/views/your/suggest-manage/suggestManage.vue @@ -7,16 +7,15 @@ <div class="search"> <Card> <Row class="operation"> - <Button @click="addOil" type="primary" icon="md-add">娣诲姞鍔犳补璁板綍</Button> <Button @click="init" icon="md-refresh">鍒锋柊</Button> <Button type="dashed" @click="openTip = !openTip">{{ openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�" }}</Button> <Input - v-model="searchForm.carNo" + v-model="searchForm.content" suffix="ios-search" @on-change="getDataList" - placeholder="杈撳叆杞︾墝鍙锋悳绱�" + placeholder="杈撳叆鍙嶉鍐呭鎼滅储" clearable style="width: 250px" /> @@ -199,6 +198,8 @@ getCarList, editCar, deleteCar, + getSuggest, + deleteSuggest, } from "@/api/open"; import util from "@/libs/util.js"; export default { @@ -256,7 +257,7 @@ }, { title: "鎰忚鍒嗙被", - key: "dictDataId", + key: "title", width: 150, }, { @@ -267,19 +268,18 @@ { title: "鍙嶉鏃堕棿", key: "createTime", - width: 180, + width: 240, sortable: true, }, { title: "鍙嶉鍟嗘埛", - key: "customerId", + key: "name", width: 150, }, { title: "鎿嶄綔", key: "action", align: "center", - width: 195, render: (h, params) => { return h("div", [ h( @@ -383,7 +383,7 @@ }, getDataList() { this.loading = true; - getAddOilList(this.searchForm).then((res) => { + getSuggest(this.searchForm).then((res) => { this.loading = false; if (res.success) { this.data = res.result.records; @@ -520,7 +520,7 @@ content: "鎮ㄧ‘璁よ鍒犻櫎鍚� ", loading: true, onOk: () => { - deleteAddOil({ ids: v.id }).then((res) => { + deleteSuggest({ ids: v.id }).then((res) => { this.$Modal.remove(); if (res.success) { this.clearSelectAll(); -- Gitblit v1.9.1