Commit 9dc1f424 authored by renjintao's avatar renjintao

Merge branch 'master' of git.mes123.com:zhouyx/mes-ui into product-rjt

parents 695863e3 64d8735e
...@@ -21,7 +21,9 @@ ul, ...@@ -21,7 +21,9 @@ ul,
li { li {
list-style: none; list-style: none;
} }
.ivu-drawer-wrap{
z-index: 12000;
}
div::-webkit-scrollbar { div::-webkit-scrollbar {
width: 10px; width: 10px;
height: 10px; height: 10px;
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
box-sizing: border-box; box-sizing: border-box;
-webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent;
} }
.ivu-btn-primary { .ivu-btn-primary {
color: #fff; color: #fff;
background-color: @primary-color; background-color: @primary-color;
......
<template> <template>
<div class="table-content1"> <div class="table-content1">
<div class="table-tools"> <div class="table-tools">
<div class="table-search"> <div class="table-search">
<slot name="easySearch"></slot> <slot name="easySearch"></slot>
</div> </div>
<div class="btns"> <div class="btns">
<slot name="buttons"></slot> <slot name="buttons"></slot>
<!-- <Button @click="config=!config"> <Button @click="config = !config">
<Icon type="md-build" class="table-set" size="14" title="列设置" /> <Icon type="md-build" class="table-set" size="14" title="列设置" />
</Button>--> </Button>
</div> </div>
</div> </div>
<div class="table-main" ref="main"> <div class="table-main" ref="main">
...@@ -16,60 +16,132 @@ ...@@ -16,60 +16,132 @@
<table class="table-head"> <table class="table-head">
<thead> <thead>
<tr> <tr>
<th v-for="(column, index) in columns" :key="index" :style="tdStyle(column)"> <th
v-for="(column, index) in columns"
:key="index"
:style="tdStyle(column)"
>
<label v-if="column.type === 'selection'"> <label v-if="column.type === 'selection'">
<Checkbox v-model="checkAll" @on-change="checked" :indeterminate="indeterminate"></Checkbox> <Checkbox
v-model="checkAll"
@on-change="allChecked"
:indeterminate="indeterminate"
></Checkbox>
</label> </label>
<label v-else> <label v-else>
{{ renderHeader(column, index) }} {{ renderHeader(column, index) }}
<span class="ivu-table-sort" v-if="column.sortable"> <span class="ivu-table-sort" v-if="column.sortable">
<Icon type="arrow-up-b" :class="{ on: column._sortType === 'asc' }" @click.native="handleSort(index, 'asc')" /> <Icon
<Icon type="arrow-down-b" :class="{ on: column._sortType === 'desc' }" @click.native="handleSort(index, 'desc')" /> type="arrow-up-b"
:class="{ on: column._sortType === 'asc' }"
@click.native="handleSort(index, 'asc')"
/>
<Icon
type="arrow-down-b"
:class="{ on: column._sortType === 'desc' }"
@click.native="handleSort(index, 'desc')"
/>
</span> </span>
</label> </label>
</th> </th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr v-for="(item, index) in trs" :key="item.id" class="treetr" :id="'tr' + index" v-show="show(item)" :draggable="drag && !item._drag" @dragstart="dragstart($event, index, item)" @drop="dragdrop($event, index, item)" @dragenter="dragenter($event, index, item)" @dragover="dragover($event, index, item)" @dragleave="dragleave($event, index, item)"> <tr
v-for="(item, index) in trs"
:key="item.id"
class="treetr"
:id="'tr' + index"
v-show="show(item)"
:draggable="drag && !item._drag"
@dragstart="dragstart($event, index, item)"
@drop="dragdrop($event, index, item)"
@dragenter="dragenter($event, index, item)"
@dragover="dragover($event, index, item)"
@dragleave="dragleave($event, index, item)"
>
<!-- --> <!-- -->
<td v-for="(column, snum) in columns" :key="column.key" :style="tdStyle(column)"> <td
v-for="(column, snum) in columns"
:key="column.key"
:style="tdStyle(column)"
>
<!-- 多选 --> <!-- 多选 -->
<label v-if="column.type === 'selection'" @click="rowChecked(item, index, $event)"> <label
<Checkbox v-model="item._checked" :indeterminate="item._indeterminate"></Checkbox> v-if="column.type === 'selection'"
@click="rowChecked(item, index, $event)"
>
<Checkbox
v-model="item._checked"
:indeterminate="item._indeterminate"
></Checkbox>
{{ item._checked }}
</label> </label>
<Icon v-if="column.type === 'drag'" type="md-more" class="drag" /> <Icon
<DTSpan v-if="column.type == 'date'" :value="item[column.key]" /> v-if="column.type === 'drag'"
type="md-more"
class="drag"
/>
<DTSpan
v-if="column.type == 'date'"
:value="item[column.key]"
/>
<div v-if="column.type == 'user'"> <div v-if="column.type == 'user'">
<User :value="item[column.key]" /> <User :value="item[column.key]" />
</div> </div>
<div v-if=" <div
v-if="
column.type == 'users' && column.type == 'users' &&
item[column.key] && item[column.key] &&
item[column.key].length > 0 item[column.key].length > 0
"> "
<User v-for="li in item[column.key]" :value="li" :key="li" class="ml10" /> >
<User
v-for="li in item[column.key]"
:value="li"
:key="li"
class="ml10"
/>
</div> </div>
<state v-if="column.code" :code="column.code" :value="item[column.key]" /> <state
v-if="column.code"
:code="column.code"
:value="item[column.key]"
/>
<!-- 树图标 --> <!-- 树图标 -->
<span @click="toggle(index, item)" v-if="snum == treeColumn()"> <span @click="toggle(index, item)" v-if="snum == treeColumn()">
<span class="ib" v-width="spaceWidth * item._level"></span> <span class="ib" v-width="spaceWidth * item._level"></span>
<a v-if="item._count > 0" class="expand"> <a v-if="item._count > 0" class="expand">
<Icon :type="!item._expanded ? 'ios-add' : 'ios-remove'" /> <Icon
</a><i v-else class="ms-tree-space"></i> :type="!item._expanded ? 'ios-add' : 'ios-remove'"
/> </a
><i v-else class="ms-tree-space"></i>
</span> </span>
<!-- 菜单名称、排序、请求地址 --> <!-- 菜单名称、排序、请求地址 -->
<label v-if=" <label
v-if="
!column.type && !column.type &&
!column.code && !column.code &&
!column.render && !column.render &&
!column.slot !column.slot
"> "
>
{{ renderBody(item, column) }} {{ renderBody(item, column) }}
</label> </label>
<table-expand v-if="column.render && !column.type && !column.solt" :row="item" :column="column" :index="snum" :render="column.render"></table-expand> <table-expand
<column-slot v-if="column.slot" :row="item" :column="column" :index="snum"></column-slot> v-if="column.render && !column.type && !column.solt"
:row="item"
:column="column"
:index="snum"
:render="column.render"
></table-expand>
<column-slot
v-if="column.slot"
:row="item"
:column="column"
:index="snum"
></column-slot>
</td> </td>
</tr> </tr>
</tbody> </tbody>
...@@ -79,16 +151,43 @@ ...@@ -79,16 +151,43 @@
<div class="table-footer"> <div class="table-footer">
<slot name="footer"></slot> <slot name="footer"></slot>
<Page v-if="page" :total="search.total" :current="search.page" class="fr" show-total size="small" show-elevator show-sizer :page-size="search.pageSize" :page-size-opts="pageSizeOpts" @on-change="pageChange" @on-page-size-change="pageSizeChange" /> <Page
v-if="page"
:total="search.total"
:current="search.page"
class="fr"
show-total
size="small"
show-elevator
show-sizer
:page-size="search.pageSize"
:page-size-opts="pageSizeOpts"
@on-change="pageChange"
@on-page-size-change="pageSizeChange"
/>
</div> </div>
<Modal v-if="high" v-model="modalSearch" title="高级搜索" draggable width="800" ref="search"> <Modal
v-if="high"
v-model="modalSearch"
title="高级搜索"
draggable
width="800"
ref="search"
>
<slot name="searchForm"></slot> <slot name="searchForm"></slot>
<div slot="footer"> <div slot="footer">
<Button @click="modalSearch = false" class="mr20">取消</Button> <Button @click="modalSearch = false" class="mr20">取消</Button>
<Button @click="complexSearch" type="primary" class="mr20">查询</Button> <Button @click="complexSearch" type="primary" class="mr20">查询</Button>
</div> </div>
</Modal> </Modal>
<Drawer title="列设置" v-if="set" v-model="config" :scrollable="true" placement="left" :mask="false"> <Drawer
title="列设置"
v-if="set"
v-model="config"
:scrollable="true"
placement="left"
:mask="false"
>
<div slot="header"> <div slot="header">
列设置 列设置
<a @click="undoConfig" class="ml50"> <a @click="undoConfig" class="ml50">
...@@ -96,9 +195,17 @@ ...@@ -96,9 +195,17 @@
</a> </a>
</div> </div>
<ul class="table-columns"> <ul class="table-columns">
<li v-for="(li, index) in columnsCur" :key="index" v-dragging="{ item: li, list: columnsCur, group: 'li' }"> <li
v-for="(li, index) in columnsCur"
:key="index"
v-dragging="{ item: li, list: columnsCur, group: 'li' }"
>
<label @click="columnChange(li, index)" :class="{ dis: li.hide }"> <label @click="columnChange(li, index)" :class="{ dis: li.hide }">
<Icon :type="li.hide ? 'md-eye-off' : 'md-eye'" size="16" class="mr10" /> <Icon
:type="li.hide ? 'md-eye-off' : 'md-eye'"
size="16"
class="mr10"
/>
<span>{{ li.title }}</span> <span>{{ li.title }}</span>
</label> </label>
<Icon type="ios-move" class="move" size="18" /> <Icon type="ios-move" class="move" size="18" />
...@@ -106,11 +213,11 @@ ...@@ -106,11 +213,11 @@
</ul> </ul>
</Drawer> </Drawer>
<FooterToolbar v-if="batch" v-show="footerToolbar" class="ftball"> <FooterToolbar v-if="batch" v-show="footerToolbar" class="ftball">
<div class="tip">已选{{ selectItems.length }}</div> <div class="ib">已选{{ selectItems.length }}</div>
<slot name="batch"></slot> <slot name="batch"></slot>
<Button @click="cancelBatch">取消</Button> <Button @click="cancelBatch">取消</Button>
</FooterToolbar> </FooterToolbar>
</div> </div>
</template> </template>
<script> <script>
...@@ -120,7 +227,7 @@ export default { ...@@ -120,7 +227,7 @@ export default {
name: "treeGrid", name: "treeGrid",
components: { components: {
TableExpand, TableExpand,
ColumnSlot ColumnSlot,
}, },
props: { props: {
mode: { mode: {
...@@ -199,14 +306,14 @@ export default { ...@@ -199,14 +306,14 @@ export default {
items: { items: {
//接收树形数据 //接收树形数据
type: Array, type: Array,
default () { default() {
return []; return [];
}, },
}, },
data: { data: {
//接收UpId型数据 //接收UpId型数据
type: Array, type: Array,
default () { default() {
return []; return [];
}, },
}, },
...@@ -308,12 +415,6 @@ export default { ...@@ -308,12 +415,6 @@ export default {
items() { items() {
if (this.items) { if (this.items) {
this.trs = this.treeToList(this.items); this.trs = this.treeToList(this.items);
this.checkGroup = this.renderCheck(this.items);
if (this.checkGroup.length == this.dataLength) {
this.checks = true;
} else {
this.checks = false;
}
} }
}, },
data(v) {}, data(v) {},
...@@ -323,24 +424,15 @@ export default { ...@@ -323,24 +424,15 @@ export default {
}, },
deep: true, deep: true,
}, },
checkGroup(data) {
this.checkAllGroupChange(data);
},
exportTitle(v) { exportTitle(v) {
this.exportTitle = v this.exportTitle = v;
} },
}, },
mounted() { mounted() {
this.getAllUser(); //获取所有用户 this.getAllUser(); //获取所有用户
if (this.items && this.items.length > 0) { if (this.items && this.items.length > 0) {
this.trs = this.treeToList(this.items); this.trs = this.treeToList(this.items);
this.columnsCur = this.makeColumns(); this.columnsCur = this.makeColumns();
this.checkGroup = this.renderCheck(this.items);
if (this.checkGroup.length == this.dataLength) {
this.checks = true;
} else {
this.checks = false;
}
} }
}, },
methods: { methods: {
...@@ -519,7 +611,11 @@ export default { ...@@ -519,7 +611,11 @@ export default {
}, },
// 点击check勾选框,判断是否有children节点 如果有就一并勾选 // 点击check勾选框,判断是否有children节点 如果有就一并勾选
rowChecked(data, index, event) { rowChecked(data, index, event) {
// this.$set(this.trs, index, data);
var boys = this.getChildrens(data); var boys = this.getChildrens(data);
if(boys.length){
}
this.trs.forEach((u, i) => { this.trs.forEach((u, i) => {
var items = boys.filter((b) => { var items = boys.filter((b) => {
return b[this.keyname] == u[this.keyname]; return b[this.keyname] == u[this.keyname];
...@@ -533,12 +629,14 @@ export default { ...@@ -533,12 +629,14 @@ export default {
this.trs.filter((u) => { this.trs.filter((u) => {
return !u._checked; return !u._checked;
}).length; }).length;
this.$nextTick(() => {
this.selectionChange();
});
}, },
getChildrens(data) { getChildrens(data) {
var childrens = []; var childrens = [];
var that = this; var that = this;
getChildren(data); getChildren(data);
function getChildren(f) { function getChildren(f) {
that.trs.forEach((u) => { that.trs.forEach((u) => {
if (u[that.upname] == f[that.keyname]) { if (u[that.upname] == f[that.keyname]) {
...@@ -550,11 +648,22 @@ export default { ...@@ -550,11 +648,22 @@ export default {
return childrens; return childrens;
}, },
// checkbox 全选 选择事件 // checkbox 全选 选择事件
checked(v) { allChecked(v) {
this.trs.forEach((u, i) => { this.trs.forEach((u, i) => {
this.$set(this.trs[i], "_checked", v); this.$set(this.trs[i], "_checked", v);
}); });
// this.$emit('on-selection-change', this.checkGroup) this.$nextTick(() => {
this.selectionChange();
});
},
selectionChange() {
var items = this.trs.filter((u) => {
return u._checked === true;
});
this.selectItems = items;
this.$emit("on-selection-change", items, this.trs);
this.footerToolbar = items.length > 0;
console.log("footerToolbar", items, this.trs);
}, },
// 数组去重 // 数组去重
getArray(a) { getArray(a) {
...@@ -569,14 +678,6 @@ export default { ...@@ -569,14 +678,6 @@ export default {
} }
return result; return result;
}, },
checkAllGroupChange(data) {
if (this.dataLength > 0 && data.length === this.dataLength) {
this.checks = true;
} else {
this.checks = false;
}
this.$emit("on-selection-change", this.checkGroup);
},
All(data) { All(data) {
let arr = []; let arr = [];
data.forEach((item) => { data.forEach((item) => {
...@@ -625,19 +726,6 @@ export default { ...@@ -625,19 +726,6 @@ export default {
renderBody(row, column, index) { renderBody(row, column, index) {
return row[column.key]; return row[column.key];
}, },
// 默认选中
renderCheck(data) {
let arr = [];
data.forEach((item) => {
if (item._checked) {
arr.push(item.id);
}
if (item.children && item.children.length > 0) {
arr = arr.concat(this.renderCheck(item.children));
}
});
return arr;
},
//分页选择 //分页选择
pageChange(page) { pageChange(page) {
this.search.page = page; this.search.page = page;
...@@ -654,11 +742,7 @@ export default { ...@@ -654,11 +742,7 @@ export default {
this.$set(this.columnsCur, item, i); this.$set(this.columnsCur, item, i);
this.saveUserconfig(); this.saveUserconfig();
}, },
selectionChange(items) {
this.$emit("on-selection-change", items);
this.selectItems = items;
this.footerToolbar = items.length > 0;
},
onSelect(rows, row) { onSelect(rows, row) {
this.$emit("on-change", rows, row); this.$emit("on-change", rows, row);
}, },
...@@ -673,12 +757,10 @@ export default { ...@@ -673,12 +757,10 @@ export default {
//批量取消 //批量取消
cancelBatch() { cancelBatch() {
this.footerToolbar = false; this.footerToolbar = false;
this.$refs.table.selectAll(false); // this.$refs.table.selectAll(false);
}, },
//导出excel //导出excel
export2Excel() { export2Excel() {
//col
//list
//当前显示数据 //当前显示数据
let list = []; let list = [];
list = this.trs; list = this.trs;
...@@ -728,8 +810,10 @@ export default { ...@@ -728,8 +810,10 @@ export default {
}); });
list.forEach((e) => { list.forEach((e) => {
tempCol.forEach((elem) => { tempCol.forEach((elem) => {
if (
if ((e[elem.key] && e[elem.key] != "" && e[elem.key] != null) || e[elem.key] == 0) { (e[elem.key] && e[elem.key] != "" && e[elem.key] != null) ||
e[elem.key] == 0
) {
//如果数据字典项对应的DirName字段存在,通过name查询到对应的code,然后赋值。 //如果数据字典项对应的DirName字段存在,通过name查询到对应的code,然后赋值。
let codeArr = []; let codeArr = [];
let keyValue = e[elem.key]; let keyValue = e[elem.key];
...@@ -786,25 +870,30 @@ export default { ...@@ -786,25 +870,30 @@ export default {
//导出username相关信息 //导出username相关信息
tempColUser.forEach((eluser) => { tempColUser.forEach((eluser) => {
if (Array.isArray(e[eluser.key]) && e[eluser.key].length > 0) { if (Array.isArray(e[eluser.key]) && e[eluser.key].length > 0) {
let temUsers = this.$u.clone(e[eluser.key]) let temUsers = this.$u.clone(e[eluser.key]);
let temUserName = '' let temUserName = "";
temUsers.forEach(u => { temUsers.forEach((u) => {
temUserName = temUserName + this.getUserName(u); temUserName = temUserName + this.getUserName(u);
}) });
e[eluser.key] = temUserName e[eluser.key] = temUserName;
} }
if (e[eluser.key] && typeof (e[eluser.key]) == 'string' && e[eluser.key] != "" && e[eluser.key] != null) { if (
e[eluser.key] &&
typeof e[eluser.key] == "string" &&
e[eluser.key] != "" &&
e[eluser.key] != null
) {
e[eluser.key] = this.getUserName(e[eluser.key]); e[eluser.key] = this.getUserName(e[eluser.key]);
} }
}); });
tempColUsers.forEach((elusers) => { tempColUsers.forEach((elusers) => {
if (e[elusers.key].length > 0) { if (e[elusers.key].length > 0) {
let temUsers = this.$u.clone(e[elusers.key]) let temUsers = this.$u.clone(e[elusers.key]);
let temUserName = '' let temUserName = "";
temUsers.forEach(u => { temUsers.forEach((u) => {
temUserName = temUserName + this.getUserName(u) + ','; temUserName = temUserName + this.getUserName(u) + ",";
}) });
e[elusers.key] = temUserName.substr(0, temUserName.length - 1) e[elusers.key] = temUserName.substr(0, temUserName.length - 1);
} }
}); });
}); });
...@@ -819,8 +908,7 @@ export default { ...@@ -819,8 +908,7 @@ export default {
filterVal, filterVal,
list list
); );
}) });
}, },
//获取所有用户信息 //获取所有用户信息
getAllUser() { getAllUser() {
...@@ -863,7 +951,6 @@ export default { ...@@ -863,7 +951,6 @@ export default {
@table_line_height: 50px; @table_line_height: 50px;
@table_hover: #f2f8fe; @table_hover: #f2f8fe;
@table_border: #e8e9eb; @table_border: #e8e9eb;
// @table_theme: #2680eb; // @table_theme: #2680eb;
// @table_head: #e9f2fd; // @table_head: #e9f2fd;
// @table_line_height: 50px; // @table_line_height: 50px;
......
<template> <template>
<div> <div>
<Card> <Card>
<EditGrid :columns="columns" ref="grid" :items="list" :level="8" :drag="true" :exportTitle="exportTl"> <EditGrid :columns="columns" ref="grid" :batch="true" :items="list" :level="8" :drag="true" :exportTitle="exportTl">
<template slot="easySearch"> <template slot="easySearch">
<Form ref="formInline" :model="easySearch" inline> <Form ref="formInline" :model="easySearch" inline>
<FormItem prop="keys"><Input placeholder="请输入关键字标题" v-model="easySearch.keys.value" /> <FormItem prop="keys"><Input placeholder="请输入关键字标题" v-model="easySearch.keys.value" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment