Browse Source

mrb优化

master
fengyuan_yang 3 weeks ago
parent
commit
8974a4a2f6
  1. 134
      cclqms-vue/src/views/modules/base/propertiesItem/propertiesItem.vue
  2. 153
      cclqms-vue/src/views/modules/base/propertiesItem/propertiesModel.vue
  3. 144
      cclqms-vue/src/views/modules/sys/dict-data.vue
  4. 125
      cclqms-vue/src/views/modules/sys/dict.vue

134
cclqms-vue/src/views/modules/base/propertiesItem/propertiesItem.vue

@ -1,6 +1,16 @@
<template> <template>
<div class="mod-config"> <div class="mod-config">
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()"> <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
<el-form-item label="Site">
<el-select v-model="searchData.site" clearable filterable placeholder="请选择" style="width: 140px" @change="handleSearchSiteChange">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'属性编码'"> <el-form-item :label="'属性编码'">
<el-input v-model="searchData.itemNo" style="width: 120px"></el-input> <el-input v-model="searchData.itemNo" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
@ -89,19 +99,30 @@
<el-dialog title="属性" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px"> <el-dialog title="属性" :close-on-click-modal="false" v-drag :visible.sync="modalFlag" width="430px">
<el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;"> <el-form :inline="true" label-position="top" :model="modalData" :rules="rules" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="Site" prop="site">
<el-select
v-if="!modalDisableFlag"
v-model="modalData.site"
clearable
filterable
placeholder="请选择"
style="width: 120px">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
<el-input v-else :value="modalData.site || ''" disabled style="width: 120px"/>
</el-form-item>
<el-form-item label="属性编码:" prop="itemNo" :rules="rules.itemNoType"> <el-form-item label="属性编码:" prop="itemNo" :rules="rules.itemNoType">
<el-input v-model="modalData.itemNo" :disabled="modalDisableFlag" style="width: 120px"></el-input> <el-input v-model="modalData.itemNo" :disabled="modalDisableFlag" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="属性名称:" prop="itemDesc" :rules="rules.itemDescType"> <el-form-item label="属性名称:" prop="itemDesc" :rules="rules.itemDescType">
<el-input v-model="modalData.itemDesc" style="width: 120px"></el-input> <el-input v-model="modalData.itemDesc" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
<el-form-item :label="'值类型'" prop="valueTypeDb" :rules="rules.valueTypeDbType">
<el-select filterable v-model="modalData.valueTypeDb" style="width: 120px">
<el-option label="文本" value="T"></el-option>
<el-option label="数字" value="N"></el-option>
<el-option label="超链接" value="S" v-if="modalData.itemType==='BM'"></el-option>
</el-select>
</el-form-item>
</el-form> </el-form>
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;"> <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
<el-form-item label="参照值:"> <el-form-item label="参照值:">
@ -120,8 +141,15 @@
<el-option :value="item.functionType" :label="item.functionTypeDesc" v-for="item in itemTypeList" :key="item.functionType"></el-option> <el-option :value="item.functionType" :label="item.functionTypeDesc" v-for="item in itemTypeList" :key="item.functionType"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="'值类型'" prop="valueTypeDb" :rules="rules.valueTypeDbType">
<el-select filterable v-model="modalData.valueTypeDb" style="width: 120px">
<el-option label="文本" value="T"></el-option>
<el-option label="数字" value="N"></el-option>
<el-option label="超链接" value="S" v-if="modalData.itemType==='BM'"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="'是否值可选'" prop="valueChooseFlag" :rules="rules.valueChooseFlagType"> <el-form-item :label="'是否值可选'" prop="valueChooseFlag" :rules="rules.valueChooseFlagType">
<el-select v-model="modalData.valueChooseFlag" style="width: 80px">
<el-select v-model="modalData.valueChooseFlag" style="width: 120px">
<el-option label="是" value="Y"></el-option> <el-option label="是" value="Y"></el-option>
<el-option label="否" value="N"></el-option> <el-option label="否" value="N"></el-option>
</el-select> </el-select>
@ -199,6 +227,7 @@
deleteItemAvailable, deleteItemAvailable,
} from "@/api/base/properties.js" } from "@/api/base/properties.js"
import { searchAllItemTypeList, searchAllTypeList } from '@/api/base/properties.js' import { searchAllItemTypeList, searchAllTypeList } from '@/api/base/properties.js'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default { export default {
watch: { watch: {
@ -230,6 +259,7 @@
data () { data () {
return { return {
itemTypeList:[], itemTypeList:[],
userSiteList: [],
// start // start
exportData: [], exportData: [],
exportName: "属性" + this.dayjs().format('YYYYMMDDHHmmss'), exportName: "属性" + this.dayjs().format('YYYYMMDDHHmmss'),
@ -238,7 +268,7 @@
exportList:[], exportList:[],
// end // end
searchData: { searchData: {
site: this.$store.state.user.site,
site: '',
itemNo: '', itemNo: '',
itemDesc: '', itemDesc: '',
itemType:'', itemType:'',
@ -261,7 +291,7 @@
itemModalFlag:false, itemModalFlag:false,
itemFlag:'text', itemFlag:'text',
itemData:{ itemData:{
site: this.$store.state.user.site,
site: '',
itemNo:'', itemNo:'',
valueNo:'', valueNo:'',
availableValue:'', availableValue:'',
@ -269,7 +299,7 @@
createdBy: this.$store.state.user.name createdBy: this.$store.state.user.name
}, },
modalData:{ modalData:{
site: this.$store.state.user.site,
site: '',
flag: '', flag: '',
itemNo: '', itemNo: '',
itemDesc: '', itemDesc: '',
@ -285,6 +315,24 @@
departmentList:[], departmentList:[],
// //
columnList: [ columnList: [
{
userId: this.$store.state.user.name,
functionId: 100002001,
serialNumber: '100002001TableSite',
tableId: "100002001Table",
tableName: "属性表",
columnProp: 'site',
headerAlign: "center",
align: "center",
columnLabel: 'Site',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
},
{ {
userId: this.$store.state.user.name, userId: this.$store.state.user.name,
functionId: 100002001, functionId: 100002001,
@ -492,13 +540,20 @@
], ],
levelList:[], levelList:[],
chooseModalData:{ chooseModalData:{
site: this.$store.state.user.site,
site: '',
itemNo: '', itemNo: '',
itemDesc: '', itemDesc: '',
itemType:'', itemType:'',
valueTypeDb:'', valueTypeDb:'',
}, },
rules:{ rules:{
site: [
{
required: true,
message: ' ',
trigger: 'change'
}
],
itemNoType:[ itemNoType:[
{ {
required: true, required: true,
@ -543,10 +598,47 @@
}) })
}, },
created () { created () {
this.getDataList();
this.searchAllTypeList();
this.loadUserSiteList().then(() => {
this.searchAllTypeList();
this.getDataList();
})
}, },
methods: { methods: {
initDefaultSearchSite () {
if (!String(this.searchData.site || '').trim() && this.userSiteList.length > 0) {
this.searchData.site = this.userSiteList[0].site
}
},
loadUserSiteList () {
return getSiteAndBuByUserName({
username: this.$store.state.user.name
}).then(({ data }) => {
if (data && data.code === 0 && Array.isArray(data.rows)) {
const siteMap = new Map()
data.rows.forEach(item => {
const site = String(item.site || '').trim()
if (!site || siteMap.has(site)) {
return
}
const sitename = String(item.sitename || site).trim()
siteMap.set(site, sitename || site)
})
this.userSiteList = Array.from(siteMap.entries()).map(([site, sitename]) => ({
site,
sitename
}))
} else {
this.userSiteList = []
}
this.initDefaultSearchSite()
}).catch(() => {
this.userSiteList = []
})
},
handleSearchSiteChange () {
this.pageIndex = 1
this.getDataList()
},
searchAllTypeList(){ searchAllTypeList(){
searchAllTypeList().then(({data})=>{ searchAllTypeList().then(({data})=>{
if (data && data.code === 0) { if (data && data.code === 0) {
@ -560,7 +652,7 @@
}, },
searchAllItemTypeList(){ searchAllItemTypeList(){
let params = { let params = {
site:this.$store.state.user.site
site: this.searchData.site
} }
searchAllItemTypeList(params).then(({data})=>{ searchAllItemTypeList(params).then(({data})=>{
if (data && data.code === 0){ if (data && data.code === 0){
@ -630,7 +722,7 @@
addModal(){ addModal(){
this.modalData = { this.modalData = {
site: this.$store.state.user.site,
site: this.searchData.site || '',
flag:'1', flag:'1',
itemNo:'', itemNo:'',
itemDesc:'', itemDesc:'',
@ -702,6 +794,12 @@
}) })
}, },
saveData(){ saveData(){
if (!String(this.modalData.site || '').trim()) {
this.$alert('请选择Site!', '错误', {
confirmButtonText: '确定'
})
return false
}
if (this.modalData.itemNo === '' || this.modalData.itemNo == null) { if (this.modalData.itemNo === '' || this.modalData.itemNo == null) {
this.$alert('请输入属性编码!', '错误', { this.$alert('请输入属性编码!', '错误', {
confirmButtonText: '确定' confirmButtonText: '确定'
@ -755,7 +853,7 @@
addChooseModal(){ addChooseModal(){
this.itemFlag = this.chooseModalData.valueTypeDb === 'N'?'number':'text'; this.itemFlag = this.chooseModalData.valueTypeDb === 'N'?'number':'text';
this.itemData = { this.itemData = {
site: this.$store.state.user.site,
site: this.chooseModalData.site || this.searchData.site || '',
itemNo:this.chooseModalData.itemNo, itemNo:this.chooseModalData.itemNo,
valueNo:0, valueNo:0,
availableValue:'', availableValue:'',
@ -767,7 +865,7 @@
updateChooseModal(row){ updateChooseModal(row){
this.itemFlag= this.chooseModalData.valueTypeDb === 'N'?'number':'text'; this.itemFlag= this.chooseModalData.valueTypeDb === 'N'?'number':'text';
this.itemData={ this.itemData={
site: this.$store.state.user.site,
site: this.chooseModalData.site || row.site || this.searchData.site || '',
itemNo:this.chooseModalData.itemNo, itemNo:this.chooseModalData.itemNo,
valueNo:row.valueNo, valueNo:row.valueNo,
availableValue:row.availableValue, availableValue:row.availableValue,

153
cclqms-vue/src/views/modules/base/propertiesItem/propertiesModel.vue

@ -1,6 +1,16 @@
<template> <template>
<div class="mod-config"> <div class="mod-config">
<el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()"> <el-form :inline="true" label-position="top" :model="searchData" @keyup.enter.native="getDataList()">
<el-form-item label="Site">
<el-select v-model="searchData.site" clearable filterable placeholder="请选择" style="width: 140px" @change="handleSearchSiteChange">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="'属性模板编码'"> <el-form-item :label="'属性模板编码'">
<el-input v-model="searchData.codeNo" style="width: 120px"></el-input> <el-input v-model="searchData.codeNo" style="width: 120px"></el-input>
</el-form-item> </el-form-item>
@ -22,13 +32,9 @@
<el-option :label="item.functionGroupDesc" :value="item.functionGroup" v-for="item in relationshipList" :key="item.functionGroup"></el-option> <el-option :label="item.functionGroupDesc" :value="item.functionGroup" v-for="item in relationshipList" :key="item.functionGroup"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="BU">
<el-select v-model="searchData.buNo" @change="getDataList" clearable>
<el-option :value="i.buNo" :label="i.buDesc" v-for="i in BUList" :key="i.buNo"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="'状态'"> <el-form-item :label="'状态'">
<dict-data-select v-model="searchData.active" clearable dict-type="sys_status" <dict-data-select v-model="searchData.active" clearable dict-type="sys_status"
:site="searchData.site"
:use-default-value="false"></dict-data-select> :use-default-value="false"></dict-data-select>
</el-form-item> </el-form-item>
<el-form-item :label="' '"> <el-form-item :label="' '">
@ -109,11 +115,30 @@
<el-form ref="modeForm" label-position="top" :model="modalData" :rules="rules"> <el-form ref="modeForm" label-position="top" :model="modalData" :rules="rules">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="10"> <el-col :span="10">
<el-form-item label="Site" prop="site">
<el-select
v-if="modalData.flag === '1'"
v-model="modalData.site"
clearable
filterable
placeholder="请选择"
style="width: 100%;">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
<el-input v-else :value="modalData.site || ''" disabled/>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="属性模板编码:" prop="codeNo"> <el-form-item label="属性模板编码:" prop="codeNo">
<el-input v-model="modalData.codeNo" :disabled="this.modalData.flag !== '1'"></el-input> <el-input v-model="modalData.codeNo" :disabled="this.modalData.flag !== '1'"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="14">
<el-col :span="24">
<el-form-item label="属性模板名称:" prop="codeDesc"> <el-form-item label="属性模板名称:" prop="codeDesc">
<el-input v-model="modalData.codeDesc"></el-input> <el-input v-model="modalData.codeDesc"></el-input>
</el-form-item> </el-form-item>
@ -150,6 +175,7 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="状态:" prop="active"> <el-form-item label="状态:" prop="active">
<dict-data-select v-model="modalData.active" clearable dict-type="sys_status" <dict-data-select v-model="modalData.active" clearable dict-type="sys_status"
:site="modalData.site"
:use-default-value="false"></dict-data-select> :use-default-value="false"></dict-data-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -392,6 +418,7 @@ import {
} from "@/api/base/properties.js" } from "@/api/base/properties.js"
import Chooselist from '@/views/modules/common/Chooselist' import Chooselist from '@/views/modules/common/Chooselist'
import DictDataSelect from "../../sys/dict-data-select.vue"; import DictDataSelect from "../../sys/dict-data-select.vue";
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
import { import {
saveBUPropertiesList, searchAllTypeList, searchAllTypeRelationshipList, saveBUPropertiesList, searchAllTypeList, searchAllTypeRelationshipList,
searchBUList, searchBUList,
@ -437,6 +464,7 @@ export default {
relationshipList:[], relationshipList:[],
copyRelationshipList:[], copyRelationshipList:[],
typeList:[], typeList:[],
userSiteList: [],
selectionBU: [], selectionBU: [],
BUDialog: false, BUDialog: false,
BUList: [], BUList: [],
@ -449,9 +477,8 @@ export default {
exportList: [], exportList: [],
tagNo: '', tagNo: '',
searchData: { searchData: {
site: this.$store.state.user.site,
site: '',
group: '', group: '',
buNo: '',
codeNo: '', codeNo: '',
codeDesc: '', codeDesc: '',
active: 'Y', active: 'Y',
@ -468,6 +495,7 @@ export default {
modalDisableFlag: false, modalDisableFlag: false,
modalData: { modalData: {
flag: '', flag: '',
site: '',
codeNo: '', codeNo: '',
codeDesc: '', codeDesc: '',
active: '', active: '',
@ -479,7 +507,7 @@ export default {
updateBy: this.$store.state.user.name, updateBy: this.$store.state.user.name,
}, },
detailData: { detailData: {
site: this.$store.state.user.site,
site: '',
codeNo: '', codeNo: '',
codeDesc: '', codeDesc: '',
functionType: '', functionType: '',
@ -489,6 +517,24 @@ export default {
userId: this.$store.state.user.name userId: this.$store.state.user.name
}, },
columnList: [ columnList: [
{
userId: this.$store.state.user.name,
functionId: 100002001,
serialNumber: '100002001TableSite',
tableId: "100002001Table",
tableName: "属性模板表",
columnProp: 'site',
headerAlign: "center",
align: "center",
columnLabel: 'Site',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
},
{ {
userId: this.$store.state.user.name, userId: this.$store.state.user.name,
functionId: 100002001, functionId: 100002001,
@ -798,6 +844,13 @@ export default {
itemSelections1: [], itemSelections1: [],
itemSelections2: [], itemSelections2: [],
rules: { rules: {
site: [
{
required: true,
message: ' ',
trigger: 'change'
}
],
codeNo: [ codeNo: [
{ {
required: true, required: true,
@ -842,11 +895,46 @@ export default {
}) })
}, },
async created() { async created() {
await this.searchBUList();
await this.loadUserSiteList();
await this.searchMenuList(); await this.searchMenuList();
await this.searchAllTypeList(); await this.searchAllTypeList();
}, },
methods: { methods: {
initDefaultSearchSite () {
if (!String(this.searchData.site || '').trim() && this.userSiteList.length > 0) {
this.searchData.site = this.userSiteList[0].site
}
},
loadUserSiteList () {
return getSiteAndBuByUserName({
username: this.$store.state.user.name
}).then(({ data }) => {
if (data && data.code === 0 && Array.isArray(data.rows)) {
const siteMap = new Map()
data.rows.forEach(item => {
const site = String(item.site || '').trim()
if (!site || siteMap.has(site)) {
return
}
const sitename = String(item.sitename || site).trim()
siteMap.set(site, sitename || site)
})
this.userSiteList = Array.from(siteMap.entries()).map(([site, sitename]) => ({
site,
sitename
}))
} else {
this.userSiteList = []
}
this.initDefaultSearchSite()
}).catch(() => {
this.userSiteList = []
})
},
handleSearchSiteChange () {
this.pageIndex = 1
this.getDataList()
},
changeMenu(val){ changeMenu(val){
if (this.modalFlag){ if (this.modalFlag){
this.modalData.functionGroup=''; this.modalData.functionGroup='';
@ -887,7 +975,7 @@ export default {
}, },
searchMenuList() { searchMenuList() {
let params = { let params = {
site: this.$store.state.user.site
site: this.searchData.site
} }
searchMenuAllListId(params).then(({data}) => { searchMenuAllListId(params).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
@ -903,11 +991,11 @@ export default {
this.$message.error(error) this.$message.error(error)
}) })
}, },
searchBUList() {
searchBUList(site) {
let params = { let params = {
site: this.$store.state.user.site
site: site || this.searchData.site
} }
searchBUList(params).then(({data}) => {
return searchBUList(params).then(({data}) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.BUList = data.rows; this.BUList = data.rows;
} else { } else {
@ -985,7 +1073,7 @@ export default {
addModal() { addModal() {
this.modalData = { this.modalData = {
site: this.$store.state.user.site,
site: this.searchData.site || '',
flag: '1', flag: '1',
codeNo: '', codeNo: '',
codeDesc: '', codeDesc: '',
@ -1050,6 +1138,12 @@ export default {
}, },
saveData() { saveData() {
if (!String(this.modalData.site || '').trim()) {
this.$alert('请选择Site!', '错误', {
confirmButtonText: '确定'
})
return false
}
if (this.modalData.codeNo == '' || this.modalData.codeNo == null) { if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
this.$alert('请输入属性模板编码!', '错误', { this.$alert('请输入属性模板编码!', '错误', {
confirmButtonText: '确定' confirmButtonText: '确定'
@ -1205,7 +1299,7 @@ export default {
return false; return false;
} }
let inData = { let inData = {
site: this.$store.state.user.site,
site: this.detailData.site,
codeNo: this.detailData.codeNo, codeNo: this.detailData.codeNo,
codeDesc: this.detailData.codeDesc, codeDesc: this.detailData.codeDesc,
functionType: this.detailData.functionType, functionType: this.detailData.functionType,
@ -1235,7 +1329,7 @@ export default {
return false; return false;
} }
let inData = { let inData = {
site: this.$store.state.user.site,
site: this.detailData.site,
codeNo: this.detailData.codeNo, codeNo: this.detailData.codeNo,
codeDesc: this.detailData.codeDesc, codeDesc: this.detailData.codeDesc,
functionType: this.detailData.functionType, functionType: this.detailData.functionType,
@ -1285,21 +1379,24 @@ export default {
}, },
BUBtnDialog(row) { BUBtnDialog(row) {
this.modalData = row this.modalData = row
searchBUPropertiesList(row).then(({data}) => {
if (data && data.code === 0) {
this.selectionBU = data.row.map(item => item.buNo);
this.BUDialog = true
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
Promise.resolve(this.searchBUList(row.site)).then(() => {
searchBUPropertiesList(row).then(({data}) => {
if (data && data.code === 0) {
this.selectionBU = data.row.map(item => item.buNo);
this.BUDialog = true
} else {
this.$message.warning(data.msg)
}
}).catch((error) => {
this.$message.error(error)
})
}) })
}, },
savePropertiesBU() { savePropertiesBU() {
const currentSite = this.modalData.site || this.searchData.site
let arr = this.selectionBU.map(item => { let arr = this.selectionBU.map(item => {
return { return {
site: this.$store.state.user.site,
site: currentSite,
buNo: item, buNo: item,
functionType: this.modalData.functionType, functionType: this.modalData.functionType,
codeNo: this.modalData.codeNo codeNo: this.modalData.codeNo
@ -1307,7 +1404,7 @@ export default {
}); });
if (arr.length === 0){ if (arr.length === 0){
arr[0] = { arr[0] = {
site: this.$store.state.user.site,
site: currentSite,
functionType: this.modalData.functionType, functionType: this.modalData.functionType,
codeNo: this.modalData.codeNo codeNo: this.modalData.codeNo
} }

144
cclqms-vue/src/views/modules/sys/dict-data.vue

@ -1,13 +1,15 @@
<script> <script>
import { updateDictData, selectDictTypeList, saveDictData, selectDictDataPage, delDictData, delBatchDictData, removeBatchDictData } from '../../../api/dict' import { updateDictData, selectDictTypeList, saveDictData, selectDictDataPage, delDictData, delBatchDictData, removeBatchDictData } from '../../../api/dict'
import DictDataSelect from './dict-data-select.vue' import DictDataSelect from './dict-data-select.vue'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default { export default {
name: 'dictData', name: 'dictData',
components: { DictDataSelect }, components: { DictDataSelect },
data () { data () {
return { return {
userSiteList: [],
searchData: { searchData: {
site: this.$store.state.user.site,
site: '',
dictLabel: undefined, dictLabel: undefined,
dictType: undefined, dictType: undefined,
status: undefined status: undefined
@ -28,9 +30,10 @@ export default {
updateBy: this.$store.state.user.name, updateBy: this.$store.state.user.name,
updateDate: undefined, updateDate: undefined,
remark: undefined, remark: undefined,
site: this.$store.state.user.site
site: ''
}, },
dataLabelValue: [ dataLabelValue: [
{ label: 'Site', value: 'site' },
{ label: '字典标签', value: 'dictLabel' }, { label: '字典标签', value: 'dictLabel' },
{ label: '字典类型', value: 'dictType' }, { label: '字典类型', value: 'dictType' },
{ label: '字典键值', value: 'dictValue' }, { label: '字典键值', value: 'dictValue' },
@ -42,6 +45,7 @@ export default {
saveDataDialogFlag: false, saveDataDialogFlag: false,
insertOrUpdate: 0, insertOrUpdate: 0,
dictDataRules: { dictDataRules: {
site: [{ required: true, message: ' ', trigger: ['blur', 'change'] }],
dictLabel: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], dictLabel: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
dictType: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], dictType: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
dictValue: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], dictValue: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
@ -67,16 +71,8 @@ export default {
}) })
}, },
openDictTypeDialog (val, row) {
this.insertOrUpdate = val
if (row) {
this.saveData = { ...row }
}
this.saveDataDialogFlag = true
},
closeSaveDataDialog () {
this.$refs.saveDataForm.resetFields()
this.saveData = {
createEmptySaveData () {
return {
dictId: undefined, dictId: undefined,
dictLabel: undefined, dictLabel: undefined,
dictType: undefined, dictType: undefined,
@ -89,11 +85,81 @@ export default {
updateBy: this.$store.state.user.name, updateBy: this.$store.state.user.name,
updateDate: undefined, updateDate: undefined,
remark: undefined, remark: undefined,
site: this.$store.state.user.site
site: ''
}
},
initDefaultSearchSite () {
if (!String(this.searchData.site || '').trim() && this.userSiteList.length > 0) {
this.searchData.site = this.userSiteList[0].site
}
},
loadUserSiteList () {
return getSiteAndBuByUserName({
username: this.$store.state.user.name
}).then(({ data }) => {
if (data && data.code === 0 && Array.isArray(data.rows)) {
const siteMap = new Map()
data.rows.forEach(item => {
const site = String(item.site || '').trim()
if (!site || siteMap.has(site)) {
return
}
const sitename = String(item.sitename || site).trim()
siteMap.set(site, sitename || site)
})
this.userSiteList = Array.from(siteMap.entries()).map(([site, sitename]) => ({
site,
sitename
}))
} else {
this.userSiteList = []
}
}).catch(() => {
this.userSiteList = []
})
},
initPage () {
this.applyRouteContext()
return this.loadUserSiteList().then(() => {
this.initDefaultSearchSite()
this.selectDictTypeList()
})
},
applyRouteContext () {
const routeParams = (this.$route && this.$route.params) ? this.$route.params : {}
const routeSite = String(routeParams.site || '').trim()
const routeDictType = String(routeParams.dictType || '').trim()
if (routeSite) {
this.searchData.site = routeSite
}
if (routeDictType) {
this.searchData.dictType = routeDictType
} }
}, },
openDictTypeDialog (val, row) {
this.insertOrUpdate = val
if (row) {
this.saveData = { ...row }
} else {
this.saveData = this.createEmptySaveData()
this.saveData.dictType = this.searchData.dictType
this.saveData.site = this.searchData.site || ''
}
this.saveDataDialogFlag = true
},
closeSaveDataDialog () {
if (this.$refs.saveDataForm) {
this.$refs.saveDataForm.resetFields()
}
this.saveData = this.createEmptySaveData()
},
openSaveDataDialog () { openSaveDataDialog () {
this.saveData.dictType = this.searchData.dictType
if (this.insertOrUpdate === 0) {
this.saveData.dictType = this.searchData.dictType
if (!this.saveData.site) {
this.saveData.site = this.searchData.site || ''
}
}
}, },
saveOrUpdate () { saveOrUpdate () {
this.$refs.saveDataForm.validate((validate, objects) => { this.$refs.saveDataForm.validate((validate, objects) => {
@ -214,18 +280,20 @@ export default {
this.initDictData() this.initDictData()
}, },
selectDictTypeList () { selectDictTypeList () {
let params = {
site: this.$store.state.user.site
const params = {}
if (this.searchData.site) {
params.site = this.searchData.site
} }
selectDictTypeList(params).then(({ data }) => { selectDictTypeList(params).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.dictTypeList = data.rows this.dictTypeList = data.rows
if (this.$route.params.dictType) {
this.searchData.dictType = this.$route.params.dictType
} else {
if (this.dictTypeList.length > 0) {
if (this.searchData.dictType) {
const exists = this.dictTypeList.some(item => item.dictType === this.searchData.dictType)
if (!exists && this.dictTypeList.length > 0) {
this.searchData.dictType = this.dictTypeList[0].dictType this.searchData.dictType = this.dictTypeList[0].dictType
} }
} else if (this.dictTypeList.length > 0) {
this.searchData.dictType = this.dictTypeList[0].dictType
} }
this.initDictData() this.initDictData()
} }
@ -246,10 +314,10 @@ export default {
} }
}, },
created () { created () {
this.initPage()
}, },
activated () { activated () {
this.selectDictTypeList()
this.initPage()
} }
} }
</script> </script>
@ -258,12 +326,24 @@ export default {
<div> <div>
<el-form ref="form" label-position="top" :model="searchData" label-width="80px"> <el-form ref="form" label-position="top" :model="searchData" label-width="80px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="3">
<el-form-item label="Site">
<el-select v-model="searchData.site" clearable filterable placeholder="请选择" style="width: 100%" @change="selectDictTypeList">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3"> <el-col :span="3">
<el-form-item label="字典名称"> <el-form-item label="字典名称">
<el-select filterable v-model="searchData.dictType" style="width: 100%" placeholder="请选择"> <el-select filterable v-model="searchData.dictType" style="width: 100%" placeholder="请选择">
<el-option <el-option
v-for="item in dictTypeList" v-for="item in dictTypeList"
:key="item.dictType"
:key="(item.site || '') + '_' + item.dictType"
:label="item.dictName" :label="item.dictName"
:value="item.dictType"> :value="item.dictType">
</el-option> </el-option>
@ -299,6 +379,7 @@ export default {
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
style="width: 100%"> style="width: 100%">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"/> <el-table-column type="selection" width="55" align="center" :reserve-selection="true"/>
<el-table-column prop="site" header-align="center" align="center" label="Site" width="80" show-overflow-tooltip/>
<el-table-column type="index" width="80" header-align="center" label="字典序号" align="right"/> <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="dictLabel" header-align="center" align="center" label="字典标签"/>
<el-table-column prop="dictValue" header-align="center" label="字典键值"/> <el-table-column prop="dictValue" header-align="center" label="字典键值"/>
@ -334,6 +415,23 @@ export default {
</el-pagination> </el-pagination>
<el-dialog :visible.sync="saveDataDialogFlag" :close-on-click-modal="false" @open="openSaveDataDialog" @close="closeSaveDataDialog" width="30%" :title="insertOrUpdate === 0?'新增-字典数据':'修改-字典数据'"> <el-dialog :visible.sync="saveDataDialogFlag" :close-on-click-modal="false" @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 ref="saveDataForm" label-position="top" :rules="dictDataRules" :model="saveData" label-width="80px">
<el-form-item label="Site" prop="site">
<el-select
v-if="insertOrUpdate === 0"
v-model="saveData.site"
clearable
filterable
placeholder="请选择"
style="width: 100%;">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
<el-input v-else :value="saveData.site || ''" disabled/>
</el-form-item>
<el-form-item label="字典类型" prop="dictType"> <el-form-item label="字典类型" prop="dictType">
<el-input disabled v-model="saveData.dictType" clearable/> <el-input disabled v-model="saveData.dictType" clearable/>
</el-form-item> </el-form-item>

125
cclqms-vue/src/views/modules/sys/dict.vue

@ -3,14 +3,16 @@ import { saveDictType, selectDictTypePage, delDictType, delBatchDictType, update
import DictData from './dict-data.vue' import DictData from './dict-data.vue'
import DictDataSelect from './dict-data-select.vue' import DictDataSelect from './dict-data-select.vue'
import { searchMenuList as searchMenuListApi } from '../../../api/sysMenu' import { searchMenuList as searchMenuListApi } from '../../../api/sysMenu'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default { export default {
name: 'dict', name: 'dict',
components: { DictDataSelect, DictData }, components: { DictDataSelect, DictData },
data () { data () {
return { return {
menuList: [], menuList: [],
userSiteList: [],
searchData: { searchData: {
site: this.$store.state.user.site,
site: '',
dictName: undefined, dictName: undefined,
dictType: undefined, dictType: undefined,
status: undefined, status: undefined,
@ -32,9 +34,10 @@ export default {
updateDate: undefined, updateDate: undefined,
remark: undefined, remark: undefined,
menuId: undefined, menuId: undefined,
site: this.$store.state.user.site
site: ''
}, },
dataLabelValue: [ dataLabelValue: [
{ label: 'Site', value: 'site' },
{ label: '字典名称', value: 'dictName' }, { label: '字典名称', value: 'dictName' },
{ label: '字典类型', value: 'dictType' }, { label: '字典类型', value: 'dictType' },
{ label: '状态', value: 'status' }, { label: '状态', value: 'status' },
@ -44,6 +47,7 @@ export default {
saveDataDialogFlag: false, saveDataDialogFlag: false,
insertOrUpdate: 0, insertOrUpdate: 0,
dictTypeRules: { dictTypeRules: {
site: [{ required: true, message: ' ', trigger: ['blur', 'change'] }],
dictName: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], dictName: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
dictType: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], dictType: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
status: [{ required: true, message: ' ', tagger: ['blur', 'change'] }], status: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
@ -91,6 +95,54 @@ export default {
this.$set(this.saveData, 'multiDefaultValueList', normalized) this.$set(this.saveData, 'multiDefaultValueList', normalized)
this.$set(this.saveData, 'multiDefaultValue', normalized.join(';')) this.$set(this.saveData, 'multiDefaultValue', normalized.join(';'))
}, },
createEmptySaveData () {
return {
dictId: undefined,
dictName: undefined,
dictType: undefined,
multiDefaultValue: '',
multiDefaultValueList: [],
status: 'Y',
createBy: this.$store.state.user.name,
createDate: undefined,
updateBy: this.$store.state.user.name,
updateDate: undefined,
remark: undefined,
menuId: undefined,
site: ''
}
},
initDefaultSearchSite () {
if (!String(this.searchData.site || '').trim() && this.userSiteList.length > 0) {
this.searchData.site = this.userSiteList[0].site
}
},
loadUserSiteList () {
return getSiteAndBuByUserName({
username: this.$store.state.user.name
}).then(({ data }) => {
if (data && data.code === 0 && Array.isArray(data.rows)) {
const siteMap = new Map()
data.rows.forEach(item => {
const site = String(item.site || '').trim()
if (!site || siteMap.has(site)) {
return
}
const sitename = String(item.sitename || site).trim()
siteMap.set(site, sitename || site)
})
this.userSiteList = Array.from(siteMap.entries()).map(([site, sitename]) => ({
site,
sitename
}))
} else {
this.userSiteList = []
}
this.initDefaultSearchSite()
}).catch(() => {
this.userSiteList = []
})
},
openDictTypeDialog (val, row) { openDictTypeDialog (val, row) {
this.insertOrUpdate = val this.insertOrUpdate = val
if (row) { if (row) {
@ -100,27 +152,15 @@ export default {
multiDefaultValueList: this.normalizeMultiDefaultValueList(row.multiDefaultValue) multiDefaultValueList: this.normalizeMultiDefaultValueList(row.multiDefaultValue)
} }
} else { } else {
this.$set(this.saveData, 'multiDefaultValue', '')
this.$set(this.saveData, 'multiDefaultValueList', [])
this.saveData = this.createEmptySaveData()
} }
this.saveDataDialogFlag = true this.saveDataDialogFlag = true
}, },
closeSaveDataDialog () { closeSaveDataDialog () {
this.$refs.saveDataForm.resetFields()
this.saveData = {
dictId: undefined,
dictName: undefined,
dictType: undefined,
multiDefaultValue: '',
multiDefaultValueList: [],
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
if (this.$refs.saveDataForm) {
this.$refs.saveDataForm.resetFields()
} }
this.saveData = this.createEmptySaveData()
}, },
saveOrUpdate () { saveOrUpdate () {
this.$refs.saveDataForm.validate((validate, objects) => { this.$refs.saveDataForm.validate((validate, objects) => {
@ -219,8 +259,16 @@ export default {
this.no = val this.no = val
this.initDictTypeData() this.initDictTypeData()
}, },
clickDictType (dictType) {
this.$router.push({ name: 'sys-dict-data', params: { dictType: dictType } })
clickDictType (row) {
const dictType = String(row && row.dictType || '').trim()
const site = String(row && row.site || '').trim()
this.$router.push({
name: 'sys-dict-data',
params: {
dictType,
site
}
})
}, },
rulesValidateLabel (objects, labels) { rulesValidateLabel (objects, labels) {
for (let filed in objects) { for (let filed in objects) {
@ -251,7 +299,9 @@ export default {
} }
}, },
created () { created () {
this.searchMenuList()
this.loadUserSiteList().then(() => {
this.searchMenuList()
})
} }
} }
</script> </script>
@ -260,6 +310,18 @@ export default {
<div> <div>
<el-form ref="form" label-position="top" :model="searchData" label-width="80px"> <el-form ref="form" label-position="top" :model="searchData" label-width="80px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="3">
<el-form-item label="Site">
<el-select v-model="searchData.site" clearable filterable placeholder="请选择" style="width: 100%;">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="3"> <el-col :span="3">
<el-form-item label="字典名称"> <el-form-item label="字典名称">
<el-input v-model="searchData.dictName" clearable/> <el-input v-model="searchData.dictName" clearable/>
@ -300,11 +362,12 @@ export default {
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
style="width: 100%"> style="width: 100%">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"/> <el-table-column type="selection" width="55" align="center" :reserve-selection="true"/>
<el-table-column prop="site" header-align="center" align="center" label="Site" width="80" show-overflow-tooltip/>
<el-table-column type="index" width="80" header-align="center" label="字典序号" align="right"/> <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="dictName" header-align="center" label="字典名称" show-overflow-tooltip/>
<el-table-column prop="dictType" header-align="center" align="left" label="字典类型" show-overflow-tooltip> <el-table-column prop="dictType" header-align="center" align="left" label="字典类型" show-overflow-tooltip>
<template slot-scope="{row,$index}"> <template slot-scope="{row,$index}">
<el-link style="cursor: pointer" @click="clickDictType(row.dictType)">{{row.dictType}}</el-link>
<el-link style="cursor: pointer" @click="clickDictType(row)">{{row.dictType}}</el-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="status" header-align="center" width="80" align="center" label="字典状态"> <el-table-column prop="status" header-align="center" width="80" align="center" label="字典状态">
@ -333,6 +396,23 @@ export default {
</el-pagination> </el-pagination>
<el-dialog :visible.sync="saveDataDialogFlag" :close-on-click-modal="false" v-drag @close="closeSaveDataDialog" width="30%" :title="insertOrUpdate === 0?'新增-字典类型':'修改-字典类型'"> <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 ref="saveDataForm" label-position="top" :rules="dictTypeRules" :model="saveData" label-width="80px">
<el-form-item label="Site" prop="site">
<el-select
v-if="insertOrUpdate === 0"
v-model="saveData.site"
clearable
filterable
placeholder="请选择"
style="width: 100%;">
<el-option
v-for="item in userSiteList"
:key="item.site"
:label="item.sitename || item.site"
:value="item.site">
</el-option>
</el-select>
<el-input v-else :value="saveData.site || ''" disabled/>
</el-form-item>
<el-form-item label="字典名称" prop="dictName"> <el-form-item label="字典名称" prop="dictName">
<el-input v-model="saveData.dictName" clearable/> <el-input v-model="saveData.dictName" clearable/>
</el-form-item> </el-form-item>
@ -349,6 +429,7 @@ export default {
:use-default-value="false" :use-default-value="false"
:disabled="insertOrUpdate === 0 || !saveData.dictType" :disabled="insertOrUpdate === 0 || !saveData.dictType"
:dict-type="saveData.dictType" :dict-type="saveData.dictType"
:site="saveData.site"
style="width: 100%"> style="width: 100%">
</dict-data-select> </dict-data-select>
</el-form-item> </el-form-item>

Loading…
Cancel
Save