|
@ -1,44 +1,49 @@ |
|
|
<template> |
|
|
<template> |
|
|
<div> |
|
|
<div> |
|
|
<el-dialog :title="crud.status.title" :visible="crud.status.cu > 0" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="crud.cancelCU"> |
|
|
|
|
|
|
|
|
<el-dialog :title="formTitle" :visible="formVisible" append-to-body :close-on-click-modal="false" :modal-append-to-body="false" :before-close="handleCloseForm"> |
|
|
<span class="dialog-right-top" /> |
|
|
<span class="dialog-right-top" /> |
|
|
<span class="dialog-left-bottom" /> |
|
|
<span class="dialog-left-bottom" /> |
|
|
<div class="setting-dialog"> |
|
|
<div class="setting-dialog"> |
|
|
<el-form ref="form" :model="form" size="small" label-width="80px" :rules="rules"> |
|
|
<el-form ref="form" :model="form" size="small" label-width="80px" :rules="rules"> |
|
|
<el-form-item label="专题名称" prop="name"> |
|
|
|
|
|
<el-input v-model="form.name" style="width: 580px;" /> |
|
|
|
|
|
|
|
|
<el-form-item label="专题名称" prop="title"> |
|
|
|
|
|
<el-input v-model="form.title" style="width: 580px;" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="编研类型" prop="type"> |
|
|
|
|
|
<el-select v-model="form.type" placeholder="请选择" style="width: 225px;"> |
|
|
|
|
|
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> |
|
|
|
|
|
|
|
|
<el-form-item label="编研类型" prop="researchType"> |
|
|
|
|
|
<el-select v-model="form.researchType" placeholder="请选择" style="width: 225px;"> |
|
|
|
|
|
<el-option v-for="item in options" :key="item.id" :label="item.dictionaryName" :value="item.dictionaryName" /> |
|
|
</el-select> |
|
|
</el-select> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="主编人" prop="main"> |
|
|
|
|
|
<el-input v-model="form.main" placeholder="请输入" type="hidden" style="display: none;" suffix-icon="el-icon-search" /> |
|
|
|
|
|
|
|
|
<el-form-item label="主编人" prop="editor1"> |
|
|
|
|
|
<el-input v-model="form.editor1" placeholder="请输入" type="hidden" style="display: none;" suffix-icon="el-icon-search" /> |
|
|
<div class="tag-wrapper el-icon-search" @click="handleSelectUser(1)"> |
|
|
<div class="tag-wrapper el-icon-search" @click="handleSelectUser(1)"> |
|
|
<el-tag v-for="item in userMainSelected" :key="item.userId" :closable="item !== '*'" @close="removeTag(item)"> |
|
|
<el-tag v-for="item in userMainSelected" :key="item.userId" :closable="item !== '*'" @close="removeTag(item)"> |
|
|
{{ item.username }} |
|
|
{{ item.username }} |
|
|
</el-tag> |
|
|
</el-tag> |
|
|
</div> |
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="编研人员" prop="other"> |
|
|
|
|
|
<el-input v-model="form.other" placeholder="请输入" suffix-icon="el-icon-search" style="width: 580px;" @blur="userVisible = true" /> |
|
|
|
|
|
|
|
|
<el-form-item label="编研人员" prop="editor2"> |
|
|
|
|
|
<el-input v-model="form.editor2" placeholder="请输入" type="hidden" style="display: none;" suffix-icon="el-icon-search" /> |
|
|
|
|
|
<div class="tag-wrapper el-icon-search" @click="handleSelectUser(2)"> |
|
|
|
|
|
<el-tag v-for="item in userOtherSelected" :key="item.userId" :closable="item !== '*'" @close="removeOtherTag(item)"> |
|
|
|
|
|
{{ item.username }} |
|
|
|
|
|
</el-tag> |
|
|
|
|
|
</div> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-row style="display: flex; justify-content: space-between; padding-right: 30px;"> |
|
|
<el-row style="display: flex; justify-content: space-between; padding-right: 30px;"> |
|
|
<el-form-item label="开始时间" prop="startTime" style="flex: 1;"> |
|
|
<el-form-item label="开始时间" prop="startTime" style="flex: 1;"> |
|
|
<el-date-picker v-model="form.startTime" placeholder="请选择" type="date" align="right" format="yyyy-MM-dd" /> |
|
|
|
|
|
|
|
|
<el-date-picker v-model="form.startTime" placeholder="请选择" type="date" align="right" format="yyyy-MM-dd" value-format="yyyy-MM-dd" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
<el-form-item label="结束时间" prop="endTime" style="flex: 1;"> |
|
|
<el-form-item label="结束时间" prop="endTime" style="flex: 1;"> |
|
|
<el-date-picker v-model="form.endTime" placeholder="请选择" type="date" align="right" format="yyyy-MM-dd" /> |
|
|
|
|
|
|
|
|
<el-date-picker v-model="form.endTime" placeholder="请选择" type="date" align="right" format="yyyy-MM-dd" value-format="yyyy-MM-dd" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-row> |
|
|
</el-row> |
|
|
<el-form-item label="备注" prop="remark"> |
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入" :rows="3" style="width: 580px;" /> |
|
|
|
|
|
|
|
|
<el-form-item label="备注" prop="remarks"> |
|
|
|
|
|
<el-input v-model="form.remarks" type="textarea" placeholder="请输入" :rows="3" style="width: 580px;" /> |
|
|
</el-form-item> |
|
|
</el-form-item> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<div slot="footer" class="dialog-footer"> |
|
|
<div slot="footer" class="dialog-footer"> |
|
|
<el-button type="text" @click="crud.cancelCU">取消</el-button> |
|
|
|
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="crud.submitCU">确定</el-button> |
|
|
|
|
|
|
|
|
<el-button type="text" @click="handleCloseForm">取消</el-button> |
|
|
|
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="handleComfiredEditing">确定</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
@ -78,10 +83,10 @@ |
|
|
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery()">重置</el-button> |
|
|
<el-button class="filter-item filter-refresh" size="mini" type="warning" icon="el-icon-refresh-left" @click="resetQuery()">重置</el-button> |
|
|
</el-form> |
|
|
</el-form> |
|
|
<el-table |
|
|
<el-table |
|
|
ref="table" |
|
|
|
|
|
|
|
|
ref="userTable" |
|
|
v-loading="userLoading" |
|
|
v-loading="userLoading" |
|
|
:data="userTable" |
|
|
:data="userTable" |
|
|
row-key="id" |
|
|
|
|
|
|
|
|
row-key="userId" |
|
|
style="width: 100%;" |
|
|
style="width: 100%;" |
|
|
height="calc(100vh - 500px)" |
|
|
height="calc(100vh - 500px)" |
|
|
@row-click="clickRowHandler" |
|
|
@row-click="clickRowHandler" |
|
@ -97,68 +102,47 @@ |
|
|
</div> |
|
|
</div> |
|
|
<div slot="footer" class="dialog-footer"> |
|
|
<div slot="footer" class="dialog-footer"> |
|
|
<el-button type="text" @click="handleClose">取消</el-button> |
|
|
<el-button type="text" @click="handleClose">取消</el-button> |
|
|
<el-button :loading="crud.status.cu === 2" type="primary" @click="handleUserComfired">确定</el-button> |
|
|
|
|
|
|
|
|
<el-button type="primary" @click="handleUserComfired">确定</el-button> |
|
|
</div> |
|
|
</div> |
|
|
</el-dialog> |
|
|
</el-dialog> |
|
|
</div> |
|
|
</div> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
import CRUD from '@crud/crud' |
|
|
|
|
|
import { crud, form } from '@crud/crud' |
|
|
|
|
|
|
|
|
import { form } from '@crud/crud' |
|
|
|
|
|
import { edit } from '@/api/archiveUtilize/archiveEditing' |
|
|
import Treeselect from '@riophae/vue-treeselect' |
|
|
import Treeselect from '@riophae/vue-treeselect' |
|
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|
|
import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
|
|
import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' |
|
|
import { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' |
|
|
import { getDepts, FetchSonDepts } from '@/api/system/dept' |
|
|
import { getDepts, FetchSonDepts } from '@/api/system/dept' |
|
|
import { FetchFondsAll } from '@/api/system/fonds' |
|
|
import { FetchFondsAll } from '@/api/system/fonds' |
|
|
import { FetchInitUserList } from '@/api/system/user' |
|
|
import { FetchInitUserList } from '@/api/system/user' |
|
|
|
|
|
import { FetchDictionaryTree } from '@/api/system/dict' |
|
|
|
|
|
import { mapGetters } from 'vuex' |
|
|
|
|
|
|
|
|
const defaultForm = { name: null, type: null, main: null, other: null, startTime: null, endTime: null, remark: null } |
|
|
|
|
|
|
|
|
const defaultForm = { id: null, title: null, researchType: null, editor1: null, editor2: null, startTime: null, endTime: null, remarks: null } |
|
|
export default { |
|
|
export default { |
|
|
name: 'Form', |
|
|
name: 'Form', |
|
|
components: { Treeselect }, |
|
|
components: { Treeselect }, |
|
|
mixins: [ |
|
|
mixins: [ |
|
|
crud(), |
|
|
|
|
|
form(function() { |
|
|
form(function() { |
|
|
return Object.assign({ }, defaultForm) |
|
|
return Object.assign({ }, defaultForm) |
|
|
}) |
|
|
}) |
|
|
], |
|
|
], |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
|
|
|
formType: 1, |
|
|
|
|
|
formTitle: '', |
|
|
|
|
|
formVisible: false, |
|
|
userVisible: false, |
|
|
userVisible: false, |
|
|
options: [ |
|
|
|
|
|
{ |
|
|
|
|
|
label: '汇编', |
|
|
|
|
|
value: 1 |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
label: '文摘', |
|
|
|
|
|
value: 2 |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
label: '索引', |
|
|
|
|
|
value: 3 |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
label: '简介', |
|
|
|
|
|
value: 4 |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
label: '综合调研材料', |
|
|
|
|
|
value: 5 |
|
|
|
|
|
}, |
|
|
|
|
|
{ |
|
|
|
|
|
label: '史志', |
|
|
|
|
|
value: 6 |
|
|
|
|
|
} |
|
|
|
|
|
], |
|
|
|
|
|
|
|
|
options: [], |
|
|
userForm: { |
|
|
userForm: { |
|
|
fonds: { id: null }, dept: { id: null }, blurry: null |
|
|
fonds: { id: null }, dept: { id: null }, blurry: null |
|
|
}, |
|
|
}, |
|
|
rules: { |
|
|
rules: { |
|
|
name: [{ required: true, trigger: 'blur', message: '专题名称不可为空' }], |
|
|
|
|
|
type: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
|
|
|
main: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
|
|
|
|
|
|
title: [{ required: true, trigger: 'blur', message: '专题名称不可为空' }], |
|
|
|
|
|
researchType: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
|
|
|
editor1: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
startTime: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
startTime: [{ required: true, trigger: 'change', message: '请选择' }], |
|
|
endTime: [{ required: true, trigger: 'change', message: '请选择' }] |
|
|
endTime: [{ required: true, trigger: 'change', message: '请选择' }] |
|
|
}, |
|
|
}, |
|
@ -170,15 +154,21 @@ export default { |
|
|
deptDatas: [], |
|
|
deptDatas: [], |
|
|
userType: 1, |
|
|
userType: 1, |
|
|
userLoading: false, |
|
|
userLoading: false, |
|
|
userTable: [{}, {}], |
|
|
|
|
|
selections: [], |
|
|
|
|
|
|
|
|
userTable: [], |
|
|
|
|
|
selections: null, |
|
|
userMainSelected: [], |
|
|
userMainSelected: [], |
|
|
userOtherSelected: [] |
|
|
userOtherSelected: [] |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
computed: { |
|
|
|
|
|
...mapGetters([ |
|
|
|
|
|
'user' |
|
|
|
|
|
]) |
|
|
|
|
|
}, |
|
|
created() { |
|
|
created() { |
|
|
this.getFondsDatas() |
|
|
this.getFondsDatas() |
|
|
this.getUserList() |
|
|
this.getUserList() |
|
|
|
|
|
this.getDictsList() |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
getAutoNameUnknown(name) { |
|
|
getAutoNameUnknown(name) { |
|
@ -188,15 +178,27 @@ export default { |
|
|
return name |
|
|
return name |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
[CRUD.HOOK.beforeSubmit]() { |
|
|
|
|
|
}, |
|
|
|
|
|
// 提交前的验证 |
|
|
|
|
|
[CRUD.HOOK.afterValidateCU](crud) { |
|
|
|
|
|
return true |
|
|
|
|
|
}, |
|
|
|
|
|
handleSelectUser(type) { |
|
|
handleSelectUser(type) { |
|
|
this.userType = type |
|
|
this.userType = type |
|
|
|
|
|
this.resetQuery() |
|
|
this.userVisible = true |
|
|
this.userVisible = true |
|
|
|
|
|
this.$nextTick(() => { |
|
|
|
|
|
if (this.userType === 1) { |
|
|
|
|
|
if (this.userMainSelected.length !== 0) { |
|
|
|
|
|
this.$refs.userTable.clearSelection() |
|
|
|
|
|
this.userMainSelected.forEach(item => { |
|
|
|
|
|
this.$refs.userTable.toggleRowSelection(item) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
if (this.userOtherSelected.length !== 0) { |
|
|
|
|
|
this.$refs.userTable.clearSelection() |
|
|
|
|
|
this.userOtherSelected.forEach(item => { |
|
|
|
|
|
this.$refs.userTable.toggleRowSelection(item) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
}, |
|
|
}, |
|
|
getFondsDatas() { |
|
|
getFondsDatas() { |
|
|
const parent = {} |
|
|
const parent = {} |
|
@ -310,6 +312,15 @@ export default { |
|
|
children: node.children |
|
|
children: node.children |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
getDictsList() { |
|
|
|
|
|
FetchDictionaryTree().then((res) => { |
|
|
|
|
|
const filterCodes = ['research_type'] |
|
|
|
|
|
const filteredItems = JSON.parse(JSON.stringify(res)).filter(item => filterCodes.includes(item.dictionaryCode)) |
|
|
|
|
|
this.options = filteredItems[0].childDictionarys |
|
|
|
|
|
}).catch(err => { |
|
|
|
|
|
console.log(err) |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
toQueryUser() { |
|
|
toQueryUser() { |
|
|
const userParams = { |
|
|
const userParams = { |
|
|
'fondsId': this.userForm.fonds.id, |
|
|
'fondsId': this.userForm.fonds.id, |
|
@ -320,6 +331,7 @@ export default { |
|
|
this.getUserList(userParams) |
|
|
this.getUserList(userParams) |
|
|
}, |
|
|
}, |
|
|
getUserList(params) { |
|
|
getUserList(params) { |
|
|
|
|
|
this.selections = [] |
|
|
this.userLoading = true |
|
|
this.userLoading = true |
|
|
FetchInitUserList(params).then(res => { |
|
|
FetchInitUserList(params).then(res => { |
|
|
this.userTable = res.content |
|
|
this.userTable = res.content |
|
@ -339,20 +351,25 @@ export default { |
|
|
} |
|
|
} |
|
|
this.getUserList(userParams) |
|
|
this.getUserList(userParams) |
|
|
}, |
|
|
}, |
|
|
handleClose() { |
|
|
|
|
|
this.resetQuery() |
|
|
|
|
|
this.userVisible = false |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
handleUserComfired() { |
|
|
handleUserComfired() { |
|
|
console.log(this.selections) |
|
|
|
|
|
if (this.userType === 1) { |
|
|
if (this.userType === 1) { |
|
|
this.userMainSelected = this.selections |
|
|
this.userMainSelected = this.selections |
|
|
|
|
|
const arry = [] |
|
|
|
|
|
this.userMainSelected.forEach(item => { |
|
|
|
|
|
arry.push(item.userId) |
|
|
|
|
|
}) |
|
|
|
|
|
this.form.editor1 = arry.join(',') |
|
|
} else { |
|
|
} else { |
|
|
this.userOtherSelected = this.selections |
|
|
this.userOtherSelected = this.selections |
|
|
|
|
|
const arry = [] |
|
|
|
|
|
this.userOtherSelected.forEach(item => { |
|
|
|
|
|
arry.push(item.userId) |
|
|
|
|
|
}) |
|
|
|
|
|
this.form.editor2 = arry.join(',') |
|
|
} |
|
|
} |
|
|
this.userVisible = false |
|
|
this.userVisible = false |
|
|
// userMainSelected: [], |
|
|
|
|
|
// userOtherSelected: [] |
|
|
|
|
|
|
|
|
this.selections = [] |
|
|
}, |
|
|
}, |
|
|
removeTag(tag) { |
|
|
removeTag(tag) { |
|
|
const index = this.userMainSelected.indexOf(tag) |
|
|
const index = this.userMainSelected.indexOf(tag) |
|
@ -360,6 +377,71 @@ export default { |
|
|
this.userMainSelected.splice(index, 1) |
|
|
this.userMainSelected.splice(index, 1) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
|
|
|
removeOtherTag(tag) { |
|
|
|
|
|
const index = this.userOtherSelected.indexOf(tag) |
|
|
|
|
|
if (index !== -1) { |
|
|
|
|
|
this.userOtherSelected.splice(index, 1) |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
handleComfiredEditing() { |
|
|
|
|
|
this.$refs['form'].validate((valid) => { |
|
|
|
|
|
if (valid) { |
|
|
|
|
|
const arry = [] |
|
|
|
|
|
this.userMainSelected.forEach(item => { |
|
|
|
|
|
arry.push(item.userId) |
|
|
|
|
|
}) |
|
|
|
|
|
this.form.editor1 = arry.join(',') |
|
|
|
|
|
|
|
|
|
|
|
const arry2 = [] |
|
|
|
|
|
this.userOtherSelected.forEach(item => { |
|
|
|
|
|
arry2.push(item.userId) |
|
|
|
|
|
}) |
|
|
|
|
|
this.form.editor2 = arry2.join(',') |
|
|
|
|
|
|
|
|
|
|
|
this.form.fondsAffiliation = this.user.fonds.id.toString() |
|
|
|
|
|
this.form.operator = this.user.username |
|
|
|
|
|
|
|
|
|
|
|
if (this.form.startTime.split(' ')[1]) { |
|
|
|
|
|
this.form.startTime = this.form.startTime.split(' ')[0] |
|
|
|
|
|
} |
|
|
|
|
|
if (this.form.endTime.split(' ')[1]) { |
|
|
|
|
|
this.form.endTime = this.form.endTime.split(' ')[0] |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const params = { ...this.form } |
|
|
|
|
|
delete params.editor1 |
|
|
|
|
|
delete params.editor2 |
|
|
|
|
|
params.editor1s = arry |
|
|
|
|
|
params.editor2s = arry2 |
|
|
|
|
|
edit(params).then((res) => { |
|
|
|
|
|
if (res.code !== 500) { |
|
|
|
|
|
this.$message({ message: this.formType === 1 ? '新增成功' : '编辑成功', type: 'success', offset: 8 }) |
|
|
|
|
|
} else { |
|
|
|
|
|
this.$message({ message: res.message, type: 'error', offset: 8 }) |
|
|
|
|
|
} |
|
|
|
|
|
this.handleCloseForm() |
|
|
|
|
|
this.$emit('refresh') |
|
|
|
|
|
}).catch(err => { |
|
|
|
|
|
console.log(err) |
|
|
|
|
|
}) |
|
|
|
|
|
} else { |
|
|
|
|
|
return false |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
handleClose() { |
|
|
|
|
|
this.resetQuery() |
|
|
|
|
|
this.userVisible = false |
|
|
|
|
|
}, |
|
|
|
|
|
handleCloseForm() { |
|
|
|
|
|
this.$refs['form'].clearValidate() |
|
|
|
|
|
this.$refs['form'].resetFields() |
|
|
|
|
|
this.form = {} |
|
|
|
|
|
this.userMainSelected = [] |
|
|
|
|
|
this.userOtherSelected = [] |
|
|
|
|
|
this.formVisible = false |
|
|
|
|
|
this.selections = [] |
|
|
|
|
|
}, |
|
|
clickRowHandler(row) { |
|
|
clickRowHandler(row) { |
|
|
// this.$refs.table.clearSelection() |
|
|
// this.$refs.table.clearSelection() |
|
|
// this.$refs.table.toggleRowSelection(row) |
|
|
// this.$refs.table.toggleRowSelection(row) |
|
@ -367,7 +449,6 @@ export default { |
|
|
// this.selections.push(row) |
|
|
// this.selections.push(row) |
|
|
}, |
|
|
}, |
|
|
selectionChangeHandler(val) { |
|
|
selectionChangeHandler(val) { |
|
|
console.log(val) |
|
|
|
|
|
this.selections = val |
|
|
this.selections = val |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -398,6 +479,7 @@ export default { |
|
|
right: 10px; |
|
|
right: 10px; |
|
|
top: 0; |
|
|
top: 0; |
|
|
line-height: 30px; |
|
|
line-height: 30px; |
|
|
|
|
|
color: #e6e8ed; |
|
|
} |
|
|
} |
|
|
.el-tag{ |
|
|
.el-tag{ |
|
|
margin-right: 6px; |
|
|
margin-right: 6px; |
|
|