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 @click="openAdd" size="small" type="primary">
|
|
上传模板
|
|
</el-button>
|
|
</div>
|
|
</template>
|
|
|
|
<el-row style="column-gap:10px" type="flex">
|
|
<el-input clearable maxlength="50" placeholder="请输入模板代码"
|
|
style="width: 400px" v-model="pageForm.templateCode"></el-input>
|
|
|
|
<el-button @click="doSearch" icon="el-icon-search" type="primary">搜索</el-button>
|
|
|
|
</el-row>
|
|
|
|
<el-table :data="tableData" :height="tableHeight" border class="mt10" id="officeTable" ref="table"
|
|
stripe>
|
|
<el-table-column :index="indexMethod" label="序号" type="index"
|
|
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 @click="download(row.templatePath)" size="mini"
|
|
type="primary">下载
|
|
</el-button>
|
|
<el-button @click="preview(row.templatePath,row.templatePath)" size="mini"
|
|
type="primary">预览
|
|
</el-button>
|
|
<el-button @click="openEdit(row)" size="mini" type="primary">编辑</el-button>
|
|
<el-button @click="doDelete(row)" size="mini" type="danger">删除</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
<!--#include("/layouts/pagination.html"){}#-->
|
|
|
|
</el-card>
|
|
|
|
<el-dialog :close-on-click-modal="false" :visible.sync="dialogVisible" title="模板"
|
|
width="60%">
|
|
<el-form :model="formData" :rules="formRules" label-width="80px" ref="ruleForm">
|
|
<el-form-item :rules="[{required:true,message:'必传',trigger:['change']}]" label="模板文件"
|
|
prop="templatePath">
|
|
<file-upload :files="files" :limit="1" :type="['doc','docx','xlsx','xls']"
|
|
@update:files="updateFiles"
|
|
ref="fileUpload"></file-upload>
|
|
</el-form-item>
|
|
<el-form-item :rules="[{required:true,message:'上传文件后自动读取',trigger:['change']}]" label="模板名称"
|
|
prop="templateName">
|
|
<el-input disabled maxlength="50" placeholder="自动读取文件名"
|
|
type="text"
|
|
v-model="formData.templateName"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :rules="[{required:true,message:'必填',trigger:['change']}]" label="模板代码"
|
|
prop="templateCode">
|
|
<el-input maxlength="50" placeholder="请填写模板代码" type="text"
|
|
v-model="formData.templateCode"></el-input>
|
|
</el-form-item>
|
|
<el-form-item :rules="[{required:true,message:'必填',trigger:['change']}]" label="模板说明"
|
|
prop="templateDesc">
|
|
<el-input maxlength="50" placeholder="请填写模板说明" type="text"
|
|
v-model="formData.templateDesc"></el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
<span class="dialog-footer" slot="footer">
|
|
<el-button @click="dialogVisible = false">取消</el-button>
|
|
<el-button @click="save" type="primary">确定</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>
|
|
|
|
<!--#
|
|
}
|
|
#--> |