| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 | {extend name="common/common2" /}{block name="main"}<div class="row">    <div class="col-sm-12">        <div class="ibox float-e-margins">            <div class="ibox-content">                <form method="post" action="{:url('article_add')}" class="form-horizontal">                    <input type="hidden" name="article_paper_id" value="{$id}">                        <div class="form-group">                            <label class="col-sm-2 control-label">题干</label>                            <div class="col-sm-6">                                <textarea name="title" class="form-control" rows="3"></textarea>                            </div>                        </div>                        <div class="form-group">                            <label class="col-sm-2 control-label">分值</label>                            <div class="col-sm-6">                                <select class="form-control" name="score">                                    {for start="1" end="50"}                                    <option value="{$i}">{$i}分</option>                                    {/for}                                </select>                            </div>                        </div>                        <div class="form-group">                            <label class="col-sm-2 control-label">排序(正序)</label>                            <div class="col-sm-6">                                <input type="number" name="sort" min="0" step="1" class="form-control" value="0">                            </div>                        </div>                        <div id="vueapp">                            <div class="form-group">                                <label class="col-sm-2 control-label">类型</label>                                <div class="col-sm-6">                                    <label class="cr-inline">                                        <input type="radio" v-model="type" checked name="type" value="0"> 单选                                    </label>                                    <label class="cr-inline">                                        <input type="radio" v-model="type" name="type" value="1"> 多选                                    </label>                                </div>                            </div>                            <div class="form-group">                                <label class="col-sm-2 control-label">选项</label> <a v-if="options.length < 8" @click="addOption" href="javascript:;">添加选项</a><br>                                <input type="hidden" id="datioptions" name="options" value="">                                 <div class="col-sm-6">                                    <table class="table table-bordered">                                    <tr>                                        <th>内容</th>                                        <th>正确答案</th>                                        <th>操作</th>                                    </tr>                                    <tr v-for="(item, index) in options" :key="index">                                        <td><input type="text" v-model="item.text" class="form-control input-sm"></td>                                        <td width="100"><input type="checkbox" v-model="item.answer" @click="changeAnswer(index)"></td>                                        <td width="100"><button type="button" v-if="options.length > 1" @click="delOption(index)">删除</button></td>                                    </tr>                                </table>                                 </div>                            </div>                        </div>                    <div class="hr-line-dashed"></div>                    <div class="form-group">                        <div class="col-sm-6 col-sm-offset-2">                            <button class="btn btn-primary ajax-post" data-layer="1" target-form="form-horizontal" type="submit">确 定</button>                            <button  class="btn cancel-btn btn-default" type="button">取 消</button>                        </div>                    </div>                </form>            </div>        </div>    </div></div>{/block}{block name="script"}<script>    var options = [        {            "text":'选项',            "answer":false,        }    ];    var vm = new Vue({        el: '#vueapp',        data: {            options: options,            initoption: {                "text":'选项',                "answer":false,            },            numToChar: ['A','B','C','D','E','F','G','H'],            type: '0',        },        computed: {            // 计算属性的 getter            resoptions: function () {                return JSON.parse(JSON.stringify(this.options));            }        },        watch: {            resoptions: function (newval, oldval) {                this.formatData();            },            type: function (newval, oldval) {                console.log('type', this.type);                // 多选改成单选是需判断正确答案是否存在多个,存在多个保留第一个                if(this.type == '0'){                    let flag = false;                    for (let o in this.options){                        if(this.options[o].answer){                            if(!flag){                                flag = true;                            }else{                                this.options[o].answer = false;                            }                        }                    }                }            },        },        created: function () {            this.formatData();        },        methods: {            addOption() {                this.options.push(JSON.parse(JSON.stringify(this.initoption)));            },            delOption(index) {                let oldoptions = JSON.parse(JSON.stringify(this.options));                let newoptions = [];                for(let o in oldoptions){                    if(o != index){                        newoptions.push(oldoptions[o]);                    }                }                this.options = JSON.parse(JSON.stringify(newoptions));            },            changeAnswer(index){                let that = this;                setTimeout(function () {                    if(that.type == '0'){ // 单选正能选择一个正确答案                        let cflag = false;                        for(let o in that.options){                            if(o == index && that.options[o].answer){                                cflag = true;                                break;                            }                        }                        if(cflag){                            for(let o in that.options){                                if(o != index && that.options[o].answer){                                    that.options[o].answer = false;                                }                            }                        }                    }                },50);            },            formatData(){                let ops = JSON.parse(JSON.stringify(this.options));                let nops = [];                for(let o in ops){                    nops.push({                        id: this.numToChar[o],                        text: ops[o].text,                        answer: ops[o].answer?'1':'0',                    })                }                console.log('ret',JSON.stringify(nops));                $('#datioptions').val(JSON.stringify(nops));            }        }    })</script>{/block}
 |