|
|
@@ -0,0 +1,157 @@
|
|
|
+<template>
|
|
|
+ <view class="page">
|
|
|
+ <view class="hero card">
|
|
|
+ <view class="org">安徽建工集团医院纪检室</view>
|
|
|
+ <view class="slogan">扫码监督 · 阳光纪检</view>
|
|
|
+ <view class="tip">扫码即可反馈 · 支持匿名 · 信息严格保密</view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="grid">
|
|
|
+ <view class="entry card" @click="goNotice">
|
|
|
+ <view class="title">在线反馈</view>
|
|
|
+ <view class="desc">投诉表扬
|
|
|
+有序反馈</view>
|
|
|
+ </view>
|
|
|
+ <view class="entry card" @click="goSuggest">
|
|
|
+ <view class="title">建言献策</view>
|
|
|
+ <view class="desc">建言献策
|
|
|
+促进完善</view>
|
|
|
+ </view>
|
|
|
+ <view class="entry card" @click="goHotline">
|
|
|
+ <view class="title">监督热线</view>
|
|
|
+ <view class="desc">电话邮箱
|
|
|
+一键联系</view>
|
|
|
+ </view>
|
|
|
+ <view class="entry card" @click="openShare">
|
|
|
+ <view class="title">扫码分享</view>
|
|
|
+ <view class="desc">生成二维码
|
|
|
+转发分享</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view v-if="shareVisible" class="mask" @click="shareVisible = false">
|
|
|
+ <view class="share-box card" @click.stop>
|
|
|
+ <view class="share-title">{{ qr.title || '安建医院纪检 · 扫码反馈' }}</view>
|
|
|
+ <image v-if="qr.imageUrl" class="qr-img" :src="qr.imageUrl" mode="aspectFit" />
|
|
|
+ <view v-else class="qr-fallback">
|
|
|
+ <view>请使用后台上传自定义二维码图片</view>
|
|
|
+ <view class="url">{{ qr.landUrl || '未配置落地链接' }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="btn-primary" @click="shareVisible = false">关闭</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import { getQrcode } from '../../api/public.js'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ shareVisible: false,
|
|
|
+ qr: { title: '', landUrl: '', imageUrl: '' }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ goNotice() {
|
|
|
+ uni.navigateTo({ url: '/pages/notice/index' })
|
|
|
+ },
|
|
|
+ goSuggest() {
|
|
|
+ uni.navigateTo({ url: '/pages/suggest/index' })
|
|
|
+ },
|
|
|
+ goHotline() {
|
|
|
+ uni.navigateTo({ url: '/pages/hotline/index' })
|
|
|
+ },
|
|
|
+ async openShare() {
|
|
|
+ try {
|
|
|
+ const res = await getQrcode()
|
|
|
+ this.qr = res.data || {}
|
|
|
+ } catch (e) {
|
|
|
+ this.qr = {}
|
|
|
+ }
|
|
|
+ this.shareVisible = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+ .page {
|
|
|
+ padding: 32rpx 28rpx 48rpx;
|
|
|
+ }
|
|
|
+ .hero {
|
|
|
+ padding: 40rpx 32rpx;
|
|
|
+ background: linear-gradient(145deg, #a51f23, #8a1a1d);
|
|
|
+ color: #fff;
|
|
|
+ margin-bottom: 28rpx;
|
|
|
+ }
|
|
|
+ .org {
|
|
|
+ font-size: 34rpx;
|
|
|
+ font-weight: 700;
|
|
|
+ }
|
|
|
+ .slogan {
|
|
|
+ margin-top: 12rpx;
|
|
|
+ color: #f0d78c;
|
|
|
+ font-size: 28rpx;
|
|
|
+ }
|
|
|
+ .tip {
|
|
|
+ margin-top: 18rpx;
|
|
|
+ font-size: 24rpx;
|
|
|
+ opacity: 0.9;
|
|
|
+ }
|
|
|
+ .grid {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1fr 1fr;
|
|
|
+ gap: 20rpx;
|
|
|
+ }
|
|
|
+ .entry {
|
|
|
+ padding: 28rpx 24rpx;
|
|
|
+ min-height: 180rpx;
|
|
|
+ }
|
|
|
+ .entry .title {
|
|
|
+ font-size: 30rpx;
|
|
|
+ font-weight: 600;
|
|
|
+ color: var(--primary);
|
|
|
+ }
|
|
|
+ .entry .desc {
|
|
|
+ margin-top: 16rpx;
|
|
|
+ color: var(--muted);
|
|
|
+ font-size: 24rpx;
|
|
|
+ white-space: pre-line;
|
|
|
+ line-height: 1.5;
|
|
|
+ }
|
|
|
+ .mask {
|
|
|
+ position: fixed;
|
|
|
+ inset: 0;
|
|
|
+ background: rgba(0, 0, 0, 0.45);
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ z-index: 99;
|
|
|
+ }
|
|
|
+ .share-box {
|
|
|
+ width: 78%;
|
|
|
+ padding: 32rpx;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ .share-title {
|
|
|
+ font-weight: 600;
|
|
|
+ margin-bottom: 20rpx;
|
|
|
+ }
|
|
|
+ .qr-img {
|
|
|
+ width: 360rpx;
|
|
|
+ height: 360rpx;
|
|
|
+ margin: 0 auto 24rpx;
|
|
|
+ }
|
|
|
+ .qr-fallback {
|
|
|
+ color: var(--muted);
|
|
|
+ font-size: 24rpx;
|
|
|
+ margin-bottom: 24rpx;
|
|
|
+ }
|
|
|
+ .url {
|
|
|
+ margin-top: 12rpx;
|
|
|
+ word-break: break-all;
|
|
|
+ color: var(--ink);
|
|
|
+ }
|
|
|
+</style>
|