自来水发票系统管理前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

392 lines
12 KiB

<style lang="less" scoped>
@import './list.less';
</style>
<template>
<div>
<Row>
<Col span="24">
<Card class="margin-bottom-10">
<Form inline>
<FormItem class="margin-bottom-0">
<Select v-model="searchConf.status" clearable placeholder='请选择状态' style="width:120px">
<Option :value="1">启用</Option>
<Option :value="0">禁用</Option>
</Select>
</FormItem>
<FormItem class="margin-bottom-0">
<Select v-model="searchConf.type" clearable placeholder="请选择类别" style="width:120px">
<Option :value="1">接口组标识</Option>
<Option :value="2">接口组名称</Option>
</Select>
</FormItem>
<FormItem class="margin-bottom-0">
<Input v-model="searchConf.keywords" placeholder=""></Input>
</FormItem>
<FormItem class="margin-bottom-0">
<Button type="primary" @click="search">{{ $t('find_button') }}/{{ $t('refresh_button') }}</Button>
</FormItem>
</Form>
</Card>
</Col>
</Row>
<Row>
<Col span="24">
<Card>
<div class="margin-bottom-15">
<Button type="primary" v-has="'InterfaceGroup/add'" @click="alertAdd" icon="md-add">{{ $t('add_button') }}</Button>
</div>
<div>
<Table :loading="listLoading" :columns="columnsList" :data="tableData" border disabled-hover></Table>
</div>
<div class="margin-top-15" style="text-align: center">
<Page :total="tableShow.listCount" :current="tableShow.currentPage"
:page-size="tableShow.pageSize" @on-change="changePage"
@on-page-size-change="changeSize" show-elevator show-sizer show-total></Page>
</div>
</Card>
</Col>
</Row>
<Modal v-model="modalSetting.show" width="668" :styles="{top: '30px'}" @on-visible-change="doCancel">
<p slot="header" style="color:#2d8cf0">
<Icon type="md-alert"></Icon>
<span>{{formItem.id ? '编辑' : '新增'}}接口组</span>
</p>
<Form ref="myForm" :rules="ruleValidate" :model="formItem" :label-width="80">
<FormItem label="组名称" prop="name">
<Input v-model="formItem.name" placeholder="请输入接口组名称"></Input>
</FormItem>
<FormItem label="组头像" prop="image">
<div class="demo-upload-list" v-if="formItem.image">
<img :src="formItem.image">
<div class="demo-upload-list-cover">
<Icon type="ios-trash-outline" @click.native="handleImgRemove()"></Icon>
</div>
</div>
<input v-if="formItem.image" v-model="formItem.image" type="hidden" name="image">
<Upload type="drag"
:action="uploadUrl"
:headers="uploadHeader"
v-if="!formItem.image"
:format="['jpg','jpeg','png']"
:max-size="5120"
:on-success="handleImgSuccess"
:on-format-error="handleImgFormatError"
:on-exceeded-size="handleImgMaxSize"
style="display: inline-block;width:58px">
<div style="width: 58px;height:58px;line-height: 58px">
<Icon type="md-camera" size="20"></Icon>
</div>
</Upload>
</FormItem>
<FormItem label="组标识" prop="hash">
<Input style="width: 300px" disabled v-model="formItem.hash"></Input>
<Tag color="error" class="margin-left-5">系统自动生成,不允许修改</Tag>
</FormItem>
<FormItem label="组描述" prop="description">
<Input v-model="formItem.description" :autosize="{maxRows: 10, minRows: 4}" type="textarea"
placeholder="请输入接口组描述"></Input>
</FormItem>
</Form>
<div slot="footer">
<Button type="text" @click="cancel" class="margin-right-10">取消</Button>
<Button type="primary" @click="submit" :loading="modalSetting.loading">确定</Button>
</div>
</Modal>
</div>
</template>
<script>
import { getList, changeStatus, add, edit, del } from '@/api/interface-group'
import { baseUrl } from '@/libs/api.request'
import { getToken } from '@/libs/util'
import { getHash } from '@/api/interface'
const editButton = (vm, h, currentRow, index) => {
if (vm.buttonShow.edit) {
return h('Button', {
props: {
type: 'primary'
},
style: {
margin: '0 5px'
},
on: {
'click': () => {
vm.formItem.id = currentRow.id
vm.formItem.name = currentRow.name
vm.formItem.hash = currentRow.hash
vm.formItem.image = currentRow.image
vm.formItem.description = currentRow.description
vm.modalSetting.show = true
vm.modalSetting.index = index
}
}
}, vm.$t('edit_button'))
}
}
const deleteButton = (vm, h, currentRow, index) => {
if (vm.buttonShow.del) {
return h('Poptip', {
props: {
confirm: true,
title: '您确定要删除此接口分组么? 如当前分组下仍有接口,将自动划归于默认分组!',
transfer: true
},
on: {
'on-ok': () => {
del(currentRow.hash).then(response => {
vm.tableData.splice(index, 1)
vm.$Message.success(response.data.msg)
})
currentRow.loading = false
}
}
}, [
h('Button', {
style: {
margin: '0 5px'
},
props: {
type: 'error',
placement: 'top',
loading: currentRow.isDeleting
}
}, vm.$t('delete_button'))
])
}
}
export default {
name: 'interface_group',
data () {
return {
uploadUrl: baseUrl + 'Index/upload',
uploadHeader: { 'token': getToken() },
columnsList: [
{
title: '序号',
type: 'index',
width: 65,
align: 'center'
},
{
title: '接口组名称',
align: 'center',
key: 'name'
},
{
title: '接口组描述',
align: 'center',
key: 'description'
},
{
title: '接口组热度',
align: 'center',
width: 120,
render: (h, params) => {
if (params.row.hot > 10000) {
let hot = (parseInt(params.row.hot) / 10000).toFixed(1) + '万'
return h('span', hot)
} else {
return h('span', params.row.hot)
}
}
},
{
title: '接口组标识',
align: 'center',
key: 'hash',
width: 140
},
{
title: '接口组状态',
align: 'center',
width: 110,
render: (h, params) => {
let vm = this
return h('i-switch', {
attrs: {
size: 'large'
},
props: {
'true-value': 1,
'false-value': 0,
value: params.row.status,
disabled: !vm.buttonShow.changeStatus
},
on: {
'on-change': function (status) {
changeStatus(status, params.row.id).then(response => {
vm.$Message.success(response.data.msg)
vm.getList()
})
}
}
}, [
h('span', {
slot: 'open'
}, vm.$t('open_choose')),
h('span', {
slot: 'close'
}, vm.$t('close_choose'))
])
}
},
{
title: '操作',
align: 'center',
width: 200,
render: (h, params) => {
return h('div', [
editButton(this, h, params.row, params.index),
deleteButton(this, h, params.row, params.index)
])
}
}
],
tableData: [],
tableShow: {
currentPage: 1,
pageSize: 10,
listCount: 0
},
searchConf: {
type: '',
keywords: '',
status: ''
},
modalSetting: {
show: false,
loading: false,
index: 0
},
formItem: {
description: '',
name: '',
hash: '',
image: '',
id: 0
},
ruleValidate: {
name: [
{ required: true, message: '接口组名称不能为空', trigger: 'blur' }
]
},
buttonShow: {
edit: true,
del: true,
changeStatus: true
},
listLoading: false
}
},
created () {
let vm = this
vm.getList()
vm.hasRule('InterfaceGroup/edit').then(res => {
vm.buttonShow.edit = res
})
vm.hasRule('InterfaceGroup/del').then(res => {
vm.buttonShow.del = res
})
vm.hasRule('InterfaceGroup/changeStatus').then(res => {
vm.buttonShow.changeStatus = res
})
},
methods: {
alertAdd () {
let vm = this
getHash().then(response => {
vm.formItem.hash = response.data.data.hash
})
vm.modalSetting.show = true
},
submit () {
let vm = this
this.$refs['myForm'].validate((valid) => {
if (valid) {
vm.modalSetting.loading = true
if (vm.formItem.id === 0) {
add(vm.formItem).then(response => {
vm.$Message.success(response.data.msg)
vm.getList()
vm.cancel()
}).catch(() => {
vm.modalSetting.loading = false
})
} else {
edit(vm.formItem).then(response => {
vm.$Message.success(response.data.msg)
vm.getList()
vm.cancel()
}).catch(() => {
vm.modalSetting.loading = false
})
}
}
})
},
cancel () {
this.modalSetting.show = false
},
changePage (page) {
this.tableShow.currentPage = page
this.getList()
},
changeSize (size) {
this.tableShow.pageSize = size
this.getList()
},
search () {
this.tableShow.currentPage = 1
this.getList()
},
getList () {
let vm = this
vm.listLoading = true
getList({
page: vm.tableShow.currentPage,
size: vm.tableShow.pageSize,
type: vm.searchConf.type,
keywords: vm.searchConf.keywords,
status: vm.searchConf.status
}).then(response => {
vm.tableData = response.data.data.list
vm.tableShow.listCount = response.data.data.count
vm.listLoading = false
})
},
handleImgFormatError (file) {
this.$Notice.warning({
title: '文件类型不合法',
desc: file.name + '的文件类型不正确,请上传jpg或者png图片。'
})
},
handleImgRemove () {
this.formItem.image = ''
},
handleImgSuccess (response) {
if (response.code === 1) {
this.$Message.success(response.msg)
this.formItem.image = response.data.fileUrl
} else {
this.$Message.error(response.msg)
}
},
handleImgMaxSize (file) {
this.$Notice.warning({
title: '文件大小不合法',
desc: file.name + '太大啦请上传小于5M的文件。'
})
},
doCancel (data) {
if (!data) {
this.formItem.id = 0
this.formItem.image = ''
this.$refs['myForm'].resetFields()
this.modalSetting.loading = false
this.modalSetting.index = 0
}
}
}
}
</script>