feat: 新增AI客服/积分管理/合同审查/我的报告页面,完善.sign.vue入口与积分显示

This commit is contained in:
2026-10-16 21:09:21 +08:00
parent 8a1da677e4
commit ae97c5d2be
476 changed files with 35618 additions and 540 deletions
+56 -2
View File
@@ -15,15 +15,32 @@
<text class="text-main">您剩余金久信签约宝次数: {{ userInfo.qybNum }}次</text>
<view class="qyb-action-row flex justify-start items-center mt-20">
<view class="qyb-buy-action">
<u-button size="mini" type="primary" @click.native="dialogVisible = true"
<u-button size="max" type="primary" @click.native="dialogVisible = true"
:custom-style="{padding: 0, width: '100%'}">立即购买</u-button>
</view>
<view class="qyb-log-action ml-25">
<u-button size="mini" type="success" @click.native="openLog"
<u-button size="max" type="success" @click.native="openLog"
:custom-style="{padding: 0, width: '100%'}">明细</u-button>
</view>
</view>
</view>
<view class="pb-30">
<text class="text-main">您AI积分剩余: {{ pointsBalance }}积分</text>
<view class="qyb-action-row flex justify-start items-center mt-20" style="display: flex;justify-content:space-between;">
<view class="qyb-buy-action">
<u-button size="max" type="warning" @click="vk.navigateTo('/pages/ai/review')"
:custom-style="{padding: 0, width: '100%'}">合同审查</u-button>
</view>
<view class="qyb-buy-action">
<u-button size="max" type="success" @click="vk.navigateTo('/pages/ai/reports')"
:custom-style="{padding: 0, width: '100%'}">我的报告</u-button>
</view>
<view class="qyb-buy-action">
<u-button size="max" type="primary" @click="vk.navigateTo('/pages/ai/points')"
:custom-style="{padding: 0, width: '100%'}">积分充值</u-button>
</view>
</view>
</view>
<view class="text-main mt-10">温馨提示:尊敬的用户如果您的剩余金久信签约宝次数为0次,请先进行购买,再进行签约。</view>
<view class="card m-20">
<view class="flex justify-between items-center" @click="showSignIntro = !showSignIntro">
@@ -347,6 +364,10 @@
</view>
</el-dialog>
<collapse></collapse>
<!-- AI 客服悬浮按钮 -->
<view class="ai-float-btn" @click="openAiChat">
<text class="ai-float-icon">🤖</text>
</view>
</view>
</template>
@@ -381,6 +402,7 @@ export default {
userInfo: {
qybNum: 0
},
pointsBalance: 0,
pdfUrl: '',
show: false,
showPdf: false,
@@ -801,6 +823,18 @@ export default {
urls: [row.payVoucher],
})
},
openAiChat() {
uni.navigateTo({ url: '/pages/ai/chat' })
},
goTo(url) {
uni.navigateTo({ url })
},
async getPointsBalance() {
const res = await vk.callFunction({ url: 'client/points/kh/getBalance' })
if (res.code === 0 && res.data) {
this.pointsBalance = res.data.balance || 0
}
},
},
onShow() {
this.getQybPackage()
@@ -808,6 +842,7 @@ export default {
this.getSignFlow()
this.getSignTips()
this.getUserInfo()
this.getPointsBalance()
if (uni.getStorageSync('signInfo')) {
this.formData = JSON.parse(uni.getStorageSync('signInfo'))
if (this.formData.signEndDate) this.signEndDate = dayjs(this.formData.signEndDate).format('YYYY-MM-DD')
@@ -845,4 +880,23 @@ page {
.qyb-log-action {
flex: 1;
}
.ai-float-btn {
position: fixed;
bottom: 195px;
right: 30rpx;
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background: linear-gradient(135deg, #a92924, #d4574e);
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4rpx 20rpx rgba(169, 41, 36, 0.4);
z-index: 999;
}
.ai-float-icon {
font-size: 48rpx;
}
</style>