Commit b023f64b authored by Step_by_step's avatar Step_by_step

fix: 我的奖励券,合同签约

parent 46e3bfa4
...@@ -19,7 +19,6 @@ npm run preview 本地预览打包完的文件 ...@@ -19,7 +19,6 @@ npm run preview 本地预览打包完的文件
} }
</route> </route>
``` ```
&#x1F170;
--- ---
...@@ -30,7 +29,7 @@ npm run preview 本地预览打包完的文件 ...@@ -30,7 +29,7 @@ npm run preview 本地预览打包完的文件
1. 融资计算器 &#x2705;&#x270B;.5) 1. 融资计算器 &#x2705;&#x270B;.5)
2. 融资意向 &#x2705;&#x270B;.5) 2. 融资意向 &#x2705;&#x270B;.5)
3. 项目查询 (&#x270B;1.5 项目信息明细页面需要重头画) 3. 项目查询 (&#x270B;1.5 项目信息明细页面需要重头画)
4. 合同签约 (E签宝, 预览签署文件) (&#x270B; 2) 4. 合同签约 (E签宝, 预览签署文件)&#x2705;&#x270B; 2)
5. 还款计划 (支付)(&#x270B; 2) 5. 还款计划 (支付)(&#x270B; 2)
6. 还款计划查询 (发票预览下载) (&#x270B; 2) 6. 还款计划查询 (发票预览下载) (&#x270B; 2)
7. 自助服务 &#x2705;&#x270B;.5) 7. 自助服务 &#x2705;&#x270B;.5)
...@@ -43,7 +42,7 @@ npm run preview 本地预览打包完的文件 ...@@ -43,7 +42,7 @@ npm run preview 本地预览打包完的文件
#### 我的 #### 我的
1. 我的奖励券 (&#x270B; 1) 1. 我的奖励券 &#x2705;&#x270B; 1)
2. 关联项目 &#x2705; (验证码)(&#x270B; 1.5) 2. 关联项目 &#x2705; (验证码)(&#x270B; 1.5)
3. 投诉与建议 &#x2705;&#x270B; .5) 3. 投诉与建议 &#x2705;&#x270B; .5)
4. 关于我们 &#x2705;&#x270B; .5) 4. 关于我们 &#x2705;&#x270B; .5)
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
"vant": "^3.6.6", "vant": "^3.6.6",
"vconsole": "^3.15.0", "vconsole": "^3.15.0",
"vue": "^3.2.41", "vue": "^3.2.41",
"vue-pdf-embed": "^1.1.5",
"vue-router": "^4.1.5" "vue-router": "^4.1.5"
}, },
"devDependencies": { "devDependencies": {
...@@ -36,4 +37,4 @@ ...@@ -36,4 +37,4 @@
"vite-plugin-pages": "^0.27.1", "vite-plugin-pages": "^0.27.1",
"vite-plugin-style-import": "1.4.1" "vite-plugin-style-import": "1.4.1"
} }
} }
\ No newline at end of file
<template> <template>
<SwipeCell class="swipe" :disabled="!isSwiper"> <SwipeCell class="swipe" :disabled="!isSwiper">
<div class="box"> <div class="box" @click="$emit('click')">
<template v-if="title"> <template v-if="title">
<h1 class="title "> <h1 class="title ">
{{ title }} {{ title }}
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</table> </table>
</div> </div>
<template #right> <template #right v-if="isSwiper">
<Button square type="danger" style="height: 100%" @click.stop="$emit('clickRight')"> <Button square type="danger" style="height: 100%" @click.stop="$emit('clickRight')">
<slot name="rightTxt"> <slot name="rightTxt">
<Icon name="delete" color="#fff" size="30" /> <Icon name="delete" color="#fff" size="30" />
...@@ -51,7 +51,7 @@ defineProps({ ...@@ -51,7 +51,7 @@ defineProps({
} }
}) })
defineEmits(['clickRight']) defineEmits(['clickRight', 'click'])
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<NavBar title="试算详情" left-arrow @click-left="goBack" /> <NavBar title="试算详情" left-arrow @click-left="goBack" />
<Noticce detail="如需使用其他测算方式可联系当地代理店"></Noticce> <Notice detail="如需使用其他测算方式可联系当地代理店"></Notice>
<div class="content"> <div class="content">
<section class="form-area"> <section class="form-area">
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<script setup> <script setup>
import { goBack } from "@/utils/globalFun" import { goBack } from "@/utils/globalFun"
import { NavBar, Button } from "vant"; import { NavBar, Button } from "vant";
import Noticce from "@/components/Notice.vue" import Notice from "@/components/Notice.vue"
import AuForm from '@/components/AuForm.vue'; import AuForm from '@/components/AuForm.vue';
import AuFormClass from "@/components/useAuForm"; import AuFormClass from "@/components/useAuForm";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
......
import { get, put, post, File, deleteReq } from '@/utils/http'
const baseURL = import.meta.env.VITE_HTTP_BASE_URL
const api = {
// getMakingList (data) { // 查询合同制作列表
// return get(
// `${baseURL}/hlct/v1/0/contracts/toMake`,
// {...data}
// )
// },
};
export default api;
<template>
<div class="box" @click="$emit('click')">
<div class="left">
<p class="priColor">合同编号:</p>
<p>代理店:</p>
<p v-if="!sdata.isSign">签署截止日:</p>
</div>
<div class="center">
<p>{{ sdata.contractId }}</p>
<p>{{ sdata.dl }}</p>
<p v-if="!sdata.isSign">{{ sdata.date }}</p>
</div>
<div class="right" :class="[sdata.isSign ? 'gayColor' : 'priColor']">
{{ sdata.isSign ? '已签署' : '未签署' }}
</div>
</div>
</template>
<script setup>
defineProps({
sdata: {
type: Object,
default: {
isSign: false,
contractId: '',
dl: "",
date: ""
}
}
})
defineEmits(['click'])
</script>
<style scoped lang="less">
.box {
box-sizing: border-box;
height: auto;
background-color: white;
width: 92%;
padding: 8px 8px;
margin: 0 auto;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
display: flex;
}
.box+.box {
margin-top: 10px;
}
.left {
flex: 1 0 30%;
}
.center {
flex: 1 0 50%;
}
.left p,
.center p {
line-height: 25px;
color: gray;
}
.right {
flex: 1 0 20%;
display: flex;
justify-content: center;
align-items: center;
font-weight: 600;
}
.priColor {
color: #0277bc !important;
}
.gayColor {
color: gray !important;
}
</style>
\ No newline at end of file
const state = {};
export default {
namespaced: true,
state,
};
<template>
<div class="container">
<NavBar title="合同签约" left-arrow @click-left="goBack" />
<section class="list">
<Tabs v-model:active="active" title-active-color="#0277bc" color="#0277bc">
<Search v-model="value" placeholder="请输入合同编号/代理店" />
<Tab title="未签署">
<Notice detail="只对已关联的项目发送合同签约链接" />
<PullRefresh v-model="refreshing" @refresh="onRefresh" class="scroll">
<List :finished="finished" finished-text="没有更多了" @load="loadApproval">
<SignListItem v-for="item in notList" :sdata="item" @click="jump" />
</List>
</PullRefresh>
</Tab>
<Tab title="已签署">
<PullRefresh v-model="refreshing" @refresh="onRefresh" class="scroll">
<List :finished="finished" finished-text="没有更多了" @load="loadApproval">
<SignListItem v-for="item in alreadyList" :sdata="item" @click="jump" />
</List>
</PullRefresh>
</Tab>
</Tabs>
</section>
</div>
</template>
<script setup>
import { goBack } from "@/utils/globalFun"
import { NavBar, List, PullRefresh, Tab, Tabs, Search } from "vant";
import Notice from '@/components/Notice.vue'
import SignListItem from '../components/SignListItem.vue'
import api from "../api";
import { useRouter } from "vue-router";
const notList = $ref([
{
isSign: false,
contractId: 'KFLC22022002',
dl: "河南焦作",
date: "2022-11-03"
},
{
isSign: false,
contractId: 'KFLC22022002',
dl: "河南焦作",
date: "2022-11-03"
},
])
const alreadyList = $ref([
{
isSign: true,
contractId: 'KFLC22022002',
dl: "河南焦作",
date: "2022-11-03"
},
{
isSign: true,
contractId: 'KFLC22022002',
dl: "河南焦作",
date: "2022-11-03"
},
])
const refreshing = $ref(true);
const finished = $ref(true);
const onRefresh = () => {
// 下拉重置参数,重新加载
};
const loadApproval = () => {
}
const router = useRouter();
const jump = () => {
router.push({ name: 'contractSign-views-pdfPre' })
}
</script>
<style scoped lang="less">
.list {
box-sizing: border-box;
height: calc(100vh - var(--van-nav-bar-height));
display: flex;
flex-direction: column;
justify-content: space-between;
padding-bottom: 10px;
}
.scroll {
box-sizing: border-box;
height: calc(100vh - 56vw);
overflow-y: auto;
}
</style>
<route>
{
meta: {
title: '合同签约'
}
}
</route>
<template>
<div class="container">
<NavBar title="合同预览" left-arrow @click-left="goBack" />
<div class="content">
<VuePdfEmbed ref="pdfRef" :source="pdfSource" :page="page" @rendered="handleDocumentRender"></VuePdfEmbed>
</div>
</div>
</template>
<script setup>
import { goBack } from "@/utils/globalFun"
import { NavBar, Toast } from "vant";
import VuePdfEmbed from 'vue-pdf-embed'
import { watchEffect } from 'vue'
const isLoading = $ref(true)
const page = $ref(null)
const pdfRef = $ref('')
const pageCount = $ref(1)
const pdfSource = $ref('https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/web/compressed.tracemonkey-pldi-09.pdf')
watchEffect(() => {
if (isLoading) {
Toast.loading({ message: '加载中...', forbidClick: true, overlay: true, duration: 0 });
} else {
Toast.clear()
}
})
const handleDocumentRender = (args) => {
isLoading = false
pageCount = pdfRef.pageCount
}
</script>
<style lang="less" scoped>
.content {
height: calc(100% - var(--van-nav-bar-height));
overflow-y: auto;
}
.vue-pdf-embed {
}
</style>
\ No newline at end of file
<template> <template>
<SwipeCell class="swipe" :disabled="true"> <SwipeCell class="swipe" :disabled="true">
<div class="box"> <div class="box" @click="$emit('click')">
<p> <p>
<span>申请编号:</span> <span>申请编号:</span>
<span>{{ info.id }}</span> <span>{{ info.id }}</span>
...@@ -32,6 +32,7 @@ defineProps({ ...@@ -32,6 +32,7 @@ defineProps({
} }
}) })
defineEmits(['click'])
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<NavBar title="授权" left-arrow @click-left="goBack" /> <NavBar title="授权" left-arrow @click-left="goBack" />
<Noticce detail="授权该代理店后,该代理店可查看您的信息。" /> <Notice detail="授权该代理店后,该代理店可查看您的信息。" />
<section class="form"> <section class="form">
<CellGroup inset> <CellGroup inset>
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
<script setup> <script setup>
import { goBack } from "@/utils/globalFun" import { goBack } from "@/utils/globalFun"
import Noticce from "@/components/Notice.vue" import Notice from "@/components/Notice.vue"
import { NavBar, Field, CellGroup, Popup, Picker, Button } from "vant"; import { NavBar, Field, CellGroup, Popup, Picker, Button } from "vant";
const showArea = $ref(false) const showArea = $ref(false)
......
import { get, put, post, File, deleteReq } from '@/utils/http'
const baseURL = import.meta.env.VITE_HTTP_BASE_URL
const api = {
// getMakingList (data) { // 查询合同制作列表
// return get(
// `${baseURL}/hlct/v1/0/contracts/toMake`,
// {...data}
// )
// },
};
export default api;
<template>
<div class="box" @click="$emit('click')">
<div class="left">
<p>
<span>券号:</span>
<span>{{ sdata.id }}</span>
</p>
<p>
<span>项目编号:</span>
<span>{{ sdata.pid }}</span>
</p>
<p v-if="sdata.isUse">有效期至 2022.10.28</p>
</div>
<div class="right">
<p :class="[sdata.isUse ? 'used' : 'not_user']">未使用</p>
<p v-if="!sdata.isUse">查看兑换码</p>
</div>
</div>
</template>
<script setup>
defineProps({
sdata: {
type: Object,
default: {
isUse: false,
id: '1234777',
pid: '****************',
VDate: '2022.10.28'
}
}
})
defineEmits(['click'])
</script>
<style scoped lang="less">
.box {
box-sizing: border-box;
min-height: 90px;
background-color: #f3f8f9;
width: 92%;
padding: 8px 8px;
margin: 0 auto;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
display: flex;
box-shadow: 2px 1px 4px 3px rgba(211, 237, 249, .8);
color: #31b1f3;
font-size: 14px;
line-height: 23px;
background-image: url(../assets/kflc.png);
background-size: 42vw;
background-position: top right;
background-repeat: no-repeat;
}
.box+.box {
margin-top: 20px;
}
.left {
flex: 1 0 70%;
}
.right {
flex: 1 0 30%;
display: flex;
flex-direction: column-reverse;
align-items: flex-end;
img {
height: 30px;
}
}
.not_user {
color: #64ce6f;
font-weight: 600;
letter-spacing: 5px;
font-size: 15px;
}
.used {
color: #fd4c48;
font-weight: 600;
letter-spacing: 5px;
font-size: 15px;
}
</style>
\ No newline at end of file
const state = {};
export default {
namespaced: true,
state,
};
<template>
<div class="container">
<NavBar title="我的奖励券" left-arrow @click-left="goBack" />
<section class="list">
<PullRefresh v-model="refreshing" @refresh="onRefresh" class="scroll">
<List :finished="finished" finished-text="没有更多了" @load="loadApproval">
<TicketListItem v-for="item in list" :sdata="item" />
</List>
</PullRefresh>
</section>
</div>
</template>
<script setup>
import { goBack } from "@/utils/globalFun"
import { NavBar, List, PullRefresh } from "vant";
import TicketListItem from '../components/TicketListItem.vue'
import api from "../api";
import { useRouter } from "vue-router";
const list = $ref([
{
isUse: false,
id: '1234777',
pid: '****************',
VDate: '2022.10.28'
},
{
isUse: true,
id: '1234777',
pid: '****************',
VDate: '2022.10.28'
},
])
const refreshing = $ref(true);
const finished = $ref(true);
const onRefresh = () => {
// 下拉重置参数,重新加载
};
const loadApproval = () => {
}
const router = useRouter();
</script>
<style scoped lang="less">
.list {
box-sizing: border-box;
height: calc(100vh - var(--van-nav-bar-height));
display: flex;
flex-direction: column;
justify-content: space-between;
padding-top: 10px;
padding-bottom: 10px;
}
.scroll {
box-sizing: border-box;
height: calc(100vh - var(--van-nav-bar-height));
overflow-y: auto;
}
</style>
<route>
{
meta: {
title: '我的奖励券'
}
}
</route>
...@@ -1387,6 +1387,11 @@ vue-demi@*: ...@@ -1387,6 +1387,11 @@ vue-demi@*:
resolved "http://nexus.saas.hand-china.com/repository/hzero-npm-group/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" resolved "http://nexus.saas.hand-china.com/repository/hzero-npm-group/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"
integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==
vue-pdf-embed@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/vue-pdf-embed/-/vue-pdf-embed-1.1.5.tgz#e9a2ff6a027ce4afce9ec558aa5d683fb775ae34"
integrity sha512-aOUKlPFML9abOmFJgCuDujzcXmjN1Ck3X3vt0h2N/EGZYASS9TRXu96s+NzwZDr13iTZ8LGskLOzzXvf7FIpwQ==
vue-router@^4.1.5: vue-router@^4.1.5:
version "4.1.6" version "4.1.6"
resolved "http://nexus.saas.hand-china.com/repository/hzero-npm-group/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1" resolved "http://nexus.saas.hand-china.com/repository/hzero-npm-group/vue-router/-/vue-router-4.1.6.tgz#b70303737e12b4814578d21d68d21618469375a1"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment