Compare commits
2 Commits
f6a7eb1b4e
...
2d9ffb03cd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d9ffb03cd | ||
|
|
2f70107415 |
@@ -9,9 +9,9 @@ VITE_APP_ENV='development'
|
|||||||
# 开发环境
|
# 开发环境
|
||||||
VITE_APP_BASE_API='/dev-api'
|
VITE_APP_BASE_API='/dev-api'
|
||||||
# # 开发环境 接口代理地址
|
# # 开发环境 接口代理地址
|
||||||
#VITE_APP_PROXY_API='http://192.168.1.222:8080'
|
VITE_APP_PROXY_API='http://192.168.0.222:8080'
|
||||||
# 开发环境 接口代理地址
|
# 开发环境 接口代理地址
|
||||||
VITE_APP_PROXY_API='http://192.168.1.6:8080'
|
#VITE_APP_PROXY_API='http://192.168.0.199:8080'
|
||||||
# 图片基础地址
|
# 图片基础地址
|
||||||
VITE_IMG_URL='http://192.168.1.222:8080'
|
VITE_IMG_URL='http://192.168.1.222:8080'
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
@toggle-click="toggleSideBar"
|
@toggle-click="toggleSideBar"
|
||||||
>
|
>
|
||||||
</hamburger>
|
</hamburger>
|
||||||
|
<div style="color: grey; margin-right: 20px">{{ currentVillageInfo.villageName }}</div>
|
||||||
<div class="flex-1 h-full"></div>
|
<div class="flex-1 h-full"></div>
|
||||||
<div class="right-menu flex align-center">
|
<div class="right-menu flex align-center">
|
||||||
<template v-if="appStore.device !== 'mobile'">
|
<template v-if="appStore.device !== 'mobile'">
|
||||||
@@ -30,6 +31,7 @@
|
|||||||
<el-dropdown class="right-menu-item hover-effect" trigger="click" @command="handleCommand">
|
<el-dropdown class="right-menu-item hover-effect" trigger="click" @command="handleCommand">
|
||||||
<div class="avatar-wrapper">
|
<div class="avatar-wrapper">
|
||||||
<img :src="userStore.avatar" alt="头像" class="user-avatar" />
|
<img :src="userStore.avatar" alt="头像" class="user-avatar" />
|
||||||
|
<div class="username">{{ userStore.nickname }}</div>
|
||||||
<el-icon><caret-bottom /></el-icon>
|
<el-icon><caret-bottom /></el-icon>
|
||||||
</div>
|
</div>
|
||||||
<template #dropdown>
|
<template #dropdown>
|
||||||
@@ -69,7 +71,7 @@ const props = defineProps({
|
|||||||
default: true
|
default: true
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
const currentVillageInfo = JSON.parse(localStorage.getItem('villageInfo') || '{}');
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const settingsStore = useSettingsStore();
|
const settingsStore = useSettingsStore();
|
||||||
@@ -170,7 +172,6 @@ watch(
|
|||||||
height: 50px;
|
height: 50px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
background: #dfedff;
|
|
||||||
background: transparent;
|
background: transparent;
|
||||||
//border-bottom: 1px solid #dfedff;
|
//border-bottom: 1px solid #dfedff;
|
||||||
|
|
||||||
@@ -229,8 +230,7 @@ watch(
|
|||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
color: #fff;
|
color: grey;
|
||||||
color: #c0c4cc;
|
|
||||||
|
|
||||||
vertical-align: text-bottom;
|
vertical-align: text-bottom;
|
||||||
|
|
||||||
@@ -245,9 +245,14 @@ watch(
|
|||||||
|
|
||||||
.avatar-wrapper {
|
.avatar-wrapper {
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
// margin-left: 20px;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
.username {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
.user-avatar {
|
.user-avatar {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
width: 40px;
|
width: 40px;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
<el-table v-loading="loading" :data="chargeItemList" border @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="chargeItemList" border @selection-change="handleSelectionChange">
|
||||||
<el-table-column align="center" type="selection" width="55" />
|
<el-table-column align="center" type="selection" width="55" />
|
||||||
<el-table-column align="center" label="项目名称" prop="itemName" />
|
<el-table-column align="center" label="项目名称" prop="itemName" />
|
||||||
<el-table-column align="center" label="计费方式" prop="billingType" width="100">
|
<el-table-column align="center" label="计费方式" prop="billingType" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="com_charge_item_method" :value="scope.row.billingType"></dict-tag>
|
<dict-tag :options="com_charge_item_method" :value="scope.row.billingType"></dict-tag>
|
||||||
</template>
|
</template>
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
<el-table-column align="center" label="备注" prop="remark" show-overflow-tooltip />
|
||||||
<el-table-column align="center" class-name="small-padding fixed-width" fixed="right" label="操作">
|
<el-table-column align="center" class-name="small-padding fixed-width" label="操作">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button v-has-permi="['chargeItem:chargeItem:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
<el-button v-has-permi="['chargeItem:chargeItem:edit']" link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
<el-button v-has-permi="['chargeItem:chargeItem:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
<el-button v-has-permi="['chargeItem:chargeItem:remove']" link type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
|
|||||||
@@ -175,7 +175,7 @@
|
|||||||
<span v-else-if="scope.row.payStatus === PayStatus.PARTIAL">部分缴纳</span>
|
<span v-else-if="scope.row.payStatus === PayStatus.PARTIAL">部分缴纳</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="应缴金额" prop="needPayAmount" width="100" />
|
<el-table-column align="center" label="剩余应缴金额" prop="needPayAmount" width="140" />
|
||||||
<el-table-column align="center" label="优惠金额" prop="singleDiscountAmount" width="100" />
|
<el-table-column align="center" label="优惠金额" prop="singleDiscountAmount" width="100" />
|
||||||
<el-table-column align="center" label="实缴金额" prop="actualAccount" width="100" />
|
<el-table-column align="center" label="实缴金额" prop="actualAccount" width="100" />
|
||||||
<el-table-column align="center" label="缴费人" prop="residentName" width="120" />
|
<el-table-column align="center" label="缴费人" prop="residentName" width="120" />
|
||||||
|
|||||||
@@ -188,12 +188,42 @@
|
|||||||
<span>缴费账单</span>
|
<span>缴费账单</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<el-table :data="billList" style="width: 100%">
|
<el-table :data="billList" style="width: 100%; max-height: 500px; overflow: auto">
|
||||||
<el-table-column label="账单名称" prop="detailsName" />
|
<el-table-column label="账单名称" prop="detailsName" />
|
||||||
<el-table-column label="账单项目" prop="chargeItemName" />
|
<el-table-column label="账单项目" prop="chargeItemName" />
|
||||||
<el-table-column label="金额" prop="money">
|
<el-table-column label="金额" prop="money">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.amount }}</span>
|
<div class="flex" style="width: 120px; justify-content: start; align-items: center">
|
||||||
|
<div style="width: 80px; text-align: left">
|
||||||
|
{{ scope.row.amount }}
|
||||||
|
</div>
|
||||||
|
<el-tooltip v-if="scope.row.payStatus === '3'" class="box-item" effect="light" placement="top">
|
||||||
|
<el-icon color="#909399"><QuestionFilled /></el-icon>
|
||||||
|
<template #content>
|
||||||
|
<div style="line-height: 1.8; font-size: 13px; width: 180px">
|
||||||
|
<div class="flex justify-between" style="text-align: right">
|
||||||
|
<span>总金额</span>
|
||||||
|
<span>{{ scope.row.amount }}¥</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-between" style="text-align: right">
|
||||||
|
<span>优惠金额</span>
|
||||||
|
<span>− {{ scope.row.singleDiscountAmount }}¥</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-between" style="text-align: right">
|
||||||
|
<span>已交金额</span>
|
||||||
|
<span>− {{ scope.row.paidAmount }}¥</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="flex justify-between cursor-pointer"
|
||||||
|
style="margin-top: 6px; border-top: 1px solid #ccc; text-align: right; padding-top: 6px"
|
||||||
|
>
|
||||||
|
<span>待缴金额</span>
|
||||||
|
<span style="font-weight: bold; color: red">{{ scope.row.needPayAmount }}¥</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="支付状态" prop="payStatus">
|
<el-table-column label="支付状态" prop="payStatus">
|
||||||
@@ -202,6 +232,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -213,6 +244,7 @@ import DictTag from '@/components/DictTag/index.vue';
|
|||||||
import PageHeader from '@/components/Pageheader/index.vue';
|
import PageHeader from '@/components/Pageheader/index.vue';
|
||||||
import { Data, getHouseMain, House } from '@/api/system/house';
|
import { Data, getHouseMain, House } from '@/api/system/house';
|
||||||
import { billlistType, billQuery } from '@/api/system/SdbCashier';
|
import { billlistType, billQuery } from '@/api/system/SdbCashier';
|
||||||
|
import { QuestionFilled } from '@element-plus/icons-vue';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { com_resident_relationship } = toRefs<any>(proxy?.useDict('com_resident_relationship'));
|
const { com_resident_relationship } = toRefs<any>(proxy?.useDict('com_resident_relationship'));
|
||||||
@@ -290,6 +322,11 @@ function getBillByHouse(info: House) {
|
|||||||
total.value = res.total;
|
total.value = res.total;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function getList() {
|
||||||
|
if (HouseInfo.value) {
|
||||||
|
getBillByHouse(HouseInfo.value.house);
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@@ -284,6 +284,10 @@ type parkingReviewProcess = {
|
|||||||
submitTime: string;
|
submitTime: string;
|
||||||
propertyTime: string;
|
propertyTime: string;
|
||||||
certificationTime: string;
|
certificationTime: string;
|
||||||
|
'parkingId': string;
|
||||||
|
'propertyReviewFeedback': string;
|
||||||
|
'carId': null;
|
||||||
|
'residentId': null;
|
||||||
};
|
};
|
||||||
const parkingReviewInfo = ref<parkingReviewType>({
|
const parkingReviewInfo = ref<parkingReviewType>({
|
||||||
parking: {
|
parking: {
|
||||||
@@ -329,7 +333,11 @@ const parkingReviewInfo = ref<parkingReviewType>({
|
|||||||
certificationStatus: null,
|
certificationStatus: null,
|
||||||
submitTime: null,
|
submitTime: null,
|
||||||
propertyTime: null,
|
propertyTime: null,
|
||||||
certificationTime: null
|
certificationTime: null,
|
||||||
|
parkingId: null,
|
||||||
|
propertyReviewFeedback: null,
|
||||||
|
carId: null,
|
||||||
|
residentId: null
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -346,6 +354,7 @@ function getInfo() {
|
|||||||
res.data.car.carImageUrlList = res.data.car.carImageUrl.split(',').filter(Boolean) ?? [];
|
res.data.car.carImageUrlList = res.data.car.carImageUrl.split(',').filter(Boolean) ?? [];
|
||||||
}
|
}
|
||||||
parkingReviewInfo.value = res.data;
|
parkingReviewInfo.value = res.data;
|
||||||
|
form.value.propertyReviewFeedback = res.data.parkingReviewProcess.propertyReviewFeedback || '';
|
||||||
handleActiveStaus(res.data.parkingReviewProcess);
|
handleActiveStaus(res.data.parkingReviewProcess);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,12 @@
|
|||||||
<el-tag v-else type="primary">android</el-tag>
|
<el-tag v-else type="primary">android</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="更新渠道" prop="channel" sortable />
|
<el-table-column align="center" label="更新渠道" prop="channel" sortable>
|
||||||
|
<template #default="scope">
|
||||||
|
<span v-if="scope.row.channel === 'phone'">ios</span>
|
||||||
|
<span v-else>{{ scope.row.channel }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column align="center" label="版本号" prop="versionCode" sortable />
|
<el-table-column align="center" label="版本号" prop="versionCode" sortable />
|
||||||
<el-table-column align="center" label="版本名称" prop="versionName" sortable />
|
<el-table-column align="center" label="版本名称" prop="versionName" sortable />
|
||||||
<el-table-column align="center" label="最低支持版本" prop="minVersionName" sortable />
|
<el-table-column align="center" label="最低支持版本" prop="minVersionName" sortable />
|
||||||
@@ -76,6 +81,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column align="center" label="上传时间" prop="createTime" />
|
<el-table-column align="center" label="上传时间" prop="createTime" />
|
||||||
|
<!-- <el-table-column align="center" label="操作">-->
|
||||||
|
<!-- <template #default="scope">-->
|
||||||
|
<!-- <el-button type="danger">删除</el-button>-->
|
||||||
|
<!-- </template>-->
|
||||||
|
<!-- </el-table-column>-->
|
||||||
</el-table>
|
</el-table>
|
||||||
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
<pagination v-show="total > 0" v-model:limit="queryParams.pageSize" v-model:page="queryParams.pageNum" :total="total" @pagination="getList" />
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -83,7 +93,7 @@
|
|||||||
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
<el-dialog v-model="dialog.visible" :title="dialog.title" append-to-body width="650px">
|
||||||
<el-form ref="versionFormRef" :model="form" :rules="rules" label-width="130px">
|
<el-form ref="versionFormRef" :model="form" :rules="rules" label-width="130px">
|
||||||
<el-form-item label="App端" prop="appChannel">
|
<el-form-item label="App端" prop="appChannel">
|
||||||
<el-select v-model="form.appChannel" placeholder="请选择" @change="handleGetVersionlast">
|
<el-select v-model="form.appChannel" placeholder="请选择" @change="handleGetVersionList">
|
||||||
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
<el-option v-for="(item, index) in com_app_list" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -112,7 +122,7 @@
|
|||||||
<el-radio v-if="form.platform !== appType.ios" value="vivo">vivo</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="vivo">vivo</el-radio>
|
||||||
<el-radio v-if="form.platform !== appType.ios" value="yyb">应用宝</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="yyb">应用宝</el-radio>
|
||||||
<el-radio v-if="form.platform !== appType.ios" value="honor">荣耀</el-radio>
|
<el-radio v-if="form.platform !== appType.ios" value="honor">荣耀</el-radio>
|
||||||
<el-radio v-else value="ios">ios</el-radio>
|
<el-radio v-else value="phone">ios</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@@ -316,13 +326,13 @@ function handleChangePlatform() {
|
|||||||
form.value.downloadUrl = '';
|
form.value.downloadUrl = '';
|
||||||
form.value.channel = '';
|
form.value.channel = '';
|
||||||
if (form.value.platform === 'ios') {
|
if (form.value.platform === 'ios') {
|
||||||
form.value.channel = 'ios';
|
form.value.channel = 'phone';
|
||||||
handleChangeChannel(form.value.channel);
|
handleChangeChannel(form.value.channel);
|
||||||
}
|
}
|
||||||
handleGetVersionlast();
|
handleGetVersionList();
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleGetVersionlast() {
|
function handleGetVersionList() {
|
||||||
getPastVersion(form.value.platform, form.value.appChannel).then((res) => {
|
getPastVersion(form.value.platform, form.value.appChannel).then((res) => {
|
||||||
getlastVersionlist.value = res.data;
|
getlastVersionlist.value = res.data;
|
||||||
form.value.minVersionCode = getlastVersionlist.value[getlastVersionlist.value.length - 1]
|
form.value.minVersionCode = getlastVersionlist.value[getlastVersionlist.value.length - 1]
|
||||||
@@ -338,7 +348,7 @@ const channelUrl = {
|
|||||||
'vivo': 'vivomarket://details?id=',
|
'vivo': 'vivomarket://details?id=',
|
||||||
'honor': 'market://details?id=',
|
'honor': 'market://details?id=',
|
||||||
'yyb': 'tmast://appdetails?pname=',
|
'yyb': 'tmast://appdetails?pname=',
|
||||||
'ios': 'itms-apps://apps.apple.com/cn/app/id'
|
'phone': 'itms-apps://apps.apple.com/cn/app/id6785337718'
|
||||||
};
|
};
|
||||||
function handleChangeChannel(val: string) {
|
function handleChangeChannel(val: string) {
|
||||||
form.value.downloadUrl = channelUrl[val];
|
form.value.downloadUrl = channelUrl[val];
|
||||||
|
|||||||
Reference in New Issue
Block a user