张雄 3 years ago
parent eb381eda7d
commit d1dd18d7ef

@ -0,0 +1,46 @@
import httpService from "@/request"
// 后台账单list
export function getBillList(params) {
return httpService({
url: `/user/bill/billList`,
method: 'post',
data: params,
})
}
// 账单废除
export function abolition(params) {
return httpService({
url: `/user/bill/abolition`,
method: 'get',
params: params,
})
}
// 账单恢复
export function recover(params) {
return httpService({
url: `/user/bill/recover`,
method: 'get',
params: params,
})
}
// 账单线下支付
export function offlinePayments(params) {
return httpService({
url: `/user/bill/offlinePayments`,
method: 'post',
data: params,
})
}
// 根据账单主键id查询账单订单
export function findBillOrderList(params) {
return httpService({
url: `/user/bill/findBillOrderList`,
method: 'get',
params: params,
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

@ -17,10 +17,6 @@ export default {
type:String,
}
},
data() {
return{
}
},
methods:{
handleCancel() {
this.$emit('handleCancel')

@ -54,6 +54,7 @@ export default {
},
};
},
//
methods: {
async handlePreview(file) {
if (!file.url && !file.preview) {

@ -65,7 +65,7 @@ export default [
path: '/BillManage/PayList',
name: "PayList",
title: "缴费明细",
hide: false,
hide: true,
component: resolve => require(['@/views/Payment/BillManage/_payList'], resolve),
meta: {title: '缴费明细'},
},
@ -73,7 +73,7 @@ export default [
path: '/BillManage/OweList',
name: "OweList",
title: "欠费明细",
hide: false,
hide: true,
component: resolve => require(['@/views/Payment/BillManage/_oweList'], resolve),
meta: {title: '欠费明细'},
},
@ -81,7 +81,7 @@ export default [
path: '/BillManage/PayRateReport',
name: "PayRateReport",
title: "收缴率报表",
hide: false,
hide: true,
component: resolve => require(['@/views/Payment/BillManage/_payRateReport'], resolve),
meta: {title: '收缴率报表'},
},
@ -89,7 +89,7 @@ export default [
path: '/BillManage/RefundRecord',
name: "RefundRecord",
title: "退款记录",
hide: false,
hide: true,
component: resolve => require(['@/views/Payment/BillManage/_refundRecord'], resolve),
meta: {title: '退款记录'},
},
@ -97,7 +97,7 @@ export default [
path: '/BillManage/BillNotice',
name: "BillNotice",
title: "账单通知",
hide: false,
hide: true,
component: resolve => require(['@/views/Payment/BillManage/_billNotice'], resolve),
meta: {title: '账单通知'},
},

@ -32,9 +32,8 @@
v-model="checkedKeys"
v-if="treeShow != undefined"
checkable
:defaultExpandAll="true"
:expandedKeys="expandedKeys"
:replace-fields="replaceFields"
:expanded-keys="expandedKeys"
:selected-keys="selectedKeys"
:tree-data="menus"
@expand="onExpand"
@ -78,6 +77,7 @@ export default {
data() {
return {
roleId: null,
defaultExpandAll: true,
roleList: [],
expandedKeys: [],
replaceFields: {
@ -85,7 +85,10 @@ export default {
title: "name",
key: "id",
},
checkedKeys: [],
checkedKeys: {
checked: [],
halfChecked: [],
},
selectedKeys: [],
menus: [], //
actionsList: [], //
@ -105,12 +108,14 @@ export default {
});
},
rolechoose(data) {
this.checkedKeys = [];
this.checkedKeys = {
checked: [],
halfChecked: [],
};
if (data !== undefined) {
this.roleId = data;
FindAllMenus({ roleId: this.roleId }).then((res) => {
this.menus = res.data;
// console.log(res.data)
this.defaultCheck(this.menus);
});
} else if (data === undefined) {
@ -120,7 +125,10 @@ export default {
rolechange(data) {
this.treeShow = data;
if (data != undefined) {
this.checkedKeys = [];
this.checkedKeys = {
checked: [],
halfChecked: [],
};
this.roleId = this.roleList[data].id;
FindAllMenus({ roleId: this.roleId }).then((res) => {
this.menus = res.data;
@ -131,26 +139,68 @@ export default {
// this.menus = [];
}
},
// defaultCheck(arr) {
// for (let item of arr) {
// if (item.childrenList != null) {
// if(item.isShow == true){
// this.checkedKeys.push(item.id);
// }
// this.defaultCheck(item.childrenList);
// } else if (item.isShow == true) {
// this.checkedKeys.push(item.id);
// }
// }
// },
defaultCheck(arr) {
for (let item of arr) {
if (item.childrenList !== null) {
if(item.isShow === true){
this.checkedKeys.push(item.id);
let res = {
checked: [],
halfChecked: [],
};
for(let x = 0; x<arr.length; x++) {
let item = arr[x];
for(let y = 0; y<arr[x].childrenList.length; y++) {
let item = arr[x].childrenList[y];
let checkedNum = 0
if(item.childrenList) {
for(let z = 0; z<arr[x].childrenList[y].childrenList.length; z++) {
let item = arr[x].childrenList[y].childrenList[z];
let checkedNum = 0
if(item.isShow == true) {
res.checked.push(item.id)
checkedNum = checkedNum + 1
}
this.defaultCheck(item.childrenList);
} else if (item.isShow === true) {
this.checkedKeys.push(item.id);
if( checkedNum == arr[x].childrenList[y].childrenList.length) {
res.checked.push(arr[x].childrenList[y].id)
} else if ( checkedNum != 0) {
res.halfChecked.push(arr[x].childrenList[y].id)
} else {
}
}
// console.log(this.checkedKeys)
},
onExpand(expandedKeys) {
this.expandedKeys = expandedKeys;
this.autoExpandParent = false;
}
if(!item.childrenList) {
if(item.isShow == true) {
res.checked.push(item.id);
checkedNum = checkedNum + 1
}
if(checkedNum == arr[x].childrenList.length) {
res.checked.push(arr[x].id)
} else if (checkedNum != 0) {
res.halfChecked.push(arr[x].id)
}
}
}
if(!item.childrenList) {
if(item.isShow == true) {
res.checked.push(item.id)
}
}
}
this.expandedKeys = res.halfChecked.concat(res.checked)
this.checkedKeys = res
},
onCheck(checkedKeys, e) {
this.checkedKeys = checkedKeys;
// console.log(e.node.eventKey);
changeMenuShow({
roleId: this.roleId,
showMenusId: e.node.eventKey,
@ -162,10 +212,11 @@ export default {
}
});
},
onExpand(e) {
this.expandedKeys = e;
},
onSelect(selectedKeys, info) {
// console.log('onSelect', info);
this.selectedKeys = selectedKeys;
// console.log(selectedKeys);
getActions({ roleId: this.roleId, menusId: this.selectedKeys[0] }).then(
(res) => {
this.actionsList = res.data;
@ -193,7 +244,6 @@ export default {
},
watch: {
checkedKeys(val) {
// console.log('onCheck', val);
},
roleList: {
handler(val) {

@ -109,8 +109,7 @@
<a-tree
v-model="tree.checkedKeys"
checkable
:expanded-keys="tree.expandedKeys"
:auto-expand-parent="tree.autoExpandParent"
defaultExpandAll
:selected-keys="tree.selectedKeys"
:tree-data="roleList"
:checkStrictly="true"
@ -119,7 +118,6 @@
title: 'name',
key: 'id',
}"
@expand="onExpand"
@select="onSelect"
@check="onCheck"
/>
@ -208,6 +206,7 @@ export default {
getData() {
getrolelist().then((res) => {
this.roleList = res.data;
console.log(res.data)
this.afterroleList = JSON.parse(JSON.stringify(this.roleList));
});
},

@ -94,10 +94,24 @@ export const form = {
accountType:undefined,
remake: "",
};
const handleConfirm = (rule,value,callback) => {
if(!value){
callback();
}else{
// 正则判断失败抛出错误否则直接callback()
if(!/(^\d{18}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)){
callback(new Error("身份证格式不正确!"));
}else{
callback();
}
}
}
export const rules = {
actualName: [{ required: true, message: "请输入真实姓名", trigger: "blur" }],
sex: [{ required: true, message: "请选择性别", trigger: "change" }],
idCard: [{ required: true, message: "请输入身份证号", trigger: "blur" }],
idCard: [{ required: true, message: "请输入身份证号", trigger: "blur" },{validator: (rule,value,callback) => handleConfirm(rule,value,callback)}],
tel: [
{ required: true, message: "请输入手机号", trigger: "blur" },
{ min: 11, max: 11, message: "手机号只能为11位", trigger: "blur" },
@ -106,6 +120,10 @@ export const rules = {
{ type: "array", required: true, message: "请选择岗位", trigger: "change" },
],
entryDate: [{ required: true, message: "请选择入职时间", trigger: "change" }],
emergencyContactNumber: [
{ required: true, message: "请输入手机号", trigger: "blur" },
{ min: 11, max: 11, message: "手机号只能为11位", trigger: "blur" },
],
};
export const options = {
sex: [

@ -52,6 +52,9 @@ export const pagination = {
current: 1,
total: 0,
pageSize: 10,
showTotal: (total) => `${total}`,
showSizeChanger: true,
showQuickJumper: true,
}
export const ActionsList = [
{
@ -70,7 +73,7 @@ export const rules = {
export const unitColumns = [
{
title: "单元名称",
title: "单元",
dataIndex: "name",
width: "15%",
},

@ -77,7 +77,7 @@
<a-table :columns="unitColumns" :data-source="unitData" :row-key="record => record.id">
<span slot="action" slot-scope="text, row">
<a-space><a @click="addUnit(text, row)">编辑</a>
<a @click="delUnit(text, row)">删除</a></a-space>
<a @click="delUnit(text, row)" style="color: red">删除</a></a-space>
</span>
</a-table>
</div>
@ -106,7 +106,7 @@
:rules="unit.rules"
layout="vertical"
>
<a-form-model-item prop='name' label='单元名称'>
<a-form-model-item prop='name' label='单元'>
<a-input placeholder='请输入' v-model="unit.unitForm.name"/>
</a-form-model-item>
<a-form-model-item prop='floor' label='楼层数'>
@ -257,7 +257,6 @@ export default {
});
},
addUnit(data,row){//
console.log(row);
if(row!==undefined){
this.unit.modalTitle='修改单元'
this.unit.unitForm= {...row}
@ -266,7 +265,6 @@ export default {
this.unit.modalTitle='新增单元'
}
this.unit.showModal=true
console.log(this.unit.unitForm);
},
unitSubmit(){//
this.$refs.unForm.validate(async valid => {

@ -10,32 +10,49 @@
<a-button @click='reset()'> </a-button>
</a-space>
</a-col>
<a-col :span='4'>
<a-button class="add-btn" @click="addBuilding"></a-button>
</a-col>
</a-row>
</div>
<commonTable
<div class="search-box">
<a-button class="add-btn" @click="addBuilding"></a-button>
</div>
<a-table
:columns="columns"
:tableData="tableData"
:ActionsList="ActionsList"
@handleTableChange="handleTableChange"
@Actions="Actions"
@selectionChoosed="selectionChoosed"
:data-source="tableData"
:pagination="pagination"
@change="handleTableChange"
:row-selection="{
selectedRowKeys: tableChoosed,
onChange: selectionChoosed,
}"
:row-key="
(record, index) => {
return record.id;
}"
>
<template v-slot:actionBox="data">
<a-space size="small">
<a class="ant-dropdown-link" @click='detail(data.data.id)'>详情</a>
<a class="ant-dropdown-link" @click='del([data.data.id])'>删除</a>
</a-space>
<template slot="action" slot-scope="text,record">
<a @click="detail(record.id)"></a>
<a @click="del([record.id])" style="margin-left: 8px;color: red">删除</a>
</template>
</commonTable>
</a-table>
<div class="action">
<a-dropdown :disabled="!hasSelected" >
<a-menu slot="overlay" @click="handleMenuClick">
<a-menu-item key="del"> 批量删除 </a-menu-item>
</a-menu>
<a-button> 批量操作 <a-icon type="down" /> </a-button>
</a-dropdown>
<span style="margin-left: 8px">
<template v-if="hasSelected">
{{ `已选择 ${tableChoosed.length}` }}
</template>
</span>
</div>
<curd-form :show='drawerConfig.show' :type="drawerConfig.type" @close='close' :editId='editId'></curd-form>
</div>
</template>
<script>
import { columns,pagination,searchForm,ActionsList} from "./depend/config"
import { columns,searchForm,ActionsList} from "./depend/config"
import { buildingList,buildingDel } from "@/api/basic/estate"
import curdForm from './depend/form.vue'
export default {
@ -44,7 +61,14 @@ export default {
},
data() {
return {
pagination,
pagination: {
current: 1,
total: 0,
pageSize: 10,
showTotal: (total) => `${total}`,
showSizeChanger: true,
showQuickJumper: true,
},
columns,
searchForm,
ActionsList,
@ -61,6 +85,11 @@ export default {
created() {
this.getData()
},
computed: {
hasSelected() {
return this.tableChoosed.length > 0;
},
},
methods: {
async getData() {
const res = await buildingList(
@ -115,18 +144,12 @@ export default {
},
});
},
Actions(data) {
let ids =[]
for(const item of this.tableChoosed){
ids.push(item.id)
}
//
if(data===1){
this.del(ids)
handleMenuClick(data) {
if (data.key === "del") {
this.del(this.tableChoosed);
}
},
selectionChoosed(data) {
console.log(data);
this.tableChoosed = data;
},
},

@ -194,8 +194,8 @@ export default {
estateReviewId: estateReviewId,
operate: operate,
});
if (res.code === 0) {
this.$message.success(res.msg);
if (res.code === 200) {
this.$message.success(res.msg + res.data);
} else {
this.$message.error(res.msg);
}
@ -206,8 +206,13 @@ export default {
Actions(data) {
this.selectedRowKeys.forEach(ele => {
let obj = {operate: data, estateReviewId: ele};
review(obj);
this.$message.success('操作成功')
review(obj).then(res => {
if(res.code === 200){
this.$message.success(res.msg)
}else{
this.$message.error(res.msg)
}
});
})
this.activeAction = undefined;
this.selectedRowKeys = [];

@ -27,13 +27,27 @@ export const form = {
tenantName:undefined,
tenantTel:undefined,
}
const handleConfirm = (rule,value,callback) => {
if(!value){
callback();
}else{
// 正则判断失败抛出错误否则直接callback()
if(!/(^\d{18}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)){
callback(new Error("身份证格式不正确!"));
}else{
callback();
}
}
}
export const rules = {
manageEstateId:[{required:true,message:'请选择房屋',trigger:'change'}],
identity:[{required:true,message:'请选择身份',trigger:'change'}],
name:[{required:true,message:'请输入姓名',trigger:'blur'}],
tel:[{required:true,message:'请输入电话',trigger:'blur'}],
sex:[{required:true,message:'请选择性别',trigger:'change'}],
idCard:[{required:true,message:'请输入身份证号',trigger:'blur'}],
idCard:[{required:true,message:'请输入身份证号',trigger:'blur'},{validator: (rule,value,callback) => handleConfirm(rule,value,callback)}],
ownerName:[{required:true,message:'请输入业主姓名',trigger:'blur'}],
ownerTel:[{required:true,message:'请输入业主电话',trigger:'blur'}],
tenantName:[{required:true,message:'请输入租户姓名',trigger:'blur'}],

@ -23,11 +23,11 @@
<a-button @click="reset"> </a-button>
</a-space>
</a-col>
<a-col :span="4">
<a-button class="add-btn" @click="show.add = true">添加住户</a-button>
</a-col>
</a-row>
</div>
<div class="search-box">
<a-button class="add-btn" @click="show.add = true">添加住户</a-button>
</div>
<div class="main">
<!-- 表格 -->
<a-table

@ -37,6 +37,12 @@ export const rules = {
manageEstateTypeId: [
{ required: true, message: "请选择房屋类型", trigger: "change" },
],
indoorArea: [
{ required: true, message: "请输入室内面积", trigger: "blur" },
],
constructionArea: [
{ required: true, message: "请输入建筑面积", trigger: "blur" },
],
isEnableLease: [
{ required: true, message: "请选择是否开启租赁", trigger: "change" },
],

@ -142,6 +142,10 @@ export default {
default:null,
type:Number
},
typeList: {
default: null,
type:Array
}
},
data() {
return {
@ -309,6 +313,9 @@ export default {
if(val!==null){
this.getInfo(val)
}
},
typeList(val) {
this.options.houseType = val;
}
}
};

@ -16,13 +16,11 @@
<a-button @click="reset"> </a-button>
</a-space>
</a-col>
<a-col :span="4">
<a-space>
</a-row>
</div>
<div class="search-box">
<a-button class="add-btn" @click="drawerConfig.addShow = true">添加房屋</a-button>
<a-button @click="drawerConfig.houseType = true">房屋配置</a-button>
</a-space>
</a-col>
</a-row>
</div>
<div class="main">
<div style="margin-bottom: 16px">
@ -108,7 +106,7 @@
<div class="drawer-content">
基本信息
<a-divider></a-divider>
<vue-form ref="form" @success='addSuccess' :editId="editId"></vue-form>
<vue-form ref="form" @success='addSuccess' :typeList="typeList" :editId="editId"></vue-form>
</div>
<div class="drawer-footer">
<a-button :style="{ marginRight: '8px' }" @click="addClose">
@ -271,10 +269,12 @@ export default {
},
addClose() {
this.drawerConfig.addShow = false;
this.getType();
this.editId = null;
this.$refs.form.close()
},
edit(data){
this.getType();
this.editId = data.id
this.drawerConfig.addShow = true;
},

@ -29,7 +29,7 @@
</a-form-model-item>
</a-col>
<a-col :span="8" v-if="form.identity == 1">
<a-form-model-item label="选择房屋" prop="estateId">
<a-form-model-item label="选择房屋" prop="estateId" :rules="[{ required: true, message: '请选择房屋' }]">
<a-select v-model="form.estateId" placeholder="请选择房屋" @change="getAppName">
<a-select-option v-for="(item, index) in options.estateId" :key="index" :value="item.id">
{{item.name}}
@ -38,7 +38,7 @@
</a-form-model-item>
</a-col>
<a-col :span="8" v-else>
<a-form-model-item label="选择岗位" prop="estateId">
<a-form-model-item label="选择岗位" prop="positionId" :rules="[{ required: true, message: '请选择岗位' }]">
<a-cascader v-model="form.positionId" :options="options.applicantId" @change="getDepartmentName" placeholder="请选择岗位"></a-cascader>
</a-form-model-item>
</a-col>
@ -154,9 +154,11 @@ export default {
this.$emit("onClose");
},
addClose(){
this.$refs.ruleForm.resetFields();
this.$emit('close');
this.headList = [];
this.$refs.ruleForm.resetFields();
this.form.estateId = undefined;
this.form.positionId = undefined;
},
success(){
this.$emit('success')
@ -192,7 +194,7 @@ export default {
}
})
}
})
});
},
//
beforeUpload(f, l) {

@ -30,7 +30,7 @@
<a-input placeholder="请输入工单号/姓名/手机号" style="width:200px" v-model="form.keyword">
</a-input>
<a-button type="primary" @click="onSearch"> </a-button>
<a-button> </a-button>
<a-button @click="onReset"> </a-button>
</a-space>
</a-col>
<a-col :span="4">
@ -512,6 +512,11 @@ export default {
onSearch() {
this.getData()
},
onReset() {
this.form.workOrderTypeId = undefined;
this.form.keyword = undefined;
this.getData();
},
tabsChange(e){
this.form.status = e.target.value
this.getData()

@ -85,7 +85,9 @@
style="width: 60%"
></a-input>
</span>
<a-button type="primary" @click="getCode"></a-button>
<a-button type="primary" @click="getCode" :disabled="inCodeGap">
{{inCodeGap == false ? '获取验证码' : codeGap+'s后再次获取'}}
</a-button>
<!-- <a-row>
<a-col :span="12" style="margin-left: 23px"
><a-checkbox></a-checkbox>&nbsp;&nbsp;</a-col
@ -148,9 +150,9 @@
/>
</a-col>
<a-col :span="6">
<a-button type="primary" @click="getCode"
>获取验证码</a-button
>
<a-button type="primary" @click="getCode" :disabled="inCodeGap">
{{inCodeGap == false ? '获取验证码' : codeGap+'s后再次获取'}}
</a-button>
</a-col>
</a-row>
</a-form-model-item>
@ -198,9 +200,9 @@
/>
</a-col>
<a-col :span="6">
<a-button type="primary" @click="getCode"
>获取验证码</a-button
>
<a-button type="primary" @click="getCode" :disabled="inCodeGap">
{{inCodeGap == false ? '获取验证码' : codeGap+'s后再次获取'}}
</a-button>
</a-col>
</a-row>
</a-form-model-item>
@ -269,6 +271,8 @@ export default {
cityList: [], //
cityvalue: [], //
communityList: [], //
inCodeGap: false,
codeGap: 60,
};
},
created() {
@ -358,9 +362,19 @@ export default {
this.$message.error("先选择小区");
return;
}
let num = setInterval(() => {
this.inCodeGap = true;
this.codeGap -= 1;
if(this.codeGap < 1) {
clearInterval(num);
if(this.codeGap < 1) {
this.inCodeGap = false;
this.codeGap = 60;
}
}
},1000)
sendTelCode(this.form).then((res) => {
if (res) {
console.log(res)
this.$message.success(res.msg);
}
});

@ -98,12 +98,13 @@ export const columns = [
{
title: "主办方",
dataIndex: "organizerName",
width: "8%",
width: "6%",
},
{
title: "活动内容",
dataIndex: "content",
width: "8%",
width: "10%",
scopedSlots: { customRender: "content" },
},
{
title: "报名人数",

@ -75,6 +75,7 @@
v-model="form.content"
placeholder="请输入内容"
style="width: 80%"
:autosize="{minRows: 10}"
></a-textarea>
</a-form-model-item>
</a-col>
@ -238,7 +239,6 @@ export default {
this.$message.error(res.msg);
}
} else {
console.log(this.form);
let res = await activityUpdate(this.form);
if (res.code === 200) {
this.$message.success(res.msg);
@ -250,12 +250,22 @@ export default {
}
});
},
// handleChange(imgDataList) {
// this.fileList = imgDataList
// let arr = []
// imgDataList.forEach(ele => {
// arr.push(ele.response.data)
// })
// this.form.imgUrls = arr
// },
handleChange(data) {
this.fileList = data;
if (data[0].status === "done") {
console.log("-------done-------");
this.form.imgUrls.push(data[0].response.data);
this.form.imgUrls = [];
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgUrls.push(ele.response.data)
}
})
},
},
watch: {
@ -266,9 +276,10 @@ export default {
this.form.id = val;
activityInfo({ activityId: val }).then((res) => {
this.form = res.data;
this.form.imgUrls = [];
if (res.data.imgList.length > 0) {
console.log(res.data.imgList);
const pic = [];
this.form.imgUrls.push(res.data.imgList[0].url)
for (let item of res.data.imgList) {
let obj = {
name: item.url.split("_")[0] + "." + item.url.split(".")[1],

@ -21,6 +21,7 @@
}
"
>
<span slot="action" slot-scope="text, row">
<a-space>
<a class="ant-dropdown-link" @click="detail(row.id)"></a>
@ -28,6 +29,14 @@
<a class="ant-dropdown-link" @click="del([row.id])"></a>
</a-space>
</span>
<span slot="content" slot-scope="text, record">
<a-popover>
<template slot="content">
<div style="width: 600px">{{record.content}}</div>
</template>
<div>{{doStr(record.content,15)}}</div>
</a-popover>
</span>
<span slot="imgpic" slot-scope="text, row">
<img
v-if="row.imgList.length > 0"
@ -189,6 +198,14 @@ export default {
this.detailId = null;
this.drawer.detail = false;
},
//
doStr(str, number) {
if(str.length >= number) {
return str.substr(0,number-1) + '...'
} else {
return str
}
}
},
computed: {
hasSelected() {

@ -8,13 +8,19 @@ export const form = {
remarks:undefined,
imgUrls:[],
}
//身份证校验
const handleConfirm = (rule,value,callback) => {
if(value.length != 18) {
callback('请输入正确的格式')
};
if(!value){
callback();
}else{
// 正则判断失败抛出错误否则直接callback()
if(!/(^\d{18}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value)){
callback(new Error("身份证格式不正确!"));
}else{
callback();
}
}
}
export const rules = {
unit:[{required:true,message:'请输入',trigger:'blur'}],

@ -149,13 +149,22 @@ export default {
}
});
},
// handleChange(imgDataList) {
// this.fileList = imgDataList
// let arr = []
// imgDataList.forEach(ele => {
// arr.push(ele.response.data)
// })
// this.form.imgUrls = arr
// },
handleChange(data) {
this.fileList = data;
this.form.imgUrls=[]
if (data[0].status === "done") {
console.log('-------done-------');
this.form.imgUrls.push(data[0].response.data);
this.form.imgUrls = [];
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgUrls.push(ele.response.data)
}
})
},
},
watch: {
@ -166,9 +175,10 @@ export default {
this.form.id = val;
organizerInfo({ activityOrganizerId: val }).then((res) => {
this.form = res.data;
this.form.imgUrls = [];
if (res.data.imgList.length > 0) {
console.log(res.data.imgList);
const pic = [];
this.form.imgUrls.push(res.data.imgList[0].url)
for (let item of res.data.imgList) {
let obj = {
name: item.url.split("_")[0] + "." + item.url.split(".")[1],

@ -31,7 +31,7 @@ export const columns = [
{
title: "标题",
dataIndex: "title",
width: "16%",
width: "21%",
},
{
title: "推送对象",
@ -62,7 +62,7 @@ export const columns = [
{
title: "状态",
dataIndex: "status",
width: "10%",
width: "8%",
customRender: function (status) {
switch (status) {
case 1:
@ -79,17 +79,18 @@ export const columns = [
{
title: "内容",
dataIndex: "content",
width: "13%",
width: "21%",
scopedSlots: { customRender: "content" },
},
{
title: "阅读量",
dataIndex: "readingVolume",
width: "10%",
width: "7%",
},
{
title: "附件下载次数",
dataIndex: "downloadNum",
width: "10%",
width: "7%",
},
{
title: "更新时间",

@ -11,7 +11,7 @@ export const rules = {
title:[{required:true,message:'请输入标题',trigger:'blur'}],
object:[{required:true,message:'请选择',trigger:'change'}],
status:[{required:true,message:'请选择',trigger:'change'}],
content:[{required:true,message:'请输入标题',trigger:'blur'}],
content:[{required:true,message:'请输入内容',trigger:'blur'}],
}
export const options = {
status:[

@ -56,6 +56,7 @@
v-model="form.content"
placeholder="请输入内容"
style="width: 80%"
:autosize="{ minRows: 12}"
></a-textarea>
</a-form-model-item>
封面图片
@ -197,13 +198,22 @@ export default {
this.$message.error(`${info.file.name} 上传失败`);
}
},
// handleChange(data) {
// this.fileList = data;
// this.form.coverImgUrls = [];
// if (data[0].status === "done") {
// console.log("-------done-------");
// this.form.coverImgUrls.push(data[0].response.data);
// }
// },
handleChange(data) {
this.fileList = data;
this.form.coverImgUrls = [];
if (data[0].status === "done") {
console.log("-------done-------");
this.form.coverImgUrls.push(data[0].response.data);
data.forEach(ele => {
if(ele.status == 'done') {
this.form.coverImgUrls.push(ele.response.data)
}
})
},
},
watch: {
@ -215,7 +225,8 @@ export default {
announcementInfo({ announcementId: val }).then((res) => {
this.form = res.data;
if (res.data.coverImgList.length > 0) {
console.log(res.data.coverImgList);
// console.log(res.data.coverImgList);
// this.form.coverImgUrls.push(res.data.coverImgList[0].url)
const pic = [];
for (let item of res.data.coverImgList) {
let obj = {

@ -9,7 +9,7 @@
:columns="columns"
:data-source="tableData"
:pagination="pagination"
:scroll="{ x: 1600 }"
:scroll="{ x: 1900 }"
@change="handleTableChange"
:row-selection="{
selectedRowKeys: selectedRowKeys,
@ -21,6 +21,14 @@
}
"
>
<span slot="content" slot-scope="text, record">
<a-popover>
<template slot="content">
<div style="width: 600px">{{record.content}}</div>
</template>
<div>{{doStr(record.content,21)}}</div>
</a-popover>
</span>
<span slot="action" slot-scope="text, row">
<a-space>
<a class="ant-dropdown-link" @click="edit(row.id)"></a>
@ -151,6 +159,14 @@ export default {
success() {
this.getData();
},
//
doStr(str, number) {
if(str.length >= number) {
return str.substr(0,number-1) + '...'
} else {
return str
}
}
},
computed: {
hasSelected() {

@ -201,7 +201,7 @@ export default {
};
},
mounted() {
this.id = this.$route.params.data.id;
this.id = this.$route.params.data;
this.getComment();
this.getData();
},
@ -210,12 +210,14 @@ export default {
let res = await dynamicInfo({
communityDynamicId: this.id,
});
console.log(res.data)
this.detailData = res.data;
},
async getComment() {
let res = await commentList({
pageNum: this.pagination.current,
size: this.pagination.pageSize,
dynamicId: this.id,
});
this.tableData = res.data.rows;
this.pagination.total = res.data.total;
@ -256,20 +258,17 @@ export default {
});
},
selectionChoosed(data) {
console.log(data);
this.selectedRowKeys = data;
},
handleTableChange(pagination) {
console.log(pagination);
const pager = { ...this.pagination };
pager.current = pagination.current;
pager.pageSize = pagination.pageSize;
this.pagination = pager;
this.getData();
this.getComment();
},
Actions(data) {
console.log(data);
console.log(this.selectedRowKeys);
this.activeAction = undefined;
if (data === 1) {
this.del(this.selectedRowKeys);

@ -166,7 +166,7 @@ export default {
}
},
detail(data){
this.$router.push({name:'DynamicDetail',params:{data:data}})
this.$router.push({name:'DynamicDetail',params:{data:data.id}})
},
del(ids){
console.log(ids);

@ -138,14 +138,25 @@ export default {
this.$message.error(res.msg)
}
}
}
};
});
},
// handleChange(imgDataList) {
// this.fileList = imgDataList
// let arr = []
// imgDataList.forEach(ele => {
// arr.push(ele.response.data)
// })
// this.form.imgUrls = arr
// },
handleChange(data) {
this.fileList = data
if(data[0].status==='done'){
this.form.imgUrls.push(data[0].response.data)
this.fileList = data;
this.form.imgUrls = [];
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgUrls.push(ele.response.data)
}
})
},
},
watch: {
@ -164,6 +175,7 @@ export default {
this.form.isRating = data.isRating
if(data.imgList.length>0){
const pic = []
this.form.imgUrls.push(data.imgList[0].url)
for(let item of data.imgList){
let obj = {
name:item.url.split('_')[0] +'.'+ item.url.split('.')[1],
@ -175,7 +187,6 @@ export default {
pic.push(obj)
}
this.fileList = pic
// this.form.imgUrls.push(pic[0].name)
}
})
}else{

@ -70,6 +70,8 @@
placeholder="请选择开始时间"
v-model="form.planBeginDate"
value-format="YYYY-MM-DD HH:mm:ss"
style="width: 30%"
showTime
/>
</a-form-model-item>
<a-form-model-item prop="isSort" label="是否按照顺序巡检">

@ -64,6 +64,7 @@
v-model="form.content"
placeholder="请输入内容"
style="width: 80%"
:autosize="{minRows: 10}"
></a-textarea>
</a-form-model-item>
</a-col>
@ -155,10 +156,12 @@ export default {
},
handleChange(data) {
this.fileList = data;
if (data[0].status === "done") {
console.log("-------done-------");
this.form.imgUrls.push(data[0].response.data);
this.form.imgUrls = [];
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgUrls.push(ele.response.data)
}
})
},
},
watch: {
@ -169,8 +172,10 @@ export default {
this.form.id = val;
newsInfo({ informationId: val }).then((res) => {
this.form = res.data;
this.form.imgUrls = []
if (res.data.imgList.length > 0) {
const pic = [];
this.form.imgUrls.push(res.data.imgList[0].url);
for (let item of res.data.imgList) {
let obj = {
name: item.url.split("_")[0] + "." + item.url.split(".")[1],

@ -132,17 +132,19 @@ export default {
tabsChange(e) {
if(e.target.value === '0'){
this.searchForm.status = undefined
this.pagination.current = 1;
this.pagination.pageSize = 10;
this.getData();
}
} else {
this.pagination.current = 1;
this.pagination.pageSize = 10;
this.searchForm.status = e.target.value;
this.getData();
}
},
handleTableChange(pagination) {
console.log(pagination);
const pager = { ...this.pagination };
pager.current = pagination.current;
pager.pageSize = pagination.pageSize;
this.pagination = pager;
this.pagination.current = pagination.current;
this.pagination.pageSize = pagination.pageSize;
this.getData();
},
Actions(data) {

@ -268,15 +268,24 @@ export default {
});
},
//
// handleChange(data) {
// console.log(data);
// this.fileList = data;
// //
// if (this.fileList.length === 0) {
// this.form.imgUrls = [];
// } else if (data[0].status === "done") {
// this.form.imgUrls.push(data[0].response.data);
// }
// },
handleChange(data) {
console.log(data);
this.fileList = data;
//
if (this.fileList.length === 0) {
this.form.imgUrls = [];
} else if (data[0].status === "done") {
this.form.imgUrls.push(data[0].response.data);
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgUrls.push(ele.response.data)
}
})
},
},
};

@ -1,15 +1,61 @@
export const formItem = [
{
type: 'input',
label:'',
type: 'select',
label:'账单类型',
prop:'',
placeholder:'请输入'
option:[{ id:1,name:'手动生成'},{ id:2,name:'自动生成'}],
placeholder:'请选择'
},
]
export const columns = [
{
title: "",
dataIndex: "",
title: "账单名称",
dataIndex: "name",
},
{
title: "账单状态",
dataIndex: "status",
customRender:function(status){
switch (status) {
case 1:
return '未缴纳'
case 2:
return '部分缴纳'
case 3:
return '已缴纳'
case 4:
return '已废除'
default:
break;
}
}
},
{
title: "关联房屋",
dataIndex: "unitName",
scopedSlots: { customRender: "unitName" },
},
{
title: "收费标准",
dataIndex: "chargesName"
},
{
title: "计费周期",
dataIndex: "billDateStart",
scopedSlots: { customRender: "billDateStart" },
width: 400
},
{
title: "应收金额",
dataIndex: "amountReceivable"
},
{
title: "违约金额",
dataIndex: "defaultAmount"
},
{
title: "实收金额",
dataIndex: "amountReceived"
},
{
title: "操作",

@ -2,32 +2,264 @@
<div>
<div class="cardTitle">账单明细</div>
<searchForm :formItem="formItem" @getSearch="search($event)"></searchForm>
<a-table :columns="columns" :data-source="tableData" :pagination="pagination" :scroll="{x: 1900}" @change="handlerPage">
<template slot="unitName" slot-scope="text, record">
{{record.buildingName}}/{{record.unitName}}/{{record.estateName}}
</template>
<template slot="billDateStart" slot-scope="text, record">
{{record.billDateStart}} {{record.billDateEnd}}
</template>
<template slot="action" slot-scope="text, record">
<a v-if="record.status != 4" @click="billPay(record)"></a>
<a v-if="record.status != 4" style="margin-left: 8px;color: red" @click="billOff(record)"></a>
<a v-if="record.status == 4" @click="billRecover(record)"></a>
</template>
</a-table>
<a-drawer title="账单详情"
:width="720"
:visible="billShow"
:body-style="{ paddingBottom: '80px' }"
@close="billClose">
<div class="drawer-content">
<div style="padding: 16px">
<span class="billTitle">{{12786127846}}</span><a-tag style="margin-left: 24px">{{offDetail.status==1?'未缴纳':2?'部分缴纳':'已缴纳'}}</a-tag>
<span style="float: right">剩余未缴</span>
</div>
<div style="padding: 16px">
<span>{{offDetail.buildingName}}/{{offDetail.unitName}}/{{offDetail.estateName}}</span>
<span style="float: right;color: #D53131">¥{{offDetail.amountReceivable}}</span>
</div>
<a-divider></a-divider>
<div style="padding: 16px">
<a-descriptions layout="vertical">
<a-descriptions-item label="应收金额">
{{(offDetail.amountReceivable*1).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="实收金额">
{{(offDetail.amountReceived*1).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="计费周期">
{{offDetail.billDateStart}} {{offDetail.billDateEnd}}
</a-descriptions-item>
<a-descriptions-item label="剩余应收">
{{(offDetail.amountReceivable*1 - offDetail.amountReceived*1).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="违约金">
{{(offDetail.defaultAmount * 1).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="创建时间">
</a-descriptions-item>
</a-descriptions>
</div>
<div class="tableTitle">缴费记录</div>
<a-divider></a-divider>
<a-table :columns="billColumns" :data-source="billDetail" :pagination="false">
</a-table>
</div>
<div class="drawer-footer">
<a-button :style="{ marginRight: '8px' }" @click="billClose">
关闭
</a-button>
<a-button type="primary" @click="billPayment"> </a-button>
</div>
</a-drawer>
<a-modal title="账单废除确认" :visible="offShow" @ok="offComfirm" @cancel="offCancel">
<div>房屋号{{offDetail.buildingName}}/{{offDetail.unitName}}/{{offDetail.estateName}}</div>
<div>收费标准{{offDetail.chargesName}}</div>
<div>剩余应收<span style="color: #D53131">{{offDetail.amountReceivable}}</span></div>
<div>创建时间{{offDetail.billDateStart}}</div>
<h4 style="margin-top: 32px">请确认是否废除该账单</h4>
</a-modal>
<a-modal title="账单结清" :visible="paymentShow" @ok="paymentConfirm" @cancel="paymentCancel">
<div style="padding: 24px 0px 24px 0px">总计金额<span style="color: #D53131">{{(offDetail.amountReceivable*1).toFixed(2)}}</span></div>
<div>房屋号{{offDetail.buildingName}}/{{offDetail.unitName}}/{{offDetail.estateName}}</div>
<div>剩余应收<span>{{(offDetail.amountReceivable*1 - offDetail.amountReceived*1).toFixed(2)}}</span></div>
<div>违约金{{(offDetail.defaultAmount * 1).toFixed(2)}}</div>
<div>创建时间{{offDetail.billDateStart}}</div>
<h4 style="margin-top: 32px">请确认是否结清该账单</h4>
</a-modal>
</div>
</template>
<script>
import { formItem, columns, pagination } from "./depend/config"
import { getBillList, abolition, recover, findBillOrderList, offlinePayments } from "@/api/payment/billManagement"
export default {
name: 'payInfo',
data() {
return {
searchForm: {
form: {
type: undefined,
estateId: undefined,
chargesIds: undefined
},
formItem: []
tableData:[],
formItem,
columns,
pagination,
billShow: false,
offShow: false,
billColumns: [
{
title: "操作人",
dataIndex: "createName"
},
{
title: "身份类型",
dataIndex: "identity",
customRender:function(identity){
switch (identity) {
case 1: return '物业'
case 2: return '业主'
case 3: return '租户'
case 4: return '业主亲属'
case 5: return '租户亲属'
default:
break;
}
}
},
{
title: "实缴金额",
dataIndex: "payAmount"
},
{
title: "支付类型",
dataIndex: "payType",
customRender:function(payType){
switch (payType) {
case 1: return '自动扣费'
case 2: return '线下支付'
case 3: return '支付宝支付'
default:
break;
}
}
},
],
//
currentId: undefined,
billDetail: [],
offDetail: {},
//
paymentShow: false,
}
},
mounted() {
this.getData()
},
methods: {
getData() {
let obj = Object.assign({pageNum: this.pagination.current, size: this.pagination.pageSize},this.form)
getBillList(obj).then(res => {
let data = res.data;
this.tableData = data.rows;
this.pagination.total = data.total
})
},
search(data) {
this.searchForm = data;
this.form = data;
this.getData()
},
handlerPage(val) {
this.pagination.current = val.current;
this.pagination.pageSize = val.pageSize;
this.getData()
},
//
billPay(record) {
this.currentId = record.id
this.offDetail = record;
let obj = {billId: record.id}
findBillOrderList(obj).then(res => {
let data = res.data
this.billDetail = data;
})
this.billShow = true
},
//
billPayment() {
this.paymentShow = true;
},
paymentConfirm() {
let obj = {billId: this.currentId, payAmount: (this.offDetail.amountReceivable - this.offDetail.amountReceived)*1.00}
offlinePayments(obj).then(res => {
if (res.code === 200) {
this.$message.success(res.msg);
this.paymentShow = false;
this.billShow = false;
this.getData();
} else {
this.$message.error(res.msg);
}
})
},
paymentCancel() {
this.paymentShow = false;
},
//
billOff(record) {
this.currentId = record.id
this.offDetail = record;
this.offShow = true;
},
offComfirm() {
abolition({billId: this.currentId}).then(res => {
if (res.code === 200) {
this.$message.success(res.msg);
this.offShow = false;
this.getData();
} else {
this.$message.error(res.msg);
}
})
},
//
billRecover(record) {
let obj = {billId : record.id}
this.$confirm({
title: "是否恢复?",
icon: "redo",
onOk: () => {
recover(obj).then(
(res) => {
if (res.code === 200) {
this.$message.success(res.msg);
this.getData();
} else {
this.$message.error(res.msg);
}
}
);
},
});
},
//
billClose() {
this.billShow = false
},
offCancel() {
this.offShow = false
}
}
}
</script>
<style>
<style lang="less">
.billTitle {
font-family: 'PingFang SC';
font-style: normal;
font-weight: 600;
font-size: 18px;
}
.tableTitle {
padding-left: 16px;
font-family: 'PingFang SC';
font-style: normal;
font-weight: 500;
font-size: 16px;
line-height: 22px;
}
</style>

@ -1,11 +1,45 @@
export const columns = [
{
title: "费用名称",
dataIndex: "name",
},
{
title: "计费方式",
dataIndex: "billingType",
customRender: function (billingType) {
switch (billingType) {
case 1:
return "单价*计量方式";
case 2:
return "固定金额";
default:
break;
}
},
},
{
title: "计量方式",
dataIndex: "calculateType",
customRender: function (calculateType) {
switch (calculateType) {
case 1:
return "建筑面积";
case 2:
return "使用面积";
case 3:
return "公摊面积";
case 5:
return "仪表用量";
case 6:
return "房屋数分摊";
case 7:
return "房屋建筑面积分摊";
case 8:
return "房屋在住人口分摊";
default:
break;
}
},
},
{
title: "单价",

@ -248,10 +248,12 @@ export default {
}
}
this.estateIds = ids;
if (ids.length > 0) {
if (ids.length != 0) {
bindList({ estateIds: ids }).then((res) => {
this.tableData = res.data;
});
} else {
this.tableData = []
}
},
},

@ -49,7 +49,7 @@ export const rules = {
isTieredBilling: [
{
required: true,
message: "请选择",
message: "请选择阶梯计费",
trigger: "change",
},
],
@ -70,35 +70,35 @@ export const rules = {
choiceType: [
{
required: true,
message: "请选择",
message: "请选择取舍方式",
trigger: "change",
},
],
isCollectLiquidatedDamages: [
{
required: true,
message: "请选择",
message: "请选择收取违约金",
trigger: "change",
},
],
paymentTerm: [
{
required: true,
message: "请输入",
message: "请输入支付期限",
trigger: "blur",
},
],
chargeRate: [
{
required: true,
message: "请输入",
message: "请输入收取比率",
trigger: "blur",
},
],
chargeMax: [
{
required: true,
message: "请输入",
message: "请输入收取上限",
trigger: "blur",
},
],

@ -95,14 +95,14 @@
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item prop="fileStandard" label="定档标准">
<a-form-model-item prop="isTieredBilling" label="是否阶梯计费">
<a-select
v-model="form.fileStandard"
placeholder="请选择定档标准"
v-model="form.isTieredBilling"
placeholder="请选择是否阶梯计费"
style="width: 60%"
>
<a-select-option
v-for="item in options.fileStandard"
v-for="item in options.isTrue"
:key="item.id"
:value="item.id"
>{{ item.name }}</a-select-option
@ -110,15 +110,15 @@
</a-select>
</a-form-model-item>
</a-col>
<a-col :span="12">
<a-form-model-item prop="isTieredBilling" label="是否阶梯计费">
<a-col :span="12" v-if="form.isTieredBilling === 1">
<a-form-model-item prop="fileStandard" label="定档标准">
<a-select
v-model="form.isTieredBilling"
placeholder="请选择是否阶梯计费"
v-model="form.fileStandard"
placeholder="请选择定档标准"
style="width: 60%"
>
<a-select-option
v-for="item in options.isTrue"
v-for="item in options.fileStandard"
:key="item.id"
:value="item.id"
>{{ item.name }}</a-select-option

@ -1,8 +1,8 @@
<template>
<div>
<div class="cardTitle">商品分类</div>
<div class="content flexbox">
<div class="tree">
<div class="shop-content">
<div class="shop-tree">
<a-button class="add-btn" style="margin-left: 10px" @click="addCate"
>新增商品分类</a-button
>
@ -249,14 +249,12 @@ export default {
this.form.parentId = value[value.length - 1];
},
edit(data) {
console.log(data);
this.drawer.show = true;
this.drawer.title = "修改分类";
this.form.name = data.name;
this.form.categoryId = data.id;
// this.fileList.push
if (data.imgUrls.length > 0) {
console.log(data.imgUrls);
this.form.imgList.push(data.imgUrls[0].url);
const pic = [];
for (let item of data.imgUrls) {
@ -277,10 +275,15 @@ export default {
handleChange(data) {
this.fileList = data;
this.form.imgList = [];
if (data[0].status === "done") {
console.log("-------done-------");
this.form.imgList.push(data[0].response.data);
data.forEach(ele => {
if(ele.status == 'done') {
this.form.imgList.push(ele.response.data)
}
})
// if (data[0].status === "done") {
// console.log("-------done-------");
// this.form.imgList.push(data[0].response.data);
// }
},
selectionChoosed(data) {
this.selectedRowKeys = data;
@ -324,6 +327,13 @@ export default {
</script>
<style lang="less" scoped>
.shop-content {
padding: 13px 13px 13px 0px;
display: flex;
.shop-tree {
padding: 0px 60px 0px 0px
}
}
.table-img {
width: 40px;
height: 40px;

@ -25,7 +25,7 @@
>
<span slot="action" slot-scope="text, row">
<a-space>
<a v-if="row.status == 0 && row.appShopPush == 0" class="ant-dropdown-link" @click="push(row.id)"></a>
<a v-if="row.status == 1 && row.appShopPush == 0" class="ant-dropdown-link" @click="push(row.id)"></a>
</a-space>
</span>
<span slot="mainPhoto" slot-scope="text, row">

@ -8,24 +8,30 @@
</a-space>
<a-card class="gray-content">
<a-row>
<a-col :span="12">
<a-col :span="4">
<div class="tradeStatus">
{{infoData.tradeStatus|tradeStatus}}
</div>
<div style='margin-bottom:10px' v-if="infoData.tradeStatus===2">退</div>
<a-space size='large'><a-button type="primary" v-if="infoData.tradeStatus===2"></a-button><a v-if="infoData.tradeStatus===2||infoData.tradeStatus===4"></a></a-space>
</a-col>
<a-col :span="12" style="margin-top:20px">
<a-steps :current="1" style="">
<a-step>
<!-- <span slot="title">Finished</span> -->
<template slot="title">
Finished
</template>
<span slot="description">This is a description.</span>
</a-step>
<a-step title="In Progress" description="This is a 1description." />
<a-step title="Waiting" description="This is a description." />
<a-col :span="20" style="margin-top:20px">
<a-steps :current="
infoData.tradeStatus == 0?0 : infoData.tradeStatus == 1?0 :
infoData.tradeStatus == 2?1 : infoData.tradeStatus == 3?1 :
infoData.tradeStatus == 4?2 : infoData.tradeStatus == 5?3 : 3 " style="">
<a-step v-if="infoData.tradeStatus == 1" title="交易超时/已退款" />
<a-step v-else title="买家下单" description="等待买家付款." />
<a-step v-if="infoData.tradeStatus == 3" title="买家付款" description="交易支付成功." />
<a-step v-else title="买家付款" description="交易支付成功." />
<a-step title="商家发货" description="已成功发货." />
<a-step v-if="infoData.tradeStatus == 5" title="完成订单" />
<a-step v-else-if="infoData.tradeStatus == 6" title="申请取消" status="error" />
<a-step v-else-if="infoData.tradeStatus == 7" title="申请拒收" />
<a-step v-else-if="infoData.tradeStatus == 8" title="取消订单失败" />
<a-step v-else-if="infoData.tradeStatus == 9" title="取消订单成功" status="finish" />
<a-step v-else-if="infoData.tradeStatus == 10" title="发生拆单" />
<a-step v-else-if="infoData.tradeStatus == 11" title="售后换新" />
</a-steps>
</a-col>
</a-row>
@ -58,7 +64,7 @@
<span class="box">
<a-descriptions title="付款信息" :column="1">
<a-descriptions-item label="实付金额">
{{'¥'+infoData.payPrice}}
{{'¥'+(infoData.payPrice*1).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="付款方式">
{{infoData.payType | payType}}
@ -92,14 +98,14 @@
<a-card class="gray-content right">
<a-descriptions :column="1">
<a-descriptions-item label="商品总价">
{{'¥'+(infoData.payPrice - infoData.freightFee)}}
{{'¥'+(infoData.payPrice - infoData.freightFee).toFixed(2)}}
</a-descriptions-item>
<a-descriptions-item label="运费">
{{'¥'+infoData.freightFee}}
{{'¥'+(infoData.freightFee*1).toFixed(2)}}
</a-descriptions-item>
</a-descriptions>
<span style='color:#000000D9;font-size:20px;line-height:28px;font-weight:500'>实付款</span>
<span style='color:#CF1322;font-size:20px;line-height:26px;font-weight:500;font-style: normal;'>{{'¥'+infoData.payPrice}}</span>
<span style='color:#CF1322;font-size:20px;line-height:26px;font-weight:500;font-style: normal;'>{{'¥'+(infoData.payPrice*1).toFixed(2)}}</span>
</a-card>
</div>
</template>
@ -115,7 +121,7 @@ export default {
detailColumns
}
},
mounted() {
created() {
if(this.$route.params.id){
this.getInfo(this.$route.params.id)
}
@ -184,6 +190,7 @@ export default {
getInfo(id){
orderInfo({orderId:id}).then(res=>{
this.infoData = res.data
console.log(res.data)
this.skuList = res.data.skuList
})
},

@ -35,6 +35,7 @@
:rowKey="(record) => record.id"
tableLayout="auto"
:pagination="pagination"
@change="handlerPage"
>
<div slot="expandedRowRender" slot-scope="record" style="margin: 0">
<a-descriptions title="订单信息">
@ -228,6 +229,12 @@ export default {
detail(data) {
this.$router.push({ name: "OrderDetail", params: { id: data.id } });
},
//
handlerPage(value) {
this.pagination.current = value.current;
this.pagination.pageSize = value.pageSize;
this.getData()
}
},
};
</script>

Binary file not shown.
Loading…
Cancel
Save