<template>
    <div id="unit" class="flex-row">
        <div class="basic-main" @keyup.enter="search">
            <div class="flex" v-if="!show">
                <criteria-paged :model="model"  v-ref:paged >
                    <criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
                        <div novalidate class="form-inline auto" partial>
                            <div class="row">
                              <div class="col-sm-2 form-group">
                                <label class="font_normal_body">客户编号</label>
                                <input type="text" style="width:60%" class="input_search" v-model="model.f_userinfo_code"
                                       condition="f_userinfo_code = '{}' " placeholder="客户编号">
                              </div>
                              <div class="col-sm-2 form-group">
                                <label class="font_normal_body">客户名称</label>
                                <input type="text" style="width:60%" class="input_search" v-model="model.f_user_name"
                                       condition="f_user_name like '%{}%'" placeholder="客户名称">
                              </div>

                              <div class="col-sm-2 form-group">
                                <label for="startDate" class="font_normal_body">开始日期</label>
                                <datepicker id="startDate" placeholder="开始日期" style="width:60%"
                                            v-model="model.startDate"
                                            :value.sync="model.startDate"
                                            :format="'yyyy-MM-dd HH:mm:ss'"
                                            :show-reset-button="true"
                                          >
                                </datepicker>
                              </div>
                              <div class="col-sm-2 form-group">
                                <label for="endDate" class="font_normal_body">结束日期</label>
                                <datepicker id="endDate" placeholder="结束日期" style="width:60%"
                                            v-model="model.endDate"
                                            :value.sync="model.endDate"
                                            :format="'yyyy-MM-dd HH:mm:ss'"
                                            :show-reset-button="true"
                                           >
                                </datepicker>
                              </div>

                                <div class="span" style="float:right;">
                                    <button class="button_search button_spacing" @click="search()">查询</button>
                                    <button class="button_clear button_spacing" @click="$parent.$parent.clear()">清空</button>
                                    <export-excel :data="$parent.$parent.getCondition"
                                                  :field="$parent.$parent.config.pageFields"
                                                  sqlurl="api/af-revenue/logic/openapi/exportfile"
                                                  sql-name="paymentQuery"
                                                  template-name='用户缴费抄表查询'
                                                  :choose-col="true"></export-excel>

                                  <print-data :sum-field="$parent.$parent.getfield" :model="$parent.model" :field="$parent.$parent.config.pageFields"
                                               :defaultfield="$parent.$parent.defaultfield"
                                              titletable="用户缴费抄表查询"
                                              ></print-data>
                                    <div style="float: right"  class="button_spacing" :class="{'button_shrink_top':$parent.$parent.criteriaShow,'button_shrink_bottom':!$parent.$parent.criteriaShow}"    @click="$parent.$parent.hidden()"></div>
                                </div>
                            </div>
                        </div>
                    </criteria>
                  <data-grid  :model="model" partial='list' class="list_area table_sy" v-ref:grid >
                    <template partial='head'>
                      <tr>
                        <th v-for="(key,value ) in $parent.$parent.$parent.config.pageFields" ><nobr>{{value}}</nobr></th>
                      </tr>
                    </template>
                    <template partial='body'>
                      <td style="text-align: center;" v-for="(key,value ) in $parent.$parent.$parent.config.pageFields"><nobr>{{row[key]}}</nobr></td>
                    </template>
                    <template partial='foot'></template>
                  </data-grid>
                </criteria-paged>
            </div>
        </div>
    </div>
</template>
<script>
    import { PagedList } from 'vue-client'
    import * as Util from '../../Util'
    import defaultPrint from './config/DefaultPrint'
    import exportConfig from './config/exportConfig.js'
    let readySomething = async function(self) {
      self.defaultfield = [...self.defaultfield, ...self.config.defaultPrint]
        self.$refs.paged.$refs.cri.model.startDate = self.$login.toStandardDateString() + ' 00:00:00'
        self.$refs.paged.$refs.cri.model.endDate = self.$login.toStandardDateString() + ' 23:59:59'
        await self.$MagLoadParams.loadParam()
      self.smallareas=[{label: '全部',value: ''},...await self.$MagGetSaleParam.getsmallarea(self.$login.f.orgid)]
        self.sumsmodel = self.$refs.paged.$refs.grid.model.sums
    }
    export default {
        title: '用户缴费抄表查询',
        name: 'paymentQuery',
        data () {
            return {
                model: new PagedList('api/af-revenue/sql/paymentQuery', 30, {startDate: 'this.model.startDate', endDate: 'this.model.endDate'}),
                initres: {
                    org:[this.$login.f.orgid],
                    dep:[],
                    user:[],
                },
              other: [],
              footer: [],
                gasproperties:[],
                show:false,
                rowdata:{},
                criteriaShow: false,
                orgCondtionStr: '',
                modelval: [],
                printshow: false,
                all: false,
                fields: {},
                thead: '',
                tfoot: '',
              defaultfield: [],
              config: {
                pageFields:{
                  'f_userinfo_code': '客户编号', 'f_user_name': '名称','f_user_phone': '电话','f_residential_area':'小区','f_address':'地址','f_idnumber':'身份证号','f_user_state':'用户状态',
                  'f_meternumber':'表号','f_charge_type':'操作类型','f_operate_date':'操作时间','f_operator':'操作员','f_last_tablebase':'上期底数','f_tablebase':'本期底数',
                  'f_oughtamount': '用气量', 'f_oughtfee': '用气金额','f_collection':'收款','f_curbalance':'本期结余','f_delaypay':'滞纳金'
                },
              },
              smallareas:[{label: '全部',value: ''}],  //区域
                //合计数据
                sumsmodel: {},
                f_filialeid: this.$login.f.f_orgid,
                f_orgid: this.$login.f.orgid,
                f_depid: this.$login.f.depids,
                f_operatorid: this.$login.f.id
            }
        },
        ready () {
            readySomething(this)
        },
        methods: {
          getotherfooter() {
            this.other = [];
            this.footer = [];
            let otherInData = [];
            otherInData.push(`导出时间: ${this.$login.toStandardTimeString()}`);
            let footerData = [], exportfield = this.getfield;
            footerData.push("合计");
            let self = this;
            this.other.push(otherInData);
          },
            userTypeChange () {
                this.gasproperties=[]
                if(this.$refs.paged.$refs.cri.model !==null) {
                    this.$refs.paged.$refs.cri.model.f_gasproperties=''
                    console.log(this.$refs.paged.$refs.cri.model.f_user_type[0])
                    this.gasproperties = this.$appdata.getParam(this.$refs.paged.$refs.cri.model.f_user_type[0])
                }
                else{
                    this.gasproperties =[{label: '全部', value: ''}]
                }
            },
            search(){
                this.$refs.paged.$refs.cri.search()
            },
            cancel() {
                this.show = false
            },
            selfSearch(args) {
                this.model.search(args.condition, args.model)
            },
            clear() {
                //清空部门和人员
                this.$refs.paged.$refs.cri.$refs.sel.$children[1].selectres = []
                //部门和人员变为全选
                this.$refs.paged.$refs.cri.$refs.sel.$children[1].$children[0].isSelectAll = false
                this.$refs.paged.$refs.cri.$refs.sel.$children[2].$children[0].isSelectAll = false
                Object.keys(this.$refs.paged.$refs.cri.model).forEach((key) => {
                    this.$refs.paged.$refs.cri.model[key] = []
                })
            },
            show() {
                this.criteriaShow = true
            },
            hidden() {
                this.criteriaShow = !this.criteriaShow
            },
            showmsg(obj){
              this.rowdata=obj
              this.show=true
            },
            getRes(condition,obj) {
              this.orgCondtionStr = condition
              this.orgname = obj.orgnames[0]
              this.depname = obj.depnames[0]
            },
            put() {
                // 对Modelval进行排序
                this.sortModelval()
                this.thead = `<tr><th colspan=${this.modelval.length}>非民用用气查询</th></tr><tr>`
                for (let key of this.modelval) {
                    this.thead += '<th>' + this.fields[key] + '</th>'
                }
                this.thead += '</tr>'
            },
            print() {
                this.$refs.print.PrintAsFile()
                this.printshow = false
            },
            dealmsg(val) {
                this.rowdata=val
                this.show=true
                val.model = this.model.model
                this.$dispatch('deal-msg', val)
            },
            close() {
                this.printshow = false
                this.all = false
            },
            // 对选择的列进行排序
            sortModelval() {
                let sortModel = []
                Object.keys(this.fields).forEach((key) => {
                    if (this.modelval.includes(key)) {
                        sortModel.push(key)
                    }
                })
                this.modelval = sortModel
                console.log('选择的打印的字段', this.modelval)
            }
        },
        computed: {
            getCondition() {
                return {
                  condition: `${this.$refs.paged.$refs.cri.condition}` + this.orgCondtionStr,
                  startDate: this.$refs.paged.$refs.cri.model.startDate,
                  endDate: this.$refs.paged.$refs.cri.model.endDate
                }
            },
            getfield() {
                return exportConfig.monthGasConfig
            },
            usertypes() {
                return [{label: ' 全部  ', value: ''}, ...this.$appdata.getParam('用户类型')]
            },
          f_state() {
                return [{label: ' 全部  ', value: ''}, ...this.$appdata.getParam('收费状态')]
            },
          metertypes() {
            return [{label: ' 全部  ', value: ''}, ...this.$appdata.getParam('气表类型')]
          },
        },
        events: {

        },
        watch: {
            'all'(val) {
                if (val) {
                    this.modelval = this.bodyData
                } else {
                    this.modelval = defaultPrint.monthGasConfig
                    this.put()
                }
            },
            'modelval.length'() {
                this.put()
            },
          sumsmodel: {
            handler: function (val) {
              this.getotherfooter();
            },
            deep: true
          }
        }
    }
</script>
<style>
    .datapanel {
        color: #333;
        background-color: white;
        padding: 10px 20px;
        border-radius:15px;
    }
</style>
