<template> <div class="page-prop-edit"> <el-form ref="form" :model="form" label-width="70px"> <el-form-item label="纸张规格"> <el-select v-model="form.pageSize" placeholder="请选择" :disabled="pageSizeOptions.length < 2" @change="modifyPageSize" > <el-option v-for="item in pageSizeOptions" :key="item" :label="item" :value="item" > </el-option> </el-select> </el-form-item> <el-form-item label="栏位布局"> <el-button v-for="(item, index) in columnOptions" :key="index" class="column-btn" :title="item.title" :disabled="item.disabled" @click="modifyColumnNum(item)" > <i :class="[ 'icon', form.columnNumber == item.value ? `icon-column-${item.label}-act` : `icon-column-${item.label}`, ]" ></i> </el-button> </el-form-item> <el-form-item label="大题顺序"> <ul class="topicno-list" v-if="topicNoSeries.length"> <li v-for="item in topicNoSeries" :key="item.id"> {{ item.topicNo }} </li> </ul> <el-button type="text" class="btn-primary" @click="toViewStruct" >查看题卡结构<i class="el-icon-arrow-right"></i ></el-button> </el-form-item> </el-form> <!-- PageStructDialog --> <page-struct-dialog ref="PageStructDialog"></page-struct-dialog> </div> </template> <script> import { mapState, mapMutations, mapActions } from "vuex"; import { objAssign } from "../plugins/utils"; import PageStructDialog from "./PageStructDialog.vue"; const COLUMN_OPTIONS = [ { value: 1, title: "一栏", label: "one", sizeValid: ["A4"], disabled: false, }, { value: 2, title: "二栏", label: "two", sizeValid: ["A3", "A4"], disabled: false, }, { value: 3, title: "三栏", label: "three", sizeValid: ["A3"], disabled: false, }, { value: 4, title: "四栏", label: "four", sizeValid: ["A3"], disabled: false, }, ]; export default { name: "page-prop-edit", components: { PageStructDialog }, data() { return { columnOptions: [], pageSizeOptions: ["A3"], // pageSizeOptions: ["A3", "A4"], form: { pageSize: "A3", columnNumber: 2, columnGap: 4, aOrB: false, showForbidArea: false, }, prePageSize: "A3", }; }, computed: { ...mapState("card", ["cardConfig", "topicNoSeries"]), }, watch: { cardConfig: { immediate: true, handler(val) { this.form = objAssign(this.form, val); this.prePageSize = this.form.pageSize; this.columnOptions = COLUMN_OPTIONS.filter((item) => item.sizeValid.includes(this.form.pageSize) ); if (this.form.pageSize === "A3") { this.columnOptions[2].disabled = val.examNumberStyle === "fill"; } }, }, }, methods: { ...mapMutations("card", [ "setPages", "setTopics", "setCurElement", "setCardConfig", "setTopicSeries", ]), ...mapActions("card", ["rebuildPages", "resetElementProp"]), modifyColumnNum(item) { this.$confirm( "此操作会导致当前题卡编辑的所有元素清空, 是否继续?", "提示", { type: "warning", } ) .then(() => { this.columnNumChange(item.value); }) .catch(() => {}); }, columnNumChange(val) { this.form.columnNumber = val; this.setCardConfig(this.form); this.setPages([]); this.setTopics([]); this.setTopicSeries([]); this.$emit("init-page"); }, cardConfigChange() { this.setCardConfig(this.form); }, configChange() { this.setCardConfig(this.form); this.$nextTick(() => { this.rebuildPages(); this.setCurElement({}); this.$nextTick(() => { this.resetElementProp(true); }); }); }, modifyPageSize() { this.$confirm("此操作将会重置当前页面所有元素信息, 是否继续?", "提示", { type: "warning", }) .then(() => { this.columnOptions = COLUMN_OPTIONS.filter((item) => item.sizeValid.includes(this.form.pageSize) ); this.form.columnNumber = this.columnOptions[0].value; this.configChange(); }) .catch(() => { this.form.pageSize = this.prePageSize; }); }, toViewStruct() { this.$refs.PageStructDialog.open(); }, }, }; </script>