阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

362 lines
10 KiB

<template>
<div v-loading="infoLoading" class="setting-contanier">
<div class="chapter-tip">
<p>注意</p>
<span>档号章一般盖在归档文件首页上端居中的空白位置,如果位置被占用,可将盖在首页上端其他空白处(居左或居右)。</span>
</div>
<div class="chapter-setting">
<div class="chapter-format">
<div class="chapter-item">
<p class="item-title">归档章版式</p>
<span class="item-selected">{{ filingName }}</span>
</div>
<div v-if="filingName && formatData.length !== 0" class="chapter-item">
<p class="item-title">预览</p>
<div class="format-style">
<span v-for="item in formatData" :key="item.id">{{ item.fieldCnName }}</span>
</div>
</div>
</div>
<div class="chapter-position">
<div class="chapter-item">
<p class="item-title">归档章位置</p>
<span class="item-selected">{{ filingPositionName }}</span>
</div>
<div class="position-style">
<!-- top-left / top-middle / top-right / middle-left / center / middle-right / bottom-left / bottom-middle / bottom-right -->
<span v-if="filingPositionNumber===0" class="top-middle" />
<span v-if="filingPositionNumber===1" class="top-left " />
<span v-if="filingPositionNumber===2" class="top-right" />
<span v-if="filingPositionNumber===3" class="center" />
<span v-if="filingPositionNumber===4" class="middle-left" />
<span v-if="filingPositionNumber===5" class="middle-right" />
<span v-if="filingPositionNumber===6" class="bottom-middle" />
<span v-if="filingPositionNumber===7" class="bottom-left" />
<span v-if="filingPositionNumber===8" class="bottom-right" />
</div>
</div>
<div class="chapter-enable">
<div class="chapter-item">
<p class="item-title">是否启用</p>
<el-switch v-model="isFiling" class="isEnable-chapter" @change="changeStatus" />
</div>
<div class="chapter-edit">
<el-button size="mini" @click="cuDialogVisible = true">
<i class="iconfont icon-bianji" />
编辑
</el-button>
</div>
</div>
</div>
<el-dialog :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="cuDialogVisible" :title="title">
<div class="setting-dialog">
<el-form ref="form" :model="form" size="small" :rules="rules" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="归档章版式" prop="filingId">
<el-select v-model="form.filingId" @change="changeFormat($event)">
<el-option v-for="option in formatOptions" :key="option.id" :label="option.name" :value="option.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="归档章位置" prop="filingPosition">
<el-select v-model="form.filingPosition">
<el-option v-for="option in positionOptions" :key="option.value" :label="option.label" :value="option.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div v-if="form.filingId && formatData.length !== 0" class="format-style">
<span v-for="item in formatData" :key="item.id">{{ item.fieldCnName }}</span>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="cuDialogVisible = false">取消</el-button>
<el-button v-loading="loading" type="primary" @click="save">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { FetchGetFilingsealFormat, FetchGetFilingsealFormatDtails, FetchEditCategoryFilingseal, FetchEnabledFilingseal } from '@/api/system/category/category'
import { form } from '@crud/crud'
const defaultForm = {
id: null,
filingId: null,
filingPosition: null
}
export default {
name: 'ArchiveSealSetting',
components: { },
mixins: [form(defaultForm)],
props: {
selectedCategory: {
type: Object,
default: function() {
return {}
}
}
},
data() {
return {
infoLoading: false,
isFiling: true,
filingName: '',
filingPositionNumber: '',
filingPositionName: '',
title: '编辑归档章',
cuDialogVisible: false,
loading: false,
formatOptions: [],
formatData: [],
positionOptions: [
{
label: '顶部居中',
value: 0
},
{
label: '顶部居左',
value: 1
},
{
label: '顶部居右',
value: 2
},
{
label: '中部居中',
value: 3
},
{
label: '中部居左',
value: 4
},
{
label: '中部居右',
value: 5
},
{
label: '底部居中',
value: 6
},
{
label: '底部居左',
value: 7
},
{
label: '底部居右',
value: 8
}
],
rules: {
filingId: [
{ required: true, message: '请选择归档章版式', trigger: 'change' }
],
filingPosition: [
{ required: true, message: '请选择归档章位置', trigger: 'change' }
]
}
}
},
watch: {
selectedCategory: function(newValue, oldValue) {
}
},
created() {
this.getFilingsealFormat()
this.getPosition()
},
methods: {
getFilingsealFormat() {
FetchGetFilingsealFormat().then((res) => {
this.formatOptions = res
if (this.selectedCategory.filingId) {
this.form.filingId = this.selectedCategory.filingId
res.map(item => {
if (item.id === this.selectedCategory.filingId) {
this.filingName = item.name
this.changeFormat(this.selectedCategory.filingId)
}
})
}
}).catch(err => {
console.log(err)
})
},
getPosition() {
this.isFiling = this.selectedCategory.isFiling
this.positionOptions.map(item => {
if (item.value === this.selectedCategory.filingPosition) {
this.filingPositionName = item.label
this.filingPositionNumber = item.value
this.form.filingPosition = item.value
}
})
},
changeFormat(value) {
this.formatData = []
if (value) {
FetchGetFilingsealFormatDtails(value).then((res) => {
this.formatData = res.sort((a, b) => {
if (a.row === b.row) {
return a.line - b.line // 如果 row 相同,则按 line 升序排序
} else {
return a.row - b.row // 否则,按 row 升序排序
}
})
}).catch(err => {
console.log(err)
})
}
},
// 改变状态
changeStatus(data) {
this.$confirm('此操作将禁用 / 启用当前归档章' + '<span>你是否还要继续?</span>', '提示', {
confirmButtonText: '继续',
cancelButtonText: '取消',
type: 'warning',
dangerouslyUseHTMLString: true
}).then(() => {
const params = {
'id': this.selectedCategory.id,
'isFiling': data
}
FetchEnabledFilingseal(params).then(res => {
this.$message({
message: '修改成功',
type: 'success',
duration: 2500
})
this.crud.refresh()
localStorage.setItem('categoryTabIndex', 6)
}).catch(() => {
data = !data
})
}).catch(() => {
this.$message({
message: '已取消修改',
type: 'info',
duration: 2500
})
data = !data
})
},
save() {
this.$refs['form'].validate((valid) => {
if (valid) {
this.infoLoading = true
this.loading = true
const params = {
'filingId': this.form.filingId,
'filingPosition': this.form.filingPosition,
'id': this.selectedCategory.id,
'isType': this.selectedCategory.isType,
'pid': this.selectedCategory.pid
}
FetchEditCategoryFilingseal(params).then((res) => {
this.$message({
message: '保存成功',
type: 'success',
duration: 2500
})
this.cuDialogVisible = false
this.loading = false
this.infoLoading = false
this.crud.refresh()
localStorage.setItem('categoryTabIndex', 6)
})
} else {
return false
}
})
}
}
}
</script>
<style lang="scss" scoped>
@mixin setting-box-style{
[data-theme="dark"] & {
padding: 0 20px 20px 20px;
margin-top: -10px;
}
[data-theme="light"] & {
margin-top: 20px;
}
}
.setting-contanier{
@include setting-box-style;
}
.position-style{
position: relative;
width: 380px;
height: 538px;
background: url('~@/assets/images/system/xt-gdz.png') no-repeat;
background-size: contain;
span{
position: absolute;
width: 118px;
height: 32px;
background: url('~@/assets/images/system/xt-gdx.png') no-repeat;
background-size: contain;
&.top-left{
top: 35px;
left: 25px;
}
&.top-middle{
top: 35px;
left: 50%;
margin-left: -49px;
}
&.top-right{
top: 35px;
right: 15px;
}
&.middle-left{
left: 25px;
top: 50%;
margin-top: -16px;
}
&.center{
left: 50%;
top: 50%;
margin-left: -49px;
margin-top: -16px;
}
&.middle-right{
top: 50%;
right: 15px;
margin-top: -16px;
}
&.bottom-left{
bottom: 35px;
left: 25px;
}
&.bottom-middle{
bottom: 35px;
left: 50%;
margin-left: -49px;
}
&.bottom-right{
bottom: 35px;
right: 15px;
}
}
}
::v-deep .el-dialog .el-dialog__body{
padding-bottom: 0;
.format-style{
margin-left: 100px;
}
}
.dialog-footer{
margin-top: 20px;
}
</style>