【需求变更】缴费页面变更需求:增加纸质收据号/发票号输入,非必输,转账支付方式时-- 增加转账人信息字段输入

【需求更新】房产--业主信息--其他地址
【客户需求变更】收据模板变更,新增两个物业收据模板
【缺陷】数据-广告位管理-添加广告-广告位应该不可编辑
9个文件已修改
4个文件已添加
856 ■■■■■ 已修改文件
app.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/common/addAdvertisement/addAdvertisement.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/common/editAdvertisement/editAdvertisement.html 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/common/editAdvertisement/editAdvertisement.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/property/addOwner/addOwner.html 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/property/addOwner/addOwner.js 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/property/payFeeOrderConfirm/payFeeOrderConfirm.html 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/payFeeOrder/payFeeOrder.html 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/payFeeOrder/payFeeOrder.js 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/printHQFee/printHQFee.html 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/printHQFee/printHQFee.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/printLXFee/printLXFee.html 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/printLXFee/printLXFee.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app.js
@@ -57,14 +57,14 @@
// app.use('/app', proxy('http://192.168.100.109:8008', opts));
// todo 本机 开发用,生产环境请用nginx带来
app.use('/ws', proxy('http://192.168.31.137:8008', opts));
app.use('/callComponent', proxy('http://192.168.31.137:8008', opts));
app.use('/app', proxy('http://192.168.31.137:8008', opts));
// app.use('/ws', proxy('http://192.168.31.137:8008', opts));
// app.use('/callComponent', proxy('http://192.168.31.137:8008', opts));
// app.use('/app', proxy('http://192.168.31.137:8008', opts));
// todo 本机 开发用,生产环境请用nginx带来
// app.use('/ws', proxy('http://47.92.223.85:8008', opts));
// app.use('/callComponent', proxy('http://47.92.223.85:8008', opts));
// app.use('/app', proxy('http://47.92.223.85:8008', opts));
app.use('/ws', proxy('http://47.92.223.85:8008', opts));
app.use('/callComponent', proxy('http://47.92.223.85:8008', opts));
app.use('/app', proxy('http://47.92.223.85:8008', opts));
//app.listen(3000);
app.use(express.json());
public/components/common/addAdvertisement/addAdvertisement.html
@@ -23,7 +23,7 @@
                                </label>
                                <div class="col-sm-10">
                                    <input v-model="addAdvertisementInfo.position" type="text"
                                           :placeholder="vc.i18n('必填,请填写广告位','addAdvertisement')" class="form-control">
                                           :placeholder="vc.i18n('必填,请填写广告位','addAdvertisement')" class="form-control" readonly>
                                </div>
                            </div>
                            <div class="form-group row">
public/components/common/editAdvertisement/editAdvertisement.html
@@ -30,7 +30,7 @@
                                </label>
                                <div class="col-sm-10">
                                    <input v-model="editAdvertisementInfo.position" type="text"
                                        :placeholder="vc.i18n('必填,请填写广告位','editAdvertisement')" class="form-control">
                                        :placeholder="vc.i18n('必填,请填写广告位','editAdvertisement')" class="form-control" readonly>
                                </div>
                            </div>
                            <div class="form-group row">
public/components/common/editAdvertisement/editAdvertisement.js
@@ -28,7 +28,7 @@
            vc.on("editAdvertisement", "notifyUploadImage", function (_param) {
                vc.component.editAdvertisementInfo.picUrl = _param.length > 0 ? _param[0].fileId : '';
                 vc.component.addAdvertisementInfo.ossUrl = _param.length > 0 ? _param[0].url : '';
                vc.component.editAdvertisementInfo.ossUrl = _param.length > 0 ? _param[0].url : '';
            });
        },
@@ -73,7 +73,7 @@
                    vc.toast(vc.validate.errInfo);
                    return;
                }
                vc.http.apiPost('/smallProgram.updateAdverts',
                    JSON.stringify(vc.component.editAdvertisementInfo), {
                        emulateJSON: true
@@ -82,16 +82,16 @@
                        try {
                            let response = typeof json === 'string' ? JSON.parse(json) : json;
                            console.log('API Response:', response);
                            if (response.code === 0) {
                                // 确保先关闭模态框再触发其他事件
                                $('#editAdvertisementModel').modal('hide');
                                // 延迟触发列表刷新,确保模态框完全关闭
                                setTimeout(() => {
                                    vc.emit('communityManage', 'listCommunity', {});
                                }, 300);
                                vc.toast("修改成功");
                            } else {
                                vc.toast(response.msg || "操作失败");
@@ -106,7 +106,7 @@
                    }
                );
            },
            refreshEditAdvertisementInfo: function () {
                vc.component.editAdvertisementInfo = {
                    id: '',
public/components/property/addOwner/addOwner.html
@@ -60,7 +60,7 @@
                                </div>
                            </div>
                            <div class="form-group row" v-if="addOwnerInfo.personType == 'P'">
                                <label class="col-sm-2 col-form-label">
                                <label class="col-sm-2 col-form-label padding-lr-0">
                                    <vc:i18n name="性别" namespace="addOwner"></vc:i18n>
                                </label>
                                <div class="col-sm-10">
@@ -145,12 +145,23 @@
                                </div>
                            </div>
                        </div>
                        <div class="col-sm-6">
                            <div class="form-group row">
                                <label class="col-sm-2 col-form-label  padding-lr-0">
                                    <vc:i18n name="其他地址" namespace="addOwner"></vc:i18n>
                                </label>
                                <div class="col-sm-10">
                                    <input v-model.trim="addOwnerInfo.otherAddress" type="text"
                                        :placeholder="vc.i18n('可填,请填写其他地址','addOwner')" class="form-control">
                                </div>
                            </div>
                        </div>
                    </div>
                    <div v-for="(item,index) in addOwnerInfo.attrs">
                        <div class="row" v-if="index % 2 == 0">
                            <div class="col-sm-6">
                                <div class="form-group row" v-if="item.specType == '2233'">
                                    <label class="col-sm-2 col-form-label">{{item.specName}}</label>
                                    <label class="col-sm-2 col-form-label padding-lr-0">{{item.specName}}</label>
                                    <div class="col-sm-10">
                                        <input v-model="item.value" type="text" :placeholder="item.specHoldplace"
                                            class="form-control">
public/components/property/addOwner/addOwner.js
@@ -6,6 +6,7 @@
                age: '',
                link: '',
                address: '',
                otherAddress: '',
                sex: '0',
                ownerTypeCd: '',
                remark: '',
@@ -13,15 +14,14 @@
                ownerPhoto: '',
                ownerPhotoUrl: '',
                idCard: '',
                personType:'P',
                personRole:'1',
                concactPerson:'',
                concactLink:'',
                personType: 'P',
                personRole: '1',
                concactPerson: '',
                concactLink: '',
                attrs: []
            }
        },
        _initMethod: function () {
        },
        _initMethod: function () {},
        _initEvent: function () {
            vc.on('addOwner', 'openAddOwnerModal', function (_ownerId) {
                if (_ownerId != null || _ownerId != -1) {
@@ -36,8 +36,7 @@
                return vc.validate.validate({
                    addOwnerInfo: $that.addOwnerInfo
                }, {
                    'addOwnerInfo.name': [
                        {
                    'addOwnerInfo.name': [{
                            limit: "required",
                            param: "",
                            errInfo: "姓名不能为空"
@@ -48,8 +47,7 @@
                            errInfo: "姓名长度必须在2位至64位"
                        }
                    ],
                    'addOwnerInfo.link': [
                        {
                    'addOwnerInfo.link': [{
                            limit: "required",
                            param: "",
                            errInfo: "手机号不能为空"
@@ -60,20 +58,16 @@
                            errInfo: "手机号格式错误"
                        }
                    ],
                    'addOwnerInfo.idCard': [
                        {
                            limit: "maxLength",
                            param: "64",
                            errInfo: "身份证格式不对"
                        }
                    ],
                    'addOwnerInfo.remark': [
                        {
                            limit: "maxLength",
                            param: "200",
                            errInfo: "备注长度不能超过200位"
                        }
                    ]
                    'addOwnerInfo.idCard': [{
                        limit: "maxLength",
                        param: "64",
                        errInfo: "身份证格式不对"
                    }],
                    'addOwnerInfo.remark': [{
                        limit: "maxLength",
                        param: "200",
                        errInfo: "备注长度不能超过200位"
                    }]
                });
            },
            saveOwnerInfo: function () {
@@ -88,8 +82,8 @@
                $that.addOwnerInfo.communityId = vc.getCurrentCommunity().communityId;
                vc.http.apiPost("/owner.saveOwner",
                    JSON.stringify($that.addOwnerInfo), {
                    emulateJSON: true
                },
                        emulateJSON: true
                    },
                    function (json, res) {
                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
                        let _json = JSON.parse(json);
@@ -115,6 +109,7 @@
                    age: '',
                    link: '',
                    address: '',
                    otherAddress: '',
                    sex: '0',
                    ownerTypeCd: '',
                    remark: '',
@@ -153,12 +148,12 @@
                vc.http.upload('uploadFile',
                    'uploadImage',
                    param, {
                    emulateJSON: true,
                    //添加请求头
                    headers: {
                        "Content-Type": "multipart/form-data"
                    }
                },
                        emulateJSON: true,
                        //添加请求头
                        headers: {
                            "Content-Type": "multipart/form-data"
                        }
                    },
                    function (json, res) {
                        let data = JSON.parse(json);
                        console.log(data);
public/components/property/payFeeOrderConfirm/payFeeOrderConfirm.html
@@ -90,6 +90,18 @@
                </div>
                <div class="row">
                    <label class="col-sm-3 col-form-label">
                        <vc:i18n name="发票/收据:" namespace="payFeeOrderConfirm"></vc:i18n>
                    </label>
                    <label class="col-sm-8 col-form-label">{{payFeeOrderConfirmInfo.invoiceNo}}</label>
                </div>
                <div class="row" v-if="payFeeOrderConfirmInfo.primeRate == '7'">
                    <label class="col-sm-3 col-form-label">
                        <vc:i18n name="转账人:" namespace="payFeeOrderConfirm"></vc:i18n>
                    </label>
                    <label class="col-sm-8 col-form-label">{{payFeeOrderConfirmInfo.transferorName}}</label>
                </div>
                <div class="row">
                    <label class="col-sm-3 col-form-label">
                        <vc:i18n name="备注:" namespace="payFeeOrderConfirm"></vc:i18n>
                    </label>
                    <label class="col-sm-8 col-form-label">{{payFeeOrderConfirmInfo.remark}}</label>
public/pages/property/payFeeOrder/payFeeOrder.html
@@ -105,19 +105,20 @@
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-sm-2 col-form-label padding-l-60" style="line-height: 50px;padding-right:0px;">
                        <label class="col-sm-2 col-form-label padding-l-60"
                            style="line-height: 50px;padding-right:0px;">
                            <vc:i18n name="应收款:" namespace="payFeeOrder"></vc:i18n>
                        </label>
                        <div class="col-sm-4">
                            <label class="col-form-label "
                                style="font-size: 30px;color: red;padding-left:0px;">¥{{payFeeOrderInfo.totalFeePrice}}</label>
                        </div>
                        <label class="col-sm-2 col-form-label padding-l-60" style="line-height: 50px;padding-right:0px;">
                        <label class="col-sm-2 col-form-label padding-l-60"
                            style="line-height: 50px;padding-right:0px;">
                            <vc:i18n name="应缴金额:" namespace="payFeeOrder"></vc:i18n>
                        </label>
                        <div class="col-sm-4">
                            <label class="col-form-label "
                                style="font-size: 30px;color: red;padding-left:0px;">
                            <label class="col-form-label " style="font-size: 30px;color: red;padding-left:0px;">
                                ¥{{payFeeOrderInfo.accountAmount >= payFeeOrderInfo.receivedAmount ? '0.00' :
                                (payFeeOrderInfo.receivedAmount - payFeeOrderInfo.accountAmount).toFixed(2)}}
                            </label>
@@ -195,7 +196,8 @@
                                    {{vc.i18n('必填,请选择支付方式','payFeeOrder')}}
                                </option>
                                <option v-for="(item,index) in payFeeOrderInfo.primeRates" :key="index"
                                    v-if="item.statusCd != '5' && item.statusCd != '6' && item.statusCd != '8'" :value="item.statusCd">
                                    v-if="item.statusCd != '5' && item.statusCd != '6' && item.statusCd != '8'"
                                    :value="item.statusCd">
                                    {{item.name}}
                                </option>
                            </select>
@@ -217,6 +219,24 @@
                    </div>
                    <div class="form-group row">
                        <label class="col-sm-2 col-form-label">
                            <vc:i18n name="发票/收据:" namespace="payFeeOrder"></vc:i18n>
                        </label>
                        <div class="col-sm-8">
                            <input type="text" :placeholder="vc.i18n('可填,请输入发票/收据号','payFeeOrder')"
                                v-model="payFeeOrderInfo.invoiceNo" class="form-control">
                        </div>
                    </div>
                    <div class="form-group row" v-if="payFeeOrderInfo.primeRate == '7'">
                        <label class="col-sm-2 col-form-label">
                            <vc:i18n name="转账人:" namespace="payFeeOrder"></vc:i18n>
                        </label>
                        <div class="col-sm-8">
                            <input type="text" :placeholder="vc.i18n('必填,请输入转账人','payFeeOrder')"
                                v-model="payFeeOrderInfo.transferorName" class="form-control">
                        </div>
                    </div>
                    <div class="form-group row">
                        <label class="col-sm-2 col-form-label">
                            <vc:i18n name="备注:" namespace="payFeeOrder"></vc:i18n>
                        </label>
                        <div class="col-sm-8">
public/pages/property/payFeeOrder/payFeeOrder.js
@@ -24,7 +24,10 @@
                payerObjName: '',
                payerObjId: '',
                payerObjType: '',
                invoiceNo: '',
                remark: '',
                transferorName: '',
                builtUpArea: 0.0,
                squarePrice: 0.0,
                additionalAmount: 0.0,
@@ -189,29 +192,22 @@
                return vc.validate.validate({
                    payFeeOrderInfo: $that.payFeeOrderInfo
                }, {
                    'payFeeOrderInfo.feeId': [
                        {
                            limit: "required",
                            param: "",
                            errInfo: "费用ID不能为空"
                        }
                    ],
                    'payFeeOrderInfo.cycles': [
                        {
                            limit: "required",
                            param: "",
                            errInfo: "缴费周期不能为空"
                        }
                    ],
                    'payFeeOrderInfo.primeRate': [
                        {
                            limit: "required",
                            param: "",
                            errInfo: "支付方式不能为空"
                        }
                    ],
                    'payFeeOrderInfo.receivedAmount': [
                        {
                    'payFeeOrderInfo.feeId': [{
                        limit: "required",
                        param: "",
                        errInfo: "费用ID不能为空"
                    }],
                    'payFeeOrderInfo.cycles': [{
                        limit: "required",
                        param: "",
                        errInfo: "缴费周期不能为空"
                    }],
                    'payFeeOrderInfo.primeRate': [{
                        limit: "required",
                        param: "",
                        errInfo: "支付方式不能为空"
                    }],
                    'payFeeOrderInfo.receivedAmount': [{
                            limit: "required",
                            param: "",
                            errInfo: "实收金额不能为空"
@@ -240,6 +236,10 @@
                // 新增缴费周期必选项
                if ($that.payFeeOrderInfo.tempCycles == "") {
                    vc.toast("请选择缴费周期");
                    return;
                }
                if ($that.payFeeOrderInfo.primeRate == '7' && $that.payFeeOrderInfo.transferorName == "") {
                    vc.toast("请输入转账人");
                    return;
                }
                if (!$that.payFeeValidate()) {
@@ -275,9 +275,9 @@
                    }
                });
                $that.payFeeOrderInfo.payType = _type;
                console.log("payFeeOrderInfo",$that.payFeeOrderInfo);
                console.log("payFeeOrderInfo", $that.payFeeOrderInfo);
                vc.emit('payFeeOrderConfirm', 'openConfirm', $that.payFeeOrderInfo);
            },
            /**
public/pages/property/printHQFee/printHQFee.html
New file
@@ -0,0 +1,150 @@
<div>
    <div class="text-center">
        <div style="color:#000;font-size:26px">
            {{'上海鹤清物业管理有限公司'}}<br />
            <div style="font-family: Arial, sans-serif; font-size: 26px; position: relative; display: inline-block;">
                <span v-if="printPayFeeInfo.apply == 'Y'">专用申请单</span>
                <span v-if="printPayFeeInfo.apply == 'N'">专用收据</span>
                <span v-if="printPayFeeInfo.apply == 'R'">专用退款单</span>
                <span
                    style="position: absolute; bottom: 10px; left: 0; height: 1px; width: 100%; background: #000;"></span>
                <span
                    style="position: absolute; bottom: 7px; left: 0; height: 1px; width: 100%; background: #000;"></span>
            </div>
        </div>
        <!-- <div style="color:#000;font-size:26px">{{printPayFeeInfo.communityName}}
            <span v-if="printPayFeeInfo.apply == 'Y'">专用申请单</span>
            <span v-if="printPayFeeInfo.apply == 'N'">专用收据</span>
            <span v-if="printPayFeeInfo.apply == 'R'">专用退款单</span>
        </div> -->
    </div>
    <div style="color:#000;font-size:18px;margin-left:20px;margin-bottom: 20px;">
        <div class="float-left">
            <span>小区名称:</span>
            <span
                style="border-bottom: 1px solid #000; width: 300px; display: inline-block;">{{printPayFeeInfo.communityName}}</span>
            <br />
            <span>付款人:</span>
            <span
                style="border-bottom: 1px solid #000; width: 319px; display: inline-block;">{{printPayFeeInfo.payObjName}}</span>
            <br />
        </div>
        <div class="float-right">
            <span>单号:{{printPayFeeInfo.receiptNum}}</span>
            <br />
            <span>缴费时间:{{printPayFeeInfo.feeTime}}</span>
        </div>
    </div>
    <div style="margin-top: 20px;">
        <br />
    </div>
    <table class="table vc-table-border" style="color:#000;font-size:18px;margin-top: 20px;">
        <thead>
            <tr>
                <th scope="col" class="text-center" width="80px">
                    <vc:i18n name="编号" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="收费内容" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="房屋/车辆" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="收费范围" namespace="printPayFee"></vc:i18n>
                </th>
                <!-- <th scope="col" class="text-center"><span><vc:i18n name="周期" namespace="printPayFee"></vc:i18n></span></th> -->
                <th scope="col" class="text-center">
                    <vc:i18n name="单价" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="面积/用量" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="支付方式" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="应收/实收" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="优惠金额" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="备注" namespace="printPayFee"></vc:i18n>
                </th>
            </tr>
        </thead>
        <tbody class="vc-table-border" style="color:#000;font-size:20px">
            <tr v-for="(item,index) in printPayFeeInfo.fees" class="vc-table-border">
                <th scope="row" class="text-center">{{index +1}}</th>
                <td class="text-center">{{item.feeName}}</td>
                <td class="text-center">{{item.objName}}</td>
                <td class="text-center" v-if="item.preDegrees">
                    {{vc.dateFormat(item.startTime)}}
                    <span>
                        <vc:i18n name="至" namespace="printPayFee"></vc:i18n>
                    </span>
                    {{vc.dateFormat(item.endTime)}}</br>
                    {{item.preDegrees}} 至 {{item.curDegrees}}
                </td>
                <!-- 根据山东 需求 如果为押金时 显示为无-->
                <td class="text-center" v-else-if="item.feeTypeCd == '888800010006'">
                    无
                </td>
                <td class="text-center" v-else>
                    {{vc.dateFormat(item.startTime)}}至{{vc.dateFormat(item.endTime)}}
                </td>
                <!--<td class="text-center">{{item.startTime}}<span><vc:i18n name="至" namespace="printPayFee"></vc:i18n></span>{{item.endTime}}</td>-->
                <!-- <td class="text-center">{{item.cycle}}</td> -->
                <td class="text-center" v-if="item.squarePrice">{{item.squarePrice}}</br>{{item.units}}</td>
                <td class="text-center" v-else>{{item.units}}</td>
                <td class="text-center">{{item.area}}</td>
                <td class="text-center">{{item.primeRate}}</td>
                <td class="text-center" v-if="item.amount < 0">{{item.receivableAmount}}/{{item.amount}}元(退费)
                </td>
                <td class="text-center" v-else>{{item.receivableAmount}}/{{item.amount}}元
                </td>
                <td class="text-center">{{item.discountPrice || 0}}</td>
                <td class="text-center" width="200px">{{item.remark}}</td>
            </tr>
            <tr>
                <td colspan="2">合计人民币(小写)</td>
                <td colspan="3">{{printPayFeeInfo.amount}}
                </td>
                <td colspan="5">合计人民币(大写){{vc.changeNumMoneyToChinese(printPayFeeInfo.amount)}}</td>
            </tr>
        </tbody>
    </table>
    <div class="row" style="color:#000;font-size:18px;margin-left: 10px;">
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="开票单位(盖章有效):" namespace="printPayFee"></vc:i18n>
        </div>
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="财务记账:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').FinancialAccountant}}
        </div>
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="财务收款:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').FinancialCashier}}
        </div>
        <div class="float-left" style="width: 25%;"><span>
                <vc:i18n name="经办人:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').name}}</div>
    </div>
    <div class="row">
        <div class="col-md-12" id="print-btn">
            <button class="btn btn-primary float-right" type="button" v-on:click="_printPurchaseApplyDiv()">
                <i class="fa fa-check"></i>&nbsp;打印
            </button>
            <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
                v-on:click="_closePage()">
                <vc:i18n name="取消" namespace="printPayFee"></vc:i18n>
            </button>
        </div>
    </div>
</div>
public/pages/property/printHQFee/printHQFee.js
New file
@@ -0,0 +1,181 @@
(function(vc) {
    vc.extends({
        data: {
            printPayFeeInfo: {
                communityName: '',
                receiptId: '',
                receiptIds: '',
                detailIds: '',
                roomName: '',
                amount: 0.00,
                fees: [],
                feeTime: '',
                wechatName: '',
                content: '',
                qrImg: '',
                payObjName: '',
                feeReceipt: [],
                apply: 'N',
                receiptNum:'',
                acctAmount:0
            },
            printFlag: '0'
        },
        _initMethod: function() {
            //vc.component._initPrintPurchaseApplyDateInfo();
            $that.printPayFeeInfo.receiptId = vc.getParam('receiptId');
            $that.printPayFeeInfo.receiptIds = vc.getParam('receiptIds');
            $that.printPayFeeInfo.detailIds = vc.getParam('detailIds');
            $that.printPayFeeInfo.apply = vc.getParam('apply');
            $that.printPayFeeInfo.merge = vc.getParam('merge');
            //$that.printPayFeeInfo.feeTime = vc.dateTimeFormat(new Date());
            // $that.printPayFeeInfo.communityName = vc.getCurrentCommunity().name;
            $that._loadReceipt();
            $that._loadPrintSpec();
        },
        _initEvent: function() {
        },
        methods: {
            _initPayFee: function() {
            },
            _loadReceipt: function() {
                var param = {
                    params: {
                        page: 1,
                        row: 30,
                        receiptId: $that.printPayFeeInfo.receiptId,
                        receiptIds: $that.printPayFeeInfo.receiptIds,
                        detailIds: $that.printPayFeeInfo.detailIds,
                        communityId: vc.getCurrentCommunity().communityId
                    }
                };
                //发送get请求
                vc.http.apiGet('/feeReceipt/queryFeeReceipt',
                    param,
                    function(json, res) {
                        var _feeReceiptManageInfo = JSON.parse(json);
                        let _feeReceipt = _feeReceiptManageInfo.data;
                        let _amount = 0;
                        _feeReceipt.forEach(item => {
                            _amount += parseFloat(item.amount)
                        });
                        $that.printPayFeeInfo.amount = _amount.toFixed(2);
                        $that.printPayFeeInfo.roomName = _feeReceipt[0].objName;
                        $that.printPayFeeInfo.feeTime = _feeReceipt[0].createTime;
                        $that.printPayFeeInfo.payObjName = _feeReceipt[0].payObjName;
                        $that.printPayFeeInfo.feeReceipt = _feeReceipt;
                        $that.printPayFeeInfo.receiptNum = _feeReceipt[0].receiptCode;
                        $that.printPayFeeInfo.communityName = _feeReceipt[0].communityName;
                        $that._loadReceiptDetail();
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _loadReceiptDetail: function() {
                let param = {
                    params: {
                        page: 1,
                        row: 100,
                        receiptId: $that.printPayFeeInfo.receiptId,
                        receiptIds: $that.printPayFeeInfo.receiptIds,
                        detailIds: $that.printPayFeeInfo.detailIds,
                        communityId: vc.getCurrentCommunity().communityId,
                        mergeFee:$that.printPayFeeInfo.merge
                    }
                };
                //发送get请求
                vc.http.apiGet('/feeReceipt/queryFeeReceiptDetail',
                    param,
                    function(json, res) {
                        let _json = JSON.parse(json);
                        let _feeReceiptDetails = _json.data;
                       $that.printPayFeeInfo.receiptNum = $that.printPayFeeInfo.receiptNum + "(" + _feeReceiptDetails[0].payOrderId + ")";
                       if(_feeReceiptDetails[0].amount < 0){
                            $that.printPayFeeInfo.apply = 'R';
                       }
                       let _acctAmount = 0.0;
                        _feeReceiptDetails.forEach(item => {
                            _acctAmount = _acctAmount + parseFloat(item.acctAmount);
                            $that.printPayFeeInfo.feeReceipt.forEach(im => {
                                if (item.receiptId == im.receiptId) {
                                    item.objName = im.objName;
                                    item.feeTypeCd = im.feeTypeCd;
                                }
                            })
                        })
                        $that.printPayFeeInfo.fees = _feeReceiptDetails;
                        $that.printPayFeeInfo.acctAmount = _acctAmount.toFixed(2);
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _loadPrintSpec: function() {
                var param = {
                    params: {
                        page: 1,
                        row: 1,
                        specCd: 2020,
                        communityId: vc.getCurrentCommunity().communityId
                    }
                };
                //发送get请求
                vc.http.apiGet('/feePrintSpec/queryFeePrintSpec',
                    param,
                    function(json, res) {
                        var _json = JSON.parse(json);
                        var _data = _json.data;
                        if (_data.length > 0) {
                            $that.printPayFeeInfo.content = _data[0].content;
                            $that.printPayFeeInfo.qrImg = _data[0].qrImg;
                            // if (_data[0].printName) {
                            //     $that.printPayFeeInfo.communityName = _data[0].printName;
                            // }
                        }
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _printPurchaseApplyDiv: function() {
                $that.printFlag = '1';
                console.log('console.log($that.printFlag);', $that.printFlag);
                document.getElementById("print-btn").style.display = "none"; //隐藏
                window.print();
                //$that.printFlag = false;
                window.opener = null;
                window.close();
            },
            _closePage: function() {
                window.opener = null;
                window.close();
            }
        }
    });
})(window.vc);
public/pages/property/printLXFee/printLXFee.html
New file
@@ -0,0 +1,150 @@
<div>
    <div class="text-center">
        <div style="color:#000;font-size:26px">
            {{'上海联讯物业管理有限公司'}}<br />
            <div style="font-family: Arial, sans-serif; font-size: 26px; position: relative; display: inline-block;">
                <span v-if="printPayFeeInfo.apply == 'Y'">专用申请单</span>
                <span v-if="printPayFeeInfo.apply == 'N'">专用收据</span>
                <span v-if="printPayFeeInfo.apply == 'R'">专用退款单</span>
                <span
                    style="position: absolute; bottom: 10px; left: 0; height: 1px; width: 100%; background: #000;"></span>
                <span
                    style="position: absolute; bottom: 7px; left: 0; height: 1px; width: 100%; background: #000;"></span>
            </div>
        </div>
        <!-- <div style="color:#000;font-size:26px">{{printPayFeeInfo.communityName}}
            <span v-if="printPayFeeInfo.apply == 'Y'">专用申请单</span>
            <span v-if="printPayFeeInfo.apply == 'N'">专用收据</span>
            <span v-if="printPayFeeInfo.apply == 'R'">专用退款单</span>
        </div> -->
    </div>
    <div style="color:#000;font-size:18px;margin-left:20px;margin-bottom: 20px;">
        <div class="float-left">
            <span>小区名称:</span>
            <span
                style="border-bottom: 1px solid #000; width: 300px; display: inline-block;">{{printPayFeeInfo.communityName}}</span>
            <br />
            <span>付款人:</span>
            <span
                style="border-bottom: 1px solid #000; width: 319px; display: inline-block;">{{printPayFeeInfo.payObjName}}</span>
            <br />
        </div>
        <div class="float-right">
            <span>单号:{{printPayFeeInfo.receiptNum}}</span>
            <br />
            <span>缴费时间:{{printPayFeeInfo.feeTime}}</span>
        </div>
    </div>
    <div style="margin-top: 20px;">
        <br />
    </div>
    <table class="table vc-table-border" style="color:#000;font-size:18px;margin-top: 20px;">
        <thead>
            <tr>
                <th scope="col" class="text-center" width="80px">
                    <vc:i18n name="编号" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="收费内容" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="房屋/车辆" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="收费范围" namespace="printPayFee"></vc:i18n>
                </th>
                <!-- <th scope="col" class="text-center"><span><vc:i18n name="周期" namespace="printPayFee"></vc:i18n></span></th> -->
                <th scope="col" class="text-center">
                    <vc:i18n name="单价" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="面积/用量" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="支付方式" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="应收/实收" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="优惠金额" namespace="printPayFee"></vc:i18n>
                </th>
                <th scope="col" class="text-center">
                    <vc:i18n name="备注" namespace="printPayFee"></vc:i18n>
                </th>
            </tr>
        </thead>
        <tbody class="vc-table-border" style="color:#000;font-size:20px">
            <tr v-for="(item,index) in printPayFeeInfo.fees" class="vc-table-border">
                <th scope="row" class="text-center">{{index +1}}</th>
                <td class="text-center">{{item.feeName}}</td>
                <td class="text-center">{{item.objName}}</td>
                <td class="text-center" v-if="item.preDegrees">
                    {{vc.dateFormat(item.startTime)}}
                    <span>
                        <vc:i18n name="至" namespace="printPayFee"></vc:i18n>
                    </span>
                    {{vc.dateFormat(item.endTime)}}</br>
                    {{item.preDegrees}} 至 {{item.curDegrees}}
                </td>
                <!-- 根据山东 需求 如果为押金时 显示为无-->
                <td class="text-center" v-else-if="item.feeTypeCd == '888800010006'">
                    无
                </td>
                <td class="text-center" v-else>
                    {{vc.dateFormat(item.startTime)}}至{{vc.dateFormat(item.endTime)}}
                </td>
                <!--<td class="text-center">{{item.startTime}}<span><vc:i18n name="至" namespace="printPayFee"></vc:i18n></span>{{item.endTime}}</td>-->
                <!-- <td class="text-center">{{item.cycle}}</td> -->
                <td class="text-center" v-if="item.squarePrice">{{item.squarePrice}}</br>{{item.units}}</td>
                <td class="text-center" v-else>{{item.units}}</td>
                <td class="text-center">{{item.area}}</td>
                <td class="text-center">{{item.primeRate}}</td>
                <td class="text-center" v-if="item.amount < 0">{{item.receivableAmount}}/{{item.amount}}元(退费)
                </td>
                <td class="text-center" v-else>{{item.receivableAmount}}/{{item.amount}}元
                </td>
                <td class="text-center">{{item.discountPrice || 0}}</td>
                <td class="text-center" width="200px">{{item.remark}}</td>
            </tr>
            <tr>
                <td colspan="2">合计人民币(小写)</td>
                <td colspan="3">{{printPayFeeInfo.amount}}
                </td>
                <td colspan="5">合计人民币(大写){{vc.changeNumMoneyToChinese(printPayFeeInfo.amount)}}</td>
            </tr>
        </tbody>
    </table>
    <div class="row" style="color:#000;font-size:18px;margin-left: 10px;">
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="开票单位(盖章有效):" namespace="printPayFee"></vc:i18n>
        </div>
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="财务记账:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').FinancialAccountant}}
        </div>
        <div class="float-left" style="width: 25%;">
            <vc:i18n name="财务收款:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').FinancialCashier}}
        </div>
        <div class="float-left" style="width: 25%;"><span>
                <vc:i18n name="经办人:" namespace="printPayFee"></vc:i18n>
            </span>{{vc.getData('/nav/getUserInfo').name}}</div>
    </div>
    <div class="row">
        <div class="col-md-12" id="print-btn">
            <button class="btn btn-primary float-right" type="button" v-on:click="_printPurchaseApplyDiv()">
                <i class="fa fa-check"></i>&nbsp;打印
            </button>
            <button type="button" class="btn btn-warning float-right" style="margin-right:20px;"
                v-on:click="_closePage()">
                <vc:i18n name="取消" namespace="printPayFee"></vc:i18n>
            </button>
        </div>
    </div>
</div>
public/pages/property/printLXFee/printLXFee.js
New file
@@ -0,0 +1,181 @@
(function(vc) {
    vc.extends({
        data: {
            printPayFeeInfo: {
                communityName: '',
                receiptId: '',
                receiptIds: '',
                detailIds: '',
                roomName: '',
                amount: 0.00,
                fees: [],
                feeTime: '',
                wechatName: '',
                content: '',
                qrImg: '',
                payObjName: '',
                feeReceipt: [],
                apply: 'N',
                receiptNum:'',
                acctAmount:0
            },
            printFlag: '0'
        },
        _initMethod: function() {
            //vc.component._initPrintPurchaseApplyDateInfo();
            $that.printPayFeeInfo.receiptId = vc.getParam('receiptId');
            $that.printPayFeeInfo.receiptIds = vc.getParam('receiptIds');
            $that.printPayFeeInfo.detailIds = vc.getParam('detailIds');
            $that.printPayFeeInfo.apply = vc.getParam('apply');
            $that.printPayFeeInfo.merge = vc.getParam('merge');
            //$that.printPayFeeInfo.feeTime = vc.dateTimeFormat(new Date());
            // $that.printPayFeeInfo.communityName = vc.getCurrentCommunity().name;
            $that._loadReceipt();
            $that._loadPrintSpec();
        },
        _initEvent: function() {
        },
        methods: {
            _initPayFee: function() {
            },
            _loadReceipt: function() {
                var param = {
                    params: {
                        page: 1,
                        row: 30,
                        receiptId: $that.printPayFeeInfo.receiptId,
                        receiptIds: $that.printPayFeeInfo.receiptIds,
                        detailIds: $that.printPayFeeInfo.detailIds,
                        communityId: vc.getCurrentCommunity().communityId
                    }
                };
                //发送get请求
                vc.http.apiGet('/feeReceipt/queryFeeReceipt',
                    param,
                    function(json, res) {
                        var _feeReceiptManageInfo = JSON.parse(json);
                        let _feeReceipt = _feeReceiptManageInfo.data;
                        let _amount = 0;
                        _feeReceipt.forEach(item => {
                            _amount += parseFloat(item.amount)
                        });
                        $that.printPayFeeInfo.amount = _amount.toFixed(2);
                        $that.printPayFeeInfo.roomName = _feeReceipt[0].objName;
                        $that.printPayFeeInfo.feeTime = _feeReceipt[0].createTime;
                        $that.printPayFeeInfo.payObjName = _feeReceipt[0].payObjName;
                        $that.printPayFeeInfo.feeReceipt = _feeReceipt;
                        $that.printPayFeeInfo.receiptNum = _feeReceipt[0].receiptCode;
                        $that.printPayFeeInfo.communityName = _feeReceipt[0].communityName;
                        $that._loadReceiptDetail();
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _loadReceiptDetail: function() {
                let param = {
                    params: {
                        page: 1,
                        row: 100,
                        receiptId: $that.printPayFeeInfo.receiptId,
                        receiptIds: $that.printPayFeeInfo.receiptIds,
                        detailIds: $that.printPayFeeInfo.detailIds,
                        communityId: vc.getCurrentCommunity().communityId,
                        mergeFee:$that.printPayFeeInfo.merge
                    }
                };
                //发送get请求
                vc.http.apiGet('/feeReceipt/queryFeeReceiptDetail',
                    param,
                    function(json, res) {
                        let _json = JSON.parse(json);
                        let _feeReceiptDetails = _json.data;
                       $that.printPayFeeInfo.receiptNum = $that.printPayFeeInfo.receiptNum + "(" + _feeReceiptDetails[0].payOrderId + ")";
                       if(_feeReceiptDetails[0].amount < 0){
                            $that.printPayFeeInfo.apply = 'R';
                       }
                       let _acctAmount = 0.0;
                        _feeReceiptDetails.forEach(item => {
                            _acctAmount = _acctAmount + parseFloat(item.acctAmount);
                            $that.printPayFeeInfo.feeReceipt.forEach(im => {
                                if (item.receiptId == im.receiptId) {
                                    item.objName = im.objName;
                                    item.feeTypeCd = im.feeTypeCd;
                                }
                            })
                        })
                        $that.printPayFeeInfo.fees = _feeReceiptDetails;
                        $that.printPayFeeInfo.acctAmount = _acctAmount.toFixed(2);
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _loadPrintSpec: function() {
                var param = {
                    params: {
                        page: 1,
                        row: 1,
                        specCd: 2020,
                        communityId: vc.getCurrentCommunity().communityId
                    }
                };
                //发送get请求
                vc.http.apiGet('/feePrintSpec/queryFeePrintSpec',
                    param,
                    function(json, res) {
                        var _json = JSON.parse(json);
                        var _data = _json.data;
                        if (_data.length > 0) {
                            $that.printPayFeeInfo.content = _data[0].content;
                            $that.printPayFeeInfo.qrImg = _data[0].qrImg;
                            // if (_data[0].printName) {
                            //     $that.printPayFeeInfo.communityName = _data[0].printName;
                            // }
                        }
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                    }
                );
            },
            _printPurchaseApplyDiv: function() {
                $that.printFlag = '1';
                console.log('console.log($that.printFlag);', $that.printFlag);
                document.getElementById("print-btn").style.display = "none"; //隐藏
                window.print();
                //$that.printFlag = false;
                window.opener = null;
                window.close();
            },
            _closePage: function() {
                window.opener = null;
                window.close();
            }
        }
    });
})(window.vc);