169 lines
7.1 KiB
HTML
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>
|
|
|
|
<!--#
|
|
}
|
|
#--> |