Files
UNION_HUTB/target/classes/views/platform/sys/officeTemplate/index.html
T
2026-09-09 09:14:28 +08:00

169 lines
7.1 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<template #header>
<div style="display:flex;justify-content: space-between;align-items: center">
<h3 style="color: #1867b0">模板管理</h3>
<el-button type="primary" size="small" @click="openAdd">
上传模板
</el-button>
</div>
</template>
<el-row type="flex" style="column-gap:10px">
<el-input v-model="pageForm.templateCode" maxlength="50" style="width: 400px"
clearable placeholder="请输入模板代码"></el-input>
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
</el-row>
<el-table :data="tableData" border class="mt10" stripe ref="table" :height="tableHeight"
id="officeTable">
<el-table-column label="序号" type="index" :index="indexMethod"
width="70px"></el-table-column>
<el-table-column label="模板代码" prop="templateCode"></el-table-column>
<el-table-column label="模板名称" prop="templateName"></el-table-column>
<!-- <el-table-column label="模板大小" prop="templateSize"></el-table-column>-->
<el-table-column label="模板路径" prop="templatePath"></el-table-column>
<el-table-column label="模板说明" prop="templateDesc"></el-table-column>
<el-table-column label="操作" width="300px">
<template scope="{row}">
<el-button size="mini" type="primary"
@click="download(row.templatePath)">下载
</el-button>
<el-button size="mini" type="primary"
@click="preview(row.templatePath,row.templatePath)">预览
</el-button>
<el-button size="mini" type="primary" @click="openEdit(row)">编辑</el-button>
<el-button size="mini" type="danger" @click="doDelete(row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
<el-dialog title="模板" :visible.sync="dialogVisible" :close-on-click-modal="false"
width="60%">
<el-form :model="formData" ref="ruleForm" :rules="formRules" label-width="80px">
<el-form-item label="模板文件" prop="templatePath"
:rules="[{required:true,message:'必传',trigger:['change']}]">
<file-upload :files="files" @update:files="updateFiles" ref="fileUpload"
:limit="1"
:type="['doc','docx','xlsx','xls']"></file-upload>
</el-form-item>
<el-form-item label="模板名称" prop="templateName"
:rules="[{required:true,message:'上传文件后自动读取',trigger:['change']}]">
<el-input type="text" v-model="formData.templateName" maxlength="50"
disabled
placeholder="自动读取文件名"></el-input>
</el-form-item>
<el-form-item label="模板代码" prop="templateCode"
:rules="[{required:true,message:'必填',trigger:['change']}]">
<el-input type="text" v-model="formData.templateCode" maxlength="50"
placeholder="请填写模板代码"></el-input>
</el-form-item>
<el-form-item label="模板说明" prop="templateDesc"
:rules="[{required:true,message:'必填',trigger:['change']}]">
<el-input type="text" v-model="formData.templateDesc" maxlength="50"
placeholder="请填写模板说明"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="save">确定</el-button>
</span>
{{formData}}
</el-dialog>
</guava>
</div>
<script>
const vue = new Vue({
el: '#app',
mixins: [initTableMixins],
data() {
return {
files: [],
dialogVisible: false,
tableHeight: 700
}
},
methods: {
openAdd() {
this.dialogVisible = true
this.formData = {}
this.files = []
},
openEdit(row) {
this.dialogVisible = true
this.files = [{
id: row.templatePath,
filepath: row.templatePath,
filename: row.templateName
}]
this.formData = {...row}
},
save() {
this.$refs.ruleForm.validate(async valid => {
if (valid) {
const resp = await $.post(loc() + '/save', this.formData)
if (resp.code === 0) {
this.dialogVisible = false
this.notifySuccess(resp.msg)
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
}
})
},
updateFiles(val) {
this.files = val
if (val && val.length > 0) {
this.$set(this.formData, 'templatePath', val[0].filepath)
this.$set(this.formData, 'templateName', val[0].filename)
} else {
this.$set(this.formData, 'templatePath', null)
this.$set(this.formData, 'templateName', null)
}
},
doDelete(row) {
this.$confirm('您确定要删除吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'info',
}).then(async () => {
const resp = await $.post(loc() + '/delete', row)
if (resp.code === 0) {
this.notifySuccess(resp.msg)
this.pageData()
} else {
this.notifyWarning(resp.msg)
}
})
}
},
mounted() {
setTimeout(() => {
this.tableHeight = window.innerHeight - document.querySelector("#officeTable").getBoundingClientRect().top - 80
}, 200)
},
created() {
this.pageData()
}
})
</script>
<!--#
}
#-->