mt-yd-ui/src/views/modules/monitoring/product.vue
2022-08-10 14:49:17 +08:00

305 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="mod-config">
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input v-model="dataForm.key" placeholder="参数名" clearable></el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()">查询</el-button>
<el-button @click="test()">测试</el-button>
<el-button v-if="$hasPermission('monitoring:product:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item>
</el-form>
<!-- <el-table :data="dataList" border v-loading="dataListLoading" @selection-change="selectionChangeHandle" style="width: 100%;">
<el-table-column type="selection" header-align="center" align="center" width="50"></el-table-column>
<el-table-column prop="id" header-align="center" align="center" label="ID"></el-table-column>
<el-table-column prop="code" header-align="center" align="center" label="编码"></el-table-column>
<el-table-column prop="name" header-align="center" align="center" label="名称"></el-table-column>
<el-table-column prop="description" header-align="center" align="center" label="描述"></el-table-column>
<el-table-column prop="externalCode" header-align="center" align="center" label="外部编码,用于对照外部系统的编码"></el-table-column>
<el-table-column prop="specifications" header-align="center" align="center" label="规格"></el-table-column>
<el-table-column prop="unitDictValue" header-align="center" align="center" label="单位value对应到数据字典label_value"></el-table-column>
<el-table-column prop="area" header-align="center" align="center" label="一单位的面积(平方米)"></el-table-column>
<el-table-column prop="processTime" header-align="center" align="center" label="加工一单位产品需要的时间"></el-table-column>
<el-table-column prop="typeDictValue" header-align="center" align="center" label="产品类型value对应到数据字典label_value"></el-table-column>
<el-table-column prop="enabled" header-align="center" align="center" label="启用状态:0 、停用1、启用"></el-table-column>
<el-table-column prop="remark" header-align="center" align="center" label="备注"></el-table-column>
<el-table-column prop="valid" header-align="center" align="center" label="删除标志,是否有效:1 可用 0不可用"></el-table-column>
<el-table-column prop="creatorId" header-align="center" align="center" label="创建人"></el-table-column>
<el-table-column prop="creatorName" header-align="center" align="center" label="创建人姓名"></el-table-column>
<el-table-column prop="createTime" header-align="center" align="center" label="创建时间"></el-table-column>
<el-table-column prop="updaterId" header-align="center" align="center" label="更新人"></el-table-column>
<el-table-column prop="updaterName" header-align="center" align="center" label="更新人姓名"></el-table-column>
<el-table-column prop="updateTime" header-align="center" align="center" label="更新时间"></el-table-column>
<el-table-column prop="version" header-align="center" align="center" label="版本号"></el-table-column>
<el-table-column fixed="right" header-align="center" align="center" width="150" label="操作">
<template slot-scope="scope">
<el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.id)">修改</el-button>
<el-button type="text" size="small" @click="deleteHandle(scope.row.id)">删除</el-button>
</template>
</el-table-column>
</el-table> -->
<base-table :data="dataList" :table-head-configs="tableConfigs" :max-height="500" @operate-event="handleOperations" @refreshDataList="getDataList" />
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[10, 20, 50, 100]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<base-dialog v-if="showbasedialog" ref="basedialog" :configs="addOrUpdateConfigs" @refreshDataList="getDataList"></base-dialog>
</div>
</template>
<script>
import AddOrUpdate from './product-add-or-update'
import BaseTable from '@/components/base-table'
import TableOperateComponent from '@/components/base-table/components/operationComponent'
import TableTextComponent from '@/components/base-table/components/detailComponent'
import BaseDialog from '@/components/base-dialog/addOrUpdate'
import moment from 'moment'
import dictListMixin from '@/mixins/dictlist-module'
import { dictFilter } from '@/utils/filters'
const UnitDictTypeId = '1557173812109242370'
const ProductTypeDictTypeId = '1557179530308616193'
const tableConfigs = [
{ type: 'index', name: '序号' },
{ prop: 'updateTime', name: '添加时间', filter: val => (val ? moment(val).format('YYYY-MM-DD hh:mm:ss') : '-') },
{ prop: 'name', name: '产品名称' },
{ prop: 'code', name: '产品编码' },
{ prop: 'specifications', name: '规格' },
{ prop: 'unitDictValue', name: '单位', filter: dictFilter(UnitDictTypeId) },
// { prop: 'unitDictValue', name: '单位value对应到数据字典label_value' },
{ prop: 'operations', name: '操作', fixed: 'right', width: 180, subcomponent: TableOperateComponent, options: ['viewAttr', 'delete'] }
// { "prop": "id", "name": "ID" },
// { "prop": "description", "name": "描述" },
// { "prop": "externalCode", "name": "外部编码,用于对照外部系统的编码" },
// { "prop": "area", "name": "一单位的面积(平方米)" },
// { "prop": "processTime", "name": "加工一单位产品需要的时间" },
// {
// "prop": "typeDictValue",
// "name": "产品类型value对应到数据字典label_value"
// },
// { "prop": "enabled", "name": "启用状态:0 、停用1、启用" },
// { "prop": "remark", "name": "备注" },
// { "prop": "valid", "name": "删除标志,是否有效:1 可用 0不可用" },
// { "prop": "creatorId", "name": "创建人" },
// { "prop": "creatorName", "name": "创建人姓名" },
// { "prop": "createTime", "name": "添加时间" },
// { "prop": "updaterId", "name": "更新人" },
// { "prop": "updaterName", "name": "更新人姓名" },
// { "prop": "version", "name": "版本号" }
]
const addOrUpdateConfigs = {
type: 'dialog', // dialog | drawer | page
fields: [
'name',
{
name: 'code',
api: '/monitoring/product/getCode'
},
{
name: 'processTime',
label: '加工时间',
placeholder: '请输入加工时间',
type: 'number', // type: number(input+number) | default(input) | textarea | select(options在父组件里获取) | datetime
required: true,
rules: [
// 除了required之外的验证规则
{
type: 'number',
trigger: 'blur',
transform: val => Number(val),
message: '必须输入数字'
}
]
},
'remark',
'specifications',
{
name: 'typeDictValue',
// rules: [
// {required: true, trigger: 'blur'}
// ],
label: '产品类型', // 对于非常见属性最好自己指定label
type: 'select',
options: [
// 动态获取
]
},
{
name: 'unitDictValue',
label: '单位',
type: 'select',
// placeholder: '请选择单位',
options: [
// 动态获取
]
}
],
operations: [
{ name: 'reset', url: true },
{ name: 'save', url: '/monitoring/product', permission: '' },
{ name: 'update', url: '/monitoring/product', permission: '' }
]
// extraComponents: [
// {
// name: 'CompName',
// label: 'markdown编辑器',
// component: () => import('xx.vue')
// }
// ]
}
export default {
mixins: [dictListMixin],
data() {
return {
tableConfigs,
dataForm: {
key: ''
},
dataList: [],
pageIndex: 1,
pageSize: 10,
totalPage: 0,
dataListLoading: false,
dataListSelections: [],
addOrUpdateVisible: false,
addOrUpdateConfigs,
showbasedialog: false
}
},
components: {
AddOrUpdate,
BaseTable,
BaseDialog
},
created() {
this.initDictList([UnitDictTypeId, ProductTypeDictTypeId])
this.addOrUpdateConfigs.fields.forEach(item => {
if (item.name) {
if (item.name === 'typeDictValue') {
console.log('dict : ', this.dictList)
item.options = this.dictList[ProductTypeDictTypeId]
} else if (item.name === 'unitDictValue') {
item.options = this.dictList[UnitDictTypeId]
}
}
})
},
activated() {
this.getDataList()
},
methods: {
//
test() {
this.showbasedialog = true
this.$nextTick(() => {
this.$refs.basedialog.init()
})
},
// 获取数据列表
getDataList() {
this.dataListLoading = true
this.$http({
url: this.$http.adornUrl('/monitoring/product/page'),
method: 'get',
params: this.$http.adornParams({
page: this.pageIndex,
limit: this.pageSize,
key: this.dataForm.key
})
}).then(({ data }) => {
if (data && data.code === 0) {
this.dataList = data.data.list
this.totalPage = data.data.total
} else {
this.dataList = []
this.totalPage = 0
}
this.dataListLoading = false
})
},
// 每页数
sizeChangeHandle(val) {
this.pageSize = val
this.pageIndex = 1
this.getDataList()
},
// 当前页
currentChangeHandle(val) {
this.pageIndex = val
this.getDataList()
},
// 多选
selectionChangeHandle(val) {
this.dataListSelections = val
},
// 新增 / 修改
addOrUpdateHandle(id) {
this.addOrUpdateVisible = true
this.$nextTick(() => {
this.$refs.addOrUpdate.init(id)
})
},
// 表格操作事件管理
handleOperations({ type, data }) {
switch (type) {
case 'viewAttr': // <== 对照 tableConfig
return this.addOrUpdateHandle(data)
case 'delete':
return this.deleteHandle(data)
}
},
// 删除
deleteHandle(id) {
console.log('id is: ', id)
var ids = id
? [id]
: // ? [1556817256347828335]
this.dataListSelections.map(item => {
return item.id
})
this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl('/monitoring/product'),
method: 'delete',
data: ids
// or : data: this.$http.adornData(ids, false, 'raw')
})
// or: this.$http.delete(this.$http.adornUrl('/monitoring/product'), { data: this.$http.adornData(ids, false) })
.then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.getDataList()
}
})
} else {
this.$message.error(data.msg)
}
})
})
}
}
}
</script>