Parcourir la source

新增分账管理页面

JXDS18FUJT il y a 1 an
Parent
commit
b72635228c

+ 2 - 1
src/api/birthday/index.ts

@@ -3,7 +3,8 @@ export default {
     studentBirthdayLog(data: {
         birthday: string,
         name: string,
-        sex: number
+        sex: number,
+        isPay:0
     }) {
         return request({
             data,

+ 12 - 8
src/api/openApi/type.d.ts

@@ -6,24 +6,28 @@ interface commonRes {
 export declare namespace openApiRes {
     interface openApiGanZhiGet8ziByDate extends commonRes {
         data: {
-
+            username: string
             piQi: string
             guiren: string
             industry: string
             xiFangWei: string
             chenGuMap: {
-                称骨评语: string,
+                称骨评语: string
                 称骨重量: string
             }
-            birthday: string
-            qingGan: string
-            username: string
+            riYuan: {
+                qr:string
+                score:number
+                xiYong:string[]
+                xiYongOld:string[]
+            }
             sex: 0 | 1
-            birthDay: string
+            birthday: string
             nongDay: string
-            score: number
-            riYuan: string
+            qingGan: string
             reportMap: { 潮湿平衡: string; 缺失五行评语: string; 缺失十神评语: string; 财运: string }
+            ziNvYun:{ "1": string, "2": string, "3": string }
+            caiYun:{ "1": string, "2": string, "3": string }
             guoGuanMap: { "1": string, "2": string, "3": string }
             ganZhiRowVoList: {
                 enColor: string

+ 1 - 1
src/api/request.ts

@@ -2,7 +2,7 @@ import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
 import axiosAdapterUniapp from 'axios-adapter-uniapp'
 import { config } from "vue/types/umd";
 const request = axios.create({
-    baseURL: process.env.NODE_ENV === "production" ? "https://xpgx.zzxcx.net/prod-api/" : "https://xpgx1.zzxcx.net/stage-api/",
+    baseURL: process.env.NODE_ENV === "production" ? "https://xpgx.zzxcx.net/prod-api/" : "https://107j18o08.vicp.fun/",
 
 });
 axios.defaults.adapter = axiosAdapterUniapp

+ 57 - 0
src/components/m-disease-blur/m-disease-blur.vue

@@ -0,0 +1,57 @@
+<template>
+    <view>
+        <view v-for="(item, index) in list">
+            <view v-if="index==0&&isBlur" class="blur-heavy">
+                <text> {{ item.part }}:</text>
+                <text> {{ item.symp }}</text>
+            </view>
+            <view v-else-if="index==1&&isBlur" class="blur-heavy">
+                <text> {{ item.part }}:</text>
+                <text> {{ item.symp }}</text>
+            </view>
+            <view v-else-if="index>1&&isBlur" class="blur-heavy">
+                <text> {{ item.part }}:</text>
+                <text> {{ item.symp }}</text>
+            </view>
+            <view v-else class="">
+                <text> {{ item.part }}:</text>
+                <text> {{ item.symp }}</text>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script lang="ts">
+export default {
+    props: {
+        list: {
+            type: Array,
+            default: []
+        },
+        isBlur:{
+            type:Boolean,
+            default:true
+
+        },
+    },
+
+
+}
+</script>
+
+<style lang="less" scoped>
+.blur-light {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 4rpx #000000;
+}
+
+.blur-medium {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 6rpx #000000;
+}
+
+.blur-heavy {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 16rpx #000000;
+}
+</style>

+ 69 - 0
src/components/m-line-blur/m-line-blur.vue

@@ -0,0 +1,69 @@
+<template>
+    <div>
+        <text class="blur-heavy" v-if="isBlur">{{ text1 }}</text>
+        <text v-if="isBlur" class="blur-heavy">{{ text2 }}</text>
+        <text v-if="isBlur" class="blur-heavy">{{ text3 }}</text>
+        <text v-if="!isBlur">{{ text }}</text>
+    </div>
+</template>
+
+<script lang="ts">
+import Vue from 'vue';
+export default Vue.extend({
+    data() {
+        return {
+            text1: '',
+            text2: '',
+            text3: ''
+        }
+    },
+    watch: {
+        text(newValue, oldValue) {
+            if (this.text.length == 0) {
+                return
+            }
+            this.text1 = newValue.substring(0, Math.ceil(newValue.length / 5));
+            this.text2 = newValue.substring(Math.ceil(newValue.length / 5), Math.ceil(newValue.length / 5) + Math.ceil(newValue.length / 5))
+            this.text3 = newValue.substring(Math.ceil(newValue.length / 5) + Math.ceil(newValue.length / 5), newValue.length - 1)
+
+        }
+    },
+    props: {
+        text: {
+            type: String,
+            default: ''
+        },
+        isBlur: {
+            type: Boolean,
+            default: true
+        }
+    },
+    mounted() {
+        if (this.text.length == 0) {
+            return
+        }
+        // console.log(this.text)
+        // this.text1 = this.text.substring(0, Math.ceil(this.text.length/10) );
+        // this.text2 = this.text.substring(Math.ceil(this.text.length/10),Math.ceil(this.text.length/10)+ Math.ceil(this.text.length/10) )
+        // this.text3 = this.text.substring(Math.ceil(this.text.length/10)+ Math.ceil(this.text.length/10),this.text.length-1)
+    },
+
+})
+</script>
+
+<style lang="less" scoped>
+.blur-light {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 4rpx #000000;
+}
+
+.blur-medium {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 6rpx #000000;
+}
+
+.blur-heavy {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 16rpx #000000;
+}
+</style>

+ 59 - 0
src/components/m-map-blur/m-map-blur.vue

@@ -0,0 +1,59 @@
+<template>
+    <div>
+        <div v-if="isBlur" v-for="(item, index) in map" :key="index">
+            <text class="blur-heavy" v-if="index <= begin">{{ index }}.{{ item }}</text>
+            <text v-if="index == begin + 1" class="blur-heavy">{{ index }}.{{ item }}</text>
+            <text v-if="index == begin + 2" class="blur-heavy">{{ index }}.{{ item }}</text>
+            <text v-if="index > begin + 2" class="blur-heavy">{{ index }}.{{ item }}</text>
+        </div>
+
+        <div v-if="!isBlur" v-for="(item, index) in map" :key="index">
+            <text>{{ index }}.{{ item }}</text>
+
+        </div>
+
+    </div>
+</template>
+
+<script lang="ts">
+
+export default {
+    name: 'm-map-blur',
+    data() {
+        return {
+
+        }
+    },
+    props: {
+        map: {
+            type: Object,
+            default: {}
+        },
+        begin: {
+            type: Number,
+            default: 1
+        },
+        isBlur: {
+            type: Boolean,
+            default: true
+        }
+    },
+}
+</script>
+
+<style lang="less" scoped>
+.blur-light {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 4rpx #000000;
+}
+
+.blur-medium {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 8rpx #000000;
+}
+
+.blur-heavy {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 16rpx #000000;
+}
+</style>

+ 102 - 0
src/components/m-number-blur/m-number-blur.vue

@@ -0,0 +1,102 @@
+<template>
+    <view>
+        <view  v-for="(item, index) in list" style="position: relative;margin-bottom: 10px;"
+            class="">
+            <view class="blur-heavy" v-if="index==0&&isBlur">
+                <image class="icon1" mode="widthFix" :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
+                <view class="lucktext">数字{{ item.id }}</view>
+                <text>
+                    {{ item.caiYun }}
+                </text>
+                <view>
+                    {{ item.taoHua }}
+                </view>
+            </view>
+            <view class="blur-heavy" v-else-if="index==1&&isBlur">
+                <image class="icon1" mode="widthFix" :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
+                <view class="lucktext">数字{{ item.id }}</view>
+                <text>
+                    {{ item.caiYun }}
+                </text>
+                <view>
+                    {{ item.taoHua }}
+                </view>
+            </view>
+            <view class="blur-heavy" v-else-if="index>1&&isBlur">
+                <image class="icon1" mode="widthFix" :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
+                <view class="lucktext">数字{{ item.id }}</view>
+                <text>
+                    {{ item.caiYun }}
+                </text>
+                <view>
+                    {{ item.taoHua }}
+                </view>
+            </view>
+            <view v-else>
+                <image class="icon1" mode="widthFix" :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
+                <view class="lucktext">数字{{ item.id }}</view>
+                <text>
+                    {{ item.caiYun }}
+                </text>
+                <view>
+                    {{ item.taoHua }}
+                </view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script lang="ts">
+export default {
+    name: 'm-number-blur',
+    props: {
+        list: {
+            type: Array,
+            default: []
+        },
+        isBlur:{
+            type:Boolean,
+            default:true
+
+        },
+        theme: {
+            type: String,
+            default: 'yellow'
+        }
+    },
+
+}
+</script>
+
+<style lang="less" scoped>
+.icon1 {
+    width: 119rpx;
+    display: inline-block;
+    margin-right: 15rpx;
+}
+
+.lucktext {
+    text-align: center;
+    width: 119rpx;
+    line-height: 54rpx;
+    left: 0;
+    top: 0;
+    position: absolute;
+}
+
+
+.blur-light {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 4rpx #000000;
+}
+
+.blur-medium {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 6rpx #000000;
+}
+
+.blur-heavy {
+    color: transparent;
+    text-shadow: 2rpx 2rpx 16rpx #000000;
+}
+</style>

+ 456 - 72
src/pages/forecast/index.vue

@@ -1,6 +1,47 @@
 <template>
     <view :data-theme="theme" class="bg">
-        <view :data-theme="theme"  @click="pay" class="pay">
+        <view style="width: 100%;height: 35rpx;"></view>
+        <view :data-theme="theme" class="score">
+            <view :data-theme="theme" class="score-outer">
+                <view :data-theme="theme" class="score-inner">
+                    <view style="display: flex;align-items: center;justify-content: center;padding-top: 24rpx;">
+                        <text
+                            style="position: absolute;left: 338rpx;color: #fff;font-size: 48rpx;font-weight: bold;bottom: 128rpx;">{{
+                                userData.riYuan.qr }}</text>
+                        <text style="position: absolute;left: 112rpx;font-size: 44rpx;color: #CB2C00;font-weight: bold;">{{
+                            userData.riYuan.score }}</text>
+                        <image class="score-inner-ring" mode="widthFix"
+                            src="https://ndata.zzxcx.net/xpgx-xcx/forecast/ring@2x.png"></image>
+                        <image mode="widthFix" class="score-inner-seal"
+                            src="https://ndata.zzxcx.net/xpgx-xcx/forecast/seal@2x.png"></image>
+                    </view>
+                    <text class="score-inner-text1">身强身弱,不代表好坏,具体请看详解</text>
+                    <image mode="widthFix" class="score-inner-icon1"
+                        :src="'/static/icon/' + theme + '_bzmp_long_rect@2x.png'">
+                    </image>
+                </view>
+            </view>
+
+        </view>
+        <!-- <button @click="pay">支付</button> -->
+        <view class="categorys">
+            <view style="width:100%">
+                <view class="categorys-item" :key="index" v-for="(item, index) in categorys">
+                    <view :data-theme="theme" @click="() => {
+                        currentPoint = item.point
+                    }" :class="{
+    'categorys-item-text_selected': currentPoint == item.point
+}" class="categorys-item-text">{{ item.text }}</view>
+                    <view :data-theme="theme" :class="{
+                        'categorys-item-mark_selected': currentPoint == item.point
+                    }" class="categorys-item-mark"></view>
+                </view>
+                <view class=""></view>
+            </view>
+
+        </view>
+
+        <view :data-theme="theme" v-if="goodsStatus.isPay == 0" @click="pay" class="pay">
             <view class="pay-button"> 开通会员立即查看</view>
         </view>
         <scroll-view :scroll-into-view="currentPoint" :scroll-with-animation="false" :scroll-y="true" class="content">
@@ -131,15 +172,18 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc result-desc_limit">
-                        <div v-for="(item, index) in userData.guoGuanMap">{{ index }}.{{ item }}</div>
+                        <!-- <div v-for="(item, index) in userData.guoGuanMap" :key="index">{{ index }}.{{ item }}</div> -->
+                        <m-map-blur :begin="2" :isBlur="false" :map="userData.guoGuanMap"></m-map-blur>
                     </view>
-                    <!-- <view class="result-pay">开通会员立即查看</view> -->
+
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
                         <view class="result-content-border2">
                         </view>
                     </view> -->
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                 </view>
+
                 <img mode="widthFix" class="imgFooter"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
             </view>
@@ -152,10 +196,12 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.reportMap['财运'] }}
+                        <m-map-blur :isBlur="goodsStatus.isPay == 0" :map="userData.caiYun"></m-map-blur>
+
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -174,10 +220,13 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.qingGan }}
+                        <m-map-blur :isBlur="goodsStatus.isPay == 0" :map="userData.qingGan"></m-map-blur>
+                        <!-- <div v-for="(item,index) in userData.qingGan" :key="item">{{index}}.{{ item }}</div> -->
+
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -188,19 +237,20 @@
                 <img mode="widthFix" class="imgFooter"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
             </view>
-
-            <view style="width: 100%;height: 35rpx;"></view>
-            <view id="wxpy" class="result">
+            <view id="zngx" class="result">
                 <img mode="widthFix" class="imgCircle" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/circle.png">
-                <view :data-theme="theme" class="imgTitle"><text>五</text><text>行</text><text>评</text><text>语</text></view>
+                <view :data-theme="theme" class="imgTitle"><text>子</text><text>女</text><text>关</text><text>系</text></view>
                 <img mode="widthFix" class="imgHeader"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.reportMap['缺失五行评语'] }}
+                        <m-map-blur :isBlur="goodsStatus.isPay == 0" :map="userData.ziNvYun"></m-map-blur>
+                        <!-- <div v-for="(item,index) in userData.qingGan" :key="item">{{index}}.{{ item }}</div> -->
+
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -211,9 +261,30 @@
                 <img mode="widthFix" class="imgFooter"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
             </view>
+            <view style="width: 100%;height: 35rpx;"></view>
+            <view id="wxpy" class="result">
+                <img mode="widthFix" class="imgCircle" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/circle.png">
+                <view :data-theme="theme" class="imgTitle"><text>五</text><text>行</text><text>评</text><text>语</text></view>
+                <img mode="widthFix" class="imgHeader"
+                    :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
+                <view class="result-content" :data-theme="theme">
+                    <view class="result-desc">
+                        <m-line-blur :isBlur="goodsStatus.isPay == 0"
+                            :text="(userData.reportMap['缺失五行评语'] + userData.reportMap['潮湿平衡'] + userData.reportMap['缺失十神评语'])"></m-line-blur>
+                        <!-- <div>{{ userData.reportMap['缺失五行评语'] }}</div>
+
+                        <div>{{ userData.reportMap['潮湿平衡'] }}</div>
+                        <div>{{ userData.reportMap['缺失十神评语'] }}</div> -->
+                    </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
+
+                </view>
+                <img mode="widthFix" class="imgFooter"
+                    :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
+            </view>
 
             <view style="width: 100%;height: 35rpx;"></view>
-            <view id="csph" class="result">
+            <!-- <view id="csph" class="result">
                 <img mode="widthFix" class="imgCircle" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/circle.png">
                 <view :data-theme="theme" class="imgTitle"><text>潮</text><text>湿</text><text>平</text><text>衡</text></view>
                 <img mode="widthFix" class="imgHeader"
@@ -224,16 +295,11 @@
 
 
                     </view>
-                    <!-- <view class="result-pay">开通会员立即查看</view> -->
-                    <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
-                    <!-- <view class="result-content-border1">
-                        <view class="result-content-border2">
-                        </view>
-                    </view> -->
+               
                 </view>
                 <img mode="widthFix" class="imgFooter"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
-            </view>
+            </view> -->
 
             <view style="width: 100%;height: 35rpx;"></view>
             <view id="xysz" class="result">
@@ -243,24 +309,36 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        <view v-for="item in userData.numberYunMap.numberYunList"
+                        <m-number-blur :isBlur="goodsStatus.isPay == 0" :theme="theme"
+                            :list="userData.numberYunMap.numberYunList"></m-number-blur>
+                        <!-- <view v-for="(item,index) in userData.numberYunMap.numberYunList"
                             style="position: relative;margin-bottom: 10px;" class="">
-                            <image class="result-desc-icon1" mode="widthFix"
-                                :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
-                            <view class="result-desc-lucktext">数字{{ item.id }}</view>
-                            <text>
-                                {{ item.caiYun }}
-                            </text>
-                            <view>
-                                {{ item.taoHua }}
-                            </view>
-                        </view>
-                        <view>
-                            选用{{ userData.numberYunMap.numberYuns }} 为电话号码,门牌号、车牌号等。
+                           
+                                <image class="result-desc-icon1" mode="widthFix"
+                                    :src="'/static/icon/' + theme + '_xysz_rect@2x.png'" />
+                                <view class="result-desc-lucktext">数字{{ item.id }}</view>
+                                <text>
+                                    {{ item.caiYun }}
+                                </text>
+                                <view>
+                                    {{ item.taoHua }}
+                                </view>
+                           
+
+                        </view> -->
+
+                        <view :class="{
+                            'blur-heavy': goodsStatus.isPay == 0
+                        }">
+                            选用<text :class="{
+                                'blur-heavy': goodsStatus.isPay == 0
+                            }" :data-theme="theme" class="result-desc-color">{{ userData.numberYunMap.numberYuns
+}}</text> 为电话号码,门牌号、车牌号等。
                         </view>
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -280,10 +358,12 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        <view>{{ userData.piQi }}</view>
+                        <m-line-blur :text="userData.piQi" :isBlur="goodsStatus.isPay == 0"></m-line-blur>
+                        <!-- <view>{{ userData.piQi }}</view> -->
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -303,11 +383,17 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        <view style="text-align: left;">称骨重量:{{ userData.chenGuMap['称骨重量'] }}</view>
-                        <view>{{ userData.chenGuMap['称骨评语'] }}</view>
+                        <div style="width: 100%;text-align: center;">
+                            <m-line-blur :isBlur="goodsStatus.isPay == 0" :text="userData.chenGuMap['称骨重量']"></m-line-blur>
+                        </div>
+
+                        <m-line-blur :isBlur="goodsStatus.isPay == 0" :text="userData.chenGuMap['称骨评语']"></m-line-blur>
+                        <!-- <view style="text-align: left;">称骨重量:{{ userData.chenGuMap['称骨重量'] }}</view>
+                        <view>{{ userData.chenGuMap['称骨评语'] }}</view> -->
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -328,14 +414,13 @@
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
                         <view class="result-disease">
-                            <view v-for="(item, index) in userData.diseasePartList" class="">
-                                <text> {{ item.part }}:</text>
-                                <text> {{ item.symp }}</text>
-                            </view>
+                            <m-disease-blur :isBlur="goodsStatus.isPay == 0"
+                                :list="userData.diseasePartList"></m-disease-blur>
                         </view>
 
 
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
                     <!-- <view class="result-pay">开通会员立即查看</view> -->
                     <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
                     <!-- <view class="result-content-border1">
@@ -355,8 +440,10 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.xiFangWei }}
+                        <m-map-blur :isBlur="goodsStatus.isPay == 0" :map="userData.xiFangWei"></m-map-blur>
+
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
 
 
                 </view>
@@ -378,8 +465,9 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.guiren }}
+                        <m-line-blur :text="userData.guiren" :isBlur="goodsStatus.isPay == 0"></m-line-blur>
                     </view>
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
 
 
                 </view>
@@ -400,9 +488,9 @@
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_top@2x.png'" />
                 <view class="result-content" :data-theme="theme">
                     <view class="result-desc">
-                        {{ userData.industry }}
+                        <m-line-blur :text="userData.industry" :isBlur="goodsStatus.isPay == 0"></m-line-blur>
                     </view>
-
+                    <m-more-alert v-if="goodsStatus.isPay != 0" :theme="theme"></m-more-alert>
 
                 </view>
                 <!-- <view class="result-pay">开通会员立即查看</view> -->
@@ -414,6 +502,58 @@
                 <img mode="widthFix" class="imgFooter"
                     :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_' + theme + '_bottom@2x.png'" />
             </view>
+
+
+            <!-- <view class="result">
+                <img mode="widthFix" class="imgCircle" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/circle.png">
+                <view :data-theme="theme" class="imgTitle"><text>十</text><text>神</text><text>评</text><text>语</text></view>
+                <img mode="widthFix" class="imgHeader" :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_'+theme+'_top@2x.png'" />
+                <view class="result-content ">
+                    
+                    <view class="result-desc">
+                        {{ userData.reportMap['缺失十神评语'] }}
+
+
+                    </view> -->
+            <!-- <view class="result-disease">
+                        <view v-for="(item,index) in userData.diseasePartList" class="">
+                            <text style="color: #006494;"> {{ item.part }}:</text>
+                            <text>({{ item.degree }}) {{ item.symp }}</text>
+                        </view>
+                    </view> -->
+
+            <!-- <view class="result-pay">开通会员立即查看</view> -->
+            <!-- <view class="result-pay">开通会员立即查看</view> -->
+            <!-- <img  mode="widthFix" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/bg_middle.png" /> -->
+            <!-- <view class="result-content-border1">
+                        <view class="result-content-border2">
+                        </view>
+                    </view> -->
+            <!-- </view>
+                <img mode="widthFix" class="imgFooter" :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_'+theme+'_bottom@2x.png'" />
+            </view> -->
+            <!-- <view style="width: 100%;height: 35rpx;"></view>
+            <view class="result">
+                <img mode="widthFix" class="imgCircle" src="https://ndata.zzxcx.net/xpgx-xcx/forecast/circle.png">
+                <view :data-theme="theme" class="imgTitle"><text>五</text><text>行</text><text>评</text><text>语</text></view>
+                <img mode="widthFix" class="imgHeader" :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_'+theme+'_top@2x.png'" />
+                <view class="result-content ">
+                    <view class="result-desc">
+                        当我们关注身体健康时,了解各宫位的能量分布可以帮助我们判断可能出现的疾病。请特别留意以下身体部位可能存在的问题,并在早期进行检查,以便及时预防。
+
+
+                    </view>
+                    <view class="result-disease">
+                        <view v-for="(item, index) in userData.diseasePartList" class="">
+                            <text style="color: #006494;"> {{ item.part }}:</text>
+                            <text>({{ item.degree }}) {{ item.symp }}</text>
+                        </view>
+                    </view>
+
+                
+                </view>
+                <img mode="widthFix" class="imgFooter" :src="'https://ndata.zzxcx.net/xpgx-xcx/forecast/reportBg/bg_'+theme+'_bottom@2x.png'" />
+            </view> -->
         </scroll-view>
     </view>
 </template>
@@ -422,6 +562,10 @@
 import Vue from 'vue';
 import api from '@/api'
 import responseDecorator from '@/utils/responseDecorator'
+import mDiseaseBlur from '@/components/m-disease-blur/m-disease-blur.vue'
+import mLineBlur from '@/components/m-line-blur/m-line-blur.vue'
+import mMapBlur from '@/components/m-map-blur/m-map-blur.vue'
+import mNumberBlur from '@/components/m-number-blur/m-number-blur.vue'
 export default Vue.extend({
     data() {
         return {
@@ -458,6 +602,12 @@ export default Vue.extend({
                     称骨评语: "",
                     称骨重量: "",
                 },
+                riYuan: {
+                    qr: "木强",
+                    score: 60,
+                    xiYong: ["火", "土"],
+                    xiYongOld: ["火", "土"]
+                },
                 sex: 1,
                 birthday: '',
                 nongDay: '',
@@ -468,6 +618,13 @@ export default Vue.extend({
                     "缺失十神评语": "缺少正财,收入不稳定。",
                     "财运": "无"
                 },
+                ziNvYun: {
+                    "1": ""
+                },
+                caiYun: {
+                    "1": ""
+                },
+
                 ganZhiProRowVoList: [[{
                     "gongWei": "",
                     "name": "",
@@ -694,9 +851,15 @@ export default Vue.extend({
 
 
             },
-            goodsStatus:{
-                id:0,
-                isPay:0
+            goodsStatus: {
+                birthday: "1995-01-01 00:00:00",
+                createTime: "2000-01-061 00:00:00",
+                id: 0,
+                isPay: 0,
+                name: "",
+                sex: "1",
+                updateTime: null,
+                userId: 316
 
             }
         }
@@ -708,12 +871,13 @@ export default Vue.extend({
         this.form.birthday = decodeURIComponent(query.birthday || this.form.birthday)
         uni.showLoading()
         api.birthday.studentBirthdayLog({
-            birthday:query.birthday,
-            name:query.username,
-            sex:query.sex
-            
-        }).then(res=>{
-            this.goodsStatus.id = res.data.data
+            birthday: query.birthday,
+            name: query.username,
+            sex: query.sex,
+            isPay: 0,
+
+        }).then(res => {
+            this.goodsStatus = res.data.data
 
         })
         api.openApi.openApiGanZhiGet8ziByDate(this.form).then(res => {
@@ -721,31 +885,110 @@ export default Vue.extend({
             this.theme = this.userData.ganZhiProRowVoList[2][0].enColor
             console.log(this.userData)
             uni.hideLoading()
-        }).catch(err=>{
+        }).catch(err => {
             uni.hideLoading()
         })
 
     },
     methods: {
-        pay(){
+        pay() {
+            let systemInfo = wx.getSystemInfoSync();
             api.wx.studentWxXcxPrepareOrder({
-                foreType:2,
-                goodsId:1,
-                goodsType:1,
-                phoneType:1
+                foreType: 2,
+                goodsId: this.goodsStatus.id,
+                goodsType: 3,
+                phoneType: systemInfo.platform == "ios" ? 1 : 2,
+            }).then(res => {
+                wx.requestPayment({
+                    ...res.data.data,
+                    success: (res: any) => {
+                        uni.showToast({
+                            title: '查询支付结果',
+                            icon: 'loading',
+                            duration: 3500
+                        })
+                        setTimeout(() => {
+                            api.birthday.studentBirthdayLog({
+                                sex: this.form.sex,
+
+                                name: this.form.username,
+                                isPay: 0,
+                                birthday: this.form.birthday,
+                            }).then(res => {
+
+                                this.goodsStatus = res.data.data
+                            })
+                        }, 3500);
+
+                    }
+                })
             })
         }
-    }
+    },
+    components: {
+        mMapBlur,
+        mDiseaseBlur,
+        mLineBlur,
+      
+        mNumberBlur
+
+    },
 });
 </script>
 
 <style lang="less" scoped>
+[data-theme=blue].bg {
+    background-color: #BFE2F4;
+
+}
+
+[data-theme=yellow].bg {
+    background-color: #FFEEBD;
+
+}
+
+[data-theme=red].bg {
+    background-color: #FC6363;
+
+}
+
+[data-theme=green].bg {
+    background-color: #95E9B3;
+
+}
+
+[data-theme=brown].bg {
+    background-color: #996235;
+
+}
+
 .bg {
     width: 100vw;
     height: 100vh;
-   
+    position: relative;
+    overflow-y: scroll;
+}
+
+[data-theme=blue].pay {
+    background-color: #BFE2F4;
+}
+
+[data-theme=yellow].pay {
+    background-color: #FFEEBD;
+}
+
+[data-theme=brown].pay {
+    background-color: #996235;
+}
 
+[data-theme=red].pay {
+    background-color: #FC6363;
 }
+
+[data-theme=green].pay {
+    background-color: #74D597;
+}
+
 .pay {
     width: 100%;
     height: auto;
@@ -786,31 +1029,147 @@ export default Vue.extend({
     // transform: translateX(-50%);
 }
 
-[data-theme=blue].bg {
-    background-color: #BFE2F4;
+[data-theme=blue] .score {
+    border: 2px solid #006494;
+}
+
+[data-theme=yellow] .score {
 
+    border: 2px solid #D19C03;
 }
 
-[data-theme=yellow].bg {
-    background-color: #FFEEBD;
+[data-theme=brown] .score {
 
+    border: 2px solid #70390D;
 }
 
-[data-theme=red].bg {
-    background-color: #FC6363;
+[data-theme=red] .score {
 
+    border: 2px solid #A42705;
 }
 
-[data-theme=green].bg {
-    background-color: #95E9B3;
+[data-theme=green] .score {
 
+    border: 2px solid #519669;
 }
 
-[data-theme=brown].bg {
-    background-color: #996235;
 
+
+
+.score {
+    width: 608rpx;
+    height: 296rpx;
+    border: 3px solid transparent;
+    margin: 0 auto;
+
+
+    [data-theme=blue].score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: #1293D0;
+        padding: 20rpx;
+    }
+
+    [data-theme=yellow].score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: #FFD65C;
+        padding: 20rpx;
+    }
+
+    [data-theme=brown].score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: #9C4B08;
+        padding: 20rpx;
+    }
+
+    [data-theme=red].score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: #CB2C00;
+        padding: 20rpx;
+    }
+
+    [data-theme=green].score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: #5BC781;
+        padding: 20rpx;
+    }
+
+    .score-outer {
+        width: 100%;
+        height: 100%;
+        background-color: transparent;
+        padding: 20rpx;
+    }
+
+    [data-theme=blue] .score-inner {
+        background-color: #DDF3FE;
+    }
+
+    [data-theme=yellow] .score-inner {
+        background-color: #FFF2CC;
+    }
+
+    [data-theme=brown] .score-inner {
+        background-color: #E2CBB8;
+    }
+
+    [data-theme=red] .score-inner {
+        background-color: #FDCECE;
+    }
+
+    [data-theme=green] .score-inner {
+        background-color: #C7FECA;
+    }
+
+    .score-inner {
+        width: 100%;
+        height: 100%;
+        background-color: #FFF2CC;
+        position: relative;
+
+        .score-inner-icon1 {
+            position: absolute;
+            bottom: 10rpx;
+            width: 528rpx;
+            left: 19rpx;
+            z-index: 11;
+        }
+
+        .score-inner-text1 {
+            position: absolute;
+            color: #000;
+            font-size: 30rpx;
+            width: 100%;
+            text-align: center;
+            bottom: 25rpx;
+            left: 0;
+            font-weight: bold;
+            z-index: 12;
+        }
+
+        .score-inner-ring {
+            width: 137rpx;
+        }
+
+        .score-inner-seal {
+            width: 222rpx;
+            margin-left: 74rpx;
+        }
+
+    }
 }
 
+.blur-heavy {
+    color: transparent !important;
+    text-shadow: 2rpx 2rpx 16rpx #000000;
+}
+
+
+
 .categorys::-webkit-scrollbar {
     display: none;
 }
@@ -823,7 +1182,7 @@ export default Vue.extend({
     font-weight: bold;
     display: inline-block;
     white-space: nowrap;
-    overflow-x: scroll;
+    overflow-y: scroll;
     padding-top: 30rpx;
 
     .categorys-item {
@@ -1105,7 +1464,7 @@ export default Vue.extend({
         position: relative;
         align-items: flex-start;
         align-content: flex-start;
-        display: none;
+
 
 
         [data-theme=red].result-content {
@@ -1156,6 +1515,31 @@ export default Vue.extend({
                     position: absolute;
 
                 }
+
+                [data-theme=green].result-desc-color {
+                    color: #53996B;
+
+                }
+
+                [data-theme=yellow].result-desc-color {
+                    color: #D19C03;
+
+                }
+
+                [data-theme=red].result-desc-color {
+                    color: #CB2C00;
+
+                }
+
+                [data-theme=blue].result-desc-color {
+                    color: #006494;
+
+                }
+
+                [data-theme=brown].result-desc-color {
+                    color: #9C4B08;
+
+                }
             }
 
             .result-desc_limit {}
@@ -1165,7 +1549,7 @@ export default Vue.extend({
                 margin-top: 40rpx;
                 width: 400rpx;
                 text-align: center;
-                height: 80rpx;
+
                 line-height: 80rpx;
                 color: #F5EC5A;
                 border-radius: 40px;

+ 36 - 0
tmp/adminDept.json

@@ -0,0 +1,36 @@
+{
+    "data": [
+        {
+            "deptName": "vueNextAdmin",
+            "createTime": "2024/2/6 16:37:02",
+            "status": true,
+            "sort": 0.16775311983808905,
+            "describe": "顶级部门",
+            "id": 0.6249923144227376,
+            "children": [
+                {
+                    "deptName": "IT外包服务",
+                    "createTime": "2024/2/6 16:37:02",
+                    "status": true,
+                    "sort": 0.28498148824007785,
+                    "describe": "总部",
+                    "id": 0.29351909281023114
+                },
+                {
+                    "deptName": "资本控股",
+                    "createTime": "2024/2/6 16:37:02",
+                    "status": true,
+                    "sort": 0.5291963241360391,
+                    "describe": "分部",
+                    "id": 0.7386856606601586
+                }
+            ]
+        }
+    ],
+    "total": 1,
+    "loading": false,
+    "param": {
+        "pageNum": 1,
+        "pageSize": 10
+    }
+}

+ 171 - 0
tmp/adminRole.json

@@ -0,0 +1,171 @@
+{
+    "data": [
+        {
+            "roleName": "超级管理员",
+            "roleSign": "admin",
+            "describe": "测试角色1",
+            "sort": 0,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色2",
+            "sort": 1,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色3",
+            "sort": 2,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色4",
+            "sort": 3,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色5",
+            "sort": 4,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色6",
+            "sort": 5,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色7",
+            "sort": 6,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色8",
+            "sort": 7,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色9",
+            "sort": 8,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色10",
+            "sort": 9,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色11",
+            "sort": 10,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色12",
+            "sort": 11,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色13",
+            "sort": 12,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色14",
+            "sort": 13,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色15",
+            "sort": 14,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色16",
+            "sort": 15,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色17",
+            "sort": 16,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色18",
+            "sort": 17,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色19",
+            "sort": 18,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        },
+        {
+            "roleName": "普通用户",
+            "roleSign": "common",
+            "describe": "测试角色20",
+            "sort": 19,
+            "status": true,
+            "createTime": "2024/2/6 16:31:43"
+        }
+    ],
+    "total": 20,
+    "loading": false,
+    "param": {
+        "search": "",
+        "pageNum": 1,
+        "pageSize": 10
+    }
+}

+ 44 - 0
tmp/adminUser.json

@@ -0,0 +1,44 @@
+{
+    "data": [
+        {
+            "userName": "admin",
+            "userNickname": "我是管理员",
+            "roleSign": "admin",
+            "department": [
+                "vueNextAdmin",
+                "IT外包服务"
+            ],
+            "phone": "12345678910",
+            "email": "vueNextAdmin@123.com",
+            "sex": "女",
+            "password": "123456",
+            "overdueTime": "[native Date Tue Feb 06 2024 16:34:54 GMT+0800 (中国标准时间)]",
+            "status": true,
+            "describe": "不可删除",
+            "createTime": "2024/2/6 16:34:54"
+        },
+        {
+            "userName": "test",
+            "userNickname": "我是普通用户",
+            "roleSign": "common",
+            "department": [
+                "vueNextAdmin",
+                "资本控股"
+            ],
+            "phone": "12345678910",
+            "email": "vueNextAdmin@123.com",
+            "sex": "女",
+            "password": "123456",
+            "overdueTime": "[native Date Tue Feb 06 2024 16:34:54 GMT+0800 (中国标准时间)]",
+            "status": true,
+            "describe": "测试用户",
+            "createTime": "2024/2/6 16:34:54"
+        }
+    ],
+    "total": 2,
+    "loading": false,
+    "param": {
+        "pageNum": 1,
+        "pageSize": 10
+    }
+}