plm前端
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.
 
 
 
 

364 lines
12 KiB

<script>
import {updateDictData,selectDictTypeList,saveDictData,selectDictDataPage,delDictData,delBatchDictData} from "../../../api/dict";
export default {
name: "dictData",
data(){
return{
// 查询对象
searchData:{
site:this.$store.state.user.site,
dictLabel:undefined,
dictType:undefined,
status:undefined,
},
// 分页条件
no:1,
size:50,
total:0,
// 新增对象
saveData:{
dictId:undefined,
dictLabel:undefined,
dictType: undefined,
dictValue: undefined,
dictSort: 1,
isDefault: 'N',
status:'Y',
createBy:this.$store.state.user.name,
createDate:undefined,
updateBy:this.$store.state.user.name,
updateDate:undefined,
remark:undefined,
site:this.$store.state.user.site,
},
// 校验提示
dataLabelValue:[
{label:'字典标签',value:'dictLabel'},
{label:'字典类型',value:'dictType'},
{label:'字典键值',value:'dictValue'},
{label:'字典排序',value:'dictSort'},
{label:'状态',value:'status'},
],
// 字典类型集合
dictDataList:[],
dictTypeList:[],
// 模态框开关
saveDataDialogFlag:false,
// 新增修改状态(0新增,1修改)
insertOrUpdate:0,
// 新增修改规则
dictDataRules: {
dictLabel:[{required:true,message:' ',tagger:['blur','change']}],
dictType:[{required:true,message:' ',tagger:['blur','change']}],
dictValue:[{required:true,message:' ',tagger:['blur','change']}],
dictSort:[{required:true,type:'number',message:' ',tagger:['blur','change']}],
status:[{required:true,message:' ',tagger:['blur','change']}],
},
// 选择的表格列
selectionDictTypeList:[],
// 选中的标签页
activeTabs:'dictData',
}
},
methods:{
initDictData(){
selectDictDataPage(this.no,this.size,this.searchData).then(({data})=>{
if (data && data.code === 0){
this.dictDataList = data.rows;
this.total = data.total;
this.$refs.dictDataTable.clearSelection();
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
})
},
openDictTypeDialog(val,row){
this.insertOrUpdate = val;
if (row){
this.saveData = {...row}
}
this.saveDataDialogFlag = true
},
closeSaveDataDialog(){
this.$refs.saveDataForm.resetFields();
this.saveData.remark = undefined;
},
openSaveDataDialog(){
this.saveData.dictType = this.searchData.dictType;
},
saveOrUpdate(){
this.$refs.saveDataForm.validate((validate,objects)=> {
if (validate) {
if (this.insertOrUpdate === 0){
this.saveDictData();
}else {
this.updateDictData();
}
} else {
this.rulesValidateLabel(objects,this.dataLabelValue)
}
})
},
saveDictData(){
saveDictData(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictData();
this.saveDataDialogFlag = false;
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
updateDictData(){
updateDictData(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictData();
this.saveDataDialogFlag = false;
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
delDictData(row){
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delDictData(row).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictData();
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
delBatchDictData(){
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delBatchDictData(this.selectionDictTypeList).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictData();
this.$refs.dictDataTable.clearSelection();
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}).catch(() => {
this.$message({
type: 'info',
message: '已取消删除'
});
});
},
handleSelectionChange(val){
this.selectionDictTypeList = val;
},
dictTypeSizeChange(val){
this.no = 1
this.size = val
this.initDictData();
},
dictTypeNoChange(val){
this.no = val
this.initDictData();
},
selectDictTypeList(){
let params = {
site:this.$store.state.user.site,
}
selectDictTypeList(params).then(({data})=>{
if (data && data.code === 0){
this.dictTypeList = data.rows;
if (this.$route.params.dictType){
this.searchData.dictType = this.$route.params.dictType
}else {
if (this.dictTypeList.length > 0){
this.searchData.dictType = this.dictTypeList[0].dictType;
}
}
this.initDictData();
}
}).catch((error)=>{
})
},
// 校验处理
rulesValidateLabel(objects, labels) {
for (let filed in objects) {
for (let i = 0; i < labels.length; i++) {
let quotationToolColumn = labels[i];
if (quotationToolColumn.value === filed) {
this.$message.warning(quotationToolColumn.label+"为空或填写不正确");
return
}
}
}
},
},
created() {
},
activated() {
this.selectDictTypeList()
}
}
</script>
<template>
<div>
<el-form ref="form" label-position="top" :model="searchData" label-width="80px">
<el-row :gutter="20">
<el-col :span="3">
<el-form-item label="字典名称">
<el-select v-model="searchData.dictType" style="width: 100%" placeholder="请选择">
<el-option
v-for="item in dictTypeList"
:key="item.dictType"
:label="item.dictName"
:value="item.dictType">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="字典标签">
<el-input v-model="searchData.dictLabel" clearable/>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item label="状态">
<el-select v-model="searchData.status" clearable style="width: 100%" placeholder="请选择">
<el-option
key="Y"
label="启用"
value="Y">
</el-option>
<el-option
key="N"
label="停用"
value="N">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label=" ">
<el-button type="primary" @click="initDictData" icon="el-icon-search">查 询</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="margin-bottom: 8px;margin-top: 8px">
<el-button type="primary" icon="el-icon-plus" @click="openDictTypeDialog(0)">新 增</el-button>
<el-button type="primary" icon="el-icon-delete" @click="delBatchDictData">删 除</el-button>
</div>
<el-table
border height="75vh" row-key="dictCode"
:data="dictDataList"
ref="dictDataTable"
@selection-change="handleSelectionChange"
style="width: 100%">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"/>
<el-table-column type="index" width="80" header-align="center" label="字典序号" align="right"/>
<el-table-column prop="dictLabel" header-align="center" align="center" label="字典标签"/>
<el-table-column prop="dictValue" header-align="center" label="字典键值"/>
<el-table-column prop="dictSort" header-align="center" label="字典排序"/>
<el-table-column prop="status" header-align="center" align="center" label="字典状态">
<template slot-scope="{row,$index}">
<span>{{row.status === 'Y'?'启用':'停用'}}</span>
</template>
</el-table-column>
<el-table-column prop="remark" header-align="center" align="left" label="备注"/>
<el-table-column prop="createBy" header-align="center" label="创建者"/>
<el-table-column prop="createDate" header-align="center" align="center" label="创建时间"/>
<el-table-column header-align="center" align="center" label="操作" width="160">
<template slot-scope="{row,$index}">
<el-button type="text" :disabled="row.isSystem === 'Y'" @click="openDictTypeDialog(1,row)" icon="el-icon-edit">修改</el-button>
<el-button type="text" :disabled="row.isSystem === 'Y'" @click="delDictData(row)" icon="el-icon-delete">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="dictTypeSizeChange"
@current-change="dictTypeNoChange"
:current-page="no"
:page-sizes="[20, 50, 100, 200, 500]"
:page-size="size"
:total="total"
layout="total,sizes, prev, pager, next, jumper">
</el-pagination>
<el-dialog :visible.sync="saveDataDialogFlag" @open="openSaveDataDialog" @close="closeSaveDataDialog" width="30%" :title="insertOrUpdate === 0?'新增-字典数据':'修改-字典数据'">
<el-form ref="saveDataForm" label-position="top" :rules="dictDataRules" :model="saveData" label-width="80px">
<el-form-item label="字典类型" prop="dictType">
<el-input disabled v-model="saveData.dictType" clearable/>
</el-form-item>
<el-form-item label="字典标签" prop="dictLabel">
<el-input v-model="saveData.dictLabel" clearable/>
</el-form-item>
<el-form-item label="数据键值" prop="dictValue">
<el-input v-model="saveData.dictValue" clearable/>
</el-form-item>
<el-form-item label="数据排序" prop="dictSort">
<el-input-number v-model="saveData.dictSort" :min="0" :controls="false"/>
</el-form-item>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="saveData.status">
<el-radio :label="'Y'">启用</el-radio>
<el-radio :label="'N'">停用</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label=" " >
<el-checkbox v-model="saveData.isDefault" :true-label="'Y'" :false-label="'N'">默认</el-checkbox>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="备注" style="height: 90px">
<el-input type="textarea" :autosize="{minRows: 3, maxRows: 3}" resize='none' v-model="saveData.remark"/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="saveDataDialogFlag = false">取 消</el-button>
<el-button type="primary" @click="saveOrUpdate"> </el-button>
</span>
</el-dialog>
</div>
</template>
<style scoped>
/deep/ .el-table .cell {
line-height: 14px;
font-size: 12px;
height: auto;
}
/deep/ .el-textarea .el-textarea__inner {
padding: 0px 5px;
}
</style>