vue2_frontend init..
This commit is contained in:
parent
45ce9c93ea
commit
b3433bcef6
@ -1,7 +0,0 @@
|
|||||||
export default (await import('vue')).defineComponent({
|
|
||||||
name: 'HelloWorld',
|
|
||||||
props: {
|
|
||||||
msg: String
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const __VLS_template = () => ({})
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
export default (await import('vue')).defineComponent({
|
|
||||||
name: 'HelloWorld',
|
|
||||||
props: {
|
|
||||||
msg: String
|
|
||||||
}
|
|
||||||
})
|
|
||||||
const __VLS_template = () => ({})
|
|
||||||
3
src/components/common/ListComponent.vue
Normal file
3
src/components/common/ListComponent.vue
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>ListComponent</div>
|
||||||
|
</template>
|
||||||
@ -3,57 +3,75 @@
|
|||||||
<div>
|
<div>
|
||||||
<b-container fluid>
|
<b-container fluid>
|
||||||
<b-row>
|
<b-row>
|
||||||
<b-col> </b-col>
|
<b-col class="border">
|
||||||
<b-col>
|
<b-input-group>
|
||||||
<b-form-group>
|
<label class="input-group-text">
|
||||||
<b-input-group>
|
<b-form-checkbox @change="rowSelectAllToggle"
|
||||||
<label class="input-group-text">Filter</label>
|
>All</b-form-checkbox
|
||||||
<b-form-input
|
>
|
||||||
id="filter-input"
|
</label>
|
||||||
v-model="filter"
|
<b-form-select
|
||||||
type="text"
|
v-model="selectMode"
|
||||||
placeholder="Type to Filter"
|
:options="selectModes"
|
||||||
></b-form-input>
|
></b-form-select>
|
||||||
<b-input-group-append>
|
</b-input-group>
|
||||||
<b-button :disabled="!filter" @click="filter = ''"
|
|
||||||
>Clear</b-button
|
|
||||||
>
|
|
||||||
</b-input-group-append>
|
|
||||||
</b-input-group>
|
|
||||||
</b-form-group>
|
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col>
|
<b-col cols="6" class="border">
|
||||||
<div class="input-group justify-content-end">
|
<b-input-group>
|
||||||
|
<label class="input-group-text">
|
||||||
|
<b-form-checkbox-group
|
||||||
|
class="d-flex flex-nowrap"
|
||||||
|
v-model="filterOn"
|
||||||
|
:options="filterOptions"
|
||||||
|
></b-form-checkbox-group>
|
||||||
|
</label>
|
||||||
|
<b-form-input
|
||||||
|
v-model="filter"
|
||||||
|
type="text"
|
||||||
|
placeholder="Type to Filter"
|
||||||
|
></b-form-input>
|
||||||
|
<b-button :disabled="!filter" @click="filter = ''">Clear</b-button>
|
||||||
|
</b-input-group>
|
||||||
|
</b-col>
|
||||||
|
<b-col class="border">
|
||||||
|
<b-input-group class="justify-content-end">
|
||||||
<label class="input-group-text">줄수</label>
|
<label class="input-group-text">줄수</label>
|
||||||
<b-form-select
|
<b-form-select
|
||||||
v-model="perPage"
|
v-model="perPage"
|
||||||
:options="perPageOptions"
|
:options="perPageOptions"
|
||||||
></b-form-select>
|
></b-form-select>
|
||||||
</div>
|
</b-input-group>
|
||||||
</b-col>
|
</b-col>
|
||||||
</b-row>
|
</b-row>
|
||||||
<b-row class="overflow-auto">
|
<b-row class="overflow-auto">
|
||||||
<b-table
|
<b-table-lite
|
||||||
|
ref="selectableTable"
|
||||||
:items="items"
|
:items="items"
|
||||||
:fields="fields"
|
:fields="fields"
|
||||||
:per-page="perPage"
|
:per-page="perPage"
|
||||||
:current-page="currentPage"
|
:current-page="currentPage"
|
||||||
:filter="filter"
|
:filter="filter"
|
||||||
:filter-included-fields="filterOn"
|
:filter-included-fields="filterOn"
|
||||||
|
@filtered="onFiltered"
|
||||||
:sort-by.sync="sortBy"
|
:sort-by.sync="sortBy"
|
||||||
:sort-desc.sync="sortDesc"
|
:sort-desc.sync="sortDesc"
|
||||||
:sort-direction="sortDirection"
|
:sort-direction="sortDirection"
|
||||||
:busy="isBusy"
|
|
||||||
:striped="table_Attributes.striped"
|
|
||||||
:hover="table_Attributes.hover"
|
|
||||||
:bordered="table_Attributes.bordered"
|
|
||||||
:dark="table_Attributes.dark"
|
|
||||||
:head-variant="table_Attributes.headVariant"
|
|
||||||
label-sort-asc=""
|
label-sort-asc=""
|
||||||
label-sort-desc=""
|
label-sort-desc=""
|
||||||
label-sort-clear=""
|
label-sort-clear=""
|
||||||
@filtered="onFiltered"
|
:select-mode="selectMode"
|
||||||
|
selectable
|
||||||
|
@row-selected="rowSelectedToggle"
|
||||||
|
:busy="isBusy"
|
||||||
|
:sticky-header="commonTableAttributes.stickyHeader"
|
||||||
|
:no-border-collapse="commonTableAttributes.noBorderCollapse"
|
||||||
|
:striped="commonTableAttributes.striped"
|
||||||
|
:hover="commonTableAttributes.hover"
|
||||||
|
:bordered="commonTableAttributes.bordered"
|
||||||
|
:dark="commonTableAttributes.dark"
|
||||||
|
:head-variant="commonTableAttributes.headVariant"
|
||||||
>
|
>
|
||||||
|
<!-- 각 Cell/Field별 속성 추가용 -->
|
||||||
<template #table-colgroup="scope">
|
<template #table-colgroup="scope">
|
||||||
<col
|
<col
|
||||||
v-for="field in scope.fields"
|
v-for="field in scope.fields"
|
||||||
@ -61,22 +79,27 @@
|
|||||||
:style="{ width: field.width }"
|
:style="{ width: field.width }"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<template #cell(selected)="row">
|
<!-- 비/선택 Row를 토글용 -->
|
||||||
<input
|
<template #cell(rowSelect)="{ rowSelected }">
|
||||||
type="checkbox"
|
<template v-if="rowSelected">
|
||||||
:value="row.item.id"
|
<span aria-hidden="true">✓</span>
|
||||||
@change="checkedIdsToggle(row.item.id)"
|
</template>
|
||||||
/>
|
<template v-else>
|
||||||
|
<span aria-hidden="true"> </span>
|
||||||
|
</template>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- Row의 Index를 이용한 번호 출력 -->
|
||||||
<template #cell(index)="row">
|
<template #cell(index)="row">
|
||||||
{{ total - (currentPage * perPage + row.index) + perPage }}
|
{{ total - (currentPage * perPage + row.index) + perPage }}
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 제목부분 출력용 -->
|
||||||
<template #cell(title)="row">
|
<template #cell(title)="row">
|
||||||
{{ row.item.title }}
|
{{ row.item.title }}
|
||||||
<b-button size="sm" @click="row.toggleDetails" class="mr-2">
|
<b-button size="sm" @click="row.toggleDetails" class="mr-2">
|
||||||
{{ row.detailsShowing ? 'Hide' : 'Show' }} Details
|
{{ row.detailsShowing ? 'Hide' : 'Show' }} Details
|
||||||
</b-button>
|
</b-button>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 상세 내용 출력용 -->
|
||||||
<template #row-details="row">
|
<template #row-details="row">
|
||||||
<b-card>
|
<b-card>
|
||||||
<b-row class="mb-2">
|
<b-row class="mb-2">
|
||||||
@ -87,13 +110,14 @@
|
|||||||
>
|
>
|
||||||
</b-card>
|
</b-card>
|
||||||
</template>
|
</template>
|
||||||
|
<!-- 데이터 로딩중 출력용 -->
|
||||||
<template #table-busy>
|
<template #table-busy>
|
||||||
<div class="text-center text-danger my-2">
|
<div class="text-center text-danger my-2">
|
||||||
<b-spinner class="align-middle"></b-spinner>
|
<b-spinner class="align-middle"></b-spinner>
|
||||||
<strong>Loading...</strong>
|
<strong>Loading...</strong>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</b-table>
|
</b-table-lite>
|
||||||
</b-row>
|
</b-row>
|
||||||
<b-row>
|
<b-row>
|
||||||
<b-col>
|
<b-col>
|
||||||
@ -104,52 +128,59 @@
|
|||||||
></b-pagination>
|
></b-pagination>
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col>
|
<b-col>
|
||||||
<div class="input-group">
|
<b-input-group>
|
||||||
<label class="input-group-text">DB</label>
|
<label class="input-group-text">DB</label>
|
||||||
<input type="text" class="form-control" v-model="search" />
|
<input type="text" class="form-control" v-model="search" />
|
||||||
<span class="input-group-text" @click="searchClick">검색</span>
|
<span class="input-group-text" @click="searchForDB">검색</span>
|
||||||
</div>
|
</b-input-group>
|
||||||
</b-col>
|
</b-col>
|
||||||
<b-col>
|
<b-col>
|
||||||
<div class="input-group justify-content-end">
|
<b-input-group class="justify-content-end">
|
||||||
<b-button @click="busyToggle">Toggle Busy State</b-button>
|
<b-button @click="busyToggle">Toggle Busy State</b-button>
|
||||||
</div>
|
</b-input-group>
|
||||||
</b-col>
|
</b-col>
|
||||||
</b-row>
|
</b-row>
|
||||||
</b-container>
|
</b-container>
|
||||||
|
<p>
|
||||||
|
Selected Rows:<br />
|
||||||
|
{{ selectedRows }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// 참조 : https://vuejsexamples.com/vuejs-tables-and-select-all-checkbox/
|
// 참조 : https://vuejsexamples.com/vuejs-tables-and-select-all-checkbox/
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
// import ListComponent from '@/components/common/ListComponent.vue'
|
||||||
axios.defaults.baseURL = 'http://localhost:3000'
|
axios.defaults.baseURL = 'http://localhost:3000'
|
||||||
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'
|
axios.defaults.headers.post['Content-Type'] = 'application/json;charset=utf-8'
|
||||||
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*'
|
axios.defaults.headers.post['Access-Control-Allow-Origin'] = '*'
|
||||||
export default {
|
export default {
|
||||||
components: {},
|
components: {
|
||||||
data() {
|
//ListComponent: ListComponent
|
||||||
|
},
|
||||||
|
data: function () {
|
||||||
return {
|
return {
|
||||||
items: [],
|
items: [],
|
||||||
fields: [
|
fields: [
|
||||||
|
{ key: 'rowSelect', label: '✓', width: '55px' },
|
||||||
{
|
{
|
||||||
key: 'selected',
|
key: 'index',
|
||||||
label: '',
|
label: '번호',
|
||||||
width: '10px'
|
width: '55px',
|
||||||
|
variant: 'primary'
|
||||||
},
|
},
|
||||||
{ key: 'index', label: '번호', width: '55px' },
|
|
||||||
{
|
{
|
||||||
key: 'title',
|
key: 'title',
|
||||||
label: '제목',
|
label: '제목',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
sortDirection: 'desc',
|
sortByFormatted: true,
|
||||||
filterByFormatted: true
|
filterByFormatted: true
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// key: 'content',
|
// key: 'content',
|
||||||
// label: '내용',
|
// label: '내용',
|
||||||
// sortable: true,
|
// sortable: true,
|
||||||
// sortDirection: 'desc',
|
// sortByFormatted: true,
|
||||||
// filterByFormatted: true
|
// filterByFormatted: true
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
@ -161,13 +192,12 @@ export default {
|
|||||||
return value ? 'Yes' : 'No'
|
return value ? 'Yes' : 'No'
|
||||||
},
|
},
|
||||||
sortable: true,
|
sortable: true,
|
||||||
sortByFormatted: true,
|
|
||||||
filterByFormatted: true
|
filterByFormatted: true
|
||||||
},
|
},
|
||||||
// { key: 'updateAt', label: '수정일' },
|
// { key: 'updateAt', label: '수정일' },
|
||||||
{
|
{
|
||||||
key: 'createdAt',
|
key: 'createdAt',
|
||||||
label: '登録日時',
|
label: '등록일',
|
||||||
width: '105px',
|
width: '105px',
|
||||||
formatter: (value) => {
|
formatter: (value) => {
|
||||||
return value.replace(
|
return value.replace(
|
||||||
@ -175,7 +205,8 @@ export default {
|
|||||||
'$1-$2-$3'
|
'$1-$2-$3'
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
sortable: true
|
sortable: true,
|
||||||
|
sortByFormatted: true
|
||||||
// filterByFormatted: true
|
// filterByFormatted: true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -184,31 +215,43 @@ export default {
|
|||||||
perPageOptions: [
|
perPageOptions: [
|
||||||
{ value: 5, text: '5줄' },
|
{ value: 5, text: '5줄' },
|
||||||
{ value: 10, text: '10줄' },
|
{ value: 10, text: '10줄' },
|
||||||
{ value: 15, text: '15줄' },
|
{ value: 30, text: '30줄' },
|
||||||
{ value: 100, text: 'Show a lot' }
|
{ value: 60, text: '60줄' },
|
||||||
|
{ value: 100, text: '100줄' }
|
||||||
],
|
],
|
||||||
currentPage: 1, // 현재 페이지
|
currentPage: 1, // 현재 페이지
|
||||||
|
search: null, //DB검색
|
||||||
// 속성옵션
|
// 속성옵션
|
||||||
table_Attributes: {
|
commonTableAttributes: {
|
||||||
|
stickyHeader: false,
|
||||||
|
noBorderCollapse: false,
|
||||||
striped: true,
|
striped: true,
|
||||||
hover: true,
|
hover: true,
|
||||||
bordered: true,
|
bordered: true,
|
||||||
dark: false,
|
dark: false,
|
||||||
headVariant: 'null'
|
headVariant: 'light'
|
||||||
},
|
},
|
||||||
isBusy: false,
|
isBusy: false,
|
||||||
sortBy: 'id',
|
sortBy: 'id',
|
||||||
sortDesc: false,
|
sortDesc: false,
|
||||||
sortDirection: 'asc',
|
sortDirection: 'asc',
|
||||||
filter: null,
|
filter: null,
|
||||||
filterOn: [],
|
filterOn: ['title', 'content'],
|
||||||
search: null,
|
filterOptions: [
|
||||||
checkedIds: []
|
{ text: '제목', value: 'title' },
|
||||||
|
{ text: '내용', value: 'content' },
|
||||||
|
{ text: '수정일', value: 'updateAt', disabled: true },
|
||||||
|
{ text: '등록일', value: 'createdAt' }
|
||||||
|
],
|
||||||
|
selectModes: ['multi', 'single', 'range'],
|
||||||
|
selectMode: 'multi',
|
||||||
|
selectedAllToggle: false,
|
||||||
|
selectedRows: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
setup() {},
|
setup: function () {},
|
||||||
created() {},
|
created: function () {},
|
||||||
mounted() {
|
mounted: function () {
|
||||||
// var vm = this
|
// var vm = this
|
||||||
// setTimeout(function () {
|
// setTimeout(function () {
|
||||||
// vm.records = vm.getDatas()
|
// vm.records = vm.getDatas()
|
||||||
@ -238,7 +281,7 @@ export default {
|
|||||||
this.items = items.rows
|
this.items = items.rows
|
||||||
this.isBusy = false
|
this.isBusy = false
|
||||||
},
|
},
|
||||||
searchClick() {
|
searchForDB() {
|
||||||
this.currentPage = 1
|
this.currentPage = 1
|
||||||
this.getDatas()
|
this.getDatas()
|
||||||
},
|
},
|
||||||
@ -250,16 +293,26 @@ export default {
|
|||||||
this.total = filteredItems.length
|
this.total = filteredItems.length
|
||||||
this.currentPage = 1
|
this.currentPage = 1
|
||||||
},
|
},
|
||||||
checkedIdsToggle(id) {
|
rowSelectedToggle(selectedRow) {
|
||||||
console.log(this)
|
this.selectedRows = selectedRow
|
||||||
//console.log(this.checkedIds)
|
},
|
||||||
if (!this.checkedIds.includes(id)) {
|
rowSelectAllToggle() {
|
||||||
this.checkedIds.push(id)
|
if (this.selectedAllToggle) {
|
||||||
|
this.$refs.selectableTable.clearSelected()
|
||||||
|
this.selectedAllToggle = false
|
||||||
} else {
|
} else {
|
||||||
this.checkedIds = this.checkedIds.filter((e) => e !== id)
|
this.$refs.selectableTable.selectAllRows()
|
||||||
|
this.selectedAllToggle = true
|
||||||
}
|
}
|
||||||
console.log(this.checkedIds)
|
|
||||||
}
|
}
|
||||||
|
// rowSelectSet(id) {
|
||||||
|
// // Rows are indexed from 0, so the third row is index 2
|
||||||
|
// this.$refs.selectableTable.selectRow(id)
|
||||||
|
// },
|
||||||
|
// rowSelectUnSet(id) {
|
||||||
|
// // Rows are indexed from 0, so the third row is index 2
|
||||||
|
// this.$refs.selectableTable.unselectRow(id)
|
||||||
|
// }
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
sortOptions() {
|
sortOptions() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user