Browse Source

mrb优化

master
fengyuan_yang 3 weeks ago
parent
commit
8974a4a2f6
  1. 132
      cclqms-vue/src/views/modules/base/propertiesItem/propertiesItem.vue
  2. 135
      cclqms-vue/src/views/modules/base/propertiesItem/propertiesModel.vue
  3. 142
      cclqms-vue/src/views/modules/sys/dict-data.vue
  4. 121
      cclqms-vue/src/views/modules/sys/dict.vue

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

@ -1,6 +1,16 @@
<template>
<div class="mod-config">
<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-input v-model="searchData.itemNo" style="width: 120px"></el-input>
</el-form-item>
@ -89,19 +99,30 @@
<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-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-input v-model="modalData.itemNo" :disabled="modalDisableFlag" style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="属性名称:" prop="itemDesc" :rules="rules.itemDescType">
<el-input v-model="modalData.itemDesc" style="width: 120px"></el-input>
</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 :inline="true" label-position="top" style="margin-left: 7px;margin-top: -5px;">
<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-select>
</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-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="N"></el-option>
</el-select>
@ -199,6 +227,7 @@
deleteItemAvailable,
} from "@/api/base/properties.js"
import { searchAllItemTypeList, searchAllTypeList } from '@/api/base/properties.js'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default {
watch: {
@ -230,6 +259,7 @@
data () {
return {
itemTypeList:[],
userSiteList: [],
// start
exportData: [],
exportName: "属性" + this.dayjs().format('YYYYMMDDHHmmss'),
@ -238,7 +268,7 @@
exportList:[],
// end
searchData: {
site: this.$store.state.user.site,
site: '',
itemNo: '',
itemDesc: '',
itemType:'',
@ -261,7 +291,7 @@
itemModalFlag:false,
itemFlag:'text',
itemData:{
site: this.$store.state.user.site,
site: '',
itemNo:'',
valueNo:'',
availableValue:'',
@ -269,7 +299,7 @@
createdBy: this.$store.state.user.name
},
modalData:{
site: this.$store.state.user.site,
site: '',
flag: '',
itemNo: '',
itemDesc: '',
@ -285,6 +315,24 @@
departmentList:[],
//
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,
functionId: 100002001,
@ -492,13 +540,20 @@
],
levelList:[],
chooseModalData:{
site: this.$store.state.user.site,
site: '',
itemNo: '',
itemDesc: '',
itemType:'',
valueTypeDb:'',
},
rules:{
site: [
{
required: true,
message: ' ',
trigger: 'change'
}
],
itemNoType:[
{
required: true,
@ -543,10 +598,47 @@
})
},
created () {
this.getDataList();
this.loadUserSiteList().then(() => {
this.searchAllTypeList();
this.getDataList();
})
},
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().then(({data})=>{
if (data && data.code === 0) {
@ -560,7 +652,7 @@
},
searchAllItemTypeList(){
let params = {
site:this.$store.state.user.site
site: this.searchData.site
}
searchAllItemTypeList(params).then(({data})=>{
if (data && data.code === 0){
@ -630,7 +722,7 @@
addModal(){
this.modalData = {
site: this.$store.state.user.site,
site: this.searchData.site || '',
flag:'1',
itemNo:'',
itemDesc:'',
@ -702,6 +794,12 @@
})
},
saveData(){
if (!String(this.modalData.site || '').trim()) {
this.$alert('请选择Site!', '错误', {
confirmButtonText: '确定'
})
return false
}
if (this.modalData.itemNo === '' || this.modalData.itemNo == null) {
this.$alert('请输入属性编码!', '错误', {
confirmButtonText: '确定'
@ -755,7 +853,7 @@
addChooseModal(){
this.itemFlag = this.chooseModalData.valueTypeDb === 'N'?'number':'text';
this.itemData = {
site: this.$store.state.user.site,
site: this.chooseModalData.site || this.searchData.site || '',
itemNo:this.chooseModalData.itemNo,
valueNo:0,
availableValue:'',
@ -767,7 +865,7 @@
updateChooseModal(row){
this.itemFlag= this.chooseModalData.valueTypeDb === 'N'?'number':'text';
this.itemData={
site: this.$store.state.user.site,
site: this.chooseModalData.site || row.site || this.searchData.site || '',
itemNo:this.chooseModalData.itemNo,
valueNo:row.valueNo,
availableValue:row.availableValue,

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

@ -1,6 +1,16 @@
<template>
<div class="mod-config">
<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-input v-model="searchData.codeNo" style="width: 120px"></el-input>
</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-select>
</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="'状态'">
<dict-data-select v-model="searchData.active" clearable dict-type="sys_status"
:site="searchData.site"
:use-default-value="false"></dict-data-select>
</el-form-item>
<el-form-item :label="' '">
@ -109,11 +115,30 @@
<el-form ref="modeForm" label-position="top" :model="modalData" :rules="rules">
<el-row :gutter="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-input v-model="modalData.codeNo" :disabled="this.modalData.flag !== '1'"></el-input>
</el-form-item>
</el-col>
<el-col :span="14">
<el-col :span="24">
<el-form-item label="属性模板名称:" prop="codeDesc">
<el-input v-model="modalData.codeDesc"></el-input>
</el-form-item>
@ -150,6 +175,7 @@
<el-col :span="8">
<el-form-item label="状态:" prop="active">
<dict-data-select v-model="modalData.active" clearable dict-type="sys_status"
:site="modalData.site"
:use-default-value="false"></dict-data-select>
</el-form-item>
</el-col>
@ -392,6 +418,7 @@ import {
} from "@/api/base/properties.js"
import Chooselist from '@/views/modules/common/Chooselist'
import DictDataSelect from "../../sys/dict-data-select.vue";
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
import {
saveBUPropertiesList, searchAllTypeList, searchAllTypeRelationshipList,
searchBUList,
@ -437,6 +464,7 @@ export default {
relationshipList:[],
copyRelationshipList:[],
typeList:[],
userSiteList: [],
selectionBU: [],
BUDialog: false,
BUList: [],
@ -449,9 +477,8 @@ export default {
exportList: [],
tagNo: '',
searchData: {
site: this.$store.state.user.site,
site: '',
group: '',
buNo: '',
codeNo: '',
codeDesc: '',
active: 'Y',
@ -468,6 +495,7 @@ export default {
modalDisableFlag: false,
modalData: {
flag: '',
site: '',
codeNo: '',
codeDesc: '',
active: '',
@ -479,7 +507,7 @@ export default {
updateBy: this.$store.state.user.name,
},
detailData: {
site: this.$store.state.user.site,
site: '',
codeNo: '',
codeDesc: '',
functionType: '',
@ -489,6 +517,24 @@ export default {
userId: this.$store.state.user.name
},
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,
functionId: 100002001,
@ -798,6 +844,13 @@ export default {
itemSelections1: [],
itemSelections2: [],
rules: {
site: [
{
required: true,
message: ' ',
trigger: 'change'
}
],
codeNo: [
{
required: true,
@ -842,11 +895,46 @@ export default {
})
},
async created() {
await this.searchBUList();
await this.loadUserSiteList();
await this.searchMenuList();
await this.searchAllTypeList();
},
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){
if (this.modalFlag){
this.modalData.functionGroup='';
@ -887,7 +975,7 @@ export default {
},
searchMenuList() {
let params = {
site: this.$store.state.user.site
site: this.searchData.site
}
searchMenuAllListId(params).then(({data}) => {
if (data && data.code === 0) {
@ -903,11 +991,11 @@ export default {
this.$message.error(error)
})
},
searchBUList() {
searchBUList(site) {
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) {
this.BUList = data.rows;
} else {
@ -985,7 +1073,7 @@ export default {
addModal() {
this.modalData = {
site: this.$store.state.user.site,
site: this.searchData.site || '',
flag: '1',
codeNo: '',
codeDesc: '',
@ -1050,6 +1138,12 @@ export default {
},
saveData() {
if (!String(this.modalData.site || '').trim()) {
this.$alert('请选择Site!', '错误', {
confirmButtonText: '确定'
})
return false
}
if (this.modalData.codeNo == '' || this.modalData.codeNo == null) {
this.$alert('请输入属性模板编码!', '错误', {
confirmButtonText: '确定'
@ -1205,7 +1299,7 @@ export default {
return false;
}
let inData = {
site: this.$store.state.user.site,
site: this.detailData.site,
codeNo: this.detailData.codeNo,
codeDesc: this.detailData.codeDesc,
functionType: this.detailData.functionType,
@ -1235,7 +1329,7 @@ export default {
return false;
}
let inData = {
site: this.$store.state.user.site,
site: this.detailData.site,
codeNo: this.detailData.codeNo,
codeDesc: this.detailData.codeDesc,
functionType: this.detailData.functionType,
@ -1285,6 +1379,7 @@ export default {
},
BUBtnDialog(row) {
this.modalData = row
Promise.resolve(this.searchBUList(row.site)).then(() => {
searchBUPropertiesList(row).then(({data}) => {
if (data && data.code === 0) {
this.selectionBU = data.row.map(item => item.buNo);
@ -1295,11 +1390,13 @@ export default {
}).catch((error) => {
this.$message.error(error)
})
})
},
savePropertiesBU() {
const currentSite = this.modalData.site || this.searchData.site
let arr = this.selectionBU.map(item => {
return {
site: this.$store.state.user.site,
site: currentSite,
buNo: item,
functionType: this.modalData.functionType,
codeNo: this.modalData.codeNo
@ -1307,7 +1404,7 @@ export default {
});
if (arr.length === 0){
arr[0] = {
site: this.$store.state.user.site,
site: currentSite,
functionType: this.modalData.functionType,
codeNo: this.modalData.codeNo
}

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

@ -1,13 +1,15 @@
<script>
import { updateDictData, selectDictTypeList, saveDictData, selectDictDataPage, delDictData, delBatchDictData, removeBatchDictData } from '../../../api/dict'
import DictDataSelect from './dict-data-select.vue'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default {
name: 'dictData',
components: { DictDataSelect },
data () {
return {
userSiteList: [],
searchData: {
site: this.$store.state.user.site,
site: '',
dictLabel: undefined,
dictType: undefined,
status: undefined
@ -28,9 +30,10 @@ export default {
updateBy: this.$store.state.user.name,
updateDate: undefined,
remark: undefined,
site: this.$store.state.user.site
site: ''
},
dataLabelValue: [
{ label: 'Site', value: 'site' },
{ label: '字典标签', value: 'dictLabel' },
{ label: '字典类型', value: 'dictType' },
{ label: '字典键值', value: 'dictValue' },
@ -42,6 +45,7 @@ export default {
saveDataDialogFlag: false,
insertOrUpdate: 0,
dictDataRules: {
site: [{ required: true, message: ' ', trigger: ['blur', 'change'] }],
dictLabel: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
dictType: [{ 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,
dictLabel: undefined,
dictType: undefined,
@ -89,11 +85,81 @@ export default {
updateBy: this.$store.state.user.name,
updateDate: 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 () {
if (this.insertOrUpdate === 0) {
this.saveData.dictType = this.searchData.dictType
if (!this.saveData.site) {
this.saveData.site = this.searchData.site || ''
}
}
},
saveOrUpdate () {
this.$refs.saveDataForm.validate((validate, objects) => {
@ -214,18 +280,20 @@ export default {
this.initDictData()
},
selectDictTypeList () {
let params = {
site: this.$store.state.user.site
const params = {}
if (this.searchData.site) {
params.site = this.searchData.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) {
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
}
} else if (this.dictTypeList.length > 0) {
this.searchData.dictType = this.dictTypeList[0].dictType
}
this.initDictData()
}
@ -246,10 +314,10 @@ export default {
}
},
created () {
this.initPage()
},
activated () {
this.selectDictTypeList()
this.initPage()
}
}
</script>
@ -258,12 +326,24 @@ export default {
<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="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-form-item label="字典名称">
<el-select filterable v-model="searchData.dictType" style="width: 100%" placeholder="请选择">
<el-option
v-for="item in dictTypeList"
:key="item.dictType"
:key="(item.site || '') + '_' + item.dictType"
:label="item.dictName"
:value="item.dictType">
</el-option>
@ -299,6 +379,7 @@ export default {
@selection-change="handleSelectionChange"
style="width: 100%">
<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 prop="dictLabel" header-align="center" align="center" label="字典标签"/>
<el-table-column prop="dictValue" header-align="center" label="字典键值"/>
@ -334,6 +415,23 @@ export default {
</el-pagination>
<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-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-input disabled v-model="saveData.dictType" clearable/>
</el-form-item>

121
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 DictDataSelect from './dict-data-select.vue'
import { searchMenuList as searchMenuListApi } from '../../../api/sysMenu'
import { getSiteAndBuByUserName } from '@/api/qc/qc.js'
export default {
name: 'dict',
components: { DictDataSelect, DictData },
data () {
return {
menuList: [],
userSiteList: [],
searchData: {
site: this.$store.state.user.site,
site: '',
dictName: undefined,
dictType: undefined,
status: undefined,
@ -32,9 +34,10 @@ export default {
updateDate: undefined,
remark: undefined,
menuId: undefined,
site: this.$store.state.user.site
site: ''
},
dataLabelValue: [
{ label: 'Site', value: 'site' },
{ label: '字典名称', value: 'dictName' },
{ label: '字典类型', value: 'dictType' },
{ label: '状态', value: 'status' },
@ -44,6 +47,7 @@ export default {
saveDataDialogFlag: false,
insertOrUpdate: 0,
dictTypeRules: {
site: [{ required: true, message: ' ', trigger: ['blur', 'change'] }],
dictName: [{ required: true, message: ' ', tagger: ['blur', 'change'] }],
dictType: [{ 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, '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) {
this.insertOrUpdate = val
if (row) {
@ -100,27 +152,15 @@ export default {
multiDefaultValueList: this.normalizeMultiDefaultValueList(row.multiDefaultValue)
}
} else {
this.$set(this.saveData, 'multiDefaultValue', '')
this.$set(this.saveData, 'multiDefaultValueList', [])
this.saveData = this.createEmptySaveData()
}
this.saveDataDialogFlag = true
},
closeSaveDataDialog () {
if (this.$refs.saveDataForm) {
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
}
this.saveData = this.createEmptySaveData()
},
saveOrUpdate () {
this.$refs.saveDataForm.validate((validate, objects) => {
@ -219,8 +259,16 @@ export default {
this.no = val
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) {
for (let filed in objects) {
@ -251,7 +299,9 @@ export default {
}
},
created () {
this.loadUserSiteList().then(() => {
this.searchMenuList()
})
}
}
</script>
@ -260,6 +310,18 @@ export default {
<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="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-form-item label="字典名称">
<el-input v-model="searchData.dictName" clearable/>
@ -300,11 +362,12 @@ export default {
@selection-change="handleSelectionChange"
style="width: 100%">
<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 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>
<el-link style="cursor: pointer" @click="clickDictType(row)">{{row.dictType}}</el-link>
</template>
</el-table-column>
<el-table-column prop="status" header-align="center" width="80" align="center" label="字典状态">
@ -333,6 +396,23 @@ export default {
</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="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-input v-model="saveData.dictName" clearable/>
</el-form-item>
@ -349,6 +429,7 @@ export default {
:use-default-value="false"
:disabled="insertOrUpdate === 0 || !saveData.dictType"
:dict-type="saveData.dictType"
:site="saveData.site"
style="width: 100%">
</dict-data-select>
</el-form-item>

Loading…
Cancel
Save