| @@ -179,3 +179,21 @@ export function horizontalSummaryStatisticsExport(query) { | |||||
| params: query | params: query | ||||
| }) | }) | ||||
| } | } | ||||
| // 查询统计报列表(行级) | |||||
| export function listLineReporttitle(query) { | |||||
| return request({ | |||||
| url: '/entity/reporttitle/lineList', | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| // 竖向统计(不相加) | |||||
| export function summaryList(query) { | |||||
| return request({ | |||||
| url: '/entity/report/summaryList', | |||||
| method: 'get', | |||||
| params: query | |||||
| }) | |||||
| } | |||||
| @@ -3552,6 +3552,33 @@ export const constantRoutes = [ | |||||
| }, | }, | ||||
| component: (resolve) => require(['@/views/sunVillage_info/entityReport/reportView'], resolve) | component: (resolve) => require(['@/views/sunVillage_info/entityReport/reportView'], resolve) | ||||
| }, | }, | ||||
| { // 行级填报 | |||||
| path: '/sunVillage_info/entityReportLineList', | |||||
| name: 'entityReportLineList', | |||||
| meta: { | |||||
| title: '行级填报', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/entityReport/reportLineList'], resolve) | |||||
| }, | |||||
| { // 行级填报 | |||||
| path: '/sunVillage_info/entityReportLineView', | |||||
| name: 'entityReportLineView', | |||||
| meta: { | |||||
| title: '行级填报', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/entityReport/reportLineView'], resolve) | |||||
| }, | |||||
| { // 行级填报 | |||||
| path: '/sunVillage_info/entityReportLineSummary', | |||||
| name: 'entityReportLineSummary', | |||||
| meta: { | |||||
| title: '行级填报', | |||||
| hidden: true, | |||||
| }, | |||||
| component: (resolve) => require(['@/views/sunVillage_info/entityReport/reportLineSummary'], resolve) | |||||
| }, | |||||
| { // 统计填报 | { // 统计填报 | ||||
| path: '/sunVillage_info/statistical_report', | path: '/sunVillage_info/statistical_report', | ||||
| name: 'sunVillageInfoStatisticalReport', | name: 'sunVillageInfoStatisticalReport', | ||||
| @@ -0,0 +1,263 @@ | |||||
| <template> | |||||
| <div class="app-container"> | |||||
| <div class="header_main-placeholder"> | |||||
| <div class="header_main"> | |||||
| 行级填报 | |||||
| <div class="return_btn" @click="$router.back()"></div> | |||||
| </div> | |||||
| </div> | |||||
| <van-pull-refresh v-model="refreshing" @refresh="getList()"> | |||||
| <van-list | |||||
| class="list_main" | |||||
| v-model="loading" | |||||
| :finished="finished" | |||||
| finished-text="没有更多了" | |||||
| @load="getList('+1')" | |||||
| > | |||||
| <van-swipe-cell class="item" v-for="(item,index) in list" :key="index"> | |||||
| <div class="item_box" @click="view(item)"> | |||||
| <div class="head_block"> | |||||
| <i class="icon"></i> | |||||
| <div class="title">{{item.reportName}}</div> | |||||
| </div> | |||||
| <div class="order_block"> | |||||
| <div class="flex_block"> | |||||
| <i class="icon icon_1"></i> | |||||
| <div class="text">最近填报: {{item.params.lastOperatorDate}}</div> | |||||
| </div> | |||||
| <div class="flex_block"> | |||||
| <i class="icon icon_2"></i> | |||||
| <div class="text">填报数: {{item.params.numReport}}</div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| <template #right> | |||||
| <van-row class="full-height toolbar"> | |||||
| <van-col class="full-height"> | |||||
| <van-button square text="填报" type="primary" :to="{name:'entityReportLineView', query: {templateId:item.id, intent: 'add'}}" class="full-height" /> | |||||
| </van-col> | |||||
| </van-row> | |||||
| </template> | |||||
| </van-swipe-cell> | |||||
| </van-list> | |||||
| </van-pull-refresh> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import {delReport, listLineReporttitle} from "@/api/sunVillage_info/entity/report.js"; | |||||
| export default { | |||||
| name: "ReportLineList", | |||||
| data() { | |||||
| return { | |||||
| list:[], | |||||
| loading: false, | |||||
| finished: false, | |||||
| refreshing: false, | |||||
| total: 0, | |||||
| queryParams:{ | |||||
| pageNum:1, | |||||
| pageSize:10, | |||||
| orderByColumn:'createTime', | |||||
| isAsc:'desc', | |||||
| type: '2', | |||||
| } | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.getList(); | |||||
| }, | |||||
| methods: { | |||||
| view(row){ | |||||
| this.$router.push({ | |||||
| name: 'entityReportLineSummary', | |||||
| query: { | |||||
| intent: 'view', | |||||
| templateId: row.id, | |||||
| } | |||||
| }); | |||||
| }, | |||||
| getList(target){ | |||||
| let type = typeof (target); | |||||
| //console.log(type, target); | |||||
| if(target && this.finished) | |||||
| return; | |||||
| if (target === 0) { | |||||
| this.refreshing = true; | |||||
| this.finished = true; | |||||
| this.total = 0; | |||||
| this.queryParams.pageNum = 1; | |||||
| this.list = []; | |||||
| } | |||||
| else if (type === 'number') | |||||
| this.queryParams.pageNum = target; | |||||
| else if (type === 'string') { | |||||
| this.queryParams.pageNum = eval(this.queryParams.pageNum + target) | |||||
| } | |||||
| else | |||||
| { | |||||
| this.refreshing = true; | |||||
| this.finished = true; | |||||
| this.total = 0; | |||||
| this.queryParams.pageNum = 1; | |||||
| this.list = [] | |||||
| } | |||||
| listLineReporttitle(this.queryParams).then(response => { | |||||
| if (response.rows.length === 0) { | |||||
| this.finished = true; | |||||
| return; | |||||
| } | |||||
| this.list.push(...response.rows); | |||||
| this.total += response.rows.length; | |||||
| this.finished = this.total >= response.total; | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| this.refreshing = false; | |||||
| }); | |||||
| }, | |||||
| remove(row, index){ | |||||
| this.$dialog.confirm({ | |||||
| message: '您确认删除综合填报?', | |||||
| }) | |||||
| .then(() => { | |||||
| delReport(row.id).then(res => { | |||||
| this.$toast.success('删除成功'); | |||||
| this.list.splice(index,1); | |||||
| }); | |||||
| }) | |||||
| .catch(() => { | |||||
| }); | |||||
| }, | |||||
| refresh() { | |||||
| this.getList(); return; | |||||
| this.list = []; | |||||
| this.queryParams.pageNum = 1; | |||||
| this.refreshing = true; | |||||
| this.finished = false; | |||||
| }, | |||||
| }, | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| .app-container { | |||||
| //padding: 0.2rem 3%; | |||||
| width: 100vw; | |||||
| height: 100vh; | |||||
| } | |||||
| .full-height { | |||||
| height: 100%; | |||||
| } | |||||
| .header_main-placeholder { | |||||
| height: 116px; | |||||
| } | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| z-index: 999; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| .add_btn { | |||||
| width: 56.4px; | |||||
| height: 40.8px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||||
| background-size: 47px 34px; | |||||
| position: absolute; | |||||
| right: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| } | |||||
| .list_main{ | |||||
| padding:26px 22px 0; | |||||
| .item{ | |||||
| height: 162px; | |||||
| border-radius: 30px; | |||||
| background: #fff; | |||||
| box-shadow: 4px 6px 5px rgba(63, 68, 75, 0.1); | |||||
| margin-bottom: 20px; | |||||
| .item_box{ | |||||
| padding:25px 32px; | |||||
| } | |||||
| .head_block{ | |||||
| height: 62px; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| width: 100%; | |||||
| .icon{ | |||||
| width: 34px; | |||||
| height: 30px; | |||||
| background: url('../../../assets/images/sunVillage_info/fixedAssets_icon_4.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| display: block; | |||||
| margin-right: 12px; | |||||
| } | |||||
| .title{ | |||||
| flex:1; | |||||
| font-size: 32px; | |||||
| color: #252525; | |||||
| overflow: hidden; | |||||
| text-overflow: ellipsis; | |||||
| white-space: nowrap; | |||||
| padding-right: 20px; | |||||
| } | |||||
| } | |||||
| .order_block{ | |||||
| display: flex; | |||||
| height: 52px; | |||||
| padding-top: 12px; | |||||
| font-size: 24px; | |||||
| color: #858585; | |||||
| align-items: center; | |||||
| padding-bottom: 10px; | |||||
| .flex_block{ | |||||
| display: flex; | |||||
| align-items: center; | |||||
| justify-content: center; | |||||
| margin-right: 28px; | |||||
| height: 42px; | |||||
| .icon{ | |||||
| width: 25px; | |||||
| height: 25px; | |||||
| margin-top: 3px; | |||||
| margin-right: 8px; | |||||
| &.icon_1{ | |||||
| background: url('../../../assets/images/sunVillage_info/fixedAssets_icon_3.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| } | |||||
| &.icon_2{ | |||||
| background: url('../../../assets/images/sunVillage_info/fixedAssets_icon_5.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| .toolbar { | |||||
| margin-left: 2px; | |||||
| } | |||||
| </style> | |||||
| @@ -0,0 +1,462 @@ | |||||
| <template> | |||||
| <div class="app-container"> | |||||
| <div class="header_main-placeholder"> | |||||
| <div class="header_main"> | |||||
| 行级填报 | |||||
| <div class="return_btn" @click="back"></div> | |||||
| <div class="add_btn" @click="add"></div> | |||||
| </div> | |||||
| </div> | |||||
| <van-form ref="form" readonly :class="{'form_readonly': disableEdit}"> | |||||
| <van-row> | |||||
| <van-col :span="editorData.templateId ? 16 : 24"> | |||||
| <field-select | |||||
| class="template-selector" | |||||
| :value="editorData.templateId" | |||||
| label=" 模板" | |||||
| value-key="reportName" | |||||
| data-key="id" | |||||
| placeholder="报表模板" | |||||
| :rules="[{ required: true }]" | |||||
| :readonly="true" | |||||
| :columns="templateList" | |||||
| @input="getTemplate" | |||||
| /> | |||||
| </van-col> | |||||
| <van-col span="8" v-if="!!editorData.templateId"> | |||||
| <field-date-picker | |||||
| class="field_no-label" | |||||
| v-model="editorData.reportYear" | |||||
| placeholder="报表年度" | |||||
| formatter="yyyy" | |||||
| :readonly="disableEdit" | |||||
| input-align="center" | |||||
| type="year" | |||||
| /> | |||||
| </van-col> | |||||
| </van-row> | |||||
| <van-row v-if="!!editorData.templateId"> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleLeft" label="" placeholder="左上" input-align="left"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleCenter" label="" placeholder="中上" input-align="center"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleRight" label="" placeholder="右上" input-align="right"/> | |||||
| </van-col> | |||||
| </van-row> | |||||
| <div class="main-table" v-if="!!editorData.templateId"> | |||||
| <table> | |||||
| <thead> | |||||
| <tr> | |||||
| <td v-for="(header) in removePlaceholder(editorData.headers)" :colspan="header.colspan" :style="{ | |||||
| 'background-color': calcColor(header.type), | |||||
| 'color': calcTextColor(header.type), | |||||
| }">{{header.headerName}}</td> | |||||
| </tr> | |||||
| </thead> | |||||
| <tbody> | |||||
| <tr v-for="(row, rindex) in editorData.rows"> | |||||
| <td v-for="(col, cindex) in removePlaceholder(row)" :colspan="col.colspan" :rowspan="col.rowspan" :style="{ | |||||
| 'text-align': calcAlign(editorData.headers[col.colIndex].type), | |||||
| 'background-color': calcColor(editorData.headers[col.colIndex].type), | |||||
| }"> | |||||
| <div class="full-height"> | |||||
| <div class="full-height" v-if="editorData.headers[col.colIndex].type === '2'"> | |||||
| <input class="input-field align-right full-height" v-model="col.val" :readonly="disableEdit" type="number"></input> | |||||
| </div> | |||||
| <div class="full-height" v-else-if="editorData.headers[col.colIndex].type === '4'"> | |||||
| <input class="input-field align-center full-height" v-model="col.name" :readonly="disableEdit"></input> | |||||
| </div> | |||||
| <div class="full-height" v-else :style="{'text-align': calcAlign(editorData.headers[col.colIndex].type)}">{{col.name}}</div> | |||||
| <van-icon name="edit" v-if="cindex === editorData.headers.length - 1 && canEdit(col)" class="edit-icon" color="#1989fa" size="24" @click="edit(col)"/> | |||||
| </div> | |||||
| </td> | |||||
| </tr> | |||||
| </tbody> | |||||
| </table> | |||||
| </div> | |||||
| <template v-if="!!editorData.templateId"> | |||||
| <div> | |||||
| <van-field :readonly="disableEdit" v-model="editorData.reportRemark" label="备注" placeholder="报表备注"/> | |||||
| </div> | |||||
| <!-- <div> | |||||
| <van-field readonly :value="editorData.rule" label="规则" placeholder="报表效验公式"></van-field> | |||||
| </div>--> | |||||
| </template> | |||||
| </van-form> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import FieldSelect from "@/components/form/FieldSelect"; | |||||
| import { | |||||
| addReport, delReport, | |||||
| getReport, | |||||
| getReportTemplate, | |||||
| listReporttitle, summaryList, | |||||
| updateReport | |||||
| } from "@/api/sunVillage_info/entity/report"; | |||||
| import {array_grouping, array_toMap, date_format} from "@/utils"; | |||||
| import {Expression} from "@/utils/expression"; | |||||
| import {is_not_number} from "@/utils/utils"; | |||||
| import FieldDatePicker from "@/components/form/FieldDatePicker"; | |||||
| import {Notify} from "vant"; | |||||
| import Cookies from "js-cookie"; | |||||
| export default { | |||||
| name: "ReportLineSummary", | |||||
| components: {FieldDatePicker, FieldSelect}, | |||||
| data() { | |||||
| return { | |||||
| editorData: { | |||||
| id: null, | |||||
| templateId: null, | |||||
| reportRemark: null, | |||||
| titleLeft: null, | |||||
| titleCenter: null, | |||||
| titleRight: null, | |||||
| reportStatus: "0", | |||||
| createBy: null, | |||||
| createTime: null, | |||||
| updateBy: null, | |||||
| updateTime: null, | |||||
| reportName: '', | |||||
| operatorName: '', | |||||
| operatorDate: '', | |||||
| operatorDepartment: '', | |||||
| rule: null, | |||||
| reportYear: date_format('%Y'), | |||||
| headers: [], | |||||
| rows: [], | |||||
| cells: [], | |||||
| rules: [], | |||||
| }, | |||||
| templateList: [], | |||||
| loading: false, | |||||
| disableEdit: false, | |||||
| intent: 'add', | |||||
| templateId: null, | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.getTemplateList(); | |||||
| this.parseQuery(); | |||||
| }, | |||||
| mounted(){ | |||||
| this.init(); | |||||
| }, | |||||
| methods: { | |||||
| getTemplateList() { | |||||
| listReporttitle({ | |||||
| type: '2', | |||||
| reportStatus: '0', | |||||
| }).then((resp) => { | |||||
| this.templateList = resp.rows; | |||||
| }); | |||||
| }, | |||||
| getTemplate() { | |||||
| if(!this.editorData.templateId) | |||||
| return; | |||||
| this.loading = true; | |||||
| summaryList({ | |||||
| templateId: this.editorData.templateId, | |||||
| }).then((resp) => { | |||||
| this.editorData = resp.data; | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }); | |||||
| }, | |||||
| cellIsPlaceholder(x) { | |||||
| return x.colspan <= 0 || (x.hasOwnProperty('rowspan') && x.rowspan <= 0); | |||||
| }, | |||||
| removePlaceholder(cells) { | |||||
| return cells.filter((x) => !this.cellIsPlaceholder(x)); | |||||
| }, | |||||
| calcAlign(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| return 'right'; | |||||
| case '3': | |||||
| case '4': | |||||
| return 'center'; | |||||
| case '1': | |||||
| return 'left'; | |||||
| } | |||||
| }, | |||||
| calcColor(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| return 'unset'; | |||||
| case '4': | |||||
| return 'unset'; | |||||
| case '3': | |||||
| return '#d7e8f3'; | |||||
| case '1': | |||||
| return '#aad8f6'; | |||||
| } | |||||
| }, | |||||
| calcTextColor(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| case '4': | |||||
| return '#2facfe'; | |||||
| case '3': | |||||
| case '1': | |||||
| return '#858585'; | |||||
| } | |||||
| }, | |||||
| add() { | |||||
| this.$router.push({ | |||||
| name: 'entityReportLineView', | |||||
| query: { | |||||
| intent: 'add', | |||||
| templateId: this.templateId, | |||||
| } | |||||
| }); | |||||
| }, | |||||
| reset() { | |||||
| this.$refs.form.resetValidation(); | |||||
| this.editorData = { | |||||
| id: null, | |||||
| deptId: null, | |||||
| deptName: null, | |||||
| templateId: null, | |||||
| reportName: null, | |||||
| reportYear: null, | |||||
| reportRemark: null, | |||||
| titleLeft: null, | |||||
| titleCenter: null, | |||||
| titleRight: null, | |||||
| rule: null, | |||||
| operatorName: null, | |||||
| operatorDate: null, | |||||
| createBy: null, | |||||
| createTime: null, | |||||
| updateBy: null, | |||||
| updateTime: null, | |||||
| headers: [], | |||||
| rows: [], | |||||
| cells: [], | |||||
| rules: [], | |||||
| }; | |||||
| }, | |||||
| parseQuery() { | |||||
| let query = this.$route.query; | |||||
| this.templateId = query.templateId; | |||||
| this.intent = query.intent; | |||||
| if(!this.templateId) | |||||
| { | |||||
| this.$router.back(); | |||||
| return; | |||||
| } | |||||
| }, | |||||
| init() { | |||||
| this.editorData.templateId = this.templateId; | |||||
| this.getTemplate(); | |||||
| this.disableEdit = this.intent === 'view'; | |||||
| }, | |||||
| back() { | |||||
| this.$router.back(); | |||||
| }, | |||||
| notify(message, type) { | |||||
| Notify.clear(); | |||||
| Notify({ type: type || 'primary', message: message }); | |||||
| }, | |||||
| edit(row) { | |||||
| this.$router.push({ | |||||
| name: 'entityReportLineView', | |||||
| query: { | |||||
| intent: 'edit', | |||||
| templateId: '', | |||||
| reportId: row.reportId, | |||||
| } | |||||
| }); | |||||
| }, | |||||
| canEdit(col) { | |||||
| return col.createBy == Cookies.get('deptId'); | |||||
| }, | |||||
| }, | |||||
| computed: { | |||||
| isAdd() { | |||||
| return this.intent === 'add'; | |||||
| }, | |||||
| isEdit() { | |||||
| return this.intent === 'edit'; | |||||
| }, | |||||
| isView() { | |||||
| return this.intent === 'view'; | |||||
| }, | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| .app-container{ | |||||
| background: #e9e9e9; | |||||
| min-height: 100vh; | |||||
| width: 100vw; | |||||
| .header_main-placeholder { | |||||
| height: 116px; | |||||
| } | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| z-index: 999; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| .add_btn { | |||||
| width: 56.4px; | |||||
| height: 40.8px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||||
| background-size: 47px 34px; | |||||
| position: absolute; | |||||
| right: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| } | |||||
| .main-table { | |||||
| overflow-x: auto; | |||||
| overflow-y: auto; | |||||
| position: relative; | |||||
| background-color: #ffffff; | |||||
| padding: 0.15rem 0.15rem; | |||||
| border-radius: 0.15rem; | |||||
| margin: 0.1rem 0.1rem; | |||||
| table { | |||||
| /*width: max-content;*/ | |||||
| border-collapse: collapse; | |||||
| border: 0.01rem solid #1989fa; | |||||
| table-layout: fixed; | |||||
| } | |||||
| thead td { | |||||
| text-align: center; | |||||
| border: 0.01rem solid #1989fa; | |||||
| height: 1rem; | |||||
| font-size: 0.32rem; | |||||
| padding: 0 0.4rem; | |||||
| margin: 0; | |||||
| font-weight: bold; | |||||
| white-space: nowrap; | |||||
| /*max-width: 1.2rem;*/ | |||||
| } | |||||
| tbody td { | |||||
| font-size: 0.3rem; | |||||
| border: 0.01rem solid #1989fa; | |||||
| height: 1rem; | |||||
| white-space: break-spaces; | |||||
| word-wrap: break-word; | |||||
| overflow-wrap: break-word; | |||||
| padding: 0 0.1rem; | |||||
| margin: 0; | |||||
| /*max-width: 1.5rem;*/ | |||||
| position: relative; | |||||
| } | |||||
| .input-field { | |||||
| width: 100%; | |||||
| background-color: unset; | |||||
| border: 0; | |||||
| } | |||||
| .validate-error { | |||||
| color: #F56C6C; | |||||
| } | |||||
| .validate-error-box { | |||||
| color: #F56C6C; | |||||
| border: 0.02rem solid #F56C6C; | |||||
| } | |||||
| } | |||||
| .align-right { | |||||
| text-align: right; | |||||
| } | |||||
| .align-center { | |||||
| text-align: center; | |||||
| } | |||||
| .full-height { | |||||
| height: 100%; | |||||
| } | |||||
| /deep/ .van-field__label { | |||||
| background-color: #2facfe; | |||||
| margin: 0; | |||||
| color: #fff; | |||||
| border-top-left-radius: 0.15rem; | |||||
| border-bottom-left-radius: 0.15rem; | |||||
| padding: 0 0.2rem; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| /deep/ .van-field__body { | |||||
| background-color: #ffffff; | |||||
| border-top-right-radius: 0.15rem; | |||||
| border-bottom-right-radius: 0.15rem; | |||||
| padding: 0 0.1rem; | |||||
| } | |||||
| /deep/ .van-field__body { | |||||
| height: 100%; | |||||
| } | |||||
| /deep/ .van-field { | |||||
| background-color: unset; | |||||
| padding: 0.1rem 0.15rem; | |||||
| height: 1rem; | |||||
| } | |||||
| .field_no-label /deep/ .van-field__body { | |||||
| border-top-left-radius: 0.15rem; | |||||
| border-bottom-left-radius: 0.15rem; | |||||
| } | |||||
| .template-selector /deep/ span { | |||||
| padding-left: 0.8rem; | |||||
| background: #2facfe url('../../../assets/images/sunVillage_info/list_icon_11.png') left center no-repeat; | |||||
| background-size: 0.45rem; | |||||
| } | |||||
| .form_readonly /deep/ .van-icon-arrow-down { | |||||
| display: none; | |||||
| } | |||||
| .edit-icon { | |||||
| display: inline-block; | |||||
| width: 0.6rem; | |||||
| position: absolute; | |||||
| right: -0.6rem; | |||||
| top: calc(50% - 0.3rem); | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -0,0 +1,508 @@ | |||||
| <template> | |||||
| <div class="app-container"> | |||||
| <div class="header_main-placeholder"> | |||||
| <div class="header_main"> | |||||
| 行级填报 | |||||
| <div class="return_btn" @click="back"></div> | |||||
| <div class="add_btn" @click="save" v-if="(isAdd || isEdit) && editorData.templateId">保 存</div> | |||||
| </div> | |||||
| </div> | |||||
| <van-form ref="form" :class="{'form_readonly': disableEdit}"> | |||||
| <van-row> | |||||
| <van-col :span="editorData.templateId ? 16 : 24"> | |||||
| <field-select | |||||
| class="template-selector" | |||||
| :value="editorData.templateId" | |||||
| label=" 模板" | |||||
| value-key="reportName" | |||||
| data-key="id" | |||||
| placeholder="报表模板" | |||||
| :rules="[{ required: true }]" | |||||
| :readonly="true" | |||||
| :columns="templateList" | |||||
| @input="getTemplate" | |||||
| /> | |||||
| </van-col> | |||||
| <van-col span="8" v-if="!!editorData.templateId"> | |||||
| <field-date-picker | |||||
| class="field_no-label" | |||||
| v-model="editorData.reportYear" | |||||
| placeholder="报表年度" | |||||
| formatter="yyyy" | |||||
| :readonly="disableEdit" | |||||
| input-align="center" | |||||
| type="year" | |||||
| /> | |||||
| </van-col> | |||||
| </van-row> | |||||
| <van-row v-if="!!editorData.templateId"> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleLeft" label="" placeholder="左上" input-align="left"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleCenter" label="" placeholder="中上" input-align="center"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.titleRight" label="" placeholder="右上" input-align="right"/> | |||||
| </van-col> | |||||
| </van-row> | |||||
| <div class="main-table" v-if="!!editorData.templateId"> | |||||
| <div v-for="(header, rindex) in editorData.headers"> | |||||
| <van-field v-if="header.type === '2'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].val" :label="header.headerName" :placeholder="header.headerName" input-align="right" type="number"/> | |||||
| <van-field v-else-if="header.type === '4' || header.type === '3'" label-width="50%" :readonly="disableEdit" v-model="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | |||||
| <van-field v-else label-width="50%" :readonly="true" :value="editorData.rows[0][rindex].name" :label="header.headerName" :placeholder="header.headerName" input-align="right"/> | |||||
| </div> | |||||
| </div> | |||||
| <template v-if="!!editorData.templateId"> | |||||
| <div> | |||||
| <van-field :readonly="disableEdit" v-model="editorData.reportRemark" label="备注" placeholder="报表备注"/> | |||||
| </div> | |||||
| <!-- <div> | |||||
| <van-field readonly :value="editorData.rule" label="规则" placeholder="报表效验公式"></van-field> | |||||
| </div>--> | |||||
| <van-row> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.operatorDepartment" label="" placeholder="填报单位" input-align="left"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <van-field class="field_no-label" :readonly="disableEdit" v-model="editorData.operatorName" label="" placeholder="填报人" input-align="center"/> | |||||
| </van-col> | |||||
| <van-col span="8"> | |||||
| <field-date-picker | |||||
| class="field_no-label" | |||||
| v-model="editorData.operatorDate" | |||||
| placeholder="填报日期" | |||||
| formatter="yyyy-MM-dd" | |||||
| :readonly="disableEdit" | |||||
| input-align="right" | |||||
| /> | |||||
| </van-col> | |||||
| </van-row> | |||||
| </template> | |||||
| </van-form> | |||||
| </div> | |||||
| </template> | |||||
| <script> | |||||
| import FieldSelect from "@/components/form/FieldSelect"; | |||||
| import { | |||||
| addReport, delReport, | |||||
| getReport, | |||||
| getReportTemplate, | |||||
| listReporttitle, | |||||
| updateReport | |||||
| } from "@/api/sunVillage_info/entity/report"; | |||||
| import {array_grouping, array_toMap, date_format} from "@/utils"; | |||||
| import {Expression} from "@/utils/expression"; | |||||
| import {is_not_number} from "@/utils/utils"; | |||||
| import FieldDatePicker from "@/components/form/FieldDatePicker"; | |||||
| import {Notify} from "vant"; | |||||
| export default { | |||||
| name: "ReportLineView", | |||||
| components: {FieldDatePicker, FieldSelect}, | |||||
| data() { | |||||
| return { | |||||
| editorData: { | |||||
| id: null, | |||||
| templateId: null, | |||||
| reportRemark: null, | |||||
| titleLeft: null, | |||||
| titleCenter: null, | |||||
| titleRight: null, | |||||
| reportStatus: "0", | |||||
| createBy: null, | |||||
| createTime: null, | |||||
| updateBy: null, | |||||
| updateTime: null, | |||||
| reportName: '', | |||||
| operatorName: '', | |||||
| operatorDate: '', | |||||
| operatorDepartment: '', | |||||
| rule: null, | |||||
| reportYear: date_format('%Y'), | |||||
| headers: [], | |||||
| rows: [], | |||||
| cells: [], | |||||
| rules: [], | |||||
| }, | |||||
| templateList: [], | |||||
| loading: false, | |||||
| disableEdit: false, | |||||
| intent: 'add', | |||||
| templateId: null, | |||||
| reportId: null, | |||||
| }; | |||||
| }, | |||||
| created() { | |||||
| this.getTemplateList(); | |||||
| this.parseQuery(); | |||||
| }, | |||||
| mounted(){ | |||||
| this.init(); | |||||
| }, | |||||
| methods: { | |||||
| getTemplateList() { | |||||
| listReporttitle({ | |||||
| type: '2', | |||||
| reportStatus: '0', | |||||
| }).then((resp) => { | |||||
| this.templateList = resp.rows; | |||||
| }); | |||||
| }, | |||||
| getTemplate() { | |||||
| if(!this.editorData.templateId && !this.editorData.id) | |||||
| return; | |||||
| this.loading = true; | |||||
| if(this.editorData.id) // 修改 | |||||
| { | |||||
| getReport(this.editorData.id).then((resp) => { | |||||
| let reportData = resp.data; | |||||
| getReportTemplate(reportData.templateId).then((resp) => { | |||||
| let templateData = resp.data; | |||||
| this.setTableData(templateData, reportData); | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }); | |||||
| }).catch(() => { | |||||
| this.loading = false; | |||||
| }); | |||||
| } | |||||
| else | |||||
| { | |||||
| getReportTemplate(this.editorData.templateId).then((resp) => { | |||||
| let templateData = resp.data; | |||||
| this.setTableData(templateData); | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }); | |||||
| } | |||||
| }, | |||||
| setTableData(templateData, reportData) { | |||||
| let data; | |||||
| if(!reportData) | |||||
| { | |||||
| data = templateData; | |||||
| data.rows.forEach((x) => { | |||||
| x.forEach((y) => { | |||||
| y.error = false; | |||||
| }); | |||||
| }); | |||||
| } | |||||
| else | |||||
| { | |||||
| let cells = reportData.cells; | |||||
| data = reportData; | |||||
| data.headers = templateData.headers; | |||||
| data.rows = templateData.rows; | |||||
| data.cells = templateData.cells; | |||||
| data.rules = templateData.rules; | |||||
| data.rule = templateData.rule; | |||||
| let group = array_grouping(cells, (x) => x.rowIndex); | |||||
| Object.keys(group).forEach((x) => group[x] = array_toMap(group[x], (x) => x.colIndex)); | |||||
| data.rows.forEach((cols, rowIndex) => { | |||||
| cols.forEach((x) => { | |||||
| if(group[rowIndex] && group[rowIndex][x.colIndex]) | |||||
| { | |||||
| if(templateData.headers[x.colIndex].type === '4') | |||||
| x.name = group[rowIndex][x.colIndex].name; | |||||
| x.val = group[rowIndex][x.colIndex].val; | |||||
| } | |||||
| }) | |||||
| }); | |||||
| } | |||||
| this.editorData = data; | |||||
| }, | |||||
| calcAlign(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| return 'right'; | |||||
| case '3': | |||||
| case '4': | |||||
| return 'center'; | |||||
| case '1': | |||||
| return 'left'; | |||||
| } | |||||
| }, | |||||
| calcColor(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| return 'unset'; | |||||
| case '4': | |||||
| return 'unset'; | |||||
| case '3': | |||||
| return '#d7e8f3'; | |||||
| case '1': | |||||
| return '#aad8f6'; | |||||
| } | |||||
| }, | |||||
| calcTextColor(type) { | |||||
| switch(type) | |||||
| { | |||||
| case '2': | |||||
| case '4': | |||||
| return '#2facfe'; | |||||
| case '3': | |||||
| case '1': | |||||
| return '#858585'; | |||||
| } | |||||
| }, | |||||
| save() { | |||||
| this.$refs.form.validate().then(() => { | |||||
| this.preHandle(); | |||||
| this.loading = true; | |||||
| let func = this.editorData.id ? updateReport : addReport; | |||||
| func(this.editorData).then((resp) => { | |||||
| this.notify("保存成功!", 'success'); | |||||
| this.back(); | |||||
| }).finally(() => { | |||||
| this.loading = false; | |||||
| }); | |||||
| }).catch(() => { | |||||
| this.notify("请填写完整表单", 'danger'); | |||||
| this.$refs.form.scrollToField(); | |||||
| }); | |||||
| }, | |||||
| preHandle() { | |||||
| this.editorData.cells = []; | |||||
| this.editorData.rows.forEach((x) => this.editorData.cells.push(...x)); | |||||
| }, | |||||
| reset() { | |||||
| this.$refs.form.resetValidation(); | |||||
| this.editorData = { | |||||
| id: null, | |||||
| deptId: null, | |||||
| deptName: null, | |||||
| templateId: null, | |||||
| reportName: null, | |||||
| reportYear: null, | |||||
| reportRemark: null, | |||||
| titleLeft: null, | |||||
| titleCenter: null, | |||||
| titleRight: null, | |||||
| rule: null, | |||||
| operatorName: null, | |||||
| operatorDate: null, | |||||
| createBy: null, | |||||
| createTime: null, | |||||
| updateBy: null, | |||||
| updateTime: null, | |||||
| headers: [], | |||||
| rows: [], | |||||
| cells: [], | |||||
| rules: [], | |||||
| }; | |||||
| }, | |||||
| parseQuery() { | |||||
| let query = this.$route.query; | |||||
| this.templateId = query.templateId; | |||||
| this.reportId = query.reportId; | |||||
| this.intent = query.intent; | |||||
| if(!this.reportId) | |||||
| { | |||||
| this.intent = 'add'; | |||||
| return; | |||||
| } | |||||
| if(this.intent === 'add') | |||||
| { | |||||
| this.reportId = null; | |||||
| } | |||||
| if(!this.templateId && !this.reportId) | |||||
| { | |||||
| this.$router.back(); | |||||
| return; | |||||
| } | |||||
| }, | |||||
| init() { | |||||
| this.editorData.templateId = this.templateId; | |||||
| this.editorData.id = this.reportId; | |||||
| this.getTemplate(); | |||||
| this.disableEdit = this.intent === 'view'; | |||||
| }, | |||||
| back() { | |||||
| this.$router.back(); | |||||
| }, | |||||
| notify(message, type) { | |||||
| Notify.clear(); | |||||
| Notify({ type: type || 'primary', message: message }); | |||||
| }, | |||||
| }, | |||||
| computed: { | |||||
| isAdd() { | |||||
| return this.intent === 'add'; | |||||
| }, | |||||
| isEdit() { | |||||
| return this.intent === 'edit'; | |||||
| }, | |||||
| isView() { | |||||
| return this.intent === 'view'; | |||||
| }, | |||||
| } | |||||
| } | |||||
| </script> | |||||
| <style scoped lang="scss"> | |||||
| .app-container{ | |||||
| background: #e9e9e9; | |||||
| min-height: 100vh; | |||||
| width: 100vw; | |||||
| .header_main-placeholder { | |||||
| height: 116px; | |||||
| } | |||||
| .header_main { | |||||
| height: 116px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_head.png') no-repeat; | |||||
| background-size: 100% 100%; | |||||
| position: fixed; | |||||
| top: 0; | |||||
| left: 0; | |||||
| width: 100%; | |||||
| font-size: 36px; | |||||
| line-height: 116px; | |||||
| text-align: center; | |||||
| color: #fff; | |||||
| z-index: 999; | |||||
| .return_btn { | |||||
| width: 24px; | |||||
| height: 43.2px; | |||||
| background: url('../../../assets/images/sunVillage_info/list_icon_5.png') center center no-repeat; | |||||
| background-size: 20px 36px; | |||||
| position: absolute; | |||||
| left: 38px; | |||||
| top: 36px; | |||||
| } | |||||
| .add_btn { | |||||
| width: 72px; | |||||
| //height: 40.8px; | |||||
| //background: url('../../../assets/images/sunVillage_info/list_icon_9.png') center center no-repeat; | |||||
| //background-size: 47px 34px; | |||||
| position: absolute; | |||||
| right: 38px; | |||||
| top: 0; | |||||
| font-size: 28px; | |||||
| } | |||||
| } | |||||
| .main-table { | |||||
| overflow-x: auto; | |||||
| overflow-y: auto; | |||||
| position: relative; | |||||
| background-color: #ffffff; | |||||
| padding: 0.15rem 0.15rem; | |||||
| border-radius: 0.15rem; | |||||
| margin: 0.1rem 0.1rem; | |||||
| table { | |||||
| width: max-content; | |||||
| border-collapse: collapse; | |||||
| border: 0.01rem solid #1989fa; | |||||
| table-layout: fixed; | |||||
| } | |||||
| thead td { | |||||
| text-align: center; | |||||
| border: 0.01rem solid #1989fa; | |||||
| height: 1rem; | |||||
| font-size: 0.32rem; | |||||
| padding: 0 0.4rem; | |||||
| margin: 0; | |||||
| font-weight: bold; | |||||
| max-width: 1.2rem; | |||||
| } | |||||
| tbody td { | |||||
| font-size: 0.3rem; | |||||
| border: 0.01rem solid #1989fa; | |||||
| height: 1rem; | |||||
| white-space: break-spaces; | |||||
| word-wrap: break-word; | |||||
| overflow-wrap: break-word; | |||||
| padding: 0; | |||||
| margin: 0; | |||||
| max-width: 1.5rem; | |||||
| position: relative; | |||||
| } | |||||
| .input-field { | |||||
| width: 100%; | |||||
| background-color: unset; | |||||
| border: 0; | |||||
| } | |||||
| .validate-error { | |||||
| color: #F56C6C; | |||||
| } | |||||
| .validate-error-box { | |||||
| color: #F56C6C; | |||||
| border: 0.02rem solid #F56C6C; | |||||
| } | |||||
| } | |||||
| .align-right { | |||||
| text-align: right; | |||||
| } | |||||
| .align-center { | |||||
| text-align: center; | |||||
| } | |||||
| .full-height { | |||||
| height: 100%; | |||||
| } | |||||
| /deep/ .van-field__label { | |||||
| background-color: #2facfe; | |||||
| margin: 0; | |||||
| color: #fff; | |||||
| border-top-left-radius: 0.15rem; | |||||
| border-bottom-left-radius: 0.15rem; | |||||
| padding: 0 0.2rem; | |||||
| display: flex; | |||||
| align-items: center; | |||||
| } | |||||
| /deep/ .van-field__body { | |||||
| background-color: #ffffff; | |||||
| border-top-right-radius: 0.15rem; | |||||
| border-bottom-right-radius: 0.15rem; | |||||
| padding: 0 0.1rem; | |||||
| } | |||||
| /deep/ .van-field__body { | |||||
| height: 100%; | |||||
| } | |||||
| /deep/ .van-field { | |||||
| background-color: unset; | |||||
| padding: 0.1rem 0.15rem; | |||||
| height: 1rem; | |||||
| } | |||||
| .field_no-label /deep/ .van-field__body { | |||||
| border-top-left-radius: 0.15rem; | |||||
| border-bottom-left-radius: 0.15rem; | |||||
| } | |||||
| .main-table /deep/ .van-field__body { | |||||
| border-right: 0.01rem solid #ccc; | |||||
| border-top: 0.01rem solid #ccc; | |||||
| border-bottom: 0.01rem solid #ccc; | |||||
| } | |||||
| .template-selector /deep/ span { | |||||
| padding-left: 0.8rem; | |||||
| background: #2facfe url('../../../assets/images/sunVillage_info/list_icon_11.png') left center no-repeat; | |||||
| background-size: 0.45rem; | |||||
| } | |||||
| .form_readonly /deep/ .van-icon-arrow-down { | |||||
| display: none; | |||||
| } | |||||
| } | |||||
| </style> | |||||
| @@ -8,7 +8,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <van-form ref="form" :class="{'form_readonly': disableEdit}"> | |||||
| <van-form ref="form" :readonly="disableEdit" :class="{'form_readonly': disableEdit}"> | |||||
| <van-row> | <van-row> | ||||
| <van-col :span="editorData.templateId ? 16 : 24"> | <van-col :span="editorData.templateId ? 16 : 24"> | ||||
| <field-select | <field-select | ||||
| @@ -20,7 +20,7 @@ | |||||
| placeholder="报表模板" | placeholder="报表模板" | ||||
| :rules="[{ required: true }]" | :rules="[{ required: true }]" | ||||
| :required="true" | :required="true" | ||||
| :readonly="disableEdit" | |||||
| :readonly="disableEdit || !!editorData.id" | |||||
| :columns="templateList" | :columns="templateList" | ||||
| @input="getTemplate" | @input="getTemplate" | ||||
| /> | /> | ||||
| @@ -56,9 +56,7 @@ | |||||
| <td v-for="(header) in removePlaceholder(editorData.headers)" :colspan="header.colspan" :style="{ | <td v-for="(header) in removePlaceholder(editorData.headers)" :colspan="header.colspan" :style="{ | ||||
| 'background-color': calcColor(header.type), | 'background-color': calcColor(header.type), | ||||
| 'color': calcTextColor(header.type), | 'color': calcTextColor(header.type), | ||||
| }"> | |||||
| {{header.headerName}} | |||||
| </td> | |||||
| }">{{header.headerName}}</td> | |||||
| </tr> | </tr> | ||||
| </thead> | </thead> | ||||
| @@ -68,13 +66,13 @@ | |||||
| 'text-align': calcAlign(editorData.headers[col.colIndex].type), | 'text-align': calcAlign(editorData.headers[col.colIndex].type), | ||||
| 'background-color': calcColor(editorData.headers[col.colIndex].type), | 'background-color': calcColor(editorData.headers[col.colIndex].type), | ||||
| }"> | }"> | ||||
| <div class="full-height" v-if="editorData.headers[col.colIndex].type === '2'" :class="{'validate-error': col.error, 'validate-error-box': col.error,}"> | |||||
| <div class="absolute-full" v-if="editorData.headers[col.colIndex].type === '2'" :class="{'validate-error': col.error, 'validate-error-box': col.error,}"> | |||||
| <input class="input-field align-right full-height" v-model="col.val" :readonly="disableEdit" type="number"></input> | <input class="input-field align-right full-height" v-model="col.val" :readonly="disableEdit" type="number"></input> | ||||
| </div> | </div> | ||||
| <div class="full-height" v-else-if="editorData.headers[col.colIndex].type === '4'"> | <div class="full-height" v-else-if="editorData.headers[col.colIndex].type === '4'"> | ||||
| <input class="input-field align-center full-height" v-model="col.name" :readonly="disableEdit"></input> | <input class="input-field align-center full-height" v-model="col.name" :readonly="disableEdit"></input> | ||||
| </div> | </div> | ||||
| <div v-else :style="{'text-align': calcAlign(editorData.headers[col.colIndex].type)}">{{col.name}}</div> | |||||
| <div class="full-height" v-else :style="{'text-align': calcAlign(editorData.headers[col.colIndex].type)}">{{col.name}}</div> | |||||
| </td> | </td> | ||||
| </tr> | </tr> | ||||
| </tbody> | </tbody> | ||||
| @@ -499,7 +497,7 @@ export default { | |||||
| margin: 0.1rem 0.1rem; | margin: 0.1rem 0.1rem; | ||||
| table { | table { | ||||
| width: max-content; | |||||
| /*width: max-content;*/ | |||||
| border-collapse: collapse; | border-collapse: collapse; | ||||
| border: 0.01rem solid #1989fa; | border: 0.01rem solid #1989fa; | ||||
| table-layout: fixed; | table-layout: fixed; | ||||
| @@ -512,7 +510,8 @@ export default { | |||||
| padding: 0 0.4rem; | padding: 0 0.4rem; | ||||
| margin: 0; | margin: 0; | ||||
| font-weight: bold; | font-weight: bold; | ||||
| max-width: 1.2rem; | |||||
| white-space: nowrap; | |||||
| /*max-width: 1.2rem;*/ | |||||
| } | } | ||||
| tbody td { | tbody td { | ||||
| font-size: 0.3rem; | font-size: 0.3rem; | ||||
| @@ -521,9 +520,9 @@ export default { | |||||
| white-space: break-spaces; | white-space: break-spaces; | ||||
| word-wrap: break-word; | word-wrap: break-word; | ||||
| overflow-wrap: break-word; | overflow-wrap: break-word; | ||||
| padding: 0; | |||||
| padding: 0 0.1rem; | |||||
| margin: 0; | margin: 0; | ||||
| max-width: 1.5rem; | |||||
| /*max-width: 1.5rem;*/ | |||||
| position: relative; | position: relative; | ||||
| } | } | ||||
| @@ -593,6 +592,14 @@ export default { | |||||
| .form_readonly /deep/ .van-icon-arrow-down { | .form_readonly /deep/ .van-icon-arrow-down { | ||||
| display: none; | display: none; | ||||
| } | } | ||||
| .absolute-full { | |||||
| position: absolute; | |||||
| top: 0; | |||||
| bottom: 0; | |||||
| left: 0; | |||||
| right: 0; | |||||
| } | |||||
| } | } | ||||