123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- {extend name="common/common2" /}
- {block name="main"}
- <style>
- .select-box{
- position: fixed;
- z-index: 100;
- width: 350px;
- top: 0;
- right: 0;
- background-color: #ffffff;
- bottom: 0;
- overflow: auto;
- }
- .select-img{
- cursor: pointer;
- width: 25px;
- height: 25px;
- }
- .select-title{
- padding: 15px;
- }
- </style>
- <div class="row">
- <div class="col-sm-12">
- <div class="ibox float-e-margins">
- <div class="ibox-title">
- <h5>{$meta_title}</h5>
- <div class="ibox-tools">
- <a class="toback" href="{:url('index')}">
- 返回上一页
- </a>
- </div>
- </div>
- <div class="ibox-content">
- <div class="row">
- <div class="col-xs-8">
- <form method="post" action="{:url('add')}" class="form-horizontal">
- <input type="hidden" name="id" value="{$info['id']|default='0'}">
- <div class="form-group">
- <label class="col-xs-3 control-label">名称<span class="text-danger">*</span></label>
- <div class="col-xs-9">
- <input type="text" class="form-control" name="title" value="{$info.title|default=''}">
- </div>
- </div>
- <div class="form-group">
- <label class="col-xs-3 control-label">图片</label>
- <div class="col-xs-9">
- {:widget_view('common/upimg',['name'=>'img','multi'=>0,'val'=>isset($info)?$info['img']:''])}
- </div>
- </div>
- <div class="form-group">
- <label class="col-xs-3 control-label">备注</label>
- <div class="col-xs-9">
- <input type="text" class="form-control" name="remark" value="{$info.remark|default=''}">
- </div>
- </div>
- <div class="form-group">
- <label class="col-xs-3 control-label">大屏类型<span class="text-danger">*</span></label>
- <div class="col-xs-9">
- <select name="type" id="screentype" class="form-control" onchange="changeType()">
- <option value="1">项目大屏</option>
- <option value="2">自定义大屏</option>
- <option value="3">3D大屏</option>
- </select>
- </div>
- </div>
- <div class="form-group" id="screen-url">
- <label class="col-xs-3 control-label">大屏链接</label>
- <div class="col-xs-9">
- <input type="text" class="form-control" name="url" value="{$info.url|default=''}">
- </div>
- </div>
- <div id="vueapp-module">
- <div class="form-group">
- <label class="col-xs-3 control-label">模板<span class="text-danger">*</span></label>
- <div class="col-xs-9">
- <input type="hidden" name="tid" id="tid" value="{$info.tid|default='0'}">
- <button type="button" class="btn btn-sm btn-primary" @click="selectTemp">选择模板</button>
- <div v-if="ttitle">
- {{ttitle}}
- </div>
- </div>
- </div>
- <div class="form-group">
- <label class="col-xs-3 control-label">模块绑定</label>
- <div class="col-xs-9">
- <input type="hidden" id="ele-module" name="content" value="{$info.content|default=''}">
- <table class="table table-bordered">
- <thead>
- <tr>
- <th>序号</th>
- <th>绑定模块</th>
- <th>预览模块</th>
- </tr>
- </thead>
- <tbody>
- <tr v-for="(item,index) in contents" :key="index">
- <th>{{item.id}}</th>
- <th>
- <button type="button" class="btn btn-sm btn-primary" @click="selectModule(item)">选择模块</button>
- {{item.title}}
- </th>
- <th>
- <img v-if="item.img" :src="item.img" style="width: 40px;height: 40px;" onclick="open_img(this)" alt="">
- </th>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- <div class="select-box" v-if="showTemp || showModule">
- <div v-if="showTemp">
- <div class="select-title">
- 选择模板
- <button type="button" class="btn btn-xs pull-right btn-danger" @click="closeSelect">关闭</button>
- </div>
- <table class="table table-bordered">
- <tr v-for="(item,index) in temps" :key="index">
- <td>
- <img v-if="tid == item.id" class="select-img" src="/img/dui.png" alt="" @click="sTemp(item)">
- <img v-if="tid != item.id" class="select-img" src="/img/undui.png" alt="" @click="sdTemp(item)">
- <img onclick="open_img(this)" :src="item.img" style="width: 50px;height: 50px" alt="">
- {{item.title}}
- </td>
- </tr>
- </table>
- </div>
- <div v-if="showModule">
- <div class="select-title">
- 选择模块
- <button type="button" class="btn btn-xs pull-right btn-danger" @click="closeSelect">关闭</button>
- </div>
- <table class="table table-bordered">
- <tr v-for="(item,index) in options" :key="index">
- <td>
- <img v-if="curItem.mid == item.id" class="select-img" src="/img/dui.png" alt="" @click="sModule(item)">
- <img v-if="curItem.mid != item.id" class="select-img" src="/img/undui.png" alt="" @click="sdModule(item)">
- <img onclick="open_img(this)" :src="item.img" style="width: 50px;height: 50px" alt="">
- {{item.title}}
- </td>
- </tr>
- </table>
- </div>
- </div>
- </div>
- <div class="hr-line-dashed"></div>
- <div class="form-group">
- <div class="col-xs-9 col-xs-offset-3">
- <button class="btn btn-primary ajax-post" target-form="form-horizontal" type="submit">确 定</button>
- <a href="{:url('index')}" class="btn btn-default">取 消</a>
- </div>
- </div>
- </form>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- {/block}
- {block name="script"}
- <script>
- $(document).ready(function(){
- formSetValue("tid", {$info.tid|default=0});
- formSetValue("type", {$info.type|default=1});
- changeType();
- });
- function changeType() {
- var v = $('#screentype').val();
- if(v == 1){
- $('#vueapp-module').show();
- $('#screen-url').hide();
- }else{
- $('#screen-url').show();
- $('#vueapp-module').hide();
- }
- }
- var options = {:json_encode($moduleList)};
- var temps = {:json_encode($tempList)};
- var tid = {$info.tid|default=0};
- var nums = {$nums|default=0};
- new Vue({
- el: '#vueapp-module',
- data: function() {
- return {
- options: options,
- temps: temps,
- showTemp: false,
- showModule: false,
- contents: [],
- value: '',
- tid: tid,
- nums: nums,
- ttitle: '',
- curItem: null
- }
- },
- computed: {
- scontent() {
- const vals = JSON.parse(JSON.stringify(this.contents));
- return vals;
- },
- },
- watch: {
- scontent: function (newVal, oldVal) {
- this.formatContent();
- const vv = [];
- this.contents.forEach((item) => {
- vv.push({
- id: item.id,
- mid: item.mid,
- })
- });
- this.value = vv.length > 0 ? JSON.stringify(vv):'';
- $('#ele-module').val(this.value);
- },
- tid: function (newVal, oldVal) {
- $('#tid').val(this.tid);
- }
- },
- created(){
- {if condition="!empty($info)"}
- const vals = '{:json_encode($info["content2"])}';
- {else /}
- const vals = '';
- {/if}
- console.log(vals);
- this.value = vals;
- const valss = vals?JSON.parse(vals):[];
- console.log(valss);
- const cc = [];
- valss.forEach((item) => {
- let img = '';
- let tti = '';
- this.options.forEach((item2) => {
- if(item.mid == item2.id){
- img = item2.img;
- tti = item2.title;
- }
- });
- cc.push({
- id: item.id,
- mid: item.mid,
- img: img,
- title: tti,
- })
- });
- if(this.tid > 0){
- this.temps.forEach((item) => {
- if(item.id == this.tid){
- this.nums = item.nums;
- this.ttitle = item.title;
- }
- });
- }
- if(cc.length == 0 && this.nums > 0){
- let i = 1;
- this.contents = [];
- while (this.nums > i){
- this.contents.push({
- id: i,
- mid: 0,
- img: '',
- title: '',
- });
- i++;
- }
- }
- if(cc.length > 0){
- this.contents = cc;
- }
- console.log('11111',this.value,this.options, this.contents);
- },
- methods:{
- changeTemp(){
- this.contents = [];
- if(this.tid > 0){
- this.temps.forEach((item) => {
- if(item.id == this.tid){
- this.nums = item.nums;
- }
- });
- if(this.nums > 0){
- let i = 1;
- while (this.nums >= i){
- this.contents.push({
- id: i,
- mid: 0,
- img: '',
- title: '',
- });
- i++;
- }
- }
- }
- console.log('contents',this.contents);
- },
- selectTemp(){
- this.showTemp = true;
- this.showModule = false;
- },
- selectModule(obj){
- this.showTemp = false;
- this.showModule = true;
- this.curItem = obj;
- },
- closeSelect(){
- this.showTemp = false;
- this.showModule = false;
- },
- sdTemp(obj) {
- this.tid = obj.id;
- this.ttitle = obj.title;
- this.changeTemp();
- this.closeSelect();
- },
- sTemp(obj) {
- this.tid = 0;
- this.ttitle = '';
- this.changeTemp();
- this.closeSelect();
- },
- sdModule(obj) {
- this.curItem.mid = obj.id;
- this.curItem.title = obj.title;
- this.curItem.img = obj.img;
- this.changeModule();
- this.closeSelect();
- },
- sModule(obj) {
- this.curItem.mid = 0;
- this.curItem.title = '';
- this.curItem.img = '';
- this.changeModule();
- this.closeSelect();
- },
- changeModule(){
- this.contents.forEach((item) => {
- const info = item;
- if(item.id == this.curItem.id){
- info.title = this.curItem.title;
- info.img = this.curItem.img;
- info.mid = this.curItem.mid;
- }
- })
- },
- formatContent(){
- this.contents.forEach((item) => {
- const info = item;
- this.options.forEach((item2) => {
- if(item2.id == item.mid){
- info.img = item2.img;
- info.title = item2.title;
- }
- });
- })
- },
- }
- })
- </script>
- {/block}
|