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.
 
 
 
 

353 lines
12 KiB

<script>
import {saveDictType,selectDictTypePage,delDictType,delBatchDictType,updateDictType} from "../../../api/dict";
import DictData from "./dict-data.vue";
import DictDataSelect from "./dict-data-select.vue";
import {searchMenuAllListId} from "../../../api/base/properties";
export default {
name: "dict",
components: {DictDataSelect, DictData},
data(){
return{
menuList:[],
// 查询对象
searchData:{
site:this.$store.state.user.site,
dictName:undefined,
dictType:undefined,
status:undefined,
menuId:undefined,
},
// 分页条件
no:1,
size:50,
total:0,
// 新增对象
saveData:{
dictId:undefined,
dictName:undefined,
dictType: undefined,
status:'Y',
createBy:this.$store.state.user.name,
createDate:undefined,
updateBy:this.$store.state.user.name,
updateDate:undefined,
remark:undefined,
menuId:undefined,
site:this.$store.state.user.site,
},
//
dataLabelValue:[
{label:'字典名称',value:'dictName'},
{label:'字典类型',value:'dictType'},
{label:'状态',value:'status'},
{label:'应用菜单',value:'menuId'},
],
// 字典类型集合
dictTypeList:[],
// 模态框开关
saveDataDialogFlag:false,
// 新增修改状态(0新增,1修改)
insertOrUpdate:0,
// 新增修改规则
dictTypeRules: {
dictName:[{required:true,message:' ',tagger:['blur','change']}],
dictType:[{required:true,message:' ',tagger:['blur','change']}],
status:[{required:true,message:' ',tagger:['blur','change']}],
menuId:[{required:true,message:' ',tagger:['blur','change']}],
},
// 选择的表格列
selectionDictTypeList:[],
// 选中的标签页
activeTabs:'dictData',
}
},
methods:{
initDictTypeData(){
selectDictTypePage(this.no,this.size,this.searchData).then(({data})=>{
if (data && data.code === 0){
this.dictTypeList = data.rows;
this.total = data.total;
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
})
},
removeDictType(row){
this.$message.success(row)
},
openDictTypeDialog(val,row){
this.insertOrUpdate = val;
if (row){
this.saveData = {...row}
}
this.saveDataDialogFlag = true
},
closeSaveDataDialog(){
this.$refs.saveDataForm.resetFields();
this.saveData={
dictId:undefined,
dictName:undefined,
dictType: undefined,
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,
}
},
saveOrUpdate(){
this.$refs.saveDataForm.validate((validate,objects)=>{
if (validate){
if (this.insertOrUpdate === 0){
this.saveDictType();
}else {
this.updateDictType();
}
}else {
this.rulesValidateLabel(objects,this.dataLabelValue);
}
})
},
saveDictType(){
saveDictType(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictTypeData();
this.saveDataDialogFlag = false;
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
updateDictType(){
updateDictType(this.saveData).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictTypeData();
this.saveDataDialogFlag = false;
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
delDictType(row){
this.$confirm('确定要删除该记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delDictType(row).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictTypeData();
}else {
this.$message.error(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}).catch(() => {
});
},
delBatchDictType(){
this.$confirm('确定要删除该记录吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delBatchDictType(this.selectionDictTypeList).then(({data})=>{
if (data && data.code === 0){
this.$message.success(data.msg);
this.initDictTypeData();
this.$refs.dictTypeTable.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.initDictTypeData();
},
dictTypeNoChange(val){
this.no = val
this.initDictTypeData();
},
clickDictType(dictType){
this.$router.push({name:"sys-dict-data",params:{dictType:dictType},})
},
// 校验处理
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
}
}
}
},
searchMenuList() {
let params = {
site: this.$store.state.user.site
}
searchMenuAllListId(params).then(({data}) => {
if (data && data.code === 0) {
this.menuList = data.rows;
if (this.menuList.length > 0) {
this.searchData.menuId = this.menuList[0].menuId
}
this.initDictTypeData();
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
})
},
},
created() {
this.searchMenuList();
}
}
</script>
<template>
<div>
<el-form ref="form" label-position="top" :model="searchData" label-width="80px">
<el-row :gutter="10">
<el-col :span="3">
<el-form-item label="字典名称">
<el-input v-model="searchData.dictName" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="字典类型">
<el-input v-model="searchData.dictType" clearable/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="应用菜单">
<el-select v-model="searchData.menuId" @change="initDictTypeData" clearable style="width: 100%;">
<el-option :value="i.menuId" :label="i.name" v-for="i in menuList" :key="i.menuId"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item label="状态">
<dict-data-select v-model="searchData.status" clearable dict-type="sys_status" :use-default-value="false"></dict-data-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label=" ">
<el-button type="primary" @click="initDictTypeData" 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><!-- v-if="false" -->
<el-button type="primary" icon="el-icon-delete" @click="delBatchDictType" v-if="false"> </el-button>
</div>
<el-table
border height="75vh" row-key="dictId"
:data="dictTypeList"
ref="dictTypeTable"
@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="dictName" header-align="center" label="字典名称" show-overflow-tooltip/>
<el-table-column prop="dictType" header-align="center" align="left" label="字典类型" show-overflow-tooltip>
<template slot-scope="{row,$index}">
<el-link style="cursor: pointer" @click="clickDictType(row.dictType)">{{row.dictType}}</el-link>
</template>
</el-table-column>
<el-table-column prop="status" header-align="center" width="80" align="center" label="字典状态">
<template slot-scope="{row,$index}">
<span :style="{color:row.status === 'Y'?'#67C23A':'red'}">{{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" v-if="false">-->
<el-table-column header-align="center" align="center" label="操作" width="160">
<template slot-scope="{row,$index}">
<el-button type="text" @click="openDictTypeDialog(1,row)" icon="el-icon-edit">修改</el-button>
<el-button type="text" @click="delDictType(row)" icon="el-icon-delete" v-if="false">删除</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" :close-on-click-modal="false" v-drag @close="closeSaveDataDialog" width="30%" :title="insertOrUpdate === 0?'新增-字典类型':'修改-字典类型'">
<el-form ref="saveDataForm" label-position="top" :rules="dictTypeRules" :model="saveData" label-width="80px">
<el-form-item label="字典名称" prop="dictName">
<el-input v-model="saveData.dictName" clearable/>
</el-form-item>
<el-form-item label="字典类型" prop="dictType">
<el-input v-model="saveData.dictType" :disabled="insertOrUpdate !== 0" clearable/>
</el-form-item>
<el-form-item label="应用菜单" prop="menuId">
<el-select v-model="saveData.menuId" style="width: 40%;">
<el-option :value="i.menuId" :label="i.name" v-for="i in menuList" :key="i.menuId"></el-option>
</el-select>
</el-form-item>
<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-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 type="primary" @click="saveOrUpdate">确 定</el-button>
<el-button @click="saveDataDialogFlag = false"> </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>