商務卡片頁製作

dev
DESKTOP-8UQ1PPR\09158 3 years ago
parent 672ca8652f
commit d3176e17c4

@ -10,7 +10,11 @@ export const bindCard = async (params) =>
export const checkLineId = async (lineid) => export const checkLineId = async (lineid) =>
ajax(`/auth/checkLineId`, { lineid }, "GET"); ajax(`/auth/checkLineId`, { lineid }, "GET");
export const getUserInfo = async () => ajax(`/user/getUserInfo`); export const getUserInfo = async () =>
ajax(`/user/getUserInfo`);
export const updateUserInfo = async () =>
ajax(`/user/updateUserInfo`);
export const setUserLevel = async (level) => export const setUserLevel = async (level) =>
ajax(`/user/setUserLevel`, { level }, "POST"); ajax(`/user/setUserLevel`, { level }, "POST");

@ -27,16 +27,16 @@
} }
.text-moBlue { .text-moBlue {
color: #486499 !important; color: #4a677d !important;
} }
.bg-moBlue { .bg-moBlue {
background-color: #486499 !important; background-color: #4a677d !important;
} }
.bd-moBlue { .bd-moBlue {
border-style: solid; border-style: solid;
border-color: #486499 !important; border-color: #4a677d !important;
} }
.text-darkBlue { .text-darkBlue {
@ -339,13 +339,13 @@ h1, h2, h3, h4, h5, h6 {
} }
.btn-moBlue { .btn-moBlue {
border: 1px solid #486499 !important; border: 1px solid #4a677d !important;
color: #fff; color: #fff;
background-color: #486499; background-color: #4a677d;
} }
.btn-moBlue:hover { .btn-moBlue:hover {
color: #fff; color: #fff;
background-color: #384d76; background-color: #374d5d;
} }
.btn-darkBlue { .btn-darkBlue {
@ -431,14 +431,14 @@ h1, h2, h3, h4, h5, h6 {
} }
.btn-outline-moBlue { .btn-outline-moBlue {
border: 1px solid #486499; border: 1px solid #4a677d;
color: #486499; color: #4a677d;
background-color: transparent; background-color: transparent;
background-color: #fff; background-color: #fff;
} }
.btn-outline-moBlue:hover { .btn-outline-moBlue:hover {
color: #fff; color: #fff;
background-color: #486499; background-color: #4a677d;
} }
.btn-outline-darkBlue { .btn-outline-darkBlue {
@ -639,6 +639,11 @@ h1, h2, h3, h4, h5, h6 {
} }
/* ========================================= stage ============================================= */ /* ========================================= stage ============================================= */
.page {
min-height: 100vh;
background-color: #f1e6e2;
}
.content { .content {
padding: 15px 0; padding: 15px 0;
background-color: #b2c4ce; background-color: #b2c4ce;

@ -18,7 +18,7 @@ $radius: (
$basicColor: ( $basicColor: (
lightBlue:#b2c4ce, lightBlue:#b2c4ce,
skyBlue:#5b7b94, skyBlue:#5b7b94,
moBlue:#486499, moBlue:#4a677d,
darkBlue:#345068, darkBlue:#345068,
lightPink:#f1e6e2, lightPink:#f1e6e2,
cherry:#E31D64, cherry:#E31D64,

@ -93,6 +93,11 @@
/* ========================================= stage ============================================= */ /* ========================================= stage ============================================= */
.page{
min-height:100vh;
background-color: #f1e6e2 ;
}
.content{ .content{
padding: 15px 0; padding: 15px 0;
background-color: #b2c4ce; background-color: #b2c4ce;

File diff suppressed because it is too large Load Diff

@ -1,73 +1,38 @@
<template>
<div>
<van-nav-bar
title="自製名片"
right-text="關閉"
@click-right="$router.push('/')"
/>
<div class="recommend">
<div style="text-align: center; line-height: 24px; font-weight: bold;">
<br />
<span style="font-size: 19px; color: #cc0000;">
您沒有設定自製名片權限<br />
請點選下方立即購買按鈕<br />
開通自製名片相關服務<br />
</span>
<br />
<ul>
<li><img src="./images/0001.png" width="100%"></li>
<li><img src="./images/0002.png" width="100%"></li>
<li><img src="./images/0003.png" width="100%"></li>
<li><img src="./images/0004.png" width="100%"></li>
</ul>
<form name="" class="fbqs" style="text-align: center;">
<input type="button" value="立即購買" class="submit" style="padding: 3%; width: 50%; margin-left: auto; margin-right: auto;"
@click="router.push('/shop')"
>
</form>
</div>
</div>
<Footer/>
</div>
</template>
<script setup> <script setup>
import { useRouter} from 'vue-router' import { useRouter} from 'vue-router'
import Footer from '@/components/Footer.vue' import Footer from '@/components/Footer.vue'
const router = useRouter() const router = useRouter()
</script> </script>
<template>
<div class="level page">
<van-nav-bar class="bg-skyBlue py-1" left-arrow @click-left="$router.push('/')">
<template #title>
<h5 class="text-white mb-1"><strong>自製名片</strong></h5>
</template>
<template #left>
<h4><i class="fa-solid fa-angle-left text-white" :style="{opacity:0.5}"></i></h4>
</template>
</van-nav-bar>
<van-cell-group inset class="mt-3">
<div class="text-darkBlue text-center py-5">
<div class="text-tomatoRed text-center mb-4"><i class="fa-solid fa-triangle-exclamation fa-5x"></i></div>
<h5 class="text-darkBlue text-center mb-2"><strong>您沒有設定自製名片權限</strong></h5>
<h6 class="text-darkBlue text-center mb-5">請點選下方立即購買按鈕<br />開通自製名片相關服務</h6>
<van-button class="btn-darkBlue px-5" icon="balance-o" size="normal" @click="router.push('/shop')"></van-button>
</div>
</van-cell-group>
</div>
</template>
<style src="@/assets/css/main.css"></style>
<style lang="less" scoped> <style lang="less" scoped>
.recommend {
width: 100%;
padding-top: 2%;
}
.recommend ul {
width: 80%;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
margin: 0 auto 5% auto;
}
.recommend ul li {
width: 21%;
display: flex;
flex-direction: column;
margin: 1%;
}
.recommend ul li p {
margin-top: 2%;
font-size: 15px;
color: #333;
}
.recommend ul li span {
font-size: 0.24rem;
color: #999;
padding-top: 0.15rem;
}
</style> </style>

@ -199,7 +199,8 @@ const overdue = computed(() => {
}); });
const goCardEdit = () => { const goCardEdit = () => {
if (userInfo.value.nc_type < 2) { // if (userInfo.value.nc_type < 2) {
if (userInfo.value.level < 2) {
router.push("/card/notice"); router.push("/card/notice");
} else { } else {
router.push("/card/edit"); router.push("/card/edit");
@ -225,6 +226,11 @@ const doCopyUid = () => {
showToast("已放入剪貼簿"); showToast("已放入剪貼簿");
}; };
const doShare = () => {
toClipboard(`https://liff.line.me/${import.meta.env.VITE_APP_LINE_LIFF_ID}/?aid=${store.state.user.userInfo.agent_prefix}`)
showToast("已放入剪貼簿");
};
const bindTggo = () => { const bindTggo = () => {
console.log(userInfo.value); console.log(userInfo.value);
let url = `https://www.tggo.com.tw/u.cgi?&mnm=mybinding&ncode=${userInfo.value.uniqid}&name=${userInfo.value.real_name}&openExternalBrowser=1`; let url = `https://www.tggo.com.tw/u.cgi?&mnm=mybinding&ncode=${userInfo.value.uniqid}&name=${userInfo.value.real_name}&openExternalBrowser=1`;
@ -243,7 +249,7 @@ const handleLogout = () => {
</script> </script>
<template> <template>
<div class="home bg-lightPink" v-cloak> <div class="home page" v-cloak>
<van-nav-bar class="bg-darkBlue py-3"> <van-nav-bar class="bg-darkBlue py-3">
<template #title> <template #title>
<h4 class="text-white mb-1"><strong>UTEL電子名片系統</strong></h4> <h4 class="text-white mb-1"><strong>UTEL電子名片系統</strong></h4>
@ -287,7 +293,7 @@ const handleLogout = () => {
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div class="btn btn-sm text-darkBlue" @click="handleLogout"> <div class="btn btn-sm text-darkBlue" @click="doShare">
<h4><i class="fa fa-share-alt" aria-hidden="true"></i></h4> <h4><i class="fa fa-share-alt" aria-hidden="true"></i></h4>
</div> </div>
<div class="btn btn-sm text-darkBlue" @click="handleLogout"> <div class="btn btn-sm text-darkBlue" @click="handleLogout">
@ -475,6 +481,7 @@ const handleLogout = () => {
<style src="@/assets/css/main.css"></style> <style src="@/assets/css/main.css"></style>
<style lang="less" scoped> <style lang="less" scoped>
.home{
.wrapper { .wrapper {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -585,5 +592,6 @@ const handleLogout = () => {
} }
} }
} }
}
</style> </style>

@ -14,7 +14,7 @@ import { useRouter } from 'vue-router'
import { showToast } from 'vant' import { showToast } from 'vant'
import { showLoadingToast,showSuccessToast } from 'vant'; import { showLoadingToast,showSuccessToast } from 'vant';
import { getUserInfo , updateCard , searchConnection, addUserFavi, setUserNfcTpl} from '@/api' import { getUserInfo, updateUserInfo, updateCard, searchConnection, addUserFavi, setUserNfcTpl} from '@/api'
const URL = window.URL || window.webkitURL; const URL = window.URL || window.webkitURL;
@ -25,6 +25,7 @@ const form = ref({addon:[]})
const genderChecked = ref() const genderChecked = ref()
const resourceActive = ref('1');
const fileList = ref([]); const fileList = ref([]);
@ -71,6 +72,7 @@ const validatorTel = (val) => {
if (userRes.data.nfc_addon && (userRes.data.nfc_addon.length > 0)) { if (userRes.data.nfc_addon && (userRes.data.nfc_addon.length > 0)) {
form.value.addon = JSON.parse(userRes.data.nfc_addon) form.value.addon = JSON.parse(userRes.data.nfc_addon)
} }
console.log(form,"form")
const onCrop = () => { const onCrop = () => {
const { canvas } = myCrop.value.getResult(); const { canvas } = myCrop.value.getResult();
@ -150,7 +152,7 @@ const onSubmit = async () => {
message: '資料更新中...', message: '資料更新中...',
forbidClick: true, forbidClick: true,
}); });
// console.log(form.value,"test");
let res = await updateCard(form.value) let res = await updateCard(form.value)
if(res.code===200){ if(res.code===200){
showSuccessToast('更新成功') showSuccessToast('更新成功')
@ -241,7 +243,7 @@ onBeforeMount(async () => {
</script> </script>
<template> <template>
<div class="member bg-lightPink"> <div class="member page">
<van-nav-bar class="bg-skyBlue py-1" left-arrow @click-left="$router.push('/')"> <van-nav-bar class="bg-skyBlue py-1" left-arrow @click-left="$router.push('/')">
<template #title> <template #title>
<h5 class="text-white mb-1"><strong>會員資料</strong></h5> <h5 class="text-white mb-1"><strong>會員資料</strong></h5>
@ -420,7 +422,7 @@ onBeforeMount(async () => {
</template> </template>
</van-field> </van-field>
<van-collapse accordion> <van-collapse v-model="resourceActive" accordion>
<van-collapse-item name="1"> <van-collapse-item name="1">
<template #title> <template #title>
<i class="fa-regular fa-gem text-darkBlue"></i> 我能分享的資源 <i class="fa-regular fa-gem text-darkBlue"></i> 我能分享的資源
@ -635,7 +637,9 @@ onBeforeMount(async () => {
/> />
</van-col> </van-col>
</van-row> </van-row>
</van-cell-group>
<van-cell-group inset>
<van-list <van-list
v-model:loading="loading" v-model:loading="loading"
:finished="finished" :finished="finished"
@ -678,10 +682,11 @@ onBeforeMount(async () => {
<div class="bottom collapse" :id="`c${index}`" data-parent="#accordion"> <div class="bottom collapse" :id="`c${index}`" data-parent="#accordion">
<h6 class="text-darkBlue"><strong>我能分享的資源</strong></h6> <h6 class="text-darkBlue"><strong>我能分享的資源</strong></h6>
<div class="desc">{{item.supply}}</div> <div class="desc">{{item.supply}}</div>
<div class="url py-2">網址<a href=""></a></div> <div class="url py-2">網址<a :href="item.supply_link" class="text-moBlue">{{item.supply_link}}</a></div>
<hr/> <hr/>
<h6 class="text-darkBlue"><strong>我需要的資源</strong></h6> <h6 class="text-darkBlue"><strong>我需要的資源</strong></h6>
<div class="desc">{{item.demand}}</div> <div class="desc">{{item.demand}}</div>
<div class="url py-2">網址<a :href="item.demand_link" class="text-moBlue">{{item.demand_link}}</a></div>
</div> </div>
</div> </div>
@ -701,10 +706,9 @@ onBeforeMount(async () => {
</template> </template>
</van-cell> </van-cell>
<div class="text-center bg-dark px-5 pt-3"> <div class="block">
<van-image <van-image
width="100%" width="100%"
height="500"
position="top" position="top"
fit="cover" fit="cover"
src="/src/assets/images/tp/tp_1.jpg" src="/src/assets/images/tp/tp_1.jpg"
@ -725,8 +729,8 @@ onBeforeMount(async () => {
<van-cell-group inset> <van-cell-group inset>
<van-row> <van-row>
<van-col span="12" v-for="(item, index) in tab3list" :key="index"> <van-col span="12" v-for="(item, index) in tab3list" :key="index">
<div class="imgBtn"> <div class="imgBtn" :data-id="index">
<div class="imgCnt">{{ item }} <div class="imgCnt">
<van-image <van-image
src="/src/assets/images/tp/tp_1.jpg" src="/src/assets/images/tp/tp_1.jpg"
/> />
@ -780,6 +784,7 @@ onBeforeMount(async () => {
align-items: center; align-items: center;
.avatar{ .avatar{
width: 55px; width: 55px;
min-width: 55px;
aspect-ratio: 1/1; aspect-ratio: 1/1;
border-radius: 50%; border-radius: 50%;
margin-right: 10px; margin-right: 10px;
@ -814,6 +819,14 @@ onBeforeMount(async () => {
} }
.cnt3{ .cnt3{
.block{
height:500px;
text-align: center;
background-color: #000;
padding: 20px 35px;
overflow: hidden;
overflow-y: auto;
}
.imgBtn{ .imgBtn{
padding: 10px; padding: 10px;
margin: 10px; margin: 10px;

@ -152,7 +152,7 @@ const onSubmit = async () => {
</script> </script>
<template> <template>
<div class="reg-container bg-lightPink"> <div class="reg-container page">
<van-nav-bar class="bg-skyBlue py-2"> <van-nav-bar class="bg-skyBlue py-2">
<template #title> <template #title>
<h5 class="text-white mb-1"><strong>{{title}}</strong></h5> <h5 class="text-white mb-1"><strong>{{title}}</strong></h5>

Loading…
Cancel
Save