update32.1vs32.2

This commit is contained in:
Nguyen Van Luan/(Nguyen Van Luan)/현장대리인/SK
2025-07-24 11:41:23 +09:00
parent edab77d0c6
commit 0ad898769d
8 changed files with 208 additions and 26 deletions

View File

@ -433,6 +433,10 @@ a {
.v-application.#{$theme}-mode {
min-width: 1000px;
.head-logo{
gap: 8px;
}
.v-navigation-drawer {
background: map-deep-get($config, #{$theme}, "menu-bg-color");
}

View File

@ -107,6 +107,13 @@
}
.ant-btn {
&.ant-btn-outlined {
color:map-deep-get($config, #{$theme}, "ant-btn-default-color");
border:1px solid map-deep-get($config, #{$theme}, "ant-btn-default-border-outlined");
background-color: transparent;
}
&.ant-btn-primary {
background: map-deep-get($config, #{$theme}, "ant-btn-primary-bg");
border-color:map-deep-get($config, #{$theme}, "ant-btn-primary-bg");

View File

@ -221,6 +221,16 @@
.v-application.#{$theme}-mode {
.v-input-popup__custom {
.v-input__slot {
padding-left: 12px;
padding-right: 12px;
border: 1px solid map-deep-get($config,
#{$theme},
"v-input-popup-password-border"
);
}
}
.v-textarea {
.v-input__slot{

View File

@ -152,6 +152,7 @@ $config: (
search-btn-background: #1668DC,
v-btn-color-default: #FFFFFFD9,
v-btn-bg-default: #FFFFFF2E,
v-input-popup-password-border: #424242,
v-input-textarea-border: #424242,
v-input-textarea-bg: #212224,
v-input-textarea-color: #FFFFFFD9,
@ -166,6 +167,7 @@ $config: (
ant-btn-default-border:#FFFFFF2E,
ant-btn-default-bg:#FFFFFF2E,
ant-btn-default-color:#FFFFFFD9,
ant-btn-default-border-outlined:#424242,
),
light: (w-g5: $--color-gray_555,
g5-w: $--color-white,
@ -282,6 +284,7 @@ $config: (
search-btn-background: #1677FF,
v-btn-bg-default: #00000026,
v-btn-color-default: #000000E0,
v-input-popup-password-border: #D9D9D9,
v-input-textarea-border: #D9D9D9,
v-input-textarea-bg: #FFFFFF,
v-input-textarea-color: #000000E0,
@ -296,5 +299,6 @@ $config: (
ant-btn-default-border:#00000026,
ant-btn-default-bg:#00000026,
ant-btn-default-color:#000000E0,
ant-btn-default-border-outlined:#D9D9D9,
),
);

View File

@ -1,6 +1,6 @@
<template>
<v-row class="search-box" align="center" no-gutters>
<v-col v-if="item.label" :cols="item.cols == 12 ? 2 : 4">
<v-col v-if="item.label" :cols="item.labelCols !== undefined ? item.labelCols : item.cols == 12 ? 2 : 4">
<label for="" class="search-box-label">
<v-icon
x-small
@ -28,10 +28,14 @@
></v-text-field>
</template>
<template v-else>
<v-btn :ripple="false" @click="dialog = !dialog">
<!-- <v-icon>mdi-content-save</v-icon> -->
<!-- <v-icon>mdi-content-save</v-icon> -->
<!-- <v-btn :ripple="false" @click="dialog = !dialog">
<span>비밀번호 {{ isPassword }}</span>
</v-btn>
</v-btn> -->
<a-button :ripple="false" @click="dialog = !dialog" class="ant-btn-outlined">
<!-- <v-icon>mdi-content-save</v-icon> -->
비밀번호 {{ isPassword }}
</a-button>
</template>
</v-col>
@ -48,7 +52,7 @@
</label>
<v-text-field
v-model.trim="firstPswd"
class="v-input__custom"
class="v-input-popup__custom"
type="password"
:readonly="!isFocused"
@focus="isFocused = true"
@ -61,7 +65,7 @@
</label>
<v-text-field
v-model.trim="secondPswd"
class="v-input__custom"
class="v-input-popup__custom"
type="password"
:readonly="!isFocused"
@focus="isFocused = true"
@ -72,8 +76,15 @@
<v-divider></v-divider>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary" dark @click="setUpdate()">확인</v-btn>
<v-btn color="primary" dark @click="close()">닫기</v-btn>
<!-- <v-btn color="primary" dark @click="setUpdate()">확인</v-btn> -->
<div>
<a-button @click="close()" class="btn-default">삭제</a-button>
<a-button type="primary" @click="setUpdate()" class="v-btn-add-text">
확인
</a-button>
</div>
<!-- <v-btn color="primary" dark @click="close()">닫기</v-btn> -->
</v-card-actions>
</v-card>
</v-dialog>
@ -135,8 +146,10 @@ export default {
} else {
return '';
}
console.log(value)
},
set(value) {
console.log(value)
return value;
},
},

View File

@ -4,7 +4,7 @@
<fullscreen :fullscreen.sync="fullscreen">
<div class="header">
<v-row class="mx-0">
<div class="head-logo pl-4">
<div class="head-logo pl-4 d-flex gap-3">
<router-link class="home" :to="myHome.root">
<div class="lnb-logo">
<img v-if="isDarkMode" src="@/assets/images/logo_dm.png" />
@ -13,9 +13,11 @@
</div>
<!-- <div class="lnb-logo">FEMS</div>-->
</router-link>
<div class="align-center d-flex">
<ThemeSwitch style="margin-right: 20px" />
</div>
</div>
<v-col col="1" class="d-flex justify-end py-4 px-6 flex-row" style="gap: 8px;">
<ThemeSwitch style="margin-right: 20px" />
<v-menu offset-y>
<template v-slot:activator="{ on, attrs }">
<a-button :ripple="false" tile class="btn-header" v-bind="attrs" v-on="on">
@ -102,7 +104,9 @@
<img v-else src="@/assets/images/logo_lm.png" />
</div>
<!-- <div class="lnb-logo">FEMS</div>-->
</router-link>
<ThemeSwitch style="margin-right: 20px" />
<v-app-bar-nav-icon ref="appbarnavicon" id="appbarnavicon" @click.stop="miniVariant = !miniVariant"
@click="updateTreeview" :style="{
backgroundColor: 'transparent',
@ -164,7 +168,6 @@
<v-icon size="20" class="ml-2" v-if="closable" @click.stop="onCloseTab(to)">mdi-close</v-icon>
</template>
<template #end v-if="false">
<ThemeSwitch style="margin-right: 20px" />
<v-menu offset-y>
<template v-slot:activator="{ on, attrs }">
<!-- <v-btn :ripple="false" tile class="btn-close" v-bind="attrs" v-on="on">

View File

@ -4,13 +4,14 @@
<v-row ref="searchFilter">
<v-col :cols="12">
<v-card class="searchFilter">
<v-row align="center" no-gutters>
<v-row align="end" no-gutters>
<v-col :cols="3">
<!-- 사업장 -->
<component
:is="'SelectBlocMstr'"
:parentPrgmId="myPrgmId"
:sendParam="{ comId }"
customClass="select-large"
/>
<!-- <component
:is="'selectCodeList'"
@ -35,6 +36,7 @@
label="로그인ID"
valueNm="userLoginId"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="3">
@ -43,10 +45,11 @@
label="사용자명"
valueNm="userNm"
:searchOption="true"
customClass="input-large"
/>
</v-col>
<v-col :cols="3" class="text-right">
<BtnSearch />
<BtnSearch size="large"/>
</v-col>
</v-row>
</v-card>
@ -76,6 +79,7 @@
@getRowsData="getRowData"
@sendSelectedRowStatInfo="getSelectedRowStatInfo"
:selectedRowDataWatchFlag="true"
:dataPath="dataPathMock"
/>
</div>
</div>
@ -303,10 +307,40 @@ export default {
},
methods: {
async init() {
await this.gridInit();
this.gridInit();
},
gridInitTest() {
const rowGrid = {
column: [
{ header: '사용자No', name: 'userNo', align: 'center', hidden: true },
{ header: '사용자명', name: 'userNm' },
{ header: '사용자ID', name: 'userLoginId' },
{ header: '사용자비밀번호', name: 'userPswd', hidden: true },
{ header: '사업장', name: 'blocId', hidden: true },
{ header: 'email', name: 'email', hidden: true },
{ header: '등록자NO', name: 'regUserNo', hidden: true },
{ header: '등록일시', name: 'regDttm', hidden: true },
{ header: '수정자NO', name: 'procUserNo', hidden: true },
{ header: '수정일시', name: 'procDttm', hidden: true },
{ header: 'comId', name: 'comId', hidden: true },
{ header: 'deptId', name: 'deptId', hidden: true },
],
data: dataMockExample,
defaultRow: dataMockExample,
option: [],
}
this.dataPathMock = {rowGrid};
this.$nextTick(() => {
this.loadGrid = true;
});
},
// 사용자 리스트 그리드 세팅
gridInit() {
this.gridInitTest(); return
const gridHeight = this.$refs.gridParent.offsetHeight - 90;
const myOptions = {
@ -937,7 +971,10 @@ const myDetail = blocCdList => {
elseDisabled: 'I', // 선택적 disabled => rowStat 상태가 해당 값이 아닐경우 true
readonly: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: false,
placeholder: '시스템 자동입력',
},
@ -946,7 +983,10 @@ const myDetail = blocCdList => {
label: '사용자ID',
valueNm: 'userLoginId',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -956,7 +996,10 @@ const myDetail = blocCdList => {
valueNm: 'userPswd',
// disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -964,7 +1007,10 @@ const myDetail = blocCdList => {
label: '사용자명',
valueNm: 'userNm',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
required: true,
},
{
@ -972,7 +1018,10 @@ const myDetail = blocCdList => {
label: '사업장',
valueNm: 'blocId',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
list: blocCdList.map(item => ({
text: item.blocNm,
value: item.blocId,
@ -984,7 +1033,10 @@ const myDetail = blocCdList => {
label: 'email',
valueNm: 'email',
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
},
{
type: 'InputText',
@ -992,7 +1044,10 @@ const myDetail = blocCdList => {
valueNm: 'regUserNo',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1001,7 +1056,10 @@ const myDetail = blocCdList => {
valueNm: 'regDttm',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1010,7 +1068,10 @@ const myDetail = blocCdList => {
valueNm: 'procUserNo',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
{
@ -1019,7 +1080,10 @@ const myDetail = blocCdList => {
valueNm: 'procDttm',
disabled: true,
cols: 6,
class: 'py-2',
labelCols: 12,
textCols: 12,
class: 'py-2 pr-4',
iconShow: true,
placeholder: '시스템 자동입력',
},
];
@ -1036,4 +1100,67 @@ function sha512(str) {
.update(str)
.digest('hex');
}
const dataMockExample = [
{
userNo: 1,
userNm: '홍길동',
userLoginId: 'hong123',
userPswd: 'password123',
blocId: 'B001',
email: 'hong@example.com',
regUserNo: 100,
regDttm: '2025-07-01 10:00:00',
procUserNo: 101,
procDttm: '2025-07-15 14:30:00',
comId: 'C001',
deptId: 'D001'
},
{
userNo: 2,
userNm: '김영희',
userLoginId: 'kimyh',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 3,
userNm: '관리자',
userLoginId: 'user',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
},
{
userNo: 4,
userNm: '사용자',
userLoginId: 'admin',
userPswd: 'securePass456',
blocId: 'B002',
email: 'kim@example.com',
regUserNo: 102,
regDttm: '2025-07-02 11:20:00',
procUserNo: 103,
procDttm: '2025-07-16 09:45:00',
comId: 'C002',
deptId: 'D002'
}
];
</script>

View File

@ -36,6 +36,7 @@ export const actions = {
'X-Fems-MenuId': 'MNU0001',
},
};
console.log(params)
const params = { params: payload || {} };
const res = await this.$axios.post(
DOMAIN + 'comm/base/MenuMngCtr/selectAuthMenu',
@ -566,6 +567,19 @@ export const actions = {
lvl: 1,
icon: "mdi-chevron-down",
},
{
comId: 'd41',
sysDivCd: 'userRoleMg', //시스템구분
menuId: 'MNU0006', // MENU_ID (메뉴ID)
prgmId: 'PRG00030', // PRGM_ID (프로그램ID)
upMenuId: 'menu6', // UP_MENU_ID (상위메뉴ID)
menuNm: '32. User Role',// MENU_NM (메뉴명)
sortSeq: 5560, // SORT_SEQ (정렬순서)
useFg: 'userRoleMg',// USE_FG (사용여부)
rmrk: 'userRoleMg',
url: 'comm/auth/UserRoleMngPage',
lvl: 1
},
{
comId: 'd42',
sysDivCd: 'MNU0006', //시스템구분
@ -579,6 +593,7 @@ export const actions = {
url: 'comm/base/BatchLogMngPage',
lvl: 1,
},
{}
// {
// comId: 'd37',
// sysDivCd: 'energyeffc', //시스템구분
@ -611,7 +626,7 @@ export const actions = {
// to: '' // 경로는,. 값을 받아오지 않는 이상 아이콘과 마찬가지로 짝지어 상수화 하거나 sysDivCd, prgmId 값 등을 이용해 조합해서 route를 구성해야 할듯,
}));
// console.log("myMenu::", myMenu);
console.log("myMenu::", myMenu);
}
dispatch('setMenuTree', myMenu);
commit(
@ -662,7 +677,6 @@ export const actions = {
});
});
}
console.log('menu test:', tmpLsit["0"]);
commit('setTreevieItems', tmpLsit.menu['0'], { root: true });
},
};