|
@@ -0,0 +1,206 @@
|
|
|
+<template>
|
|
|
+ <div class="binddata__panel">
|
|
|
+ <el-tabs v-model="activeName">
|
|
|
+ <el-tab-pane label="绑定数据字段" name="first"></el-tab-pane>
|
|
|
+ <el-tab-pane label="数据集" name="second"></el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
+ <div v-if="activeName === 'first'">
|
|
|
+ <div v-for="(item,idx) in panels" :key="idx" class="mt-10">
|
|
|
+ <div v-if="item.printElementType.type === 'text'">
|
|
|
+ <p class="preview__item">{{item.options.title}}</p>
|
|
|
+ <el-select size="mini" v-model="item.options.sys_printdatasetid" placeholder="请选择" @click.native="act_DataBaseID = idx">
|
|
|
+ <el-option
|
|
|
+ v-for="i in databastlist"
|
|
|
+ :key="i.sys_printdatasetid"
|
|
|
+ :label="i.datasetname"
|
|
|
+ :value="i.sys_printdatasetid"
|
|
|
+ @click.native="queryDataBaseDetail(i.sys_printdatasetid)"
|
|
|
+ @visible-change="visibleChange">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select size="mini" v-model="item.options.field" :disabled="idx !== act_DataBaseID" placeholder="请选择" @change="onChange">
|
|
|
+ <el-option
|
|
|
+ v-for="i in sys_printdataset"
|
|
|
+ :key="i.sys_printdataset_columnsid"
|
|
|
+ :label="i.column_name"
|
|
|
+ :value="i.column_name"
|
|
|
+ @visible-change="visibleChange">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.printElementType.type === 'table'">
|
|
|
+ <p style="font-size:12px">表格数据</p>
|
|
|
+ <div>
|
|
|
+ <el-select size="mini" v-model="item.options.sys_printdatasetid" placeholder="请选择" @click.native="act_DataBaseID = idx" @change="queryDataBaseDetail">
|
|
|
+ <el-option
|
|
|
+ v-for="i in databastlist"
|
|
|
+ :key="i.sys_printdatasetid"
|
|
|
+ :label="i.datasetname"
|
|
|
+ :value="i.sys_printdatasetid"
|
|
|
+ @click.native="setTableField(item.options.field = `dataset${i.sys_printdatasetid}`)">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <div v-for="td in item.options.columns[0]" :key="td.index">
|
|
|
+ <p class="preview__item">{{td.title}}</p>
|
|
|
+ <el-select size="mini" v-model="td.field" :disabled="idx !== act_DataBaseID" placeholder="请选择" @change="onChange">
|
|
|
+ <el-option
|
|
|
+ v-for="i in sys_printdataset"
|
|
|
+ :key="i.sys_printdataset_columnsid"
|
|
|
+ :label="i.column_name"
|
|
|
+ :value="i.column_name"
|
|
|
+ @visible-change="visibleChange">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-button type="primary" size="mini" @click="saveJson">保 存</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <el-tag style="margin:0 10px 10px 0" type="danger" v-for="item in databastlist" :key="item.index" :disable-transitions="true" effect="dark" size="small" @close="deleteDatabase(item)" closable> {{item.datasetname}}</el-tag>
|
|
|
+ <div class="normal-margin">
|
|
|
+ <el-input style="margin-bottom:10px" size="small" v-model="database.datasetname" placeholder="请输入数据集名称"></el-input>
|
|
|
+ <el-input size="small" type="textarea" v-model="database.sqlstr" placeholder="请输入sql语句" :autosize="{ minRows: 3, maxRows: 6 }"></el-input>
|
|
|
+ </div>
|
|
|
+ <el-button type="primary" size="small" @click="saveDatabase">保存</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+
|
|
|
+export default {
|
|
|
+ props:['temp','modeData'],
|
|
|
+ computed:{
|
|
|
+ formComponent(){
|
|
|
+ if (this.dialogFormVisible) {
|
|
|
+ return ()=>import(`@/style/sv-print.css`)
|
|
|
+ } else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data () {
|
|
|
+ return {
|
|
|
+ activeName:'first',
|
|
|
+ template:{},
|
|
|
+ panels:{},
|
|
|
+ databastlist:[],
|
|
|
+ sys_printdataset:[],
|
|
|
+ act_DataBaseID:null,
|
|
|
+ modeData:{},
|
|
|
+ database:{}
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ onDesigned () {},
|
|
|
+ async saveJson () {
|
|
|
+ console.log(this.modeData)
|
|
|
+ this.template.panels[0].printElements = this.panels
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20221121160001,
|
|
|
+ "content": {
|
|
|
+ "sys_printmodelid": this.$route.query.id,
|
|
|
+ "systemappid":this.modeData.systemappid,
|
|
|
+ "modelname":this.modeData.modelname,
|
|
|
+ "modeljson":this.template,
|
|
|
+ "isused":this.modeData.isused
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ async saveDatabase () {
|
|
|
+ this.database.sys_printmodelid = this.$route.query.id
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20221121160301,
|
|
|
+ "content": this.database,
|
|
|
+ })
|
|
|
+ this.querDataBase()
|
|
|
+ },
|
|
|
+ async querDataBase () {
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20221121160201,
|
|
|
+ "content": {
|
|
|
+ "sys_printmodelid": this.$route.query.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.databastlist = res.data
|
|
|
+ },
|
|
|
+ async deleteDatabase (item) {
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20221121160401,
|
|
|
+ "content": {
|
|
|
+ "sys_printdatasetid":item.sys_printdatasetid
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.querDataBase()
|
|
|
+ },
|
|
|
+ async queryDataBaseDetail (item) {
|
|
|
+ const res = await this.$api.requested({
|
|
|
+ "id": 20221121160501,
|
|
|
+ "content": {
|
|
|
+ "sys_printdatasetid":item
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.sys_printdataset = res.data
|
|
|
+ },
|
|
|
+ visibleChange (val) {
|
|
|
+ // val?this.queryDataBaseDetail():''
|
|
|
+ val?'':this.sys_printdataset = []
|
|
|
+ },
|
|
|
+ onChange () {},
|
|
|
+ onClose () {
|
|
|
+ this.$emit('onClose')
|
|
|
+ },
|
|
|
+ setTableField (item,id) {
|
|
|
+ console.log(item,id)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch:{
|
|
|
+ temp (val) {
|
|
|
+ this.template = JSON.parse(val)
|
|
|
+ this.panels = this.template.panels[0].printElements
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted () {
|
|
|
+ this.querDataBase()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+.preview{
|
|
|
+ position: fixed;
|
|
|
+ min-height: 600px;
|
|
|
+ width: 550px;
|
|
|
+ top:10px;
|
|
|
+ right:30px;
|
|
|
+ z-index: 99;
|
|
|
+ background: #fff;
|
|
|
+ box-shadow: 0 2px 4px #0000004d;
|
|
|
+ padding: 10px;
|
|
|
+}
|
|
|
+.preview__item{
|
|
|
+ position: relative;
|
|
|
+ font-size: 12px;
|
|
|
+ line-height: 30px;
|
|
|
+}
|
|
|
+.preview__item__table{
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.preview__item__table p{
|
|
|
+ flex: 1;
|
|
|
+ width:80px ;
|
|
|
+ border: 1px solid #f1f2f3;
|
|
|
+ font-size: 12px;
|
|
|
+ text-align: center;
|
|
|
+ line-height: 30px;
|
|
|
+ margin-left: -1px;
|
|
|
+}
|
|
|
+.binddata__panel{
|
|
|
+ height: 600px;
|
|
|
+ overflow-y:scroll ;
|
|
|
+}
|
|
|
+</style>
|