Files
laws-sinotruk-client/src/views/system/DictItemList.vue
T

236 lines
7.5 KiB
Vue

<template>
<a-card :bordered="false">
<!-- 抽屉 -->
<a-drawer
:title="$t('dict.dictList')"
:width="screenWidth"
@close="onClose"
:visible="visible"
>
<!-- 抽屉内容的border -->
<div
:style="{
padding:'10px',
border: '1px solid #e9e9e9',
background: '#fff',
}">
<div class="table-page-search-wrapper">
<a-form layout="inline" :form="form" @keyup.enter.native="searchQuery">
<a-row :gutter="10">
<a-col :md="8" :sm="12">
<a-form-item :label="$t('name')">
<j-input style="width: 120px;" :placeholder="$t('pleaseEnter') + $t('name')" v-model="queryParam.itemText"></j-input>
</a-form-item>
</a-col>
<a-col :md="9" :sm="24">
<a-form-item :label="$t('status')" style="width: 170px" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-select
:placeholder="$t('pleaseSelect')"
v-model="queryParam.status"
>
<a-select-option value="1">{{ $t('normal') }}</a-select-option>
<a-select-option value="0">{{ $t('disable') }}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="7" :sm="24">
<span style="float: left;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery">{{ $t('query') }}</a-button>
<a-button type="primary" @click="searchReset" style="margin-left: 8px">{{ $t('reset') }}</a-button>
</span>
</a-col>
</a-row>
<a-row>
<a-col :md="2" :sm="24">
<a-button style="margin-bottom: 10px" type="primary" @click="handleAdd">{{ $t('newlyAdded') }}</a-button>
</a-col>
</a-row>
</a-form>
</div>
<div>
<a-table
ref="table"
rowKey="id"
size="middle"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
@change="handleTableChange"
:rowClassName="getRowClassname"
>
<span slot="action" slot-scope="text, record">
<a @click="handleEdit(record)">{{ $t('edit') }}</a>
<a-divider type="vertical"/>
<a-popconfirm :title="$t('areYouSure')" @confirm="() => handleDelete(record.id)">
<a>{{ $t('delete') }}</a>
</a-popconfirm>
</span>
</a-table>
</div>
</div>
</a-drawer>
<dict-item-modal ref="modalForm" @ok="modalFormOk"></dict-item-modal> <!-- 字典数据 -->
</a-card>
</template>
<script>
import pick from 'lodash.pick'
import { filterObj } from '@/utils/util'
import DictItemModal from './modules/DictItemModal'
import { JeroListMixin } from '@/mixins/JeroListMixin'
import JInput from '@/components/jero/JInput'
export default {
name: 'DictItemList',
mixins: [JeroListMixin],
components: { DictItemModal, JInput },
data () {
return {
columns: [
{
title: this.$t('name'),
align: 'center',
ellipsis: true,
dataIndex: 'itemText'
},
{
title: this.$t('englishName'),
align: 'center',
ellipsis: true,
dataIndex: 'enName'
},
{
title: this.$t('dict.dataValue'),
align: 'center',
width: 150,
dataIndex: 'itemValue'
},
{
title: this.$t('operation'),
dataIndex: 'action',
align: 'center',
width: 150,
scopedSlots: { customRender: 'action' }
}
],
queryParam: {
dictId: '',
dictName: '',
itemText: '',
delFlag: '1',
status: []
},
title: this.$t('operation'),
visible: false,
screenWidth: 1000,
model: {},
dictId: '',
status: 1,
labelCol: {
xs: { span: 5 },
sm: { span: 5 }
},
wrapperCol: {
xs: { span: 12 },
sm: { span: 12 }
},
form: this.$form.createForm(this),
validatorRules: {
itemText: { rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('name') + '!' }] },
itemValue: { rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('dict.dataValue') + '!' }] }
},
url: {
list: '/sys/dictItem/page',
delete: '/sys/dictItem/delete',
deleteBatch: '/sys/dictItem/deleteBatch'
}
}
},
created () {
// 当页面初始化时,根据屏幕大小来给抽屉设置宽度
this.resetScreenSize()
},
methods: {
add (dictId) {
this.dictId = dictId
this.edit({})
},
edit (record) {
if (record.id) {
this.dictId = record.id
}
this.queryParam = {}
this.form.resetFields()
this.model = Object.assign({}, record)
this.model.dictId = this.dictId
this.model.status = this.status
this.visible = true
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'itemText', 'itemValue'))
})
// 当其它模块调用该模块时,调用此方法加载字典数据
this.loadData()
},
getQueryParams () {
// update--begin--autor:wangshuai-----date:20191204------for:清空总条数 teambition JT-113------
this.ipagination.total = 0
// update--end--autor:wangshuai-----date:20191204------for:清空总条数 teambition JT-113------
const param = Object.assign({}, this.queryParam)
param.dictId = this.dictId
param.field = this.getQueryField()
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
if (this.superQueryParams) {
param.superQueryParams = encodeURI(this.superQueryParams)
param.superQueryMatchType = this.superQueryMatchType
}
return filterObj(param)
},
// 添加字典数据
handleAdd () {
this.$refs.modalForm.add(this.dictId)
this.$refs.modalForm.title = this.$t('newlyAdded')
},
showDrawer () {
this.visible = true
},
onClose () {
this.visible = false
this.form.resetFields()
this.dataSource = []
},
// 抽屉的宽度随着屏幕大小来改变
resetScreenSize () {
const screenWidth = document.body.clientWidth
if (screenWidth < 600) {
this.screenWidth = screenWidth
} else {
this.screenWidth = 600
}
},
// update--begin--autor:wangshuai-----date:20191204------for:系统管理 数据字典禁用和正常区别开,添加背景颜色 teambition JT-22------
// 增加样式方法返回值
getRowClassname (record) {
if ((record.status + '') === '0') {
return 'data-rule-invalid'
}
}
// update--end--autor:wangshuai-----date:20191204------for:系统管理 数据字典禁用和正常区别开,添加背景颜色 teambition JT-22------
}
}
</script>
<style lang="less" scoped>
//update--begin--autor:wangshuai-----date:20191204------for:系统管理 数据字典禁用和正常区别开,添加背景颜色 teambition JT-22------
/deep/ .data-rule-invalid{
background: #f4f4f4;
color: #bababa;
}
//update--begin--autor:wangshuai-----date:20191204------for:系统管理 数据字典禁用和正常区别开,添加背景颜色 teambition JT-22------
</style>