【需求变更】缴费页面变更需求:增加纸质收据号/发票号输入,非必输,转账支付方式时-- 增加转账人信息字段输入
【需求更新】房产--业主信息--其他地址
【客户需求变更】收据模板变更,新增两个物业收据模板
【缺陷】数据-广告位管理-添加广告-广告位应该不可编辑
| | |
| | | // 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()); |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | |
| | | 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 : ''; |
| | | }); |
| | | |
| | | }, |
| | |
| | | vc.toast(vc.validate.errInfo); |
| | | return; |
| | | } |
| | | |
| | | |
| | | vc.http.apiPost('/smallProgram.updateAdverts', |
| | | JSON.stringify(vc.component.editAdvertisementInfo), { |
| | | emulateJSON: true |
| | |
| | | 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 || "操作失败"); |
| | |
| | | } |
| | | ); |
| | | }, |
| | | |
| | | |
| | | refreshEditAdvertisementInfo: function () { |
| | | vc.component.editAdvertisementInfo = { |
| | | id: '', |
| | |
| | | </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"> |
| | |
| | | </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"> |
| | |
| | | age: '', |
| | | link: '', |
| | | address: '', |
| | | otherAddress: '', |
| | | sex: '0', |
| | | ownerTypeCd: '', |
| | | remark: '', |
| | |
| | | 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) { |
| | |
| | | return vc.validate.validate({ |
| | | addOwnerInfo: $that.addOwnerInfo |
| | | }, { |
| | | 'addOwnerInfo.name': [ |
| | | { |
| | | 'addOwnerInfo.name': [{ |
| | | limit: "required", |
| | | param: "", |
| | | errInfo: "姓名不能为空" |
| | |
| | | errInfo: "姓名长度必须在2位至64位" |
| | | } |
| | | ], |
| | | 'addOwnerInfo.link': [ |
| | | { |
| | | 'addOwnerInfo.link': [{ |
| | | limit: "required", |
| | | param: "", |
| | | errInfo: "手机号不能为空" |
| | |
| | | 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 () { |
| | |
| | | $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); |
| | |
| | | age: '', |
| | | link: '', |
| | | address: '', |
| | | otherAddress: '', |
| | | sex: '0', |
| | | ownerTypeCd: '', |
| | | remark: '', |
| | |
| | | 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); |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | {{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> |
| | |
| | | </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"> |
| | |
| | | payerObjName: '', |
| | | payerObjId: '', |
| | | payerObjType: '', |
| | | invoiceNo: '', |
| | | remark: '', |
| | | transferorName: '', |
| | | |
| | | builtUpArea: 0.0, |
| | | squarePrice: 0.0, |
| | | additionalAmount: 0.0, |
| | |
| | | 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: "实收金额不能为空" |
| | |
| | | // 新增缴费周期必选项 |
| | | if ($that.payFeeOrderInfo.tempCycles == "") { |
| | | vc.toast("请选择缴费周期"); |
| | | return; |
| | | } |
| | | if ($that.payFeeOrderInfo.primeRate == '7' && $that.payFeeOrderInfo.transferorName == "") { |
| | | vc.toast("请输入转账人"); |
| | | return; |
| | | } |
| | | if (!$that.payFeeValidate()) { |
| | |
| | | } |
| | | }); |
| | | $that.payFeeOrderInfo.payType = _type; |
| | | console.log("payFeeOrderInfo",$that.payFeeOrderInfo); |
| | | console.log("payFeeOrderInfo", $that.payFeeOrderInfo); |
| | | |
| | | |
| | | |
| | | vc.emit('payFeeOrderConfirm', 'openConfirm', $that.payFeeOrderInfo); |
| | | }, |
| | | /** |
| New file |
| | |
| | | <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> 打印 |
| | | </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> |
| New file |
| | |
| | | (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); |
| New file |
| | |
| | | <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> 打印 |
| | | </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> |
| New file |
| | |
| | | (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); |