From 98fcbf66162fba0a097a8abcaeba5e1c1e32000e Mon Sep 17 00:00:00 2001
From: kongdeqiang <123456>
Date: 星期五, 04 十一月 2022 08:45:47 +0800
Subject: [PATCH] 提交更新
---
src/views/your/sign-manage/exportColumn.js | 115 +++
src/views/your/sign-manage/signManage.vue | 1738 ++++++++++++++++++++++++++++++++++++++++++++++++++++
src/libs/axios.js | 17
src/views/your/sign-manage/signManage.less | 60 +
src/api/open.js | 15
5 files changed, 1,941 insertions(+), 4 deletions(-)
diff --git a/src/api/open.js b/src/api/open.js
index 074bba9..ca481b8 100644
--- a/src/api/open.js
+++ b/src/api/open.js
@@ -1,5 +1,5 @@
// 缁熶竴璇锋眰璺緞鍓嶇紑鍦╨ibs/axios.js涓慨鏀�
-import { getRequest, getNoAuthRequest, postNoAuthRequest, postRequest, putRequest } from '@/libs/axios';
+import { getRequest, getNoAuthRequest, postNoAuthRequest, postRequest, putRequest, getmethod } from '@/libs/axios';
// 璁よ瘉
@@ -18,7 +18,6 @@
export const token = (params) => {
return getNoAuthRequest('/oauth2/token', params)
}
-
// 鑾峰彇闅忔満secretKey
@@ -269,4 +268,16 @@
return getRequest('/orderTask2/getByPage', params)
}
+//閰嶉�佷俊鎭粺璁¤〃
+//鑾峰彇鎵�鏈夌鏀剁粺璁″垪琛ㄤ俊鎭�
+export const getSignList = (pageNum, pageSize, carName, sendDateStart, sendDateEnd) => {
+ return getRequest(`/signCount/selectBySign?pageSize=${pageSize}&pageNum=${pageNum}&carName=${carName}&sendDateStart=${sendDateStart}&sendDateEnd=${sendDateEnd}`)
+}
+export const getSignByMonth = (pageNum, pageSize, carName,StatisticalType) => {
+ return getRequest(`/signCount/selectBySign?pageSize=${pageSize}&pageNum=${pageNum}&carName=${carName}&StatisticalType=${StatisticalType}`)
+}
+// 绛炬敹缁熻瀵煎嚭鍒楄〃
+export const outExcel = (pageNum, pageSize, carName, sendDateStart, sendDateEnd) => {
+ return getmethod(`/signCount/outExcels?pageSize=${pageSize}&pageNum=${pageNum}&carName=${carName}&sendDateStart=${sendDateStart}&sendDateEnd=${sendDateEnd}`)
+}
diff --git a/src/libs/axios.js b/src/libs/axios.js
index d78fd03..287ed6f 100644
--- a/src/libs/axios.js
+++ b/src/libs/axios.js
@@ -62,7 +62,7 @@
return Promise.resolve(err);
});
-export const getRequest = (url, params) => {
+export const getRequest = (url, params, responseType = null) => {
let accessToken = getStore('accessToken');
return axios({
method: 'get',
@@ -70,7 +70,20 @@
params: params,
headers: {
'accessToken': accessToken,
- }
+ },
+ responseType:responseType
+ });
+};
+export const getmethod = (url, params) => {
+ let accessToken = getStore('accessToken');
+ return axios({
+ method: 'get',
+ url: `${baseApi}${url}`,
+ params: params,
+ headers: {
+ 'accessToken': accessToken,
+ },
+ responseType:"blob"
});
};
diff --git a/src/views/your/sign-manage/exportColumn.js b/src/views/your/sign-manage/exportColumn.js
new file mode 100644
index 0000000..ee34655
--- /dev/null
+++ b/src/views/your/sign-manage/exportColumn.js
@@ -0,0 +1,115 @@
+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: "01娈�",
+ key: "amount",
+ width: 130,
+ sortable: true,
+ align: "center",
+ },
+ {
+ title: "02娈�",
+ key: "mileage",
+ minWidth: 100,
+ sortable: true,
+ align: "center",
+ },
+ {
+ title: "03娈�",
+ key: "oilWear",
+ minWidth: 100,
+ sortable: true,
+ align: "center",
+ },
+ {
+ title: "04娈�",
+ key: "remarks",
+ minWidth: 150,
+ align: "center",
+ },
+ {
+ title: "05娈�",
+ key: "remarks",
+ minWidth: 150,
+ align: "center",
+ },
+]
+export const childColumn = [
+ {
+ title: "绗竴鍛�",
+ width: 118,
+ align: "center",
+ key: "sendDate"
+ },
+]
+export const childColumnTwo = [
+ {
+ title: "绗竴鍛�",
+ width: 118,
+ align: "center",
+ key: "proportion"
+ },
+]
+export const childColumnthree = [
+ {
+ title: "绗竴鍛�",
+ width: 118,
+ align: "center",
+ key: "proportion"
+ },
+]
+export const childData = [
+ {
+ one: "绗竴鍛�",
+ },
+ {
+ one: "绗簩鍛�",
+
+ },
+ {
+ one: "绗笁鍛�",
+ },
+ {
+ one: "绗洓鍛�",
+ },
+]
+export const childDataTwo = [
+ {
+ one: "",
+ },
+ {
+ one: "",
+ },
+ {
+ one: "",
+ },
+ {
+ one: "",
+ },
+]
\ No newline at end of file
diff --git a/src/views/your/sign-manage/signManage.less b/src/views/your/sign-manage/signManage.less
new file mode 100644
index 0000000..f46753b
--- /dev/null
+++ b/src/views/your/sign-manage/signManage.less
@@ -0,0 +1,60 @@
+.permModal {
+ .ivu-modal-body {
+ max-height: 560px;
+ overflow: auto;
+ }
+}
+
+.depModal {
+ .ivu-modal-body {
+ max-height: 500px;
+ overflow: auto;
+ }
+}
+
+.Sign .ivu-table-cell {
+ text-align: center;
+}
+
+.Sign .ivu-table td {
+ border-bottom: 0;
+}
+.isshow{
+ display: block;
+}
+//璁剧疆琛ㄦ牸鐨勬牱寮�
+.ivu-table td.no_border>.ivu-table-cell {
+ padding-left: 0;
+ padding-right: 0;
+}
+
+.no_border.ivu-table-wrapper {
+ border: none;
+}
+
+.no_border.ivu-table td,
+.no_border.ivu-table th {
+ border: none;
+}
+
+.no_border .ivu-table.ivu-table-default::after,
+.no_border .ivu-table.ivu-table-default::before {
+ display: none !important;
+}
+
+.no_border .ivu-table-column-center {
+ border-right: none;
+}
+
+.no_border .ivu-table-row:last-child .ivu-table-column-center {
+ border-bottom: none;
+}
+
+//璁剧疆鏃ユ湡閫夋嫨鍣ㄧ殑闂磋窛
+.ivu-date-picker {
+ padding-left: 2px !important;
+}
+
+.init-button {
+ margin-left: 8px;
+}
\ No newline at end of file
diff --git a/src/views/your/sign-manage/signManage.vue b/src/views/your/sign-manage/signManage.vue
new file mode 100644
index 0000000..83667ae
--- /dev/null
+++ b/src/views/your/sign-manage/signManage.vue
@@ -0,0 +1,1738 @@
+<style lang="less">
+@import "@/styles/table-common.less";
+@import "@/styles/drawer-common.less";
+@import "./signManage.less";
+</style>
+<template>
+ <div class="search">
+ <Card>
+ <Row class="operation">
+ <Date-picker v-model="value" @on-change="getDataByDate" value-format="yyyy-MM-dd" type="daterange"
+ placement="bottom-start" placeholder="璇烽�夋嫨鏃ユ湡" style="width: 240px;padding-left: 20px">
+ </Date-picker>
+ <Button @click="init" icon="md-refresh" class="init-button">鍒锋柊</Button>
+ <Button type="dashed" @click="openTip = !openTip">{{
+ openTip ? "鍏抽棴鎻愮ず" : "寮�鍚彁绀�"
+ }}
+ </Button>
+ <Input v-model="carNo" suffix="ios-search" @on-change="getSign" placeholder="杈撳叆杞︾墝鍙锋悳绱�" clearable
+ style="width: 250px" />
+ <Button @click="exportExcel" class="init-button export-button">瀵煎嚭鏈〉鏁版嵁</Button>
+ <!-- <Button @click="exportAllExcel" class="init-button export-button">瀵煎嚭鍏ㄩ儴鏁版嵁</Button> -->
+ <div @click="switchnum = 1">
+ <Button class="init-button export-button">鏃ョ鏀剁巼</Button>
+ </div>
+ <div @click="switchnum = 2">
+ <Button class="init-button export-button">鏈堢鏀剁巼</Button>
+ </div>
+ </Row>
+ <Alert show-icon v-show="openTip">
+ 宸查�夋嫨
+ <span class="select-count">{{ selectList.length }}</span> 椤�
+ <a class="select-clear" @click="clearSelectAll">娓呯┖</a>
+ </Alert>
+ <!-- 鏃ョ鏀剁巼鐨勮〃 -->
+ <div v-show="switchnum === 1">
+ <Table :loading="loading" border :columns="columns" :data="data" ref="table" sortable="custom"
+ :span-method="handleSpan" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
+ </div>
+ <!-- 鏈堢鏀剁巼鐨勮〃 -->
+ <div v-show="switchnum === 2">
+ <Table :loading="loading" border :columns="columnsMonth" :data="monthData" sortable="custom"
+ :span-method="handleSpan" @on-sort-change="changeSort" @on-selection-change="changeSelect">
+ </Table>
+ </div>
+ <div v-show="switchnum === 1">
+ <Row type="flex" justify="end" class="page">
+ <Page :current="pageNum" :total="total" :page-size="pageSize" @on-change="changePage"
+ @on-page-size-change="changePageSize" :page-size-opts="[18, 36]" size="small" show-total show-elevator
+ show-sizer></Page>
+ </Row>
+ </div>
+ <div v-show="switchnum === 2">
+ <Row type="flex" justify="end" class="page">
+ <Page :current="pageNum" :total="totalmonth" :page-size="pageSize" @on-change="changePage"
+ @on-page-size-change="changePageSize" :page-size-opts="[18, 36]" size="small" show-total show-elevator
+ show-sizer></Page>
+ </Row>
+ </div>
+ </Card>
+
+ <!-- 缂栬緫 -->
+ <Modal :title="modalTitle" v-model="roleModalVisible" :mask-closable="false" :width="500">
+ <Form ref="carForm" :model="carForm" :label-width="80" :rules="carFormValidate">
+ <FormItem label="鍝佺墝" prop="brand">
+ <Input v-model="carForm.brand" />
+ </FormItem>
+ <FormItem label="鍨嬪彿" prop="model">
+ <Input v-model="carForm.model" />
+ </FormItem>
+ <FormItem label="鎺掗噺" prop="displacement">
+ <Input v-model="carForm.displacement" />
+ </FormItem>
+ <Form-item label="璐疆骞翠唤">
+ <Row>
+ <Col span="11">
+ <Date-picker @on-change="change1" type="date" value="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡"
+ v-model="carForm.buyYear"></Date-picker>
+ </Col>
+ </Row>
+ </Form-item>
+ <FormItem label="鐗岀収" prop="carNo">
+ <Input v-model="carForm.carNo" />
+ </FormItem>
+ <FormItem label="鍔犳补鍗″彿" prop="addOilCode">
+ <Input v-model="carForm.addOilCode" />
+ </FormItem>
+ <FormItem label="杞﹁締缂栧彿" prop="code">
+ <Input v-model="carForm.code" />
+ </FormItem>
+ <FormItem label="鍙告満" prop="userId">
+ <Select v-model="carForm.userId" filterable>
+ <Option :value="0">璇烽�夋嫨</Option>
+ <Option v-for="item in userList" :value="item.id" :key="item.id">{{ item.nickname }}</Option>
+ </Select>
+ </FormItem>
+ <FormItem label="閰嶉�佸憳" prop="followUserId">
+ <Select v-model="carForm.followUserId" filterable>
+ <Option :value="0" :key="0">璇烽�夋嫨</Option>
+ <Option v-for="item in driverList" :value="item.id" :key="item.id">{{ item.nickname }}</Option>
+ </Select>
+ </FormItem>
+ </Form>
+ <div slot="footer">
+ <Button type="text" @click="carRole">鍙栨秷</Button>
+ <Button type="primary" :loading="submitLoading" @click="submitCar">鎻愪氦
+ </Button>
+ </div>
+ </Modal>
+ <Modal :title="modalTitle" v-model="equipmentVisible" :mask-closable="false" :width="1044">
+ <Row class="operation" style="padding-bottom: 20px">
+ <Button @click="addEquipment" type="primary" icon="md-add">娣诲姞璁惧</Button>
+ <Button @click="init" icon="md-refresh">鍒锋柊</Button>
+ </Row>
+ <Table :loading="loading" border :columns="columns2" :data="data2" ref="table" sortable="custom"
+ @on-sort-change="changeSort" @on-selection-change="changeSelect">
+
+
+ </Table>
+ </Modal>
+ <Modal :title="modalTitle" v-model="addEquipmentVisible" :mask-closable="false" :width="500">
+ <Form ref="equipmentForm" :model="equipmentForm" :label-width="80" :rules="equipmentFormValidate">
+ <FormItem label="璁惧绫诲瀷" prop="type">
+ <Select v-model="equipmentForm.type">
+ <Option :value="0">杞︽満</Option>
+ <Option :value="1">鎽勫儚鏈�</Option>
+ <Option :value="2">鎶撴媿鏈�</Option>
+ <Option :value="3">pad</Option>
+ </Select>
+ </FormItem>
+ <FormItem label="鐘舵��" prop="status">
+ <Select v-model="equipmentForm.status">
+ <Option :value="0">姝e父</Option>
+ <Option :value="1">寮傚父</Option>
+ </Select>
+ </FormItem>
+ <FormItem label="缂栧彿" prop="code">
+ <Input v-model="equipmentForm.code" />
+ </FormItem>
+ <FormItem label="ip鍦板潃" prop="ip">
+ <Input v-model="equipmentForm.ip" />
+ </FormItem>
+ <FormItem label="绔彛鍙�" prop="port">
+ <Input v-model="equipmentForm.port" />
+ </FormItem>
+
+ </Form>
+ <div slot="footer">
+ <Button type="text" @click="carRole">鍙栨秷</Button>
+ <Button type="primary" :loading="submitLoading" @click="submitEquipment">鎻愪氦
+ </Button>
+ </div>
+ </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,
+ addCar,
+ getCarList,
+ editCar,
+ deleteCar,
+ getEquipment,
+ addEquipment,
+ getUser,
+ getDriver,
+ deleteEquipment,
+ getSignList,
+ getLicense,
+ getSignByMonth,
+ outExcel
+} from "@/api/open";
+import util from "@/libs/util.js";
+import { childColumn, childData, childDataTwo, childColumnTwo, childColumnthree } from "./exportColumn"
+import Vue from "vue"
+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,
+ addEquipmentVisible: false,
+ equipmentVisible: false,
+ carModalVisible: false,
+ permModalVisible: false,
+ depModalVisible: false,
+ modalTitle: "",
+ searchForm: {
+ // 鎼滅储妗嗗垵濮嬪寲瀵硅薄
+ pageNumber: 1, // 褰撳墠椤垫暟
+ pageSize: 10, // 椤甸潰澶у皬
+ sort: "createTime", // 榛樿鎺掑簭瀛楁
+ order: "desc", // 榛樿鎺掑簭鏂瑰紡
+ key: "",
+ },
+ carForm: {
+ status: 0
+ },
+ type: {
+ type: 0
+ },
+ equipmentForm: {
+ status: 0
+ },
+ removeForm: {
+ status: 1
+ },
+ carFormValidate: {
+ name: [
+ { required: true, message: "瑙掕壊鍚嶇О涓嶈兘涓虹┖", trigger: "change" },
+ ],
+ },
+ submitLoading: false,
+ selectList: [],
+ columns: [
+ {
+ type: "selection",
+ width: 60,
+ align: "center",
+ },
+ {
+ type: "index",
+ title: "搴忓彿",
+ width: 80,
+ align: "center",
+ },
+ {
+ title: "杞︾墝鍙�",
+ key: "carName",
+ width: 120,
+ align: "center",
+ },
+ {
+ title: "鍙告満",
+ key: "userName",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "閰嶉�佸憳",
+ key: "name",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "骞存湀",
+ key: "sendMonth",
+ minWidth: 120,
+ align: "center",
+ },
+ {
+ title: "01娈�",
+ // key: "oneBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏃ユ湡',
+ align: 'center',
+ key: 'sendDate',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ "show-header": false,
+ data: params.row.childone,
+ align: 'center',
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏃ョ鏀剁巼',
+ align: 'center',
+ className: 'no_border',
+ minWidth: 120,
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnTwo,
+ data: params.row.childone,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ ]
+ },
+ {
+ title: "02娈�",
+ key: "twoBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏃ユ湡',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childtwo,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏃ョ鏀剁巼',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnTwo,
+ data: params.row.childtwo,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ ]
+ },
+ {
+ title: "03娈�",
+ key: "threeBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏃ユ湡',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childthree,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏃ョ鏀剁巼',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnTwo,
+ data: params.row.childthree,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ ],
+ },
+ {
+ title: "04娈�",
+ key: "fourBatch",
+ minWidth: 140,
+ align: "center",
+ tooltip: true,
+ children: [
+ {
+ title: '鏃ユ湡',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childfour,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏃ョ鏀剁巼',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnTwo,
+ data: params.row.childfour,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ ]
+ },
+ {
+ title: "05娈�",
+ key: "fiveBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏃ユ湡',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childfive,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏃ョ鏀剁巼',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnTwo,
+ data: params.row.childfive,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ ]
+ },
+ ],
+ columnsMonth: [
+ {
+ type: "selection",
+ width: 60,
+ align: "center",
+ },
+ {
+ type: "index",
+ title: "搴忓彿",
+ width: 80,
+ align: "center",
+ },
+ {
+ title: "杞︾墝鍙�",
+ key: "carName",
+ width: 120,
+ align: "center",
+ },
+ {
+ title: "鍙告満",
+ key: "userName",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "閰嶉�佸憳",
+ key: "name",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "骞存湀",
+ key: "sendMonth",
+ minWidth: 120,
+ align: "center",
+ },
+ {
+ title: "01娈�",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏈堜唤',
+ align: 'center',
+ key: 'sendDate',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ console.log(params.row.childone);
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ "show-header": false,
+ data: params.row.childone,
+ align: 'center',
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏈堢鏀剁巼',
+ align: 'center',
+ key: 'proportion',
+ minWidth: 120,
+ className: 'no_border Sign',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnthree,
+ data: params.row.childone,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ }
+ ]
+ },
+ {
+ title: "02娈�",
+ key: "twoBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏈堜唤',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childtwo,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏈堢鏀剁巼',
+ align: 'center',
+ // key: 'proportion',
+ minWidth: 120,
+ className: 'no_border Sign',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnthree,
+ data: params.row.childtwo,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ }
+ ]
+ },
+ {
+ title: "03娈�",
+ key: "threeBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏈堜唤',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childthree,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏈堢鏀剁巼',
+ align: 'center',
+ // key: 'model',
+ minWidth: 120,
+ className: 'no_border Sign',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnthree,
+ data: params.row.childthree,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ }
+ ],
+ },
+ {
+ title: "04娈�",
+ key: "fourBatch",
+ minWidth: 140,
+ align: "center",
+ tooltip: true,
+ children: [
+ {
+ title: '鏈堜唤',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childfour,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏈堢鏀剁巼',
+ align: 'center',
+ // key: 'model',
+ minWidth: 120,
+ className: 'no_border Sign',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnthree,
+ data: params.row.childfour,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ }
+ ]
+ },
+ {
+ title: "05娈�",
+ key: "fiveBatch",
+ minWidth: 140,
+ align: "center",
+ children: [
+ {
+ title: '鏈堜唤',
+ align: 'center',
+ key: 'model',
+ minWidth: 120,
+ className: 'no_border',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumn,
+ data: params.row.childfive,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ },
+ {
+ title: '鏈堢鏀剁巼',
+ align: 'center',
+ // key: 'model',
+ minWidth: 120,
+ className: 'no_border Sign',
+ render: (h, params) => {
+ return h("div", [
+ h("Table", {
+ props: {
+ columns: childColumnthree,
+ data: params.row.childfive,
+ "show-header": false,
+ },
+ }),
+ ])
+ },
+ }
+ ]
+ },
+ ],
+ columns2: [
+ {
+ type: "selection",
+ width: 60,
+ align: "center",
+ },
+ {
+ type: "index",
+ width: 60,
+ align: "center",
+ },
+ {
+ title: "璁惧绫诲瀷",
+ key: "type",
+ width: 130,
+ sortable: true,
+ render: (h, params) => {
+ let re = "";
+ if (params.row.type == 0) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ text: "杞︽満",
+ },
+ }),
+ ]);
+ } else if (params.row.type == 1) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ text: "鎽勫儚鏈�",
+ },
+ }),
+ ]);
+ } else if (params.row.type == 2) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ text: "鎶撴媿鏈�",
+ },
+ }),
+ ]);
+ } else if (params.row.type == 3) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ text: "pad",
+ },
+ }),
+ ]);
+ }
+ },
+ },
+ {
+ title: "缂栧彿",
+ key: "code",
+ width: 120,
+ },
+ {
+ title: "鐘舵��",
+ key: "status",
+ width: 120,
+ sortable: true,
+ render: (h, params) => {
+ let re = "";
+ if (params.row.status == 0) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ status: "success",
+ text: "姝e父",
+ },
+ }),
+ ]);
+ } else if (params.row.status == 1) {
+ return h("div", [
+ h("Badge", {
+ props: {
+ status: "error",
+ text: "鍋滅敤",
+ },
+ }),
+ ]);
+ }
+ },
+ },
+ {
+ title: "ip鍦板潃",
+ key: "ip",
+ width: 120,
+ },
+ {
+ title: "绔彛鍙�",
+ key: "port",
+ width: 120,
+ sortable: true,
+ },
+ {
+ title: "鎿嶄綔",
+ key: "action",
+ align: "center",
+ width: 280,
+ render: (h, params) => {
+ return h("div", [
+ h(
+ "a",
+ {
+ on: {
+ click: () => {
+ this.editEquipment(params.row);
+ },
+ },
+ },
+ "缂栬緫"
+ ),
+ h("Divider", {
+ props: {
+ type: "vertical",
+ },
+ }),
+ h(
+ "a",
+ {
+ on: {
+ click: () => {
+ this.removeEquipment(params.row);
+ },
+ },
+ },
+ "鍒犻櫎"
+ ),
+ ]);
+ },
+ },
+ ],
+ data: [],
+ data2: [],
+ total: 0,
+ total2: 0,
+ totalmonth: 0,
+ permData: [],
+ editRolePermId: "",
+ selectAllFlag: false,
+ depData: [],
+ dataType: 0,
+ carId: '',
+ driverList: [],
+ userList: [],
+ editDepartments: [],
+ buyYear: '',
+ //閫夋嫨鏃ユ湡
+ value: [],
+ // 椤电爜
+ pageNum: 1,
+ // 姣忛〉鏉℃暟
+ pageSize: 18,
+ // 杞︾墝鍙�
+ carNo: "",
+ // 寮�濮嬫棩鏈�
+ beginTime: "",
+ // 缁撴潫鏃ユ湡
+ endTime: "",
+ // 鎸夋湀鏌ヨ鐨刣ata
+ monthData: [],
+ // 瀵煎嚭鐨勬暟鎹�
+ exportData: "",
+ // 鏃� 鏈堢鏀剁巼涓ゅ紶琛ㄧ殑鍒囨崲
+ switchnum: 1
+ };
+ },
+ created() {
+ //璇锋眰鏁版嵁
+ this.getSign()
+ // 鎸夋湀璇锋眰鐨勬暟鎹�
+ this.getSignByMonthList()
+ },
+ methods: {
+ getSign() {
+ getSignList(this.pageNum, this.pageSize, this.carNo, this.beginTime, this.endTime).then(result => {
+ this.loading = false;
+ if (result.success) {
+ this.data = result.result.records;
+ this.total = result.result.total;
+ this.data = this.merge(this.data)
+ // console.log(this.data);
+ }
+ })
+ },
+ getSignByMonthList() {
+ getSignByMonth(this.pageNum, this.pageSize, this.carNo, 3).then(result => {
+ this.loading = false;
+ if (result.success) {
+ this.dataMonth = result.result.records
+ this.totalmonth = result.result.total;
+ this.monthData = this.merge(this.dataMonth)
+ // console.log(this.monthData);
+ }
+ })
+ },
+ merge(index) {
+ let dataInfo = {};
+ index.forEach((item, index) => {
+ let { userName, carName, sendMonth, name } = item;
+ if (!dataInfo[userName]) {
+ dataInfo[userName] = {
+ userName,
+ carName,
+ sendMonth,
+ name,
+ childone: [],
+ childtwo: [],
+ childthree: [],
+ childfour: [],
+ childfive: []
+ }
+ }
+ if (item.batch === "01娈�") {
+ dataInfo[userName].childone.push(item);
+ }
+ if (item.batch === "02娈�") {
+ dataInfo[userName].childtwo.push(item);
+ }
+ if (item.batch === "03娈�") {
+ dataInfo[userName].childthree.push(item);
+ }
+ if (item.batch === "04娈�") {
+ dataInfo[userName].childfour.push(item);
+ }
+ if (item.batch === "05娈�") {
+ dataInfo[userName].childfive.push(item);
+ }
+ });
+ let list = Object.values(dataInfo);
+ list.forEach(item => {
+ let arr = new Array(5 - item.childone.length).fill({ proportion: "" })
+ let arr1 = new Array(5 - item.childtwo.length).fill({ proportion: "" })
+ let arr2 = new Array(5 - item.childthree.length).fill({ proportion: "" })
+ let arr3 = new Array(5 - item.childfour.length).fill({ proportion: "" })
+ let arr4 = new Array(5 - item.childfive.length).fill({ proportion: "" })
+ item.childone = [...item.childone, ...arr]
+ item.childtwo = [...item.childtwo, ...arr1]
+ item.childthree = [...item.childthree, ...arr2]
+ item.childfour = [...item.childfour, ...arr3]
+ item.childfive = [...item.childfive, ...arr4]
+ })
+ return list
+ },
+ handleSummary({ columns, data }) {
+ const sums = {};
+ columns.forEach((column, index) => {
+ const key = column.key;
+ if (index === 0) {
+ sums[key] = {
+ key,
+ value: '鎬讳环'
+ };
+ return;
+ }
+ const values = data.map(item => Number(item[key]));
+ if (!values.every(value => isNaN(value))) {
+ const v = values.reduce((prev, curr) => {
+ const value = Number(curr);
+ if (!isNaN(value)) {
+ return prev + curr;
+ } else {
+ return prev;
+ }
+ }, 0);
+ sums[key] = {
+ key,
+ value: v + ' 鍏�'
+ };
+ } else {
+ sums[key] = {
+ key,
+ value: 'N/A'
+ };
+ }
+ });
+ console.log(sums)
+ return sums;
+ },
+ // 瀵煎嚭涓篹xcel
+ exportExcel() {
+ outExcel(this.pageNum, this.pageSize, this.carNo, this.beginTime, this.endTime).then((res) => {
+ let blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+ let url = URL.createObjectURL(blob);
+ const link = document.createElement('a'); //鍒涘缓a鏍囩
+ link.href = url;
+ link.download = '閰嶉�佷俊鎭�.xlsx'; //閲嶅懡鍚嶆枃浠�
+ link.click();
+ URL.revokeObjectURL(url);
+ })
+ },
+ exportAllExcel() {
+ outExcel().then(res => {
+ let blob = new Blob([res], { type: 'application/vnd.ms-excel' });
+ let url = URL.createObjectURL(blob);
+ const link = document.createElement('a'); //鍒涘缓a鏍囩
+ link.href = url;
+ link.download = '鍏ㄩ儴閰嶉�佷俊鎭�.xlsx'; //閲嶅懡鍚嶆枃浠�
+ link.click();
+ URL.revokeObjectURL(url);
+ })
+ },
+ handleSpan({ row, column, rowIndex, columnIndex }) {
+ if (rowIndex || !rowIndex) {
+ return {}
+ }
+ },
+ change1(e) {
+ this.buyYear = e;
+ },
+ init() {
+ this.getDataList();
+ // 鑾峰彇鎵�鏈夎彍鍗曟潈闄愭爲
+ },
+ 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.pageNum = v
+ this.getSign();
+ this.getSignByMonthList()
+ this.clearSelectAll();
+ },
+ changePageSize(v) {
+ this.pageSize = v;
+ this.getSign();
+ this.getSignByMonthList()
+ },
+ getAllUser() {
+ getDriver({ type: 0 }).then((res) => {
+ if (res.success) {
+ this.userList = res.result;
+ }
+ });
+ //this.type.type=1;
+ getDriver({ type: 1 }).then((res) => {
+ if (res.success) {
+ this.driverList = res.result;
+ }
+ });
+ this.type.type = 0;
+ console.log(this.userList);
+ console.log(this.driverList);
+ },
+ 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
+ },
+ //鏍规嵁閫夋嫨鐨勬棩鏈熻繑鍥炴暟鎹�
+ getDataByDate() {
+ this.loading = true;
+ if (this.value[0] != "" && this.value[1] != "") {
+ this.beginTime = this.selectDate(this.value[0]);
+ this.endTime = this.selectDate(this.value[1]);
+ this.page = false;
+ } else {
+ // var date = new Date();
+ // this.endTime = this.selectDate(date);
+ // this.value[1] = this.endTime;
+ // date.setDate(1);
+ // this.value[0] = date;
+ // this.beginTime = this.selectDate(date);
+ this.beginTime = "";
+ this.endTime = ""
+ }
+ this.getSign();
+ },
+ // 鑾峰彇琛ㄦ牸鏁版嵁
+ getDataList() {
+ // this.loading = true;
+ // getCarList(this.searchForm).then((res) => {
+ // this.loading = false;
+ // if (res.success) {
+ // console.log(res)
+ // this.data = res.result.records;
+ // this.total = res.result.total;
+ // }
+ // });
+ },
+ getEquipmentList(carId) {
+ this.loading = true;
+ this.searchForm.carId = carId;
+ getEquipment(this.searchForm).then((res) => {
+ this.loading = false;
+ if (res.success) {
+ this.data2 = res.result.records;
+ }
+ });
+ },
+ 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;
+ },
+ submitCar() {
+ if (this.carForm.userId == undefined || this.carForm.userId == 0) {
+ this.carForm.userId = "";
+ }
+ if (this.carForm.followUserId == undefined || this.carForm.followUserId == 0) {
+ this.carForm.followUserId = "";
+ }
+ this.carForm.buyYear = this.buyYear;
+ this.$refs.carForm.validate((valid) => {
+ if (valid) {
+ if (this.modalType == 0) {
+ // 娣诲姞
+ this.submitLoading = true;
+ addCar(this.carForm).then((res) => {
+ this.submitLoading = false;
+ if (res.success) {
+ this.$Message.success("鎿嶄綔鎴愬姛");
+ this.getDataList();
+ this.roleModalVisible = false;
+ }
+ });
+ } else {
+ this.submitLoading = true;
+ editCar(this.carForm).then((res) => {
+ this.submitLoading = false;
+ if (res.success) {
+ this.$Message.success("鎿嶄綔鎴愬姛");
+ this.getDataList();
+ this.roleModalVisible = false;
+ }
+ });
+ }
+ }
+ });
+ },
+ submitEquipment() {
+ this.$refs.equipmentForm.validate((valid) => {
+ this.equipmentForm.carId = this.carId;
+ if (valid) {
+ if (this.modalType == 0) {
+ // 娣诲姞
+ this.submitLoading = true;
+ addEquipment(this.equipmentForm).then((res) => {
+ this.submitLoading = false;
+ if (res.success) {
+ this.$Message.success("鎿嶄綔鎴愬姛");
+ this.getEquipmentList(this.carId);
+ this.addEquipmentVisible = false;
+ this.getEquipmentList(this.carId);
+ }
+ });
+ } else {
+ this.submitLoading = true;
+ addEquipment(this.equipmentForm).then((res) => {
+ this.submitLoading = false;
+ if (res.success) {
+ this.$Message.success("鎿嶄綔鎴愬姛");
+ this.getEquipmentList(this.carId);
+ this.addEquipmentVisible = 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;
+ }
+ });
+ }
+ });
+ },
+ equipment(row) {
+ this.carId = row.id
+ this.getEquipmentList(row.id);
+ this.modalType = 0;
+ this.modalTitle = "璁惧淇℃伅";
+ this.$refs.carForm.resetFields();
+ delete this.carForm.id;
+ this.equipmentVisible = true;
+ },
+ addCar() {
+ this.carForm = {};
+ this.getAllUser();
+ this.modalType = 0;
+ this.modalTitle = "娣诲姞杞﹁締";
+ this.$refs.carForm.resetFields();
+ delete this.carForm.id;
+ this.roleModalVisible = true;
+ },
+ addEquipment() {
+ this.equipmentForm = {};
+ this.modalType = 0;
+ this.modalTitle = "娣诲姞璁惧";
+ this.$refs.carForm.resetFields();
+ delete this.carForm.id;
+ this.addEquipmentVisible = true;
+ },
+ edit(v) {
+ this.getAllUser();
+ this.buyYear = v.buyYear;
+ this.modalType = 1;
+ this.modalTitle = "缂栬緫";
+ this.$refs.carForm.resetFields();
+ // 杞崲null涓�""
+ for (let attr in v) {
+ if (v[attr] == null) {
+ v[attr] = "";
+ }
+ }
+ let str = JSON.stringify(v);
+ let roleInfo = JSON.parse(str);
+ this.carForm = roleInfo;
+ this.roleModalVisible = true;
+ },
+ editEquipment(v) {
+ this.modalType = 1;
+ this.modalTitle = "缂栬緫璁惧";
+ this.$refs.equipmentForm.resetFields();
+ // 杞崲null涓�""
+ for (let attr in v) {
+ if (v[attr] == null) {
+ v[attr] = "";
+ }
+ }
+ let str = JSON.stringify(v);
+ let roleInfo = JSON.parse(str);
+ this.equipmentForm = roleInfo;
+ this.addEquipmentVisible = true;
+ },
+ removeCar(v) {
+ this.dataType = 0;
+ this.modalTitle = "绉婚櫎杞﹁締";
+ this.$refs.carForm.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;
+
+ },
+ remove(v) {
+ this.$Modal.confirm({
+ title: "纭鍒犻櫎",
+ content: "鎮ㄧ‘璁よ鍒犻櫎鍚� ",
+ loading: true,
+ onOk: () => {
+ deleteCar({ ids: v.id }).then((res) => {
+ this.$Modal.remove();
+ if (res.success) {
+ this.clearSelectAll();
+ this.$Message.success("鍒犻櫎鎴愬姛");
+ this.getDataList();
+ }
+ });
+ },
+ });
+ },
+ removeEquipment(v) {
+ this.$Modal.confirm({
+ title: "纭鍒犻櫎",
+ content: "鎮ㄧ‘璁よ鍒犻櫎鍚� ",
+ loading: true,
+ onOk: () => {
+ deleteEquipment({ ids: v.id }).then((res) => {
+ this.$Modal.remove();
+ if (res.success) {
+ this.clearSelectAll();
+ this.$Message.success("鍒犻櫎鎴愬姛");
+ this.getEquipmentList(this.carId);
+ }
+ });
+ },
+ });
+ },
+ 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
--
Gitblit v1.9.1