Compare commits

...

13 Commits

24 changed files with 1129 additions and 2105 deletions

View File

@ -72,7 +72,7 @@
$config, $config,
#{$theme}, #{$theme},
"v-tabs-hover-color" "v-tabs-hover-color"
) !important ) !important;
} }
&:not(.v-tab--active){ &:not(.v-tab--active){

View File

@ -120,7 +120,7 @@ $config: (
v-tabs-active-border-color: rgba(255, 255, 255, 0.7), v-tabs-active-border-color: rgba(255, 255, 255, 0.7),
v-dialog-card-text-color: #fff, v-dialog-card-text-color: #fff,
tui-datepicker-backgroundColor: #0d0f17, tui-datepicker-backgroundColor: #0d0f17,
tui-datepicker-border-color: rgb(66, 66, 66), tui-datepicker-border-color: rgba(255, 255, 255, 0.3),
tui-datepicker-selectable-hover-color: #2d3355, tui-datepicker-selectable-hover-color: #2d3355,
tui-datepicker-selected-color: #1a4e87, tui-datepicker-selected-color: #1a4e87,
tui-datepicker-calendar-color: #fff, tui-datepicker-calendar-color: #fff,
@ -252,7 +252,7 @@ $config: (
v-tabs-hover-color: #1677FF, v-tabs-hover-color: #1677FF,
v-dialog-card-text-color: #111, v-dialog-card-text-color: #111,
tui-datepicker-backgroundColor: #fff, tui-datepicker-backgroundColor: #fff,
tui-datepicker-border-color: #D9D9D9, tui-datepicker-border-color: #b4b8c9,
tui-datepicker-selectable-hover-color: #e1e7f3, tui-datepicker-selectable-hover-color: #e1e7f3,
tui-datepicker-selected-color: #4777d9, tui-datepicker-selected-color: #4777d9,
tui-datepicker-calendar-color: #111, tui-datepicker-calendar-color: #111,

View File

@ -170,9 +170,11 @@ export default {
month : month, month : month,
day : day day : day
} }
this.$refs['planPop'].blocId = this.pageData.blocMstrList[ // BEGIN TEST UI
this.pageData.blocId // this.$refs['planPop'].blocId = this.pageData.blocMstrList[
].blocId; // this.pageData.blocId
// ].blocId;
// END TEST UI
this.$refs['planPop'].dialog = true; this.$refs['planPop'].dialog = true;
}, },
updatePlan(val) { updatePlan(val) {

View File

@ -13,14 +13,15 @@
</v-col> </v-col>
<v-col :cols="label ? textCols : ''"> <v-col :cols="label ? textCols : ''">
<a-checkbox <v-checkbox
v-model:checked="chkValue" v-model="chkValue"
:disabled="disabledFlag" :disabled="disabledFlag"
:readonly="readonly || false" :readonly="readonly || false"
:required="required || false" :required="required || false"
:false-value="false"
:color="isDarkMode ? '#fff' : '#1890ff'"
@change="modifyValue" @change="modifyValue"
> ></v-checkbox>
</a-checkbox>
</v-col> </v-col>
</v-row> </v-row>
</template> </template>

View File

@ -4,7 +4,7 @@
v-if="item.label" v-if="item.label"
:cols="item.cols == 12 ? 2 : 4" :cols="item.cols == 12 ? 2 : 4"
:style="item.padding ? 'padding-left:10px' : ''" :style="item.padding ? 'padding-left:10px' : ''"
class="mb-2" class="py-0"
> >
<label for="" class="search-box-label"> <label for="" class="search-box-label">
<v-icon <v-icon

View File

@ -190,7 +190,7 @@ export default {
modalDataKey: 'modalData', modalDataKey: 'modalData',
myModalKey: 'eqpmDetlPop', myModalKey: 'eqpmDetlPop',
gridName: 'eqpmDetlGrid', gridName: 'eqpmDetlGrid',
loadGrid: true, loadGrid: false,
setGrid: false, setGrid: false,
popCheck: false, popCheck: false,
dialog: false, dialog: false,
@ -217,13 +217,7 @@ export default {
}), }),
InputValue: { InputValue: {
get() { get() {
// return this.myBindingData; return this.myBindingData;
return [{
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"gdIdxId": "GD001",
"gdIdxNm": "Etch Depth Guide",
}]
} }
}, },
chkDialog() { chkDialog() {
@ -241,7 +235,7 @@ export default {
}, },
async popCheck(val) { async popCheck(val) {
if (val) { if (val) {
// await this.getRowGridData(); await this.getRowGridData();
this.dialog = true; this.dialog = true;
} else { } else {
this.dialog = false; this.dialog = false;
@ -365,57 +359,24 @@ export default {
}, },
async getRowGridData() { async getRowGridData() {
this.loadGrid = false; this.loadGrid = false;
// var res = await this.postApiReturn({ var res = await this.postApiReturn({
// apiKey: 'selectEqpmDetailPop', apiKey: 'selectEqpmDetailPop',
// resKey: 'eqpmDetlPopData', resKey: 'eqpmDetlPopData',
// sendParam: { sendParam: {
// gdIdxId : this.myBindingData.gdIdxId, gdIdxId: this.myBindingData.gdIdxId,
// eqpmId : this.myBindingData.eqpmId, eqpmId: this.myBindingData.eqpmId,
// fromDt : this.myBindingData.fromDt, fromDt: this.myBindingData.fromDt,
// toDt : this.myBindingData.toDt toDt: this.myBindingData.toDt
// },
// });
// const dayjs = require('dayjs');
// var newRes = res.map(item=>
// item = {
// ...item,
// totDttmDay : Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH'),
// }
// );
const newRes = [
{
"totDttmDay": "2025-07-10",
"totDttmTime": "14:00~15:00",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 500,
"warnStndVal": 700,
"totVal": 720,
"alrmMsg": "Chamber pressure exceeded warning threshold. Immediate inspection required.",
"alrmKind": "경고"
}, },
{ });
"totDttmDay": "2025-07-10", const dayjs = require('dayjs');
"totDttmTime": "09:00~10:00", var newRes = res.map(item =>
"gdIdxNm": "Etch Depth Guide", item = {
"careStndVal": 60, ...item,
"warnStndVal": 80, totDttmDay: Utility.setFormatDate(item.totDttm, 'YYYY-MM-DD'),
"totVal": 75, totDttmTime: Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1, 'h').format('HH'),
"alrmMsg": "Temperature nearing warning threshold. Monitor closely.",
"alrmKind": "주의"
},
{
"totDttmDay": "2025-07-09",
"totDttmTime": "22:00~23:00",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 300,
"warnStndVal": 400,
"totVal": 290,
"alrmMsg": "Gas flow rate below caution level. Check for leaks or blockages.",
"alrmKind": "주의"
} }
] );
this.setModalGridData({ this.setModalGridData({

View File

@ -234,13 +234,7 @@ export default {
}), }),
InputValue: { InputValue: {
get() { get() {
return [{ return this.myBindingData;
"eqpmId": "EQ001",
"eqpmNm": "Etcher A12",
"gdIdxId": "GD001",
"gdIdxNm": "Etch Depth Guide",
}]
// return this.myBindingData;
} }
}, },
chkDialog() { chkDialog() {
@ -258,7 +252,7 @@ export default {
}, },
async popCheck(val) { async popCheck(val) {
if (val) { if (val) {
// await this.getData(); await this.getData();
this.dialog = true; this.dialog = true;
} else { } else {
this.dialog = false; this.dialog = false;
@ -288,13 +282,13 @@ export default {
}), }),
init() { init() {
// this.gridInit(); this.gridInit();
}, },
closePop() { closePop() {
this.popCheck = false; this.popCheck = false;
}, },
search() { search() {
// this.getData(); this.getData();
}, },
async getData() { async getData() {
var res = await this.postApiReturn({ var res = await this.postApiReturn({

View File

@ -323,58 +323,58 @@ export default {
this.getRowGridData(); this.getRowGridData();
}, },
async getFab() { async getFab() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectFabCodeList', apiKey: 'selectFabCodeList',
// resKey: 'fabCodeLists', resKey: 'fabCodeLists',
// sendParam: {}, sendParam: {},
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList02 = await res.map(item => { this.selectValueList02 = await res.map(item => {
// return { return {
// text: item.eccNm, text: item.eccNm,
// value: item.eccId, value: item.eccId,
// }; };
// }); });
// this.selectValueList02.unshift({ this.selectValueList02.unshift({
// text:"전체", text: "전체",
// value:null value: null
// }); });
// // if(this.pageData.eccId != null && this.pageData.eccId != ''){ // if(this.pageData.eccId != null && this.pageData.eccId != ''){
// // this.selectValue02 = this.pageData.eccId; // this.selectValue02 = this.pageData.eccId;
// // }else if(this.pageData.eccId == null || this.pageData.eccId == ''){ // }else if(this.pageData.eccId == null || this.pageData.eccId == ''){
// this.selectValue02.push(this.selectValueList02[0].value); this.selectValue02.push(this.selectValueList02[0].value);
// // }
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = [];
// } // }
} else {
this.selectValueList02 = [];
this.selectValue02 = [];
}
}, },
async getEqpmGrp() { async getEqpmGrp() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectEqpmGrpCodeList', apiKey: 'selectEqpmGrpCodeList',
// resKey: 'eqpmGrpCodeLists', resKey: 'eqpmGrpCodeLists',
// sendParam: { }, sendParam: {},
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList01 = await res.map(item => { this.selectValueList01 = await res.map(item => {
// return { return {
// text: item.eqpmGrpNm, text: item.eqpmGrpNm,
// value: item.eqpmGrpId, value: item.eqpmGrpId,
// }; };
// }); });
// this.selectValueList01.unshift({ this.selectValueList01.unshift({
// text:"전체", text: "전체",
// value:null value: null
// }); });
// // if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){ // if(this.pageData.eqpmGrpId != null && this.pageData.eqpmGrpId != ''){
// // this.selectValue02 = this.pageData.eqpmGrpId; // this.selectValue02 = this.pageData.eqpmGrpId;
// // }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){ // }else if(this.pageData.eqpmGrpId == null || this.pageData.eqpmGrpId == ''){
// this.selectValue01 = this.selectValueList01[0].value; this.selectValue01 = this.selectValueList01[0].value;
// // }
// } else {
// this.selectValueList01 = [];
// this.selectValue01 = null;
// } // }
} else {
this.selectValueList01 = [];
this.selectValue01 = null;
}
}, },
gridInit() { gridInit() {
// console.log("modalGridParent : ",this.$refs) // console.log("modalGridParent : ",this.$refs)
@ -459,16 +459,16 @@ export default {
}, },
async getRowGridData() { async getRowGridData() {
this.loadGrid = false; this.loadGrid = false;
// var res = await this.postApiReturn({ var res = await this.postApiReturn({
// apiKey: 'selectEqpmPop', apiKey: 'selectEqpmPop',
// resKey: 'eqpmPopData', resKey: 'eqpmPopData',
// sendParam: { sendParam: {
// fabId:this.selectValue02, fabId: this.selectValue02,
// eqpmGrpId:this.selectValue01, eqpmGrpId: this.selectValue01,
// searchWord:this.searchWord, searchWord: this.searchWord,
// eqpmKindId:this.myBindingData.eqpmKindId, eqpmKindId: this.myBindingData.eqpmKindId,
// }, },
// }); });
// const dayjs = require('dayjs'); // const dayjs = require('dayjs');
// var newRes = res.map(item=> // var newRes = res.map(item=>
// item = { // item = {
@ -477,33 +477,33 @@ export default {
// totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH') // totDttmTime : Utility.setFormatDate(item.totDttm, 'HH') + "~" + dayjs(item.totDttm).add(1,'h').format('HH')
// } // }
// ); // );
const res = // const res =
[ // [
{ // {
"fabId": "FAB001", // "fabId": "FAB001",
"fabNm": "Gumi FAB", // "fabNm": "Gumi FAB",
"eqpmId": "EQ001", // "eqpmId": "EQ001",
"eqpmNm": "Etcher A12", // "eqpmNm": "Etcher A12",
"eccId": "ECC001", // "eccId": "ECC001",
"eccNm": "Etch Control Center" // "eccNm": "Etch Control Center"
}, // },
{ // {
"fabId": "FAB002", // "fabId": "FAB002",
"fabNm": "Pyeongtaek FAB", // "fabNm": "Pyeongtaek FAB",
"eqpmId": "EQ002", // "eqpmId": "EQ002",
"eqpmNm": "Deposition B34", // "eqpmNm": "Deposition B34",
"eccId": "ECC002", // "eccId": "ECC002",
"eccNm": "Deposition Control Center" // "eccNm": "Deposition Control Center"
}, // },
{ // {
"fabId": "FAB003", // "fabId": "FAB003",
"fabNm": "Hwaseong FAB", // "fabNm": "Hwaseong FAB",
"eqpmId": "EQ003", // "eqpmId": "EQ003",
"eqpmNm": "CMP C56", // "eqpmNm": "CMP C56",
"eccId": "ECC003", // "eccId": "ECC003",
"eccNm": "CMP Control Center" // "eccNm": "CMP Control Center"
} // }
]; // ];
this.setModalGridData({ this.setModalGridData({
modalKey: this.myModalKey, modalKey: this.myModalKey,
gridKey: this.gridName, gridKey: this.gridName,

View File

@ -1,268 +1,195 @@
<template> <template>
<div> <div>
<!-- <v-btn :ripple="false" @click="dialog = !dialog">경고창</v-btn> --> <!-- <v-btn :ripple="false" @click="dialog = !dialog">경고창</v-btn> -->
<v-dialog <v-dialog v-model="dialog" width="800" overlay-color="#000" overlay-opacity="0.8">
v-model="dialog"
width="700"
overlay-color="#000"
overlay-opacity="0.8"
>
<v-card> <v-card>
<v-toolbar <v-card-title class="px-6 py-4 d-flex align-center justify-space-between">
<span class="custom-title-4">{{ label }}</span>
<a-button icon="close" type="text" @click="dialog = !dialog"></a-button>
</v-card-title>
<!-- <v-toolbar
:color="isDarkMode ? '#2d3355' : '#3f4d7d'" :color="isDarkMode ? '#2d3355' : '#3f4d7d'"
class="py-4 pr-3 pl-5" class="py-4 pr-3 pl-5"
height="auto" height="auto"
> >
<v-toolbar-title>{{ label }}</v-toolbar-title> <v-toolbar-title>{{ label }}</v-toolbar-title>
<!-- <v-btn </v-toolbar> -->
icon
tile
small
:ripple="false"
@click="dialog = !dialog"
:style="{ backgroundColor: isDarkMode ? '#2d3355' : '#3f4d7d' }"
>
<v-icon>mdi-close</v-icon>
</v-btn> -->
</v-toolbar>
<!-- <v-card-title> <!-- <v-card-title>
일정 상세 내용 일정 상세 내용
</v-card-title> --> </v-card-title> -->
<!-- <template v-for="(item, index) in detailList"> --> <!-- <template v-for="(item, index) in detailList"> -->
<template> <template>
<div style="padding : 20px"> <div class="pa-6 pt-0">
<v-row no-gutters class="mb-4">
<v-col :cols="12"> <v-col :cols="12">
<v-row>
<v-col :cols="3">
<v-row class="search-box" align="center" no-gutters>
<label class="search-box-label"> <label class="search-box-label">
<v-icon x-small color="#fb8200" class="mr-1" <v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
>mdi-record-circle</v-icon
>
일정 시작 일정 시작
</label> </label>
</v-row>
</v-col> </v-col>
<v-col :cols="4"> <v-col :cols="6" class="py-0 pr-2">
<!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> --> <!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
<div class="startpicker-container2"> <div class="startpicker-container2">
<v-text-field <v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
id="startpicker2" :class="'v-input__custom'" :hide-details="true" readonly outlined>
ref="startpicker2"
v-model="strtDt"
:class="'v-input__custom'"
:hide-details="true"
readonly
outlined
>
<template #append> <template #append>
<v-icon size="20">$icoCalendar</v-icon> <v-icon size="20">$icoCalendar</v-icon>
</template> </template>
<template #append-outer> <template #append-outer>
<div <div ref="startpicker-container2" id="startpicker-container2"></div>
ref="startpicker-container2"
id="startpicker-container2"
></div>
</template> </template>
</v-text-field> </v-text-field>
</div> </div>
</v-col> </v-col>
<v-col :cols="2"> <v-col :cols="6" class="py-0 pl-2">
<vue-numeric-input <!-- <DatePicker v-model="strtDt" :parentPrgmId="parentPrgmId"/> -->
v-model="strtHh" <div class="startpicker-container2">
:min="0" <v-text-field id="startpicker2" ref="startpicker2" v-model="strtDt"
:max="23" :class="'v-input__custom'" :hide-details="true" readonly outlined>
controls-type="updown" <template #append>
class="v-input__slot" <v-icon size="20">$icoCalendar</v-icon>
width="100%" </template>
align="center" <template #append-outer>
> <div ref="startpicker-container2" id="startpicker-container2"></div>
</template>
</v-text-field>
</div>
</v-col>
<!-- <v-col :cols="2">
<vue-numeric-input v-model="strtHh" :min="0" :max="23" controls-type="updown"
class="v-input__slot" width="100%" align="center">
</vue-numeric-input> </vue-numeric-input>
</v-col> </v-col>
<v-col :cols="1" style="text-align: center;"> <v-col :cols="1" style="text-align: center;">
: :
</v-col> </v-col>
<v-col :cols="2"> <v-col :cols="2">
<vue-numeric-input <vue-numeric-input v-model="strtMm" :min="0" :max="59" controls-type="updown"
v-model="strtMm" class="v-input__slot" width="100%" align="center">
:min="0"
:max="59"
controls-type="updown"
class="v-input__slot"
width="100%"
align="center"
>
</vue-numeric-input> </vue-numeric-input>
</v-col> </v-col> -->
</v-row> </v-row>
<v-row> <v-row no-gutters class="mb-4">
<v-col :cols="3"> <v-col :cols="12">
<v-row class="search-box" align="center" no-gutters>
<label class="search-box-label"> <label class="search-box-label">
<v-icon x-small color="#fb8200" class="mr-1" <v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
>mdi-record-circle</v-icon
>
일정 종료 일정 종료
</label> </label>
</v-row>
</v-col> </v-col>
<v-col :cols="4"> <v-col :cols="6" class="pr-2">
<!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> --> <!-- <DatePicker v-model="endDt" :parentPrgmId="parentPrgmId"/> -->
<div class="startpicker-container3"> <div class="startpicker-container3">
<v-text-field <v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
id="startpicker3" :class="'v-input__custom'" :hide-details="true" readonly outlined>
ref="startpicker3"
v-model="endDt"
:class="'v-input__custom'"
:hide-details="true"
readonly
outlined
>
<template #append> <template #append>
<v-icon size="20">$icoCalendar</v-icon> <v-icon size="20">$icoCalendar</v-icon>
</template> </template>
<template #append-outer> <template #append-outer>
<div <div ref="startpicker-container3" id="startpicker-container3"></div>
ref="startpicker-container3"
id="startpicker-container3"
></div>
</template> </template>
</v-text-field> </v-text-field>
</div> </div>
</v-col> </v-col>
<v-col :cols="2"> <v-col :cols="6" class="pl-2">
<vue-numeric-input <div class="startpicker-container3">
v-model="endHh" <v-text-field id="startpicker3" ref="startpicker3" v-model="endDt"
:min="0" :class="'v-input__custom'" :hide-details="true" readonly outlined>
:max="23" <template #append>
controls-type="updown" <v-icon size="20">$icoCalendar</v-icon>
class="v-input__slot" </template>
width="100%" <template #append-outer>
align="center" <div ref="startpicker-container3" id="startpicker-container3"></div>
> </template>
</v-text-field>
</div>
</v-col>
<!-- <v-col :cols="2">
<vue-numeric-input v-model="endHh" :min="0" :max="23" controls-type="updown"
class="v-input__slot" width="100%" align="center">
</vue-numeric-input> </vue-numeric-input>
</v-col> </v-col>
<v-col :cols="1" style="text-align: center;"> <v-col :cols="1" style="text-align: center;">
: :
</v-col> </v-col>
<v-col :cols="2"> <v-col :cols="2">
<vue-numeric-input <vue-numeric-input v-model="endMm" :min="0" :max="59" controls-type="updown"
v-model="endMm" class="v-input__slot" width="100%" align="center">
:min="0"
:max="59"
controls-type="updown"
class="v-input__slot"
width="100%"
align="center"
>
</vue-numeric-input> </vue-numeric-input>
</v-col> </v-col> -->
</v-row> </v-row>
<v-row> <v-row no-gutters class="mb-4">
<v-col :cols="3"> <v-col :cols="12">
<v-row class="search-box" align="center" no-gutters>
<label class="search-box-label"> <label class="search-box-label">
<v-icon x-small color="#fb8200" class="mr-1" <v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
>mdi-record-circle</v-icon
>
일정 제목 일정 제목
</label> </label>
</v-row>
</v-col> </v-col>
<v-col :cols="9"> <v-col :cols="12" class="py-0">
<v-text-field <v-text-field v-model="planTitle" class="v-input__custom" outlined
v-model="planTitle" :hide-details="true"></v-text-field>
class="v-input__custom"
outlined
:hide-details="true"
></v-text-field>
</v-col> </v-col>
</v-row> </v-row>
<v-row> <v-row no-gutters class="mb-4">
<v-col :cols="3"> <v-col :cols="12">
<v-row class="search-box" align="center" no-gutters>
<label class="search-box-label"> <label class="search-box-label">
<v-icon x-small color="#fb8200" class="mr-1" <v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
>mdi-record-circle</v-icon
>
일정 상세 내용 일정 상세 내용
</label> </label>
</v-row>
</v-col> </v-col>
<v-col :cols="9"> <v-col :cols="12" class="py-0">
<v-textarea <v-textarea v-model="planCntn" class="v-input__custom" outlined :hide-details="true"
v-model="planCntn" :maxlength="1000"></v-textarea>
class="v-input__custom"
outlined
:hide-details="true"
:maxlength="1000"
></v-textarea>
</v-col> </v-col>
</v-row> </v-row>
<v-row> <v-row no-gutters class="mb-4">
<v-col :cols="3"> <v-col :cols="12">
<v-row class="search-box" align="center" no-gutters> <label class="search-box-label">
<v-icon x-small color="#fb8200" class="mr-1" <v-icon small :class="['mr-1', 'icon-orange']">$icoBulletPoint</v-icon>
>mdi-record-circle</v-icon
>
표시 색상 표시 색상
</v-row> </label>
</v-col> </v-col>
<v-col :cols="1"> <v-col :cols="6">
<div <div class="d-flex calendar-color" style="gap:16px">
id="redDiv"
class="colPk redBg" <div id="redDiv" class="colPk redBg" @click="colorClick('red')">
@click="colorClick('red')" <div class="inner-color"></div>
></div> </div>
</v-col>
<v-col :cols="1"> <div id="blueDiv" class="colPk blueBg" @click="colorClick('blue')">
<div <div class="inner-color"></div>
id="blueDiv" </div>
class="colPk blueBg"
@click="colorClick('blue')"
></div> <div id="pupleDiv" class="colPk pupleBg" @click="colorClick('puple')">
</v-col> <div class="inner-color"></div>
<v-col :cols="1"> </div>
<div
id="pupleDiv"
class="colPk pupleBg" <div id="greenDiv" class="colPk greenBg" @click="colorClick('green')">
@click="colorClick('puple')" <div class="inner-color"></div>
></div> </div>
</v-col>
<v-col :cols="1">
<div <div id="orangeDiv" class="colPk orangeBg" @click="colorClick('orange')">
id="greenDiv" <div class="inner-color"></div>
class="colPk greenBg" </div>
@click="colorClick('green')"
></div>
</v-col> <div id="pinkDiv" class="colPk pinkBg" @click="colorClick('pink')">
<v-col :cols="1"> <div class="inner-color"></div>
<div </div>
id="orangeDiv"
class="colPk orangeBg" </div>
@click="colorClick('orange')"
></div>
</v-col>
<v-col :cols="1">
<div
id="pinkDiv"
class="colPk pinkBg"
@click="colorClick('pink')"
></div>
</v-col> </v-col>
</v-row> </v-row>
</v-col>
</div> </div>
</template> </template>
<v-card-actions class="justify-end"> <v-card-actions class="justify-end">
<v-btn :ripple="false" @click="btnAction('save')">저장</v-btn> <a-button :ripple="false" @click="btnAction('save')" class="mr-2">저장</a-button>
<v-btn <a-button v-show="popUpAction === 'update'" type="danger" ghost danger :ripple="false"
v-show="popUpAction === 'update'" @click="btnAction('delete')" class="mr-2">삭제</a-button>
:ripple="false" <a-button :ripple="false" type="primary" @click="btnAction('close')" class="mr-2">닫기</a-button>
@click="btnAction('delete')"
>삭제</v-btn
>
<v-btn :ripple="false" @click="btnAction('close')">닫기</v-btn>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-dialog> </v-dialog>
@ -786,46 +713,80 @@ export default {
.v-card__actions { .v-card__actions {
padding-bottom: 30px !important; padding-bottom: 30px !important;
} }
.inner-color {
width: 100%;
height: 100%;
border-radius: 4px;
}
.colPk { .colPk {
width: 25px; width: 28px;
height: 25px; height: 28px;
text-align: center; text-align: center;
border-radius: 5px 5px; border-radius: 6px 6px;
cursor: pointer; cursor: pointer;
padding: 4px
} }
.colPkSelect { .colPkSelect {
border: 2px solid; border: 1px solid #00000073;
} }
.redBg {
.redBg .inner-color {
background-color: rgba(229, 62, 62, var(--bg-opacity)); background-color: rgba(229, 62, 62, var(--bg-opacity));
background-color: #e53e3e; background-color: #FF4D4F;
} }
.blueBg {
.blueBg .inner-color {
background-color: rgba(66, 153, 225, var(--bg-opacity)); background-color: rgba(66, 153, 225, var(--bg-opacity));
background-color: #4299e1; background-color: #597EF7;
} }
.pupleBg {
.pupleBg .inner-color {
background-color: rgba(102, 126, 234, var(--bg-opacity)); background-color: rgba(102, 126, 234, var(--bg-opacity));
background-color: #667eea; background-color: #9254DE;
} }
.greenBg {
.greenBg .inner-color {
background-color: rgba(56, 178, 172, var(--bg-opacity)); background-color: rgba(56, 178, 172, var(--bg-opacity));
background-color: #38b2ac; background-color: #73D13D;
} }
.orangeBg {
.orangeBg .inner-color {
background-color: rgba(237, 137, 54, var(--bg-opacity)); background-color: rgba(237, 137, 54, var(--bg-opacity));
background-color: #ed8936; background-color: #FFA940;
} }
.pinkBg {
.pinkBg .inner-color {
background-color: rgba(237, 100, 166, var(--bg-opacity)); background-color: rgba(237, 100, 166, var(--bg-opacity));
background-color: #ed64a6; background-color: #F759AB;
}
}
.v-input__custom {
&.half {
width: calc(50% - 20px);
}
}
::v-deep {
.tui-timepicker-row {
display: flex;
justify-content: space-around;
background-color: #edf4fc;
.tui-timepicker-column.tui-timepicker-colon {
color: #000 !important;
} }
} }
.startpicker-container2 { .startpicker-container2 {
display: flex;
align-items: center;
justify-content: space-between;
position: relative; position: relative;
.v-input { .v-input {
@ -844,10 +805,8 @@ export default {
} }
} }
.startpicker-container3 { .startpicker-container3 {
display: flex;
align-items: center;
justify-content: space-between;
position: relative; position: relative;
.v-input { .v-input {
@ -865,21 +824,5 @@ export default {
} }
} }
} }
.v-input__custom {
flex: 0 0 auto;
&.half {
width: calc(50% - 20px);
}
}
::v-deep {
.tui-timepicker-row {
display: flex;
justify-content: space-around;
background-color: #edf4fc;
.tui-timepicker-column.tui-timepicker-colon {
color: #000 !important;
}
}
} }
</style> </style>

View File

@ -1,6 +1,6 @@
<template> <template>
<div> <div>
<v-row> <v-row class="mt-3">
<v-col :cols="6" class="py-2 pr-4"> <v-col :cols="6" class="py-2 pr-4">
<InputText ref="effcIdxId" :parentPrgmId="parentPrgmId" label="효율지표 ID" valueNm="effcIdxId" <InputText ref="effcIdxId" :parentPrgmId="parentPrgmId" label="효율지표 ID" valueNm="effcIdxId"
:required="false" :readonly="true" :textCols="12" :labelCols="12" /> :required="false" :readonly="true" :textCols="12" :labelCols="12" />
@ -15,7 +15,7 @@
@update:propsValue="selectValue01 = $event" /> @update:propsValue="selectValue01 = $event" />
</v-col> </v-col>
</v-row> </v-row>
<div class="d-flex align-center justify-space-between pa-5"> <div class="d-flex align-center justify-space-between pt-3 py-2">
<v-card-title class="pa-0 custom-title-4">지표연결정보</v-card-title> <v-card-title class="pa-0 custom-title-4">지표연결정보</v-card-title>
<Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" /> <Buttons :parentPrgmId="parentPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
<component v-show="false" ref="EgrpPysclQtyPop" :is="'EgrpPysclQtyPop'" :parentPrgmId="parentPrgmId" <component v-show="false" ref="EgrpPysclQtyPop" :is="'EgrpPysclQtyPop'" :parentPrgmId="parentPrgmId"
@ -27,7 +27,7 @@
<div ref="gridParent" style="height: calc(35vh);"> <div ref="gridParent" style="height: calc(35vh);">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="parentPrgmId" @getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo" :parentPrgmId="parentPrgmId" @getRowsData="getRowData" :innerTabGridInfo="innerTabGridInfo"
:dataPath="sampleDataPath" /> />
</div> </div>
</div> </div>
</div> </div>
@ -67,58 +67,57 @@ export default {
}, },
data() { data() {
return { return {
loadGrid: true, loadGrid: false,
gridName: 'effcInfoGrid', gridName: 'effcInfoGrid',
sampleDataPath: { // "effcInfoGrid": {
"effcInfoGrid": { // data:
data: // [
[ // {
{ // "eqpmKindId": "펌프",
"eqpmKindId": "펌프", // "eqpmGrpId": "냉각수 시스템",
"eqpmGrpId": "냉각수 시스템", // "totMethNm": "평균값"
"totMethNm": "평균값" // },
}, // {
{ // "eqpmKindId": "모터",
"eqpmKindId": "모터", // "eqpmGrpId": "공기압 시스템",
"eqpmGrpId": "공기압 시스템", // "totMethNm": "최대값"
"totMethNm": "최대값" // },
}, // {
{ // "eqpmKindId": "밸브",
"eqpmKindId": "밸브", // "eqpmGrpId": "스팀 공급",
"eqpmGrpId": "스팀 공급", // "totMethNm": "합계"
"totMethNm": "합계" // },
}, // {
{ // "eqpmKindId": "센서",
"eqpmKindId": "센서", // "eqpmGrpId": "온도 제어",
"eqpmGrpId": "온도 제어", // "totMethNm": "최소값"
"totMethNm": "최소값" // },
}, // {
{ // "eqpmKindId": "컴프레서",
"eqpmKindId": "컴프레서", // "eqpmGrpId": "에어 시스템",
"eqpmGrpId": "에어 시스템", // "totMethNm": "중앙값"
"totMethNm": "중앙값" // }
} // ]
]
, // ,
column: [ // column: [
{ // {
header: '대상설비종류', // header: '대상설비종류',
name: 'eqpmKindId', // name: 'eqpmKindId',
}, // },
{ // {
header: '대상설비그룹', // header: '대상설비그룹',
name: 'eqpmGrpId', // name: 'eqpmGrpId',
}, // },
{ header: '집계방법', name: 'totMethNm', align: 'center' }, // { header: '집계방법', name: 'totMethNm', align: 'center' },
] // ]
} // }
}, // },
itemList: [], itemList: [],
tagTpList: [], tagTpList: [],
// detailList: myDetail, // detailList: myDetail,

View File

@ -453,17 +453,15 @@ export default {
this.activeTree.push(ov); this.activeTree.push(ov);
} else { } else {
this.myPrgmId = nv; this.myPrgmId = nv;
console.log("menu:", this.menuData);
if (this.menuData[nv].url) { if (this.menuData[nv].url) {
const menuUrl = this.menuData[nv].url; const menuUrl = this.menuData[nv].url;
const menuId = this.menuData[nv].menuId; const menuId = this.menuData[nv].menuId;
const isCommMenu = menuUrl.indexOf("comm/"); const isCommMenu = menuUrl.indexOf('comm/');
const isEmsMenu = menuUrl.indexOf("ems/"); const isEmsMenu = menuUrl.indexOf('ems/');
const isCmmsMenu = menuUrl.indexOf("cmms/"); const isCmmsMenu = menuUrl.indexOf('cmms/');
// console.log('activeTree...'); // console.log('activeTree...');
console.log(isEmsMenu);
if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) { if (isCommMenu > -1 || isEmsMenu > -1 || isCmmsMenu > -1) {
// console.log('activeTree if stmt1'); // console.log('activeTree if stmt1');
@ -472,18 +470,9 @@ export default {
// console.log('if isLoading stmt1'); // console.log('if isLoading stmt1');
// return; // return;
// } // }
console.log("this:", this.menuData[nv].url);
this.$router.push({ this.$router.push({
path: `/${this.menuData[nv].url}?prgmId=${nv}`, path: `${this.menuData[nv].url}?prgmId=${nv}`,
}); });
// this.$router.replace("/").then(() => {
// alert("hihi");
// this.$router.push({
// path: `${this.menuData[nv].url}?prgmId=${nv}`,
// });
// });
// this.$router.beforeEach((to, from, next) => { // this.$router.beforeEach((to, from, next) => {
// if(_this.isLoading == true){ // if(_this.isLoading == true){
// next(false); // next(false);
@ -509,12 +498,14 @@ export default {
// return; // return;
// } // }
this.$refs.routerTab.openIframe( this.$refs.routerTab.openIframe(
encodeURI(`http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`), encodeURI(
this.menuData[nv].menuNm `http://localhost:9999${this.menuData[nv].url}?prgmId=${nv}`,
),
this.menuData[nv].menuNm,
); );
} }
this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`); this.$axios.get(`${this.menuData[nv].url}?$menuId=${menuId}`);
} else alert("지정된 페이지 경로가 없습니다."); } else alert('지정된 페이지 경로가 없습니다.');
} }
} }
}, },

View File

@ -2,7 +2,8 @@ import $cookie from 'vue-cookie';
export default async function({ store, route, redirect }) { export default async function({ store, route, redirect }) {
// const menuId = route.query.menuId; // const menuId = route.query.menuId;
const FEMS_SESSION = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTYiLCJyb2xlIjoiYWRtaW4ifQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'; // const FEMS_SESSION = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTYiLCJyb2xlIjoiYWRtaW4ifQ.sflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c';
const FEMS_SESSION = $cookie.get('FEMS_SESSION');
if (!FEMS_SESSION) { if (!FEMS_SESSION) {
if (route.name !== 'login') redirect('/login'); if (route.name !== 'login') redirect('/login');
} else { } else {

View File

@ -61,15 +61,15 @@ module.exports = {
styleResources: { styleResources: {
scss: ['./assets/scss/*.scss'], scss: ['./assets/scss/*.scss'],
}, },
// proxy: { proxy: {
// "/api/": { "/api/": {
// target: "http://0.0.0.0:9999/", target: "http://0.0.0.0:9999/",
// //target: "http://192.168.0.152:8082/", //target: "http://192.168.0.152:8082/",
// pathRewrite: { pathRewrite: {
// "^/api/": "" "^/api/": ""
// } }
// } }
// }, },
axios: { axios: {
//baseURL: "http://dotest.kfems.kr:9997", //baseURL: "http://dotest.kfems.kr:9997",
proxy: true, proxy: true,

View File

@ -23,7 +23,7 @@
</v-row> </v-row>
<v-row ref="contents" class="mt-4"> <v-row ref="contents" class="mt-4">
<v-col :cols="6" class="h100"> <v-col :cols="6" class="h100 pr-2">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4"> <div class="d-flex align-center justify-space-between pa-4">
<v-card-title class="pa-0">메뉴 리스트</v-card-title> <v-card-title class="pa-0">메뉴 리스트</v-card-title>
@ -39,7 +39,7 @@
</div> </div>
</v-card> </v-card>
</v-col> </v-col>
<v-col :cols="6" class="h100"> <v-col :cols="6" class="h100 pl-3">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4"> <div class="d-flex align-center justify-space-between pa-4">
<v-card-title class="pa-0">메뉴 상세</v-card-title> <v-card-title class="pa-0">메뉴 상세</v-card-title>
@ -480,6 +480,7 @@ const myDetail = [
list: 'sysDivCdList', list: 'sysDivCdList',
itemText: 'commCdNm', itemText: 'commCdNm',
itemValue: 'commCd', itemValue: 'commCd',
iconShow: true,
}, },
{ {
type: 'CheckBox', type: 'CheckBox',

View File

@ -3,13 +3,14 @@
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row algin="center" no-gutters> <v-row algin="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<InputText <InputText
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
label="역할ID" label="역할ID"
valueNm="roleId" valueNm="roleId"
:searchOption="true" :searchOption="true"
customClass="input-large"
/> />
</v-col> </v-col>
<v-col :cols="3"> <v-col :cols="3">
@ -18,17 +19,19 @@
label="역할명" label="역할명"
valueNm="roleNm" valueNm="roleNm"
:searchOption="true" :searchOption="true"
customClass="input-large"
/> />
</v-col> </v-col>
<v-col :cols="6" class="text-right"> <v-col :cols="6" class="text-right">
<!-- <v-btn @click="test = !test">WWW</v-btn> --> <!-- <v-btn @click="test = !test">WWW</v-btn> -->
<BtnSearch /> <BtnSearch size="large" />
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents">
<v-row ref="contents" style="height: 100vh;">
<v-col cols="12" lg="2" class="h100"> <v-col cols="12" lg="2" class="h100">
<v-card> <v-card>
<v-card-title> <v-card-title>

View File

@ -14,7 +14,7 @@
:customClass="'input-large'" /> :customClass="'input-large'" />
</v-col> </v-col>
<v-col :cols="2.5"> <v-col :cols="2.5">
<!-- <component <component
:is="'selectCodeList'" :is="'selectCodeList'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:label="'배치 실행 구분'" :label="'배치 실행 구분'"
@ -22,17 +22,17 @@
:sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }" :sendParam="{ commGrpCd: 'CO_BATCH_EXEC_TP', useFg: '1' }"
:addAll="true" :addAll="true"
:customClass="'select-large'" :customClass="'select-large'"
/> --> />
</v-col> </v-col>
<v-col :cols="2.5"> <v-col :cols="2.5">
<!-- <component <component
:is="'selectCodeList'" :is="'selectCodeList'"
:parentPrgmId="myPrgmId" :parentPrgmId="myPrgmId"
:label="'사용여부'" :label="'사용여부'"
:dataKey="'searchUseFg'" :dataKey="'searchUseFg'"
:sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }" :sendParam="{ commGrpCd: 'CO_USEFG', useFg: '1' }"
:customClass="'select-large'" :customClass="'select-large'"
/> --> />
</v-col> </v-col>
<BtnSearch size="large" /> <BtnSearch size="large" />
@ -41,9 +41,9 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents"> <v-row ref="contents" class="mt-4">
<!-- 배치 리스트 --> <!-- 배치 리스트 -->
<v-col :cols="6" class="h100"> <v-col :cols="6" class="h100 pr-2">
<v-card class="pb-5"> <v-card class="pb-5">
<div class="d-flex align-center justify-space-between pa-4"> <div class="d-flex align-center justify-space-between pa-4">
<!-- <v-card-title> <!-- <v-card-title>
@ -64,7 +64,7 @@
</v-card> </v-card>
</v-col> </v-col>
<!-- 배치 상세 --> <!-- 배치 상세 -->
<v-col :cols="6" class="h100"> <v-col :cols="6" class="h100 pl-3">
<v-card class="pd-y-20 h100"> <v-card class="pd-y-20 h100">
<v-card-title class="d-flex justify-space-between align-end pa-4"> <v-card-title class="d-flex justify-space-between align-end pa-4">
<span class="tit ft-size_20 ft-weight_600">배치 상세</span> <span class="tit ft-size_20 ft-weight_600">배치 상세</span>

View File

@ -3,65 +3,45 @@
<v-row ref="searchFilter"> <v-row ref="searchFilter">
<v-col :cols="12"> <v-col :cols="12">
<v-card class="searchFilter"> <v-card class="searchFilter">
<v-row align="center" no-gutters> <v-row align="end" no-gutters>
<v-col cols="2"> <v-col cols="3">
<component <component :is="'SelectBlocMstr'" :parentPrgmId="myPrgmId" :sendParam="{ comId }"
:is="'SelectBlocMstr'" :labelCols="12" :textCols="12" :customClass="'select-large'" />
:parentPrgmId="myPrgmId"
:sendParam="{ comId }"
/>
</v-col> </v-col>
<v-col cols="3"> <v-col cols="3">
<!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> --> <!-- <component :is="'SelectDateSolo'" :parentPrgmId="myPrgmId" /> -->
<DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" /> <DatePicker :parentPrgmId="myPrgmId" :label="'조회연월'" />
</v-col> </v-col>
<v-col cols="7" class="text-right"> <v-col cols="6" class="text-right">
<v-btn :ripple="false" @click="search()">조회</v-btn> <BtnSearch @click="search()" size="large" />
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
</v-col> </v-col>
</v-row> </v-row>
<v-row ref="contents" id="CalendarMngContent"> <v-row ref="contents" id="CalendarMngContent" class="mt-4">
<v-col cols="12" lg="4" class="h100"> <v-col cols="12" lg="4" class="h100 pr-2">
<v-card class="w100"> <v-card class="w100">
<v-card-title class="d-flex justify-space-between align-center"> <v-card-title class="d-flex justify-space-between align-center">
<span class="custom-title-4">캘린더 리스트</span> <span class="custom-title-4">캘린더 리스트</span>
<Buttons <Buttons :parentPrgmId="myPrgmId" :bindingData="gridName" :btnActionsFnc="btnActions" />
:parentPrgmId="myPrgmId"
:bindingData="gridName"
:btnActionsFnc="btnActions"
/>
</v-card-title> </v-card-title>
<v-card-actions <v-card-actions class="pt-0 px-5 pb-5" :style="{ height: 'calc(100% - 72.56px)' }">
class="pt-0 px-5 pb-5"
:style="{ height: 'calc(100% - 72.56px)' }"
>
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component <component class="w100" :ref="gridName + myPrgmId" :is="loadGrid ? 'Grid' : null"
class="w100" :gridName="gridName" :parentPrgmId="myPrgmId" :editorGrid="true"
:ref="gridName + myPrgmId" @getRowsData="getRowData" :dataPath="dataPathExample" />
:is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:editorGrid="true"
@getRowsData="getRowData"
/>
</div> </div>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
<v-col cols="12" lg="8" class="h100"> <v-col cols="12" lg="8" class="h100 pl-3">
<v-card> <v-card>
<v-card-title> <v-card-title>
<span class="custom-title-4">캘린더 미리보기</span> <span class="custom-title-4">캘린더 미리보기</span>
</v-card-title> </v-card-title>
<v-card-actions class="px-5" :style="{ height: 'calc(100% - 62px)' }"> <v-card-actions class="px-5 d-block" :style="{ height: 'calc(100% - 62px)' }">
<Calendar <Calendar :parentPrgmId="myPrgmId" :gridName="gridName" :headerVisible="false" />
:parentPrgmId="myPrgmId"
:gridName="gridName"
:headerVisible="false"
/>
</v-card-actions> </v-card-actions>
</v-card> </v-card>
</v-col> </v-col>
@ -75,6 +55,7 @@ import { mapState, mapMutations, mapActions } from 'vuex';
import Utility from '~/plugins/utility'; import Utility from '~/plugins/utility';
import Grid from '~/components/common/Grid'; import Grid from '~/components/common/Grid';
import Buttons from '~/components/common/button/Buttons'; import Buttons from '~/components/common/button/Buttons';
import BtnSearch from '~/components/common/button/BtnSearch';
import SelectBlocMstr from '@/components/common/select/SelectBlocMstr'; import SelectBlocMstr from '@/components/common/select/SelectBlocMstr';
// import SelectDateSolo from "@/components/common/select/SelectDateSolo"; // import SelectDateSolo from "@/components/common/select/SelectDateSolo";
import InputText from '@/components/common/input/InputText'; import InputText from '@/components/common/input/InputText';
@ -107,12 +88,87 @@ export default {
InputText, InputText,
Calendar, Calendar,
DatePicker, DatePicker,
BtnSearch
}, },
data() { data() {
return { return {
myPrgmId: myPrgmId, myPrgmId: myPrgmId,
gridName: 'rowGrid', gridName: 'rowGrid',
loadGrid: false, loadGrid: true,
dataPathExample: {
"rowGrid": {
data: [
{
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-23",
"dtNm": "수요일",
"dt": "2025-07-21",
"dtNm": "월요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-22",
"dtNm": "화요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-24",
"dtNm": "목요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-25",
"dtNm": "금요일",
"hldyFg": "평일",
"hldyNm": ""
},
{
"dt": "2025-07-26",
"dtNm": "토요일",
"hldyFg": "주말",
"hldyNm": ""
},
{
"dt": "2025-07-27",
"dtNm": "일요일",
"hldyFg": "휴일",
"hldyNm": "정기휴일"
}
],
column: [
{
header: '일자',
name: 'dt',
align: 'center',
// formatter({ value }) {
// return value.split(' ')[0];
// },
},
{
header: '요일',
name: 'dtNm',
align: 'center',
// formatter({ value }) {
// return value + '요일';
// },
},
{
header: '구분',
name: 'hldyFg',
align: 'center',
essential: true,
},
{ header: '휴일명', name: 'hldyNm', editor: 'text' },
],
}
},
rowKey: null, rowKey: null,
edtingFinishFlag: 'Y', edtingFinishFlag: 'Y',
}; };
@ -185,16 +241,16 @@ export default {
await this.gridInit(); await this.gridInit();
}, },
async search() { async search() {
await this.getRowGridData(); // await this.getRowGridData();
}, },
async gridInit() { async gridInit() {
const gridHeight = this.$refs.gridParent.offsetHeight - 30; // const gridHeight = this.$refs.gridParent.offsetHeight - 30;
this.setGridOption({ // this.setGridOption({
gridKey: this.gridName, // gridKey: this.gridName,
value: Object.assign(Utility.defaultGridOption(gridHeight), { // value: Object.assign(Utility.defaultGridOption(gridHeight), {
scrollX: false, // scrollX: false,
}), // }),
}); // });
// this.getRowGridData(); // this.getRowGridData();
}, },
@ -294,86 +350,86 @@ export default {
this.loadGrid = false; this.loadGrid = false;
let res = await this.postApiReturn({ // let res = await this.postApiReturn({
apiKey: 'selectWorkCald', // apiKey: 'selectWorkCald',
resKey: 'workcaldData', // resKey: 'workcaldData',
sendParam: { // sendParam: {
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId, // blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
yymm: this.chkFromDt, // yymm: this.chkFromDt,
comId: this.comId, // comId: this.comId,
}, // },
}); // });
let res2 = await this.postApiReturn({ // let res2 = await this.postApiReturn({
apiKey: 'selectWorkCaldDetl', // apiKey: 'selectWorkCaldDetl',
resKey: 'workcaldDetlData', // resKey: 'workcaldDetlData',
sendParam: { // sendParam: {
blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId, // blocId: this.pageData.blocMstrList[this.chkBlocCd].blocId,
yymm: this.chkFromDt, // yymm: this.chkFromDt,
comId: this.comId, // comId: this.comId,
}, // },
}); // });
for (var i = 0; i < res2.length; i++) { // for (var i = 0; i < res2.length; i++) {
if ( // if (
!( // !(
res2[i].hldyNm == null || // res2[i].hldyNm == null ||
res2[i].hldyNm == '토요일' || // res2[i].hldyNm == '토요일' ||
res2[i].hldyNm == '일요일' // res2[i].hldyNm == '일요일'
) // )
) { // ) {
for (var j = i + 1; j < res2.length; j++) { // for (var j = i + 1; j < res2.length; j++) {
if (res2[i].hldyNm == res2[j].hldyNm) { // if (res2[i].hldyNm == res2[j].hldyNm) {
res2[i].hldyNm = ''; // res2[i].hldyNm = '';
} // }
} // }
} // }
} // }
res = res.map(item => { // res = res.map(item => {
const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD // const dt = this.$dayjs(item.dt.split(' ')[0]); // YYYY-MM-DD
const dtNm = dt.format('ddd'); // 요일 // const dtNm = dt.format('ddd'); // 요일
const newItem = { // const newItem = {
...item, // ...item,
dtNm: dtNm, // dtNm: dtNm,
hldyNm: item.hldyNm ? item.hldyNm : '', // hldyNm: item.hldyNm ? item.hldyNm : '',
rowStat: null, // rowStat: null,
}; // };
return newItem; // return newItem;
}); // });
this.loadGrid = true; // this.loadGrid = true;
this.setPageData({ isFind: false }); // this.setPageData({ isFind: false });
this.setGridColumn({ // this.setGridColumn({
gridKey: this.gridName, // gridKey: this.gridName,
value: myColumns, // value: myColumns,
}); // });
this.setGridData({ // this.setGridData({
gridKey: this.gridName, // gridKey: this.gridName,
value: res, // value: res,
}); // });
this.setPageData({ planData: res2 }); // this.setPageData({ planData: res2 });
// 첫번째 row 선택상태 // // 첫번째 row 선택상태
this.$nextTick(() => { // this.$nextTick(() => {
this.$refs[this.gridName + this.myPrgmId].focus({ // this.$refs[this.gridName + this.myPrgmId].focus({
//rowKey: 0, // //rowKey: 0,
rowKey: // rowKey:
this.pageData.rowGridSelectKey == '' || // this.pageData.rowGridSelectKey == '' ||
this.pageData.rowGridSelectKey == null // this.pageData.rowGridSelectKey == null
? 0 // ? 0
: this.pageData.rowGridSelectKey == // : this.pageData.rowGridSelectKey ==
this.$refs[this.gridName + this.myPrgmId].getData().length - 1 // this.$refs[this.gridName + this.myPrgmId].getData().length - 1
? this.pageData.rowGridSelectKey // ? this.pageData.rowGridSelectKey
: 0, // : 0,
columnName: 'dt', // columnName: 'dt',
setScroll: true, // setScroll: true,
}); // });
this.setPageData({ isFind: false }); // this.setPageData({ isFind: false });
}); // });
}, },
async getRowData(data, gridName) { async getRowData(data, gridName) {
this.setGridSelectData({ this.setGridSelectData({
@ -488,6 +544,7 @@ const defaultData = {
.selectbox:focus { .selectbox:focus {
outline: none; outline: none;
} }
.calendarOption { .calendarOption {
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
@ -501,20 +558,26 @@ select.selectbox {
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
width: 100%; width: 100%;
height: 100%; /* 높이 초기화 */ height: 100%;
/* 높이 초기화 */
padding: 0; padding: 0;
margin: 0; margin: 0;
line-height: normal; /* line-height 초기화 */ line-height: normal;
font-family: inherit; /* 폰트 상속 */ /* line-height 초기화 */
font-family: inherit;
/* 폰트 상속 */
border: 0; border: 0;
// opacity: 0; /* 숨기기 */ // opacity: 0; /* 숨기기 */
// filter:alpha(opacity=0); /* IE8 숨기기 */ // filter:alpha(opacity=0); /* IE8 숨기기 */
// -webkit-appearance: none; /* 네이티브 외형 감추기 */ // -webkit-appearance: none; /* 네이티브 외형 감추기 */
// -moz-appearance: none; // -moz-appearance: none;
// appearance: none; // appearance: none;
opacity: 1; /* 숨기기 */ opacity: 1;
filter: alpha(opacity=1); /* IE8 숨기기 */ /* 숨기기 */
-webkit-appearance: auto; /* 네이티브 외형 감추기 */ filter: alpha(opacity=1);
/* IE8 숨기기 */
-webkit-appearance: auto;
/* 네이티브 외형 감추기 */
-moz-appearance: auto; -moz-appearance: auto;
appearance: auto; appearance: auto;
} }

View File

@ -1,107 +1,86 @@
<template> <template>
<div class="l-layout"> <div class="l-layout">
<!-- 리스트 페이지 시작 --> <!-- 리스트 페이지 시작 -->
<div v-if="pageActionFlag == 'list'" class="h100"> <div v-if="pageActionFlag == 'list'" class="h1001">
<v-card class="" >
<div class="pa-5">
<v-row align="center" no-gutters > <v-row align="center" no-gutters >
<v-col :cols="12"> <v-col :cols="12" class="d-flex align-center justify-space-between">
<v-card> <v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
<div class="d-flex align-center justify-space-between pa-5">
<v-card-title class="pa-0">공지사항</v-card-title>
<div class="d-flex align-center"> <div class="d-flex align-center">
<!-- <v-btn @click="listPageButtonGroupClickEvent('view')" :ripple="false" class="mr-1">상세보기</v-btn> --> <!-- <v-btn @click="listPageButtonGroupClickEvent('view')" :ripple="false" class="mr-1">상세보기</v-btn> -->
<a-button type="primary" size="large" @click="listPageButtonGroupClickEvent('write')" :ripple="false" <a-button type="primary" size="large" @click="listPageButtonGroupClickEvent('write')" :ripple="false"
icon="edit" class="mr-1">작성</a-button> icon="edit" class="mr-1">작성</a-button>
<!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> --> <!-- <v-btn @click="listPageButtonGroupClickEvent('delete')" :ripple="false">삭제</v-btn> -->
</div> </div>
</div>
</v-card>
</v-col> </v-col>
</v-row> <v-col :cols="12" ref="contents" class="mt-5">
<v-row ref="contents">
<v-col :cols="12">
<v-card class="pa-5">
<div ref="gridParent" class="h100 px-50"> <div ref="gridParent" class="h100 px-50">
<component :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId" <component :is="loadGrid ? 'Grid' : null" :gridName="gridName" :parentPrgmId="myPrgmId"
ref="noticeMngGrid" @getRowsData="getRowData" :dataPath="dataPathMock" /> ref="noticeMngGrid" @getRowsData="getRowData" :dataPath="dataPathMock" />
</div> </div>
<!-- <div class="h100 W100 px-50" style="min-height:calc(100% - 70px)">
</div> -->
</v-card>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>
</v-card>
</div>
<!-- 리스트 페이지 --> <!-- 리스트 페이지 -->
<!-- 상세보기 페이지 시작 --> <!-- 상세보기 페이지 시작 -->
<div v-if="pageActionFlag == 'view'" class="h100"> <div v-if="pageActionFlag == 'view'" class="h1001">
<v-card> <v-card>
<v-row class="pa-5"> <v-row class="pa-5">
<v-col :cols="12" class="d-flex align-center justify-space-between "> <v-col :cols="12" class="d-flex align-center justify-space-between ">
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title> <v-card-title class="pa-0 custom-title-4">공지사항</v-card-title>
<div class="d-flex align-center"> <div class="d-flex align-center">
<a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false" class="mr-1" icon="unordered-list" >목록</a-button> <a-button @click="viewPageButtonGroupClickEvent('list')" type="primary" :ripple="false" class="mr-1"
<a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" class="mr-1" icon="send-outlined" > icon="unordered-list">목록</a-button>
<v-icon <a-button @click="viewPageButtonGroupClickEvent('reply')" type="primary" :ripple="false" class="mr-1"
small icon="send-outlined">
:class="['mr-2']" <v-icon small :class="['mr-2']">$icoSend</v-icon>
>$icoSend</v-icon>
답글 답글
</a-button> </a-button>
<a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" class="mr-1" icon="edit">수정</a-button> <a-button @click="viewPageButtonGroupClickEvent('update')" type="primary" :ripple="false" class="mr-1"
icon="edit">수정</a-button>
<a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button> <a-button @click="viewPageButtonGroupClickEvent('delete')" type="danger" ghost icon="delete">삭제</a-button>
</div> </div>
</v-col> </v-col>
<v-col :cols="12" class="custom-title-4-new">
제목
</v-col>
<v-col :cols="12"> <v-col :cols="12">
<v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details <p class="custom-title-3 mb-2"> 제목 </p>
:readonly="true"> <v-text-field v-model="viewActionData.title" class="v-input__custom" hide-details :readonly="true">
</v-text-field> </v-text-field>
</v-col> </v-col>
</v-row> <v-col :cols="12" style="min-height:calc(90vh - 218px);" class="pa-5">
<v-row style="height:calc(100% - 218px);">
<v-col :cols="12" style="height: 100%;">
<v-card class="pa-5" style="overflow-y:auto;">
<viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit" <viewer v-if="viewActionData.viewerFlag" ref="tuiViewer" height="inherit"
:initialValue="viewActionData.content" theme="white" :initialValue="viewActionData.content" theme="white"
:class="isDarkMode ? 'theme--white' : 'theme--black'" /> :class="isDarkMode ? 'theme--white' : 'theme--black'" />
</v-card>
</v-col> </v-col>
</v-row> <v-col :cols="6">
<v-row> <p class="custom-title-3 mb-2">파일목록</p>
<v-col :cols="12"> <div v-for="fileData in viewActionData.fileData"
<v-card class="pa-5"> :key="fileData.apndFileId"
<v-row align="center" no-gutters> class="file-item">
<v-col cols="1">
<v-card-subtitle class="pa-0">파일목록</v-card-subtitle>
</v-col>
<v-col :cols="11">
<v-row v-for="fileData in viewActionData.fileData" :key="fileData.apndFileId">
<a @click.prevent="downloadFile(fileData)"> <a @click.prevent="downloadFile(fileData)">
<div class="search-box-label"> <div class="d-flex justify-space-between search-box-label">
{{ fileData.apndFileNm + '.' + fileData.apndFileExt }} <v-icon>mdi-paperclip</v-icon>
<span class="file-item-name">{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}</span>
</div> </div>
</a> </a>
</v-row> </div>
</v-col>
</v-row>
</v-card>
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
</div> </div>
<!-- 상세보기 페이지 --> <!-- 상세보기 페이지 -->
<!-- 작성 페이지 시작 --> <!-- 작성 페이지 시작 -->
<div v-if="pageActionFlag == 'write'" class="h100"> <div v-if="pageActionFlag == 'write'" class="h1001">
<v-row align="center" no-gutters>
<v-col :cols="12">
<v-card> <v-card>
<v-card-title>공지사항</v-card-title> <div class="pa-5">
<v-row class="pa-5"> <v-row class="pa-50">
<v-col :cols="12" class="custom-title-4-new"> <v-col :cols="12" class="">
제목 <v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
</v-col> </v-col>
<v-col :cols="12"> <v-col :cols="12" class="custom-title-4-new mt-4">
<p class="custom-title-3 mb-2">제목</p>
<v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined> <v-text-field v-model="writeActionData.title" class="v-input__custom" hide-details outlined>
</v-text-field> </v-text-field>
</v-col> </v-col>
@ -109,53 +88,82 @@
<editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" /> <editor ref="tuiEditor" height="100%" initialEditType="wysiwyg" />
</v-col> </v-col>
<v-col :cols="12" class="custom-title-4-new mt-2"> <v-col :cols="12" class="mt-2">
<p class="custom-title-3 mb-2">
파일첨부 파일첨부
</p>
</v-col> </v-col>
<v-col :cols="6"> <v-col :cols="6">
<!-- background-color="#47535c" --> <div class="" v-if="writeActionData.fileData">
<v-file-input multiple show-size v-model="writeActionData.fileData" hide-details="true" <div
clear-icon="delete" chips label="업로드" flat hide-input outlined> v-for="(fileData, index) in writeActionData.fileData"
<!-- append-icon="cancel" --> :key="fileData.apndFileId"
</v-file-input> class="file-item d-flex justify-space-between">
<div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span>
</div>
<a-icon type="delete" class="v-icon pointer" @click="writeActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.writeInputFile.$refs.input.click()" >
업로드
</a-button>
<v-file-input
ref="writeInputFile"
v-model="writeActionData.fileData"
multiple
outlined
hide-input
class="d-none"
prepend-icon="mdi-tray-arrow-up"
></v-file-input>
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" class="mr-2">취소</a-button> <a-button @click="writePageButtonGroupClickEvent('cancel')" :ripple="false" class="mr-2">취소</a-button>
<a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" type="primary">등록</a-button> <a-button @click="writePageButtonGroupClickEvent('write')" :ripple="false" type="primary">등록</a-button>
</v-col> </v-col>
</v-row> </v-row>
</div>
</v-card> </v-card>
</v-col>
</v-row>
</div> </div>
<!-- 작성 페이지 --> <!-- 작성 페이지 -->
<!-- 답글 작성 페이지 시작 --> <!-- 답글 작성 페이지 시작 -->
<div v-if="pageActionFlag == 'reply'" class="h1001"> <div v-if="pageActionFlag == 'reply'" class="h1001">
<v-card class="pa-5"> <v-card class="pa-5">
<v-row> <v-row align="center" class="mt-0">
<v-col :cols="12" class="card-title-color"> <v-col :cols="12" class="">
<v-card-title class="pa-0 custom-title-4">공지사항</v-card-title> <v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
</v-col> </v-col>
</v-row>
<v-row align="center" class="mt-5" >
<v-col :cols="12"> <v-col :cols="12">
<p class="custom-title-4-new">제목</p> <p class="custom-title-3 mb-2">제목</p>
<v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined hide-details> <v-text-field v-model="replyActionData.title" class="v-input__custom" placeholder="제목" outlined
hide-details>
</v-text-field> </v-text-field>
</v-col> </v-col>
<v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-4" > <v-col :cols="12" style="height: calc(100vh - 270px);" class="mt-2">
<editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" /> <editor ref="tuiReplyEditor" height="100%" initialEditType="wysiwyg" />
</v-col> </v-col>
<v-col :cols="12" class="custom-title-4-new mt-4" > <v-col :cols="6" class="mt-4">
<p class="custom-title-3 mb-2">
파일첨부 파일첨부
</v-col> </p>
<v-col :cols="12" > <div class="" v-if="replyActionData.fileData">
<v-file-input <div
multiple v-for="(fileData, index) in replyActionData.fileData"
show-size :key="fileData.apndFileId"
v-model="replyActionData.fileData" class="file-item d-flex justify-space-between">
hide-details="true"> <div class="file-item-detail">
<v-icon>mdi-paperclip</v-icon>
<span href="#" class="file-item-name">{{ fileData.name }}</span>
</div>
<a-icon type="delete" class="v-icon pointer" @click="replyActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-3" icon="upload" @click="$refs.replyInputFile.$refs.input.click()" >
업로드
</a-button>
<v-file-input ref="replyInputFile" multiple show-size v-model="replyActionData.fileData" hide-details="true" class="d-none">
</v-file-input> </v-file-input>
</v-col> </v-col>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
@ -164,80 +172,54 @@
</v-col> </v-col>
</v-row> </v-row>
</v-card> </v-card>
</div> </div>
<!-- 답글 작성 페이지 --> <!-- 답글 작성 페이지 -->
<!-- 수정 페이지 시작 --> <!-- 수정 페이지 시작 -->
<div v-if="pageActionFlag == 'update'" class="h100"> <div v-if="pageActionFlag == 'update'" class="h1001">
<v-card>
<div class="pa-5">
<v-row align="center" no-gutters> <v-row align="center" no-gutters>
<v-col :cols="12"> <v-col :cols="12">
<v-card> <v-card-title class="custom-title-4 pa-0">공지사항</v-card-title>
<v-card-title>공지사항</v-card-title>
</v-card>
</v-col> </v-col>
</v-row> <v-col :cols="12" class="mt-4">
<v-row> <p class="custom-title-3 mb-2">제목</p>
<v-col :cols="12"> <v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="" hide-details outlined>
<v-card min-height="60" class="pa-5">
<v-text-field v-model="updateActionData.title" class="v-input__custom" placeholder="제목" hide-details>
</v-text-field> </v-text-field>
</v-card>
</v-col> </v-col>
</v-row> <v-col :cols="12" style="height: calc(90vh - 270px);" class="mt-4" >
<v-row style="height:calc(100% - 342px)">
<v-col :cols="12">
<editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg" <editor ref="tuiUpdateEditor" height="100%" initialEditType="wysiwyg"
:initialValue="updateActionData.content" /> :initialValue="updateActionData.content" />
</v-col> </v-col>
</v-row> <v-col :cols="6">
<v-row> <p class="pa-0 mb-2 custom-title-4-new-1">파일첨부</p>
<v-col :cols="12"> <div class="" v-if="updateActionData.fileData">
<v-card class="pa-5"> <div
<v-row align="center" no-gutters> v-for="(fileData, index) in updateActionData.fileData"
<v-col cols="1"> :key="fileData.apndFileId"
<v-card-subtitle class="pa-0">파일첨부</v-card-subtitle> class="file-item d-flex justify-space-between">
</v-col> <div class="file-item-detail">
<v-col :cols="4"> <v-icon>mdi-paperclip</v-icon>
<v-file-input multiple background-color="#47535c" show-size v-model="updateActionData.fileData" <span href="#" class="file-item-name">{{ fileData.name }}</span>
hide-details="true"> </div>
<a-icon type="delete" class="v-icon pointer" @click="updateActionData.fileData.splice(index, 1)" />
</div>
</div>
<a-button class="mt-2" icon="upload" @click="$refs.updateInputFile.$refs.input.click()" >
업로드
</a-button>
<v-file-input ref="updateInputFile" multiple show-size v-model="updateActionData.fileData"
hide-details="true" class="d-none">
</v-file-input> </v-file-input>
</v-col> </v-col>
</v-row>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col :cols="12">
<v-card class="pa-5">
<v-row align="center">
<v-col :cols="1">
<v-card-subtitle class="pa-0">파일목록</v-card-subtitle>
</v-col>
<v-col :cols="11">
<v-row v-for="fileData in updateActionData.currentFileList" :key="fileData.apndFileId">
<a @click.prevent="downloadFile(fileData)">
<v-col :cols="12">
<div class="search-box-label">
{{ fileData.apndFileNm + '.' + fileData.apndFileExt }}
</div>
</v-col>
</a>
<v-icon class="pl-5" @click="addFileToDeleteFileList(fileData)">
mdi-close
</v-icon>
</v-row>
</v-col>
</v-row>
</v-card>
</v-col>
</v-row>
<v-row>
<v-col :cols="12" class="text-right"> <v-col :cols="12" class="text-right">
<v-btn @click="updatePageButtonGroupClickEvent('update')" :ripple="false">등록</v-btn> <a-button @click="updatePageButtonGroupClickEvent('cancel')" >취소</a-button>
<v-btn @click="updatePageButtonGroupClickEvent('cancel')" :ripple="false">취소</v-btn> <a-button @click="updatePageButtonGroupClickEvent('update')" type="primary" >등록</a-button>
</v-col> </v-col>
</v-row> </v-row>
</div> </div>
</v-card>
</div>
<!-- 수정 페이지 --> <!-- 수정 페이지 -->
</div> </div>
</template> </template>
@ -363,6 +345,9 @@ export default {
chkOpenTabList: 'chkOpenTabList', chkOpenTabList: 'chkOpenTabList',
getDomain: 'modules/list/getDomain', getDomain: 'modules/list/getDomain',
}), }),
onTest(){
console.log(this.writeActionData.fileData);
},
async init() { async init() {
this.initData(); this.initData();
await this.gridInit(); await this.gridInit();
@ -1069,7 +1054,18 @@ const dataPathDataExample = getPathDataExample({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.pointer,
.tui-grid-table tr { .tui-grid-table tr {
cursor: pointer; cursor: pointer;
} }
.file-item {
width: auto;
margin: 2px 0;
padding: 4px;
background-color: #0000000A;
.file-item-name{
color: #1677FF;
}
}
</style> </style>

View File

@ -6,7 +6,7 @@
<v-row align="end" no-gutters> <v-row align="end" no-gutters>
<v-col :cols="3"> <v-col :cols="3">
<InputText :labelCols="12" :textCols="12" :parentPrgmId="myPrgmId" label="지표명" <InputText :labelCols="12" :textCols="12" :parentPrgmId="myPrgmId" label="지표명"
valueNm="searchEffcIdxNm" :searchOption="true" :customClass="'input-large fixed-width'" valueNm="searchEffcIdxNm" :searchOption="true" :customClass="'input-large surface-name'"
:iconShow="true" /> :iconShow="true" />
</v-col> </v-col>
<v-col :cols="9" class="text-right"> <v-col :cols="9" class="text-right">
@ -27,7 +27,7 @@
<div ref="gridParent" id="gridParent" class="w100 h100"> <div ref="gridParent" id="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName"
:parentPrgmId="myPrgmId" @getRowsData="getRowData" :preventFocusChangeEventFlag="false" :parentPrgmId="myPrgmId" @getRowsData="getRowData" :preventFocusChangeEventFlag="false"
:dataPath="dataPathExample" /> />
</div> </div>
</div> </div>
</v-card> </v-card>
@ -212,66 +212,65 @@ export default {
disabledFlag: false, disabledFlag: false,
}, },
], ],
loadGrid: true, loadGrid: false,
dataPathExample: { // "effcIdxGrid": {
"effcIdxGrid": { // data: [
data: [ // {
{ // "effcIdxId": "E001",
"effcIdxId": "E001", // "effcIdxNm": "에너지 소비 효율",
"effcIdxNm": "에너지 소비 효율", // "effcKind": "환경"
"effcKind": "환경" // },
}, // {
{ // "effcIdxId": "E002",
"effcIdxId": "E002", // "effcIdxNm": "작업 시간 대비 생산량",
"effcIdxNm": "작업 시간 대비 생산량", // "effcKind": "생산성"
"effcKind": "생산성" // },
}, // {
{ // "effcIdxId": "E003",
"effcIdxId": "E003", // "effcIdxNm": "장비 가동률",
"effcIdxNm": "장비 가동률", // "effcKind": "운영"
"effcKind": "운영" // },
}, // {
{ // "effcIdxId": "E004",
"effcIdxId": "E004", // "effcIdxNm": "불량률",
"effcIdxNm": "불량률", // "effcKind": "품질"
"effcKind": "품질" // },
}, // {
{ // "effcIdxId": "E005",
"effcIdxId": "E005", // "effcIdxNm": "재고 회전율",
"effcIdxNm": "재고 회전율", // "effcKind": "물류"
"effcKind": "물류" // }
} // ]
] // ,
, // column: [
column: [ // {
{ // header: '효율지표 ID',
header: '효율지표 ID', // name: 'effcIdxId',
name: 'effcIdxId', // align: 'center',
align: 'center', // // hidden:true
// hidden:true // },
}, // {
{ // header: '효율지표명',
header: '효율지표명', // name: 'effcIdxNm',
name: 'effcIdxNm', // align: 'left',
align: 'left', // minWidth: 150,
minWidth: 150, // // hidden:true
// hidden:true // },
},
{ // {
header: '효율지표종류', // header: '효율지표종류',
name: 'effcKind', // name: 'effcKind',
align: 'left', // align: 'left',
// hidden: true, // // hidden: true,
}, // },
// { header: '등록 사용자', name: 'regUserNo', hidden: true }, // // { header: '등록 사용자', name: 'regUserNo', hidden: true },
// { header: '등록 일자', name: 'regDttm', hidden: true }, // // { header: '등록 일자', name: 'regDttm', hidden: true },
// { header: '수정 사용자', name: 'procUserNo', hidden: true }, // // { header: '수정 사용자', name: 'procUserNo', hidden: true },
// { header: '수정 일자', name: 'procDttm', hidden: true }, // // { header: '수정 일자', name: 'procDttm', hidden: true },
], // ],
} // }
}, // },
initFlag: false, initFlag: false,
selectValueList01: [], selectValueList01: [],
selectValueList02: [], selectValueList02: [],
@ -904,6 +903,10 @@ export default {
columnOptions: { columnOptions: {
resizable: true, resizable: true,
}, },
header: {
height: 37,
},
rowHeight: 'auto',
}; };
this.setGridOption({ this.setGridOption({
gridKey: this.gridName, gridKey: this.gridName,
@ -1439,6 +1442,6 @@ const defaultData = {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.v-input__custom.surface-name fieldset { .v-input__custom.surface-name fieldset {
width: 345px; max-width: 345px;
} }
</style> </style>

View File

@ -53,7 +53,7 @@
<v-card class="pb-5 px-4"> <v-card class="pb-5 px-4">
<v-card-title class="px-0">물리량 상세</v-card-title> <v-card-title class="px-0">물리량 상세</v-card-title>
<v-row no-gutters> <v-row no-gutters>
<v-col :cols="12" class="py-3"> <v-col :cols="6" class="py-3 pr-4">
<InputText :parentPrgmId="myPrgmId" label="물리량 ID" valueNm="pysclQtyId" :labelCols="12" <InputText :parentPrgmId="myPrgmId" label="물리량 ID" valueNm="pysclQtyId" :labelCols="12"
:textCols="12" :required="requiredValueList[0]" :disabled="disabledValueList[0]" :textCols="12" :required="requiredValueList[0]" :disabled="disabledValueList[0]"
:readonly="readOnlyValueList[0]" placeholder="시스템 자동입력" /> :readonly="readOnlyValueList[0]" placeholder="시스템 자동입력" />
@ -73,7 +73,7 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row no-gutters> <v-row no-gutters>
<v-col :cols="12" class="py-3"> <v-col :cols="6" class="py-3 pr-4">
<InputText :parentPrgmId="myPrgmId" label="물리량명" valueNm="pysclQtyNm" :labelCols="12" <InputText :parentPrgmId="myPrgmId" label="물리량명" valueNm="pysclQtyNm" :labelCols="12"
:textCols="12" :required="requiredValueList[3]" :disabled="disabledValueList[3]" :textCols="12" :required="requiredValueList[3]" :disabled="disabledValueList[3]"
:readonly="readOnlyValueList[3]" /> :readonly="readOnlyValueList[3]" />
@ -109,7 +109,7 @@
</v-col> </v-col>
</v-row> </v-row>
<v-row no-gutters v-show="argContentShowFlag"> <v-row no-gutters v-show="argContentShowFlag">
<v-col :cols="6" class="py-3"> <v-col :cols="12" class="py-3">
<component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" /> <component :is="'TextArea'" :parentPrgmId="myPrgmId" ref="TextArea" :item="calcDescItem" />
</v-col> </v-col>
</v-row> </v-row>
@ -121,22 +121,19 @@
계산Argument 계산Argument
</label> </label>
</v-col> </v-col>
<v-col :cols="4" class="py-2"> <v-col :cols="6" class="py-2">
<InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12" <InputText :parentPrgmId="myPrgmId" label="ARG갯수" valueNm="argCnt" :labelCols="12"
:textCols="12" :iconShow="true" :required="requiredValueList[7]" :textCols="12" :iconShow="true" :required="requiredValueList[7]"
:disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" /> :disabled="disabledValueList[7]" :readonly="readOnlyValueList[7]" />
</v-col> </v-col>
<v-col :cols="4"> </v-col> <v-col :cols="4"> </v-col>
<v-col :cols="4" class="py-2" align="right"> <v-col :cols="12" class="py-2" align="right">
<v-btn :ripple="false" @click="btnAction('add')" :disabled="disabledValueList[7]">추가</v-btn> <a-button type="primary" @click="btnAction('add')" class="v-btn-add-text mr-1" icon="plus">추가</a-button>
<!-- <v-btn :ripple="false" @click="btnAction('edit')">수정</v-btn> --> <a-button type="danger" @click="btnAction('remove')" ghost danger icon="delete">삭제</a-button>
<v-btn :ripple="false" @click="btnAction('remove')"
:disabled="disabledValueList[7]">삭제</v-btn>
</v-col> </v-col>
</v-row> </v-row>
<v-row style="height:calc(30% - 76px)" v-show="argContentShowFlag"> <v-row style="height:calc(30% - 76px)" v-show="argContentShowFlag">
<v-col :cols="2"> </v-col> <v-col :cols="12" style="height:100%">
<v-col :cols="10" style="height:100%">
<div ref="gridParent2" style="height:100%"> <div ref="gridParent2" style="height:100%">
<component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2" <component :ref="gridName2" :is="loadGrid2 ? 'Grid' : null" :gridName="gridName2"
:parentPrgmId="myPrgmId" @getRowsData="getRowData2" :dataPath="dataPathExample2" /> :parentPrgmId="myPrgmId" @getRowsData="getRowData2" :dataPath="dataPathExample2" />

View File

@ -66,9 +66,14 @@
</div> </div>
<div class="px-4" style="height:calc(100% - 76px)"> <div class="px-4" style="height:calc(100% - 76px)">
<div ref="gridParent" class="w100 h100"> <div ref="gridParent" class="w100 h100">
<component :ref="gridName" :is="loadGrid ? 'Grid' : null" :gridName="gridName" <component
:parentPrgmId="myPrgmId" :columnClickEventFlag="true" @columnClick="columnClick" :ref="gridName"
:dataPath="dataPathExample" /> :is="loadGrid ? 'Grid' : null"
:gridName="gridName"
:parentPrgmId="myPrgmId"
:columnClickEventFlag="true"
@columnClick="columnClick"
/>
</div> </div>
</div> </div>
</v-card> </v-card>
@ -141,442 +146,8 @@ export default {
selectValueList05: [], selectValueList05: [],
selectValueList06: [], selectValueList06: [],
initedFlag: false, initedFlag: false,
loadGrid: true, loadGrid: false,
gridName: 'rowGrid', gridName: 'rowGrid',
dataPathExample: {
"rowGrid": {
data: [
{
"no": 1,
"fabNm": "B02",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ028",
"eqpmNm": "DEP D78",
"gdIdxId": "GD004",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 34,
"warnStndVal": 56,
"totVal": 30,
"okFg": "주의",
"gdMeth": "Adjust pad pressure",
"ngCnt": 0
},
{
"no": 2,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ003",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD028",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 40,
"warnStndVal": 53,
"totVal": 48,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 7
},
{
"no": 3,
"fabNm": "C01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ012",
"eqpmNm": "CMP C56",
"gdIdxId": "GD016",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 31,
"warnStndVal": 34,
"totVal": 44,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 6
},
{
"no": 4,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ016",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD004",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 33,
"warnStndVal": 40,
"totVal": 56,
"okFg": "주의",
"gdMeth": "Modify gas flow",
"ngCnt": 2
},
{
"no": 5,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ004",
"eqpmNm": "CMP C56",
"gdIdxId": "GD008",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 33,
"warnStndVal": 44,
"totVal": 20,
"okFg": "주의",
"gdMeth": "Adjust pad pressure",
"ngCnt": 7
},
{
"no": 6,
"fabNm": "B01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ019",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD014",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 34,
"warnStndVal": 38,
"totVal": 46,
"okFg": "양호",
"gdMeth": "Modify gas flow",
"ngCnt": 1
},
{
"no": 7,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ024",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD008",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 37,
"warnStndVal": 51,
"totVal": 24,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 10
},
{
"no": 8,
"fabNm": "D01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ014",
"eqpmNm": "DEP D78",
"gdIdxId": "GD023",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 22,
"warnStndVal": 49,
"totVal": 43,
"okFg": "주의",
"gdMeth": "Change exposure time",
"ngCnt": 6
},
{
"no": 9,
"fabNm": "C01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ001",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD022",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 20,
"warnStndVal": 24,
"totVal": 51,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 9
},
{
"no": 10,
"fabNm": "D01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ027",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD002",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 27,
"warnStndVal": 46,
"totVal": 60,
"okFg": "양호",
"gdMeth": "Modify gas flow",
"ngCnt": 4
},
{
"no": 11,
"fabNm": "C01",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ004",
"eqpmNm": "CMP C56",
"gdIdxId": "GD025",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 30,
"warnStndVal": 58,
"totVal": 28,
"okFg": "경고",
"gdMeth": "Modify gas flow",
"ngCnt": 3
},
{
"no": 12,
"fabNm": "D01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ022",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD024",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 27,
"warnStndVal": 42,
"totVal": 62,
"okFg": "양호",
"gdMeth": "Adjust pad pressure",
"ngCnt": 0
},
{
"no": 13,
"fabNm": "C01",
"eqpmGrpNm": "ETCH Group",
"eqpmId": "EQ018",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD013",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 32,
"warnStndVal": 35,
"totVal": 62,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 5
},
{
"no": 14,
"fabNm": "D01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ017",
"eqpmNm": "DEP D78",
"gdIdxId": "GD005",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 36,
"warnStndVal": 47,
"totVal": 39,
"okFg": "경고",
"gdMeth": "Tune RF power",
"ngCnt": 10
},
{
"no": 15,
"fabNm": "D01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ025",
"eqpmNm": "DEP D78",
"gdIdxId": "GD028",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 36,
"warnStndVal": 59,
"totVal": 63,
"okFg": "양호",
"gdMeth": "Adjust pad pressure",
"ngCnt": 1
},
{
"no": 16,
"fabNm": "B02",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ026",
"eqpmNm": "PHOTO P34",
"gdIdxId": "GD008",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 24,
"warnStndVal": 59,
"totVal": 20,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 1
},
{
"no": 17,
"fabNm": "B01",
"eqpmGrpNm": "DEP Group",
"eqpmId": "EQ023",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD021",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 26,
"warnStndVal": 51,
"totVal": 31,
"okFg": "주의",
"gdMeth": "Modify gas flow",
"ngCnt": 2
},
{
"no": 18,
"fabNm": "B02",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ012",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD023",
"gdIdxNm": "Polish Rate Guide",
"careStndVal": 34,
"warnStndVal": 45,
"totVal": 64,
"okFg": "경고",
"gdMeth": "Change exposure time",
"ngCnt": 1
},
{
"no": 19,
"fabNm": "B01",
"eqpmGrpNm": "PHOTO Group",
"eqpmId": "EQ018",
"eqpmNm": "ETCH E12",
"gdIdxId": "GD002",
"gdIdxNm": "Etch Depth Guide",
"careStndVal": 30,
"warnStndVal": 31,
"totVal": 51,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 2
},
{
"no": 20,
"fabNm": "C01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ018",
"eqpmNm": "CMP C56",
"gdIdxId": "GD021",
"gdIdxNm": "Exposure Time Guide",
"careStndVal": 30,
"warnStndVal": 51,
"totVal": 45,
"okFg": "양호",
"gdMeth": "Change exposure time",
"ngCnt": 7
},
{
"no": 21,
"fabNm": "B01",
"eqpmGrpNm": "CMP Group",
"eqpmId": "EQ021",
"eqpmNm": "CMP C56",
"gdIdxId": "GD001",
"gdIdxNm": "Deposition Rate Guide",
"careStndVal": 23,
"warnStndVal": 42,
"totVal": 40,
"okFg": "주의",
"gdMeth": "Tune RF power",
"ngCnt": 5
}
]
,
column: [
{
header: 'No.',
name: 'no',
align: 'right',
width: 30,
},
{
header: 'FAB',
name: 'fabNm',
align: 'left',
width: 80,
},
{
header: '설비그룹',
name: 'eqpmGrpNm',
width: 130,
},
{
header: '설비id',
name: 'eqpmId',
hidden: true,
},
{
header: '설비명',
name: 'eqpmNm',
width: 130,
},
{
header: '가이드명',
name: 'gdIdxId',
hidden: true,
// formatter({ value }) {
// let retVal = '';
// const newValue = _this.pageData.gdIdxIdList.filter(
// item => item.value == value,
// );
// if (newValue.length > 0) {
// retVal = newValue[0].text;
// }
// //빈값일때 전체방지
// if (value == '' || value == null) {
// retVal = '';
// }
// return retVal;
// },
},
{
header: '가이드명',
name: 'gdIdxNm',
width: 200,
},
{
header: '주의',
name: 'careStndVal',
align: 'right',
width: 80,
},
{
header: '경고',
name: 'warnStndVal',
align: 'right',
width: 80,
},
{
header: '가이드값',
name: 'totVal',
align: 'right',
width: 120,
},
{
header: '평가',
name: 'okFg',
align: 'center',
width: 80,
},
{
header: '절감가이드 방법',
name: 'gdMeth',
},
{
header: 'NG발생건수',
name: 'ngCnt',
align: 'right',
width: 100,
},
],
option: {
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: false,
scrollY: true
}
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: false,
// scrollY: false
},
// pageOptions: {
// useClient: true,
// perPage: 10,
// },
// scrollX: true,
// scrollY: false
},
popDialog: false, popDialog: false,
eqpmFlag: false, eqpmFlag: false,
eqpmKindFlag: false, eqpmKindFlag: false,
@ -667,7 +238,7 @@ export default {
}); });
this.selectValue04 = { eqpmId: [] }; this.selectValue04 = { eqpmId: [] };
await this.getEqpmGrp(); await this.getEqpmGrp();
// await this.getEqpm(this.selectValueList03); await this.getEqpm(this.selectValueList03);
} }
}, },
async selectValue03(val) { async selectValue03(val) {
@ -789,7 +360,7 @@ export default {
} else { } else {
this.setFromDt(); this.setFromDt();
} }
// await this.gridInit(); await this.gridInit();
}, },
async search() { async search() {
await this.getRowGridData(); await this.getRowGridData();
@ -806,75 +377,69 @@ export default {
// this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD"); // this.pageData.toDt = Utility.setAftertDate(this.pageData, this.pageData.fromDt, "YYYYMMDD");
}, },
async getEqpmKind() { async getEqpmKind() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectEqpmKindCodeList', apiKey: 'selectEqpmKindCodeList',
// resKey: 'eqpmKindCodeLists', resKey: 'eqpmKindCodeLists',
// sendParam: {}, sendParam: {},
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList01 = await res.map(item => { this.selectValueList01 = await res.map(item => {
// return { return {
// text: item.eqpmKindNm, text: item.eqpmKindNm,
// value: item.eqpmKindId, value: item.eqpmKindId,
// }; };
// }); });
// this.selectValueList01.unshift({ this.selectValueList01.unshift({
// text: '전체', text: '전체',
// value: null, value: null,
// }); });
// if ( if (
// this.routeData.eqpmKindId == null || this.routeData.eqpmKindId == null ||
// this.routeData.eqpmKindId == '' this.routeData.eqpmKindId == ''
// ) { ) {
// this.selectValue01 = this.selectValueList01[0].value; this.selectValue01 = this.selectValueList01[0].value;
// } else if ( } else if (
// this.routeData.eqpmKindId != null || this.routeData.eqpmKindId != null ||
// this.routeData.eqpmKindId != '' this.routeData.eqpmKindId != ''
// ) { ) {
// this.selectValue01 = this.routeData.eqpmKindId; this.selectValue01 = this.routeData.eqpmKindId;
// } }
// } else { } else {
// this.selectValueList01 = []; this.selectValueList01 = [];
// this.selectValue01 = null; this.selectValue01 = null;
// } }
this.setPageData({ this.setPageData({
eqpmKindList: this.selectValueList01, eqpmKindList: this.selectValueList01,
eqpmKindId: this.selectValue01, eqpmKindId: this.selectValue01,
}); });
}, },
async getFab() { async getFab() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectFabCodeList', apiKey: 'selectFabCodeList',
// resKey: 'fabCodeLists', resKey: 'fabCodeLists',
// sendParam: {}, sendParam: {},
// }); });
this.selectValueList02 = [
{ text: '온도 센서', value: 'ECC001' }, if (res.length > 0) {
{ text: '압력 센서', value: 'ECC002' }, this.selectValueList02 = await res.map(item => {
{ text: '유량 센서', value: 'ECC003' }, return {
{ text: '습도 센서', value: 'ECC004' }, text: item.eccNm,
{ text: '전압 센서', value: 'ECC005' } value: item.eccId,
]; };
// if (res.length > 0) { });
// // this.selectValueList02 = await res.map(item => { this.selectValueList02.unshift({
// // return { text: '전체',
// // text: item.eccNm, value: null,
// // value: item.eccId, });
// // }; if (this.routeData.fabId != null && this.routeData.fabId != '') {
// // }); this.selectValue02 = this.routeData.fabId;
// this.selectValueList02.unshift({ } else if (this.routeData.fabId == null || this.routeData.fabId == '') {
// text: '전체', this.selectValue02 = this.selectValueList02[0].value;
// value: null, }
// }); } else {
// if (this.routeData.fabId != null && this.routeData.fabId != '') { this.selectValueList02 = [];
// this.selectValue02 = this.routeData.fabId; this.selectValue02 = null;
// } else if (this.routeData.fabId == null || this.routeData.fabId == '') { }
// this.selectValue02 = this.selectValueList02[0].value;
// }
// } else {
// this.selectValueList02 = [];
// this.selectValue02 = null;
// }
this.setPageData({ this.setPageData({
fabIdList: this.selectValueList02, fabIdList: this.selectValueList02,
fabId: this.selectValue02, fabId: this.selectValue02,
@ -923,30 +488,30 @@ export default {
}, },
async getEqpm(data) { }, async getEqpm(data) { },
async getGdIdx() { async getGdIdx() {
// let res = await this.postApiReturn({ let res = await this.postApiReturn({
// apiKey: 'selectEqpmGdIdxCodeList', apiKey: 'selectEqpmGdIdxCodeList',
// resKey: 'eqpmGdIdxCodeLists', resKey: 'eqpmGdIdxCodeLists',
// sendParam: { sendParam: {
// eqpmGrpId: this.selectValue03, eqpmGrpId: this.selectValue03,
// }, },
// }); });
// if (res.length > 0) { if (res.length > 0) {
// this.selectValueList05 = await res.map(item => { this.selectValueList05 = await res.map(item => {
// return { return {
// text: item.gdIdxNm, text: item.gdIdxNm,
// value: item.gdIdxId, value: item.gdIdxId,
// }; };
// }); });
// this.selectValueList05.unshift({ this.selectValueList05.unshift({
// text: '전체', text: '전체',
// value: null, value: null,
// }); });
// this.selectValue05 = this.selectValueList05[0].value; this.selectValue05 = this.selectValueList05[0].value;
// } else { } else {
// this.selectValueList05 = []; this.selectValueList05 = [];
// this.selectValue05 = null; this.selectValue05 = null;
// } }
this.setPageData({ this.setPageData({
gdIdxIdList: this.selectValueList05, gdIdxIdList: this.selectValueList05,
@ -987,6 +552,10 @@ export default {
resizable: true, resizable: true,
}, },
rowHeaders: ['rowNum'], rowHeaders: ['rowNum'],
header: {
height: 37,
},
rowHeight: 'auto',
// pageOptions: { // pageOptions: {
@ -1130,27 +699,27 @@ export default {
if (e.columnName == 'ngCnt' && e.targetType == 'cell') { if (e.columnName == 'ngCnt' && e.targetType == 'cell') {
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){ // if(e.columnName == 'ngCnt' && data.ngCnt > 0){
this.$refs['EnrgEffcEqpmDetailPop'].popCheck = true; this.$refs['EnrgEffcEqpmDetailPop'].popCheck = true;
// this.setPageData({ this.setPageData({
// rowGridSelectKey: e.rowKey, rowGridSelectKey: e.rowKey,
// rowGridSelectData: { rowGridSelectData: {
// ...data, ...data,
// fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
// toDt: this.pageData.toDt, toDt: this.pageData.toDt,
// }, },
// }); });
} }
if (e.columnName == 'gdIdxNm' && e.targetType == 'cell') { if (e.columnName == 'gdIdxNm' && e.targetType == 'cell') {
// if(e.columnName == 'ngCnt' && data.ngCnt > 0){ // if(e.columnName == 'ngCnt' && data.ngCnt > 0){
this.$refs['EnrgEffcGdIdxDetPop'].popCheck = true; this.$refs['EnrgEffcGdIdxDetPop'].popCheck = true;
// this.setPageData({ this.setPageData({
// rowGridSelectKey: e.rowKey, rowGridSelectKey: e.rowKey,
// rowGridSelectData: { rowGridSelectData: {
// ...data, ...data,
// fromDt: this.pageData.fromDt, fromDt: this.pageData.fromDt,
// toDt: this.pageData.toDt, toDt: this.pageData.toDt,
// }, },
// }); });
} }
}, },
}, },

View File

@ -147,6 +147,26 @@ export default {
// } // }
await this.loginChk(); await this.loginChk();
}, },
// async loginChk() {
// const DOMAIN = '';
// const apiUrl = 'loginChk';
// const params = {
// local: 'ko',
// comId: this.userComId, // 요청 comId는 클라우드 서비스시는 입력 값으로 처리 되어야 할수 있음.
// userId: this.userId,
// userPswd: this.userPw,
// };
// const res = await this.$axios.post(DOMAIN + apiUrl, { params: params });
// const femsSessionCookie = 3434;
// const FEMS_SESSION = femsSessionCookie;
// $cookie.set('FEMS_SESSION', FEMS_SESSION);
// this.setUserInfo(res.data.dataset.userInfo);
// // alert("임시로 로그인 처리 되었습니다. dashboard 페이지로 이동합니다.");
// // console.log('res.data.dataset.userInfo: ', res.data.dataset.userInfo);
// // return;
// this.$router.push({ path: this.myHome.root });
// },
async loginChk() { async loginChk() {
const DOMAIN = ''; const DOMAIN = '';
const apiUrl = 'loginChk'; const apiUrl = 'loginChk';
@ -156,15 +176,25 @@ export default {
userId: this.userId, userId: this.userId,
userPswd: this.userPw, userPswd: this.userPw,
}; };
console.log('asdasd' + JSON.stringify( DOMAIN) + params)
const res = await this.$axios.post(DOMAIN + apiUrl, { params: params }); const res = await this.$axios.post(DOMAIN + apiUrl, { params: params });
const femsSessionCookie = 3434; if (res.data.retnCd === -9001) {
alert(res.data.retnMsg);
return {};
} else {
const femsSessionCookie = res.data.dataset.FEMS_SESSION;
const FEMS_SESSION = femsSessionCookie; const FEMS_SESSION = femsSessionCookie;
$cookie.set('FEMS_SESSION', FEMS_SESSION); $cookie.set('FEMS_SESSION', FEMS_SESSION);
this.setUserInfo(res.data.dataset.userInfo); this.setUserInfo(res.data.dataset.userInfo);
console.log('FEMS_SESSION', FEMS_SESSION);
console.log('$cookie.get', $cookie.get('FEMS_SESSION'));
console.log('userInfo', JSON.stringify(res.data.dataset.userInfo));
// alert("임시로 로그인 처리 되었습니다. dashboard 페이지로 이동합니다."); // alert("임시로 로그인 처리 되었습니다. dashboard 페이지로 이동합니다.");
this.$router.push({ path: this.myHome.root }); this.$router.push({ path: this.myHome.root });
}
}, },
}, },
}; };

View File

@ -1,5 +1,6 @@
import $cookie from 'vue-cookie'; import $cookie from 'vue-cookie';
export default ({ $axios, res }) => { export default ({ $axios, res }) => {
$axios.defaults.baseURL = '/api/';
$axios.onRequest(config => { $axios.onRequest(config => {
config.headers.common['AUTHENTICATION_FEMS_SESSION'] = `${$cookie.get( config.headers.common['AUTHENTICATION_FEMS_SESSION'] = `${$cookie.get(
'FEMS_SESSION', 'FEMS_SESSION',

View File

@ -48,542 +48,10 @@ export const actions = {
// params // params
// ); // );
// console.log(res); // console.log(res);
// const list = res.data.dataset.menuList; const list = res.data.dataset.menuList;
const list = [
{
comId: 'd12',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'dashboardfirst', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'menu', // UP_MENU_ID (상위메뉴ID)
menuNm: '모니터링',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
},
{
comId: 'd34',
sysDivCd: 'abc', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0001', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '1. Dashboard',// MENU_NM (메뉴명)
sortSeq: 888, // SORT_SEQ (정렬순서)
useFg: 'abc',// USE_FG (사용여부)
rmrk: 'abc',
url: 'ems/base/DashboardPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu2', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 사용량',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd44',
sysDivCd: 'enrguplan', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0002', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '2. Establish energy consumption plans',// MENU_NM (메뉴명)
sortSeq: 888, // SORT_SEQ (정렬순서)
useFg: 'enrguplan',// USE_FG (사용여부)
rmrk: 'enrguplan',
url: 'ems/effc/EnrgUsePlanPage',
lvl: 1
},
{
comId: 'd35',
sysDivCd: 'energyusage', //시스템구분
menuId: 'children2', // MENU_ID (메뉴ID)
prgmId: 'PRG0080', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '3. Energy usage',// MENU_NM (메뉴명)
sortSeq: 5555, // SORT_SEQ (정렬순서)
useFg: 'energyusage',// USE_FG (사용여부)
rmrk: 'energyusage',
url: 'ems/effc/EnrgUseTotSummPage',
lvl: 1
},
{
comId: 'd60',
sysDivCd: 'energyperformance', //시스템구분
menuId: 'children2', // MENU_ID (메뉴ID)
prgmId: 'PRG0081', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '4. 에너지 사용량 실적',// MENU_NM (메뉴명)
sortSeq: 5555, // SORT_SEQ (정렬순서)
useFg: 'energyperformance',// USE_FG (사용여부)
rmrk: 'energyperformance',
url: 'ems/effc/EqpmIndMntrPage',
lvl: 1
},
{
comId: 'd69',
sysDivCd: 'MNU0104', //시스템구분
menuId: 'MNU0091', // MENU_ID (메뉴ID)
prgmId: 'PRG0082', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '5. Energy Use Equipment',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'enrgUseEqpm',// USE_FG (사용여부)
rmrk: 'enrgUseEqpm',
url: 'ems/effc/EnrgUseEqpmDetlMntrPage',
lvl: 1
},
{
comId: 'd351',
sysDivCd: 'energy effc', //시스템구분
menuId: 'MNU0116', // MENU_ID (메뉴ID)
prgmId: 'PRG0083', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '6. Today efficiency status',// MENU_NM (메뉴명)
sortSeq: 5554, // SORT_SEQ (정렬순서)
useFg: 'energy effc',// USE_FG (사용여부)
rmrk: 'energy effc',
url: 'ems/effc/EnrgEffcTotSummPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'energyeffc', //시스템구분
menuId: 'MNU0106', // MENU_ID (메뉴ID)
prgmId: 'PRG0084', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '7. Energy Efficiency Equipment',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energyeffc',// USE_FG (사용여부)
rmrk: 'energyeffc',
url: 'ems/effc/EnrgEffcEqpmDetlMntrPage',
lvl: 1
},
{
comId: 'd336',
sysDivCd: 'engrepmng', //시스템구분
menuId: 'MNU0106', // MENU_ID (메뉴ID)
prgmId: 'PRG0908', // PRGM_ID (프로그램ID)
upMenuId: 'menu2', // UP_MENU_ID (상위메뉴ID)
menuNm: '8. 효율성 지표 보고서',// MENU_NM (메뉴명)
sortSeq: 5558, // SORT_SEQ (정렬순서)
useFg: 'engrepmng',// USE_FG (사용여부)
rmrk: 'engrepmng',
url: 'ems/effc/EnrgReptMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu3', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 효율운전',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd337',
sysDivCd: 'datasetmng', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0909', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '9. 전기에너지 MAP',// MENU_NM (메뉴명)
sortSeq: 5556, // SORT_SEQ (정렬순서)
useFg: 'datasetmng',// USE_FG (사용여부)
rmrk: 'datasetmng',
url: 'ems/effc/EnrgMapPage',
lvl: 1
},
{
comId: 'd36',
sysDivCd: 'datasetmng', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0910', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '10. Dataset management',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'datasetmng',// USE_FG (사용여부)
rmrk: 'datasetmng',
url: 'ems/effc/DataSetMngPage',
lvl: 1
},
{
comId: 'd49',
sysDivCd: 'tagTrend', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0036', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '11. Tag Trend',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'tagTrend',// USE_FG (사용여부)
rmrk: 'tagTrend',
url: 'ems/effc/TagTrndPage',
lvl: 1
},
{
comId: 'd49',
sysDivCd: 'noticemng', //시스템구분
menuId: 'MNU0105', // MENU_ID (메뉴ID)
prgmId: 'PRG0037', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '12. Notices Management',// MENU_NM (메뉴명)
sortSeq: 5562, // SORT_SEQ (정렬순서)
useFg: 'noticemng',// USE_FG (사용여부)
rmrk: 'noticemng',
url: 'comm/base/NoticeMngPage',
lvl: 1
},
{
comId: 'd57',
sysDivCd: 'energyResource', //시스템구분
menuId: 'MNU0104', // MENU_ID (메뉴ID)
prgmId: 'PRG0039', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '14. Energy Resource',// MENU_NM (메뉴명)
sortSeq: 5567, // SORT_SEQ (정렬순서)
useFg: 'energyResource',// USE_FG (사용여부)
rmrk: 'energyResource',
url: 'ems/base/EnrgResourceCenterMngPage',
lvl: 1
},
{
comId: 'd38',
sysDivCd: 'readobj', //시스템구분
menuId: 'readobj', // MENU_ID (메뉴ID)
prgmId: 'PRG0007', // PRGM_ID (프로그램ID)
upMenuId: 'menu3', // UP_MENU_ID (상위메뉴ID)
menuNm: '15. Read Object Management',// MENU_NM (메뉴명)
sortSeq: 5558, // SORT_SEQ (정렬순서)
useFg: 'readobj',// USE_FG (사용여부)
rmrk: 'readobj',
url: 'ems/base/ReadObjectMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu4', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 보고서',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'energyread', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0011', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '16. Meter Reading',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energyread',// USE_FG (사용여부)
rmrk: 'energyread',
url: 'ems/base/EnrgReadPlaceMngPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'energycost', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0008', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '17. Process',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'energycost',// USE_FG (사용여부)
rmrk: 'energycost',
url: 'ems/base/EnrgCostCenterMngPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'equipmenttype', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0013', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '18. Type of Equipment',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'equipmenttype',// USE_FG (사용여부)
rmrk: 'equipmenttype',
url: 'ems/base/EqpmKindPage',
lvl: 1
},
{
comId: 'd39',
sysDivCd: 'equipmentgroup', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0014', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '19. Facility Group',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'equipmentgroup',// USE_FG (사용여부)
rmrk: 'equipmentgroup',
url: 'ems/base/EquipmentGroupMngPage',
lvl: 1
},
{
comId: 'd46',
sysDivCd: 'equipmentmaster', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0920', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '20. Equipment Master Management',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'equipmentmaster',// USE_FG (사용여부)
rmrk: 'equipmentmaster',
url: 'ems/base/EquipmentMasterMngPage',
lvl: 1
},
{
comId: 'd46',
sysDivCd: 'tags', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0921', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '21. Tags',// MENU_NM (메뉴명)
sortSeq: 5557, // SORT_SEQ (정렬순서)
useFg: 'tags',// USE_FG (사용여부)
rmrk: 'tags',
url: 'ems/base/TagMngPage_Pagination',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'pysclqty', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0075', // PRGM_ID (프로그램ID)
upMenuId: 'menu4', // UP_MENU_ID (상위메뉴ID)
menuNm: '22. Physical quantity information',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'pysclqty',// USE_FG (사용여부)
rmrk: 'pysclqty',
url: 'ems/base/EqpmGrpPysclQtyMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu5', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '에너지 FLOW',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'gdidxmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0076', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '23. Guided Indicators',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'gdidxmng',// USE_FG (사용여부)
rmrk: 'gdidxmng',
url: 'ems/base/GdIdxMngPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'gdstndmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0077', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '24. Guidelines',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'gdigdstndmngdxmng',// USE_FG (사용여부)
rmrk: 'gdstndmng',
url: 'ems/base/GdStndMngPage',
lvl: 1
},
{
comId: 'd48',
sysDivCd: 'effcidxmng', //시스템구분
menuId: 'MNU0007', // MENU_ID (메뉴ID)
prgmId: 'PRG0012', // PRGM_ID (프로그램ID)
upMenuId: 'menu5', // UP_MENU_ID (상위메뉴ID)
menuNm: '25. Efficiency Indicators',// MENU_NM (메뉴명)
sortSeq: 5559, // SORT_SEQ (정렬순서)
useFg: 'effcidxmng',// USE_FG (사용여부)
rmrk: 'effcidxmng',
url: 'ems/base/EffcIdxMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu6', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 분석',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd40',
sysDivCd: 'MNU0006', //시스템구분
menuId: 'addInfoMg', // MENU_ID (메뉴ID)
prgmId: 'PRG0009', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '26. Management of Additional Information',// MENU_NM (메뉴명)
sortSeq: 5560, // SORT_SEQ (정렬순서)
useFg: 'addInfoMg',// USE_FG (사용여부)
rmrk: 'addInfoMg',
url: 'ems/base/AddInfoMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'readresultclosemng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0927', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '27. 계량 데이터 마감 관리',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'readresultclosemng',// USE_FG (사용여부)
rmrk: 'readresultclosemng',
url: 'ems/base/ReadResultCloseMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'pastrsltdataread', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0928', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '28. Metering location Data Inquiry',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'pastrsltdataread',// USE_FG (사용여부)
rmrk: 'pastrsltdataread',
url: 'ems/base/PastRsltDataReadPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'menumng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0064', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '30. Menu Management',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'menumng',// USE_FG (사용여부)
rmrk: 'menumng',
url: 'comm/auth/MenuMngPage',
lvl: 1
},
{
comId: 'd41',
sysDivCd: 'roleMg', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG00030', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '31. Role',// MENU_NM (메뉴명)
sortSeq: 5560, // SORT_SEQ (정렬순서)
useFg: 'roleMg',// USE_FG (사용여부)
rmrk: 'roleMg',
url: 'comm/auth/RoleMngPage',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'prgmmng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0119', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '34. 프로그램',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'prgmmng',// USE_FG (사용여부)
rmrk: 'prgmmng',
url: 'comm/base/PrgmMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu7', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 조회',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1
},
{
comId: 'd47',
sysDivCd: 'batchmng', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG0019', // PRGM_ID (프로그램ID)
upMenuId: 'menu7', // UP_MENU_ID (상위메뉴ID)
menuNm: '35. Batch Management',// MENU_NM (메뉴명)
sortSeq: 5657, // SORT_SEQ (정렬순서)
useFg: 'batchmng',// USE_FG (사용여부)
rmrk: 'batchmng',
url: 'comm/base/BatchMngPage',
lvl: 1
},
{
comId: 'd100',
sysDivCd: 'sysDivCd', //시스템구분
menuId: 'menu8', // MENU_ID (메뉴ID)
prgmId: 'PRG0000', // PRGM_ID (프로그램ID)
upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
menuNm: '데이터 조회',// MENU_NM (메뉴명)
sortSeq: 9999, // SORT_SEQ (정렬순서)
useFg: 'useFg',// USE_FG (사용여부)
rmrk: 'rmrk',
lvl: 1,
icon: "mdi-chevron-down",
},
{
comId: 'd42',
sysDivCd: 'MNU0006', //시스템구분
menuId: 'batchLg', // MENU_ID (메뉴ID)
prgmId: 'PRG00010', // PRGM_ID (프로그램ID)
upMenuId: 'menu8', // UP_MENU_ID (상위메뉴ID)
menuNm: '36. Batch log',// MENU_NM (메뉴명)
sortSeq: 5561, // SORT_SEQ (정렬순서)
useFg: 'batchLg',// USE_FG (사용여부)
rmrk: 'batchLg',
url: 'comm/base/BatchLogMngPage',
lvl: 1,
},
// {
// comId: 'd37',
// sysDivCd: 'energyeffc', //시스템구분
// menuId: 'energyeffc', // MENU_ID (메뉴ID)
// prgmId: 'PRG0006', // PRGM_ID (프로그램ID)
// upMenuId: 'dashboardfirst', // UP_MENU_ID (상위메뉴ID)
// menuNm: 'Energy Efficiency Equipment',// MENU_NM (메뉴명)
// sortSeq: 5557, // SORT_SEQ (정렬순서)
// useFg: 'energyeffc',// USE_FG (사용여부)
// rmrk: 'energyeffc',
// url: 'ems/effc/EnrgEffcEqpmDetlMntrPage'
// },
]
let myMenu = []; let myMenu = [];
if (list.length > 0) { if (list.length > 0) {
myMenu = list myMenu = list
// .filter(ele => { // .filter(ele => {
// return ele.useFg === "1"; // return ele.useFg === "1";
@ -593,13 +61,14 @@ export const actions = {
id: item.prgmId || i, id: item.prgmId || i,
upMenuId: item.upMenuId || item.menuNm, upMenuId: item.upMenuId || item.menuNm,
// title: item.menuNm // title: item.menuNm
icon: 'mdi-chevron-down', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯, // icon: '', // 아이콘은,. 값을 받아오지 않는 이상 별도로 상수화해서 prgmId 값을 키로 꺼내써야 할듯,
to: state[item.prgmId], to: state[item.prgmId],
// to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯, // to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯,
})); }));
// console.log("myMenu::", myMenu); // console.log("myMenu::", myMenu);
} }
dispatch('setMenuTree', myMenu); dispatch('setMenuTree', myMenu);
commit( commit(
'setMenuItems', 'setMenuItems',
@ -649,7 +118,7 @@ export const actions = {
}); });
}); });
} }
console.log('menu test:', tmpLsit["0"]); // console.log(tmpLsit["0"]);
commit('setTreevieItems', tmpLsit.menu['0'], { root: true }); commit('setTreevieItems', tmpLsit['0'], { root: true });
}, },
}; };