mirror of
https://gitee.com/likeadmin/likeadmin_java.git
synced 2026-09-24 09:28:12 +08:00
Merge branch 'develop' of https://gitee.com/likeadmin/likeadmin_java into develop
This commit is contained in:
@@ -7,5 +7,6 @@ export interface Link {
|
||||
path: string
|
||||
name?: string
|
||||
type: string
|
||||
params?: Record<string, any>
|
||||
isTab: boolean
|
||||
query?: Record<string, any>
|
||||
}
|
||||
|
||||
@@ -4,7 +4,10 @@
|
||||
<div
|
||||
class="link-item border border-br px-5 py-[5px] rounded-[3px] cursor-pointer mr-[10px] mb-[10px]"
|
||||
v-for="(item, index) in linkList"
|
||||
:class="{ 'border-primary text-primary': modelValue.path == item.path }"
|
||||
:class="{
|
||||
'border-primary text-primary':
|
||||
modelValue.path == item.path && modelValue.name == item.name
|
||||
}"
|
||||
:key="index"
|
||||
@click="handleSelect(item)"
|
||||
>
|
||||
@@ -32,16 +35,65 @@ const linkList = ref([
|
||||
{
|
||||
path: '/pages/index/index',
|
||||
name: '商城首页',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
type: LinkTypeEnum.SHOP_PAGES,
|
||||
isTab: true
|
||||
},
|
||||
{
|
||||
path: '/pages/news/news',
|
||||
name: '文章资讯',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
type: LinkTypeEnum.SHOP_PAGES,
|
||||
isTab: true
|
||||
},
|
||||
{
|
||||
path: '/pages/user/user',
|
||||
name: '个人中心',
|
||||
type: LinkTypeEnum.SHOP_PAGES,
|
||||
isTab: true
|
||||
},
|
||||
{
|
||||
path: '/pages/collection/collection',
|
||||
name: '我的收藏',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/customer_service/customer_service',
|
||||
name: '联系客服',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/user_set/user_set',
|
||||
name: '个人设置',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/as_us/as_us',
|
||||
name: '关于我们',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/user_data/user_data',
|
||||
name: '个人资料',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/agreement/agreement',
|
||||
name: '隐私政策',
|
||||
query: {
|
||||
type: 'privacy'
|
||||
},
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/agreement/agreement',
|
||||
name: '服务协议',
|
||||
query: {
|
||||
type: 'service'
|
||||
},
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
},
|
||||
{
|
||||
path: '/pages/search/search',
|
||||
name: '搜索',
|
||||
type: LinkTypeEnum.SHOP_PAGES
|
||||
}
|
||||
])
|
||||
|
||||
@@ -16,7 +16,7 @@ export const addUnit = (value: string | number, unit = 'px') => {
|
||||
* @return {Boolean}
|
||||
*/
|
||||
export const isEmpty = (value: unknown) => {
|
||||
return value !== null && value !== '' && typeof value !== 'undefined'
|
||||
return value == null && typeof value == 'undefined'
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
:key="index"
|
||||
class="flex flex-col items-center w-1/4 mb-[15px]"
|
||||
>
|
||||
<image-contain width="26px" height="26px" :src="item.image" alt="" />
|
||||
<image-contain width="26px" height="26px" :src="getImageUrl(item.image)" alt="" />
|
||||
<div class="mt-[7px]">{{ item.name }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,6 @@ import { useAppStore } from './stores/app'
|
||||
import { useUserStore } from './stores/user'
|
||||
const { getConfig } = useAppStore()
|
||||
const { getUser } = useUserStore()
|
||||
console.log(useUserStore())
|
||||
onLaunch(() => {
|
||||
getConfig()
|
||||
getUser()
|
||||
|
||||
@@ -2,7 +2,7 @@ import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* @description 获取文章分类
|
||||
* @return { Promise }
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getArticleCate() {
|
||||
return request.get({ url: '/article/category' })
|
||||
@@ -10,7 +10,7 @@ export function getArticleCate() {
|
||||
|
||||
/**
|
||||
* @description 获取文章列表
|
||||
* @return { Promise }
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getArticleList(data: Record<string, any>) {
|
||||
return request.get({ url: '/article/list', data: data })
|
||||
@@ -18,8 +18,8 @@ export function getArticleList(data: Record<string, any>) {
|
||||
|
||||
/**
|
||||
* @description 获取文章详情
|
||||
* @param { number } id
|
||||
* @return { Promise }
|
||||
* @param { number } id
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getArticleDetail(data: { id: number }) {
|
||||
return request.get({ url: '/article/detail', data: data })
|
||||
@@ -27,25 +27,25 @@ export function getArticleDetail(data: { id: number }) {
|
||||
|
||||
/**
|
||||
* @description 加入收藏
|
||||
* @param { number } articleId
|
||||
* @return { Promise }
|
||||
* @param { number } articleId
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function addCollect(data: { articleId: number }) {
|
||||
return request.post({ url: '/article/addCollect', data: data })
|
||||
return request.post({ url: '/article/addCollect', data: data }, { isAuth: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 取消收藏
|
||||
* @param { number } id
|
||||
* @return { Promise }
|
||||
* @param { number } id
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function cancelCollect(data: { articleId: number }) {
|
||||
return request.post({ url: '/article/cancelCollect', data: data })
|
||||
return request.post({ url: '/article/cancelCollect', data: data }, { isAuth: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取收藏列表
|
||||
* @return { Promise }
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getCollect() {
|
||||
return request.get({ url: '/article/collect' })
|
||||
|
||||
@@ -12,7 +12,7 @@ export function getDecorate(data: any) {
|
||||
|
||||
/**
|
||||
* @description 热门搜索
|
||||
* @return { Promise }
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getHotSearch() {
|
||||
return request.get({ url: '/hotSearch' })
|
||||
@@ -21,8 +21,8 @@ export function getHotSearch() {
|
||||
/**
|
||||
* @description 搜索
|
||||
* @param { string } keyword 关键词
|
||||
* @return { Promise }
|
||||
* @return { Promise }
|
||||
*/
|
||||
export function getSearch(data: { keyword: string, pageNo: number, pageSize: number }) {
|
||||
export function getSearch(data: { keyword: string; pageNo: number; pageSize: number }) {
|
||||
return request.get({ url: '/search', data })
|
||||
}
|
||||
|
||||
@@ -23,4 +23,6 @@ export function userBindMobile(data: any) {
|
||||
export function userMnpMobile(data: any) {
|
||||
return request.post({ url: '/user/mnpMobile', data: data })
|
||||
}
|
||||
|
||||
export function userChangePwd(data: any) {
|
||||
return request.post({ url: '/user/changePwd', data: data })
|
||||
}
|
||||
|
||||
@@ -1,57 +1,65 @@
|
||||
<template>
|
||||
<navigator :url="`/pages/news_detail/news_detail?id=${ newsId }`">
|
||||
<view class="news-card flex bg-white px-[20rpx] py-[32rpx]">
|
||||
<view class="mr-[20rpx]" v-if="item.image">
|
||||
<u-image :src="item.image" width="240" height="180"></u-image>
|
||||
</view>
|
||||
<view class="news-card-content flex flex-col justify-between flex-1">
|
||||
<view class="news-card-content-title text-lg font-medium">{{ item.title }}</view>
|
||||
<view class="news-card-content-intro text-gray-400 text-sm mt-[16rpx] ">{{ item.intro }}</view>
|
||||
|
||||
<view class="text-muted text-xs w-full flex justify-between mt-[12rpx]">
|
||||
<view>{{ item.createTime }}</view>
|
||||
<view class="flex items-center">
|
||||
<image src="/static/images/icon/icon_visit.png" class="w-[30rpx] h-[30rpx]"></image>
|
||||
<view class="ml-[10rpx]">{{ item.visit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator :url="`/pages/news_detail/news_detail?id=${newsId}`">
|
||||
<view class="news-card flex bg-white px-[20rpx] py-[32rpx]">
|
||||
<view class="mr-[20rpx]" v-if="item.image">
|
||||
<u-image :src="item.image" width="240" height="180"></u-image>
|
||||
</view>
|
||||
<view class="news-card-content flex flex-col justify-between flex-1">
|
||||
<view class="news-card-content-title text-lg font-medium">{{ item.title }}</view>
|
||||
<view class="news-card-content-intro text-gray-400 text-sm mt-[16rpx]">{{
|
||||
item.intro
|
||||
}}</view>
|
||||
|
||||
<view class="text-muted text-xs w-full flex justify-between mt-[12rpx]">
|
||||
<view>{{ item.createTime }}</view>
|
||||
<view class="flex items-center">
|
||||
<image
|
||||
src="/static/images/icon/icon_visit.png"
|
||||
class="w-[30rpx] h-[30rpx]"
|
||||
></image>
|
||||
<view class="ml-[10rpx]">{{ item.visit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
|
||||
const props = withDefaults(defineProps < {
|
||||
item: any,
|
||||
newsId: number
|
||||
} > (), {
|
||||
item: {},
|
||||
newsId: ''
|
||||
})
|
||||
import { ref } from 'vue'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
item: any
|
||||
newsId: number
|
||||
}>(),
|
||||
{
|
||||
item: {},
|
||||
newsId: ''
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.news-card {
|
||||
border-bottom: 1px solid #f8f8f8;
|
||||
&-content {
|
||||
&-title {
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
&-intro {
|
||||
-webkit-line-clamp: 1;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
.news-card {
|
||||
border-bottom: 1px solid #f8f8f8;
|
||||
&-content {
|
||||
&-title {
|
||||
-webkit-line-clamp: 2;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
&-intro {
|
||||
-webkit-line-clamp: 1;
|
||||
overflow: hidden;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,79 +1,83 @@
|
||||
<template>
|
||||
<view :class="{ active, inactive: !active, tab: true }" :style="shouldShow ? '' : 'display: none;'">
|
||||
<slot v-if="shouldRender"></slot>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template>
|
||||
<view
|
||||
:class="{ active, inactive: !active, tab: true }"
|
||||
:style="shouldShow ? '' : 'display: none;'"
|
||||
>
|
||||
<slot v-if="shouldRender"></slot>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, provide, inject, watch, computed, onMounted, getCurrentInstance } from "vue"
|
||||
|
||||
const props = withDefaults(defineProps < {
|
||||
dot ? : boolean | string
|
||||
name ? : boolean | string
|
||||
info ? : any
|
||||
} > (), {
|
||||
import { ref, provide, inject, watch, computed, onMounted, getCurrentInstance } from 'vue'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
dot?: boolean | string
|
||||
name?: boolean | string
|
||||
info?: any
|
||||
}>(),
|
||||
{
|
||||
dot: false,
|
||||
name: ''
|
||||
})
|
||||
|
||||
|
||||
const active = ref<boolean>(false)
|
||||
const shouldShow = ref<boolean>(false)
|
||||
const shouldRender = ref<boolean>(false)
|
||||
const inited = ref(undefined)
|
||||
|
||||
const updateTabs: any = inject('updateTabs')
|
||||
const handleChange: any = inject('handleChange')
|
||||
|
||||
|
||||
const updateRender = (value) => {
|
||||
inited.value = inited.value || value;
|
||||
active.value = value
|
||||
shouldRender.value = inited.value
|
||||
shouldShow.value = value
|
||||
}
|
||||
const update = () => {
|
||||
if (updateTabs) {
|
||||
updateTabs();
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
const { ctx } = getCurrentInstance()
|
||||
handleChange(ctx, updateRender)
|
||||
|
||||
onMounted(() => {
|
||||
update()
|
||||
})
|
||||
|
||||
|
||||
const changeData = computed(() => {
|
||||
const {
|
||||
dot,
|
||||
info,
|
||||
} = props;
|
||||
return {
|
||||
dot,
|
||||
info,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
watch(() => changeData.value, () => {
|
||||
const active = ref<boolean>(false)
|
||||
const shouldShow = ref<boolean>(false)
|
||||
const shouldRender = ref<boolean>(false)
|
||||
const inited = ref(undefined)
|
||||
|
||||
const updateTabs: any = inject('updateTabs')
|
||||
const handleChange: any = inject('handleChange')
|
||||
|
||||
const updateRender = (value) => {
|
||||
inited.value = inited.value || value
|
||||
active.value = value
|
||||
shouldRender.value = inited.value
|
||||
shouldShow.value = value
|
||||
}
|
||||
const update = () => {
|
||||
if (updateTabs) {
|
||||
updateTabs()
|
||||
}
|
||||
}
|
||||
|
||||
const { ctx } = getCurrentInstance()
|
||||
handleChange(ctx, updateRender)
|
||||
|
||||
onMounted(() => {
|
||||
update()
|
||||
})
|
||||
|
||||
const changeData = computed(() => {
|
||||
const { dot, info } = props
|
||||
return {
|
||||
dot,
|
||||
info
|
||||
}
|
||||
})
|
||||
|
||||
watch(
|
||||
() => changeData.value,
|
||||
() => {
|
||||
update()
|
||||
})
|
||||
watch(() => props.name, (val) => {
|
||||
}
|
||||
)
|
||||
watch(
|
||||
() => props.name,
|
||||
(val) => {
|
||||
update()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.tab.active {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.tab.inactive {
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
)
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.tab.active {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.tab.inactive {
|
||||
height: 0;
|
||||
overflow: visible;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,71 +1,106 @@
|
||||
<template>
|
||||
<view class="tabs">
|
||||
<u-sticky :enable="isFixed" :bg-color="stickyBgColor" :offset-top="top" :h5-nav-height="0">
|
||||
<view :id="id" :style="{
|
||||
background: bgColor
|
||||
}">
|
||||
<scroll-view :style="{height: height + 'rpx'}" scroll-x class="scroll-view" :scroll-left="scrollLeft"
|
||||
scroll-with-animation>
|
||||
<view class="scroll-box" :class="{'tabs-scorll-flex': !isScroll}">
|
||||
<view class="tab-item line1" :id="'tab-item-' + index" v-for="(item, index) in list"
|
||||
:key="index" @tap="clickTab(index)" :style="[tabItemStyle(index)]">
|
||||
<u-badge :count="item[count] || item['dot'] || 0" :offset="offset" size="mini"></u-badge>
|
||||
{{ item[name] || item['name']}}
|
||||
</view>
|
||||
<view v-if="showBar" class="tab-bar" :style="[tabBarStyle]"></view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</u-sticky>
|
||||
<view class="tab-content" @touchstart="onTouchStart" @touchmove="onTouchMove" @touchcancel="onTouchEnd" @touchend="onTouchEnd">
|
||||
<!-- <view class="tab-track" :class="{'tab-animated': animated}" :style="[trackStyle]"> -->
|
||||
<view>
|
||||
<slot></slot>
|
||||
</view>
|
||||
<!-- </view> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { getRect } from '@/utils/util'
|
||||
import { ref, reactive, computed, watch, provide, nextTick, onMounted, getCurrentInstance } from "vue"
|
||||
import { useTouch } from "@/hooks/useTouch"
|
||||
|
||||
// Touch 钩子
|
||||
const { touch, resetTouchStatus, touchStart, touchMove } = useTouch()
|
||||
|
||||
const emit = defineEmits<{
|
||||
(event: 'change', value: number): void
|
||||
}>()
|
||||
|
||||
const props = withDefaults(defineProps < {
|
||||
isScroll ? : boolean // 导航菜单是否需要滚动,如只有2或者3个的时候,就不需要滚动了,此时使用flex平分tab的宽度
|
||||
current ? : number | string // 当前活动tab的索引
|
||||
height ? : number | string // 导航栏的高度和行高
|
||||
fontSize ? : number | string // 字体大小
|
||||
duration ? : number | string // 过渡动画时长, 单位ms
|
||||
activeColor ? : number | string // 选中项的主题颜色
|
||||
inactiveColor ? : number | string // 未选中项的颜色
|
||||
barWidth ? : number | string // 菜单底部移动的bar的宽度,单位rpx
|
||||
barHeight ? : number // 移动bar的高度
|
||||
gutter ? : number | string // 单个tab的左或有内边距(左右相同)
|
||||
bgColor ? : number | string // 导航栏的背景颜色
|
||||
name ? : string // 读取传入的数组对象的属性(tab名称)
|
||||
count ? : string // 读取传入的数组对象的属性(徽标数)
|
||||
offset ? : number[] // 徽标数位置偏移
|
||||
bold ? : boolean // 活动tab字体是否加粗
|
||||
activeItemStyle ? : any // 当前活动tab item的样式
|
||||
showBar ? : boolean // 是否显示底部的滑块
|
||||
barStyle ? : any // 底部滑块的自定义样式
|
||||
itemWidth ? : string // 标签的宽度
|
||||
isFixed ? : boolean // 吸顶是否固定
|
||||
top ? : number | string // 吸顶顶部距离
|
||||
stickyBgColor ? : string // 吸顶颜色
|
||||
|
||||
swipeable: boolean // 是否允许滑动切换
|
||||
<template>
|
||||
<view class="tabs">
|
||||
<u-sticky :enable="isFixed" :bg-color="stickyBgColor" :offset-top="top" :h5-nav-height="0">
|
||||
<view
|
||||
:id="id"
|
||||
:style="{
|
||||
background: bgColor
|
||||
}"
|
||||
>
|
||||
<scroll-view
|
||||
:style="{ height: height + 'rpx' }"
|
||||
scroll-x
|
||||
class="scroll-view"
|
||||
:scroll-left="scrollLeft"
|
||||
scroll-with-animation
|
||||
>
|
||||
<view class="scroll-box" :class="{ 'tabs-scorll-flex': !isScroll }">
|
||||
<view
|
||||
class="tab-item line1"
|
||||
:id="'tab-item-' + index"
|
||||
v-for="(item, index) in list"
|
||||
:key="index"
|
||||
@tap="clickTab(index)"
|
||||
:style="[tabItemStyle(index)]"
|
||||
>
|
||||
<u-badge
|
||||
:count="item[count] || item['dot'] || 0"
|
||||
:offset="offset"
|
||||
size="mini"
|
||||
></u-badge>
|
||||
{{ item[name] || item['name'] }}
|
||||
</view>
|
||||
<view v-if="showBar" class="tab-bar" :style="[tabBarStyle]"></view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</u-sticky>
|
||||
<view
|
||||
class="tab-content"
|
||||
@touchstart="onTouchStart"
|
||||
@touchmove="onTouchMove"
|
||||
@touchcancel="onTouchEnd"
|
||||
@touchend="onTouchEnd"
|
||||
>
|
||||
<!-- <view class="tab-track" :class="{'tab-animated': animated}" :style="[trackStyle]"> -->
|
||||
<view>
|
||||
<slot></slot>
|
||||
</view>
|
||||
<!-- </view> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { getRect } from '@/utils/util'
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
computed,
|
||||
watch,
|
||||
provide,
|
||||
nextTick,
|
||||
onMounted,
|
||||
getCurrentInstance
|
||||
} from 'vue'
|
||||
import { useTouch } from '@/hooks/useTouch'
|
||||
|
||||
// Touch 钩子
|
||||
const { touch, resetTouchStatus, touchStart, touchMove } = useTouch()
|
||||
|
||||
const emit = defineEmits<{
|
||||
(event: 'change', value: number): void
|
||||
}>()
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
isScroll?: boolean // 导航菜单是否需要滚动,如只有2或者3个的时候,就不需要滚动了,此时使用flex平分tab的宽度
|
||||
current?: number | string // 当前活动tab的索引
|
||||
height?: number | string // 导航栏的高度和行高
|
||||
fontSize?: number | string // 字体大小
|
||||
duration?: number | string // 过渡动画时长, 单位ms
|
||||
activeColor?: number | string // 选中项的主题颜色
|
||||
inactiveColor?: number | string // 未选中项的颜色
|
||||
barWidth?: number | string // 菜单底部移动的bar的宽度,单位rpx
|
||||
barHeight?: number // 移动bar的高度
|
||||
gutter?: number | string // 单个tab的左或有内边距(左右相同)
|
||||
bgColor?: number | string // 导航栏的背景颜色
|
||||
name?: string // 读取传入的数组对象的属性(tab名称)
|
||||
count?: string // 读取传入的数组对象的属性(徽标数)
|
||||
offset?: number[] // 徽标数位置偏移
|
||||
bold?: boolean // 活动tab字体是否加粗
|
||||
activeItemStyle?: any // 当前活动tab item的样式
|
||||
showBar?: boolean // 是否显示底部的滑块
|
||||
barStyle?: any // 底部滑块的自定义样式
|
||||
itemWidth?: string // 标签的宽度
|
||||
isFixed?: boolean // 吸顶是否固定
|
||||
top?: number | string // 吸顶顶部距离
|
||||
stickyBgColor?: string // 吸顶颜色
|
||||
|
||||
swipeable: boolean // 是否允许滑动切换
|
||||
// animated: boolean // 切换动画
|
||||
} > (), {
|
||||
}>(),
|
||||
{
|
||||
isScroll: true,
|
||||
current: 0,
|
||||
height: 80,
|
||||
@@ -88,318 +123,315 @@
|
||||
isFixed: false,
|
||||
top: 0,
|
||||
stickyBgColor: '#FFFFFF',
|
||||
|
||||
swipeable: true,
|
||||
|
||||
swipeable: true
|
||||
// animated: true
|
||||
})
|
||||
|
||||
const list = ref<any>([])
|
||||
const childrens = ref<any>([])
|
||||
const scrollLeft = ref<number>(0) // 滚动scroll-view的左边滚动距离
|
||||
const tabQueryInfo = ref<any>([]) // 存放对tab菜单查询后的节点信息
|
||||
const componentWidth = ref<number>(0) // 屏幕宽度,单位为px
|
||||
const scrollBarLeft = ref<number>(0) // 移动bar需要通过translateX()移动的距离
|
||||
const parentLeft = ref<number>(0) // 父元素(tabs组件)到屏幕左边的距离
|
||||
const id = ref<string>('cu-tab') // id值
|
||||
const currentIndex = ref<any>(props.current)
|
||||
const barFirstTimeMove = ref<boolean>(true)// 滑块第一次移动时(页面刚生成时),无需动画,否则给人怪异的感觉
|
||||
const swiping = ref<boolean>(false)
|
||||
|
||||
//@ts-ignore
|
||||
const { ctx } = getCurrentInstance()
|
||||
|
||||
// 监听tab的变化,重新计算tab菜单的布局信息,因为实际使用中菜单可能是通过
|
||||
// 后台获取的(如新闻app顶部的菜单),获取返回需要一定时间,所以list变化时,重新获取布局信息
|
||||
watch(() => list.value, async (n, o) => {
|
||||
// list变动时,重制内部索引,否则可能导致超出数组边界的情况
|
||||
if(!barFirstTimeMove.value && n.length !== o.length) {
|
||||
currentIndex.value = 0;
|
||||
}
|
||||
// 用$nextTick等待视图更新完毕后再计算tab的局部信息,否则可能因为tab还没生成就获取,就会有问题
|
||||
await nextTick();
|
||||
init();
|
||||
})
|
||||
watch(() => props.current, (nVal, oVal) => {
|
||||
}
|
||||
)
|
||||
|
||||
const list = ref<any>([])
|
||||
const childrens = ref<any>([])
|
||||
const scrollLeft = ref<number>(0) // 滚动scroll-view的左边滚动距离
|
||||
const tabQueryInfo = ref<any>([]) // 存放对tab菜单查询后的节点信息
|
||||
const componentWidth = ref<number>(0) // 屏幕宽度,单位为px
|
||||
const scrollBarLeft = ref<number>(0) // 移动bar需要通过translateX()移动的距离
|
||||
const parentLeft = ref<number>(0) // 父元素(tabs组件)到屏幕左边的距离
|
||||
const id = ref<string>('cu-tab') // id值
|
||||
const currentIndex = ref<any>(props.current)
|
||||
const barFirstTimeMove = ref<boolean>(true) // 滑块第一次移动时(页面刚生成时),无需动画,否则给人怪异的感觉
|
||||
const swiping = ref<boolean>(false)
|
||||
|
||||
//@ts-ignore
|
||||
const { ctx } = getCurrentInstance()
|
||||
|
||||
// 监听tab的变化,重新计算tab菜单的布局信息,因为实际使用中菜单可能是通过
|
||||
// 后台获取的(如新闻app顶部的菜单),获取返回需要一定时间,所以list变化时,重新获取布局信息
|
||||
watch(
|
||||
() => list.value,
|
||||
async (n, o) => {
|
||||
// list变动时,重制内部索引,否则可能导致超出数组边界的情况
|
||||
if (!barFirstTimeMove.value && n.length !== o.length) {
|
||||
currentIndex.value = 0
|
||||
}
|
||||
// 用$nextTick等待视图更新完毕后再计算tab的局部信息,否则可能因为tab还没生成就获取,就会有问题
|
||||
await nextTick()
|
||||
init()
|
||||
}
|
||||
)
|
||||
watch(
|
||||
() => props.current,
|
||||
(nVal, oVal) => {
|
||||
// 视图更新后再执行移动操作、
|
||||
nextTick(() => {
|
||||
currentIndex.value = nVal;
|
||||
scrollByIndex();
|
||||
});
|
||||
}, { immediate: true })
|
||||
|
||||
|
||||
// 移动bar的样式
|
||||
const tabBarStyle = computed(() => {
|
||||
let style = {
|
||||
width: props.barWidth + 'rpx',
|
||||
transform: `translate(${scrollBarLeft.value}px, -100%)`,
|
||||
// 滑块在页面渲染后第一次滑动时,无需动画效果
|
||||
'transition-duration': `${barFirstTimeMove.value ? 0 : props.duration }s`,
|
||||
'background-color': props.activeColor,
|
||||
height: props.barHeight + 'rpx',
|
||||
opacity: barFirstTimeMove.value ? 0 : 1,
|
||||
// 设置一个很大的值,它会自动取能用的最大值,不用高度的一半,是因为高度可能是单数,会有小数出现
|
||||
'border-radius': `${props.barHeight / 2}px`
|
||||
};
|
||||
Object.assign(style, props.barStyle);
|
||||
return style;
|
||||
})
|
||||
// tab的样式
|
||||
const tabItemStyle = computed(() => {
|
||||
return (index) => {
|
||||
let style: any = {
|
||||
height: props.height + 'rpx',
|
||||
'line-height': props.height + 'rpx',
|
||||
'font-size': props.fontSize + 'rpx',
|
||||
padding: props.isScroll ? `0 ${props.gutter}rpx` : '',
|
||||
flex: props.isScroll ? 'auto' : '1',
|
||||
width: `${props.itemWidth}rpx`
|
||||
};
|
||||
// 字体加粗
|
||||
if (index == currentIndex.value && props.bold) style.fontWeight = 'bold';
|
||||
if (index == currentIndex.value) {
|
||||
style.color = props.activeColor;
|
||||
// 给选中的tab item添加外部自定义的样式
|
||||
style = Object.assign(style, props.activeItemStyle);
|
||||
} else {
|
||||
style.color = props.inactiveColor;
|
||||
}
|
||||
return style;
|
||||
}
|
||||
})
|
||||
|
||||
// const trackStyle = computed(() => {
|
||||
// if (!props.animated) return ''
|
||||
// return {
|
||||
// left: -100 * currentIndex.value + '%',
|
||||
// 'transition-duration': props.duration + 's',
|
||||
// '-webkit-transition-duration': props.duration + 's',
|
||||
// }
|
||||
// })
|
||||
|
||||
|
||||
const updateTabs = () => {
|
||||
list.value = childrens.value.map((item) => {
|
||||
const {
|
||||
name,
|
||||
dot,
|
||||
active,
|
||||
inited,
|
||||
} = item.event
|
||||
const { updateRender } = item
|
||||
return {
|
||||
name,
|
||||
dot,
|
||||
active,
|
||||
inited,
|
||||
updateRender
|
||||
}
|
||||
})
|
||||
// nextTick(() => {
|
||||
// init()
|
||||
// })
|
||||
currentIndex.value = nVal
|
||||
scrollByIndex()
|
||||
})
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
// 移动bar的样式
|
||||
const tabBarStyle = computed(() => {
|
||||
const style = {
|
||||
width: props.barWidth + 'rpx',
|
||||
transform: `translate(${scrollBarLeft.value}px, -100%)`,
|
||||
// 滑块在页面渲染后第一次滑动时,无需动画效果
|
||||
'transition-duration': `${barFirstTimeMove.value ? 0 : props.duration}s`,
|
||||
'background-color': props.activeColor,
|
||||
height: props.barHeight + 'rpx',
|
||||
opacity: barFirstTimeMove.value ? 0 : 1,
|
||||
// 设置一个很大的值,它会自动取能用的最大值,不用高度的一半,是因为高度可能是单数,会有小数出现
|
||||
'border-radius': `${props.barHeight / 2}px`
|
||||
}
|
||||
|
||||
// 设置一个init方法,方便多处调用
|
||||
const init = async () => {
|
||||
// 获取tabs组件的尺寸信息
|
||||
let tabRect = await getRect('#' + id.value, false, ctx);
|
||||
// tabs组件距离屏幕左边的宽度
|
||||
parentLeft.value = tabRect.left;
|
||||
// tabs组件的宽度
|
||||
componentWidth.value = tabRect.width;
|
||||
getTabRect();
|
||||
}
|
||||
|
||||
// 点击某一个tab菜单
|
||||
const clickTab = (index) => {
|
||||
// 点击当前活动tab,不触发事件
|
||||
if (index == currentIndex.value) return;
|
||||
nextTick(() => {
|
||||
currentIndex.value = index;
|
||||
scrollByIndex();
|
||||
});
|
||||
// 发送事件给父组件
|
||||
emit('change', index);
|
||||
}
|
||||
|
||||
// 查询tab的布局信息
|
||||
const getTabRect = () => {
|
||||
// 创建节点查询
|
||||
let query: any = uni.createSelectorQuery().in(ctx);
|
||||
// 历遍所有tab,这里是执行了查询,最终使用exec()会一次性返回查询的数组结果
|
||||
for (let i = 0; i < list.value.length; i++) {
|
||||
// 只要size和rect两个参数
|
||||
query.select(`#tab-item-${i}`).fields({
|
||||
size: true,
|
||||
rect: true
|
||||
});
|
||||
}
|
||||
// 执行查询,一次性获取多个结果
|
||||
query.exec((res) => {
|
||||
tabQueryInfo.value = res;
|
||||
// 初始化滚动条和移动bar的位置
|
||||
scrollByIndex();
|
||||
});
|
||||
}
|
||||
|
||||
// 滚动scroll-view,让活动的tab处于屏幕的中间位置
|
||||
const scrollByIndex = () => {
|
||||
// 当前活动tab的布局信息,有tab菜单的width和left(为元素左边界到父元素左边界的距离)等信息
|
||||
let tabInfo = tabQueryInfo.value[currentIndex.value];
|
||||
if (!tabInfo) return;
|
||||
// 活动tab的宽度
|
||||
let tabWidth = tabInfo.width;
|
||||
// 活动item的左边到tabs组件左边的距离,用item的left减去tabs的left
|
||||
let offsetLeft = tabInfo.left - parentLeft.value;
|
||||
// 将活动的tabs-item移动到屏幕正中间,实际上是对scroll-view的移动
|
||||
let scrollLefts = offsetLeft - (componentWidth.value - tabWidth) / 2;
|
||||
scrollLeft.value = scrollLefts < 0 ? 0 : scrollLefts;
|
||||
// 当前活动item的中点点到左边的距离减去滑块宽度的一半,即可得到滑块所需的移动距离
|
||||
let left = tabInfo.left + tabInfo.width / 2 - parentLeft.value;
|
||||
// 计算当前活跃item到组件左边的距离
|
||||
scrollBarLeft.value = left - uni.upx2px(props.barWidth) / 2;
|
||||
// 第一次移动滑块的时候,barFirstTimeMove为true,放到延时中将其设置false
|
||||
// 延时是因为scrollBarLeft作用于computed计算时,需要一个过程需,否则导致出错
|
||||
if (barFirstTimeMove.value == true) {
|
||||
setTimeout(() => {
|
||||
barFirstTimeMove.value = false;
|
||||
}, 100)
|
||||
Object.assign(style, props.barStyle)
|
||||
return style
|
||||
})
|
||||
// tab的样式
|
||||
const tabItemStyle = computed(() => {
|
||||
return (index) => {
|
||||
let style: any = {
|
||||
height: props.height + 'rpx',
|
||||
'line-height': props.height + 'rpx',
|
||||
'font-size': props.fontSize + 'rpx',
|
||||
padding: props.isScroll ? `0 ${props.gutter}rpx` : '',
|
||||
flex: props.isScroll ? 'auto' : '1',
|
||||
width: `${props.itemWidth}rpx`
|
||||
}
|
||||
|
||||
// 更新子组件的显示
|
||||
childrens.value.forEach((item, ind) => {
|
||||
let active = ind === currentIndex.value;
|
||||
if (active !== item.event.active || !item.event.inited) {
|
||||
item.updateRender(active);
|
||||
}
|
||||
});
|
||||
}
|
||||
// 子组件调用此函数而产生的事件通信
|
||||
const handleChange = (event, updateRender) => {
|
||||
childrens.value.push({event: event, updateRender})
|
||||
}
|
||||
// 手指触摸
|
||||
const onTouchStart = (event) => {
|
||||
if (!props.swipeable)
|
||||
return;
|
||||
swiping.value = true;
|
||||
touchStart(event);
|
||||
}
|
||||
// 手指滑动
|
||||
const onTouchMove = (event) => {
|
||||
if (!props.swipeable || !swiping.value)
|
||||
return;
|
||||
touchMove(event);
|
||||
}
|
||||
// 手指滑动结束
|
||||
const onTouchEnd = () => {
|
||||
if (!props.swipeable || !swiping.value)
|
||||
return;
|
||||
const minSwipeDistance = 50;
|
||||
if (touch.direction === 'horizontal' && touch.offsetX >= minSwipeDistance) {
|
||||
let index, len = list.value.length, curIndex = currentIndex.value;
|
||||
if (touch.deltaX <= 0) {
|
||||
curIndex >= (len - 1) ? index = 0 : index = curIndex + 1
|
||||
} else {
|
||||
curIndex <= 0 ? index = (len - 1) : index = curIndex - 1
|
||||
}
|
||||
nextTick(() => {
|
||||
currentIndex.value = index;
|
||||
scrollByIndex();
|
||||
});
|
||||
// 发送事件给父组件
|
||||
emit('change', index);
|
||||
// 字体加粗
|
||||
if (index == currentIndex.value && props.bold) style.fontWeight = 'bold'
|
||||
if (index == currentIndex.value) {
|
||||
style.color = props.activeColor
|
||||
// 给选中的tab item添加外部自定义的样式
|
||||
style = Object.assign(style, props.activeItemStyle)
|
||||
} else {
|
||||
style.color = props.inactiveColor
|
||||
}
|
||||
swiping.value = false;
|
||||
return style
|
||||
}
|
||||
|
||||
|
||||
|
||||
onMounted(() => {
|
||||
updateTabs();
|
||||
})
|
||||
|
||||
|
||||
provide('handleChange', handleChange)
|
||||
provide('updateTabs', updateTabs)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* #ifndef APP-NVUE */
|
||||
::-webkit-scrollbar,
|
||||
::-webkit-scrollbar,
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
-webkit-appearance: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
|
||||
.scroll-box {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
/* #ifdef MP-TOUTIAO */
|
||||
white-space: nowrap;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.tab-fixed {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* #ifdef H5 */
|
||||
// 通过样式穿透,隐藏H5下,scroll-view下的滚动条
|
||||
scroll-view ::v-deep ::-webkit-scrollbar {
|
||||
display: none;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
-webkit-appearance: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
|
||||
.scroll-view {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tab-item {
|
||||
position: relative;
|
||||
/* #ifndef APP-NVUE */
|
||||
display: inline-block;
|
||||
/* #endif */
|
||||
text-align: center;
|
||||
transition-property: background-color, color;
|
||||
}
|
||||
|
||||
.tab-bar {
|
||||
position: absolute;
|
||||
bottom: 6rpx;
|
||||
}
|
||||
|
||||
.tabs-scorll-flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
// .tab-content {
|
||||
// overflow: hidden;
|
||||
// .tab-track {
|
||||
// position: relative;
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// }
|
||||
// .tab-animated {
|
||||
// display: flex;
|
||||
// transition-property: left;
|
||||
// }
|
||||
// }
|
||||
})
|
||||
|
||||
// const trackStyle = computed(() => {
|
||||
// if (!props.animated) return ''
|
||||
// return {
|
||||
// left: -100 * currentIndex.value + '%',
|
||||
// 'transition-duration': props.duration + 's',
|
||||
// '-webkit-transition-duration': props.duration + 's',
|
||||
// }
|
||||
// })
|
||||
|
||||
const updateTabs = () => {
|
||||
list.value = childrens.value.map((item) => {
|
||||
const { name, dot, active, inited } = item.event
|
||||
const { updateRender } = item
|
||||
return {
|
||||
name,
|
||||
dot,
|
||||
active,
|
||||
inited,
|
||||
updateRender
|
||||
}
|
||||
})
|
||||
// nextTick(() => {
|
||||
// init()
|
||||
// })
|
||||
}
|
||||
|
||||
// 设置一个init方法,方便多处调用
|
||||
const init = async () => {
|
||||
// 获取tabs组件的尺寸信息
|
||||
const tabRect = await getRect('#' + id.value, false, ctx)
|
||||
// tabs组件距离屏幕左边的宽度
|
||||
parentLeft.value = tabRect.left
|
||||
// tabs组件的宽度
|
||||
componentWidth.value = tabRect.width
|
||||
getTabRect()
|
||||
}
|
||||
|
||||
// 点击某一个tab菜单
|
||||
const clickTab = (index) => {
|
||||
// 点击当前活动tab,不触发事件
|
||||
if (index == currentIndex.value) return
|
||||
nextTick(() => {
|
||||
currentIndex.value = index
|
||||
scrollByIndex()
|
||||
})
|
||||
// 发送事件给父组件
|
||||
emit('change', index)
|
||||
}
|
||||
|
||||
// 查询tab的布局信息
|
||||
const getTabRect = () => {
|
||||
// 创建节点查询
|
||||
const query: any = uni.createSelectorQuery().in(ctx)
|
||||
// 历遍所有tab,这里是执行了查询,最终使用exec()会一次性返回查询的数组结果
|
||||
for (let i = 0; i < list.value.length; i++) {
|
||||
// 只要size和rect两个参数
|
||||
query.select(`#tab-item-${i}`).fields({
|
||||
size: true,
|
||||
rect: true
|
||||
})
|
||||
}
|
||||
// 执行查询,一次性获取多个结果
|
||||
query.exec((res) => {
|
||||
tabQueryInfo.value = res
|
||||
// 初始化滚动条和移动bar的位置
|
||||
scrollByIndex()
|
||||
})
|
||||
}
|
||||
|
||||
// 滚动scroll-view,让活动的tab处于屏幕的中间位置
|
||||
const scrollByIndex = () => {
|
||||
// 当前活动tab的布局信息,有tab菜单的width和left(为元素左边界到父元素左边界的距离)等信息
|
||||
const tabInfo = tabQueryInfo.value[currentIndex.value]
|
||||
if (!tabInfo) return
|
||||
// 活动tab的宽度
|
||||
const tabWidth = tabInfo.width
|
||||
// 活动item的左边到tabs组件左边的距离,用item的left减去tabs的left
|
||||
const offsetLeft = tabInfo.left - parentLeft.value
|
||||
// 将活动的tabs-item移动到屏幕正中间,实际上是对scroll-view的移动
|
||||
const scrollLefts = offsetLeft - (componentWidth.value - tabWidth) / 2
|
||||
scrollLeft.value = scrollLefts < 0 ? 0 : scrollLefts
|
||||
// 当前活动item的中点点到左边的距离减去滑块宽度的一半,即可得到滑块所需的移动距离
|
||||
const left = tabInfo.left + tabInfo.width / 2 - parentLeft.value
|
||||
// 计算当前活跃item到组件左边的距离
|
||||
scrollBarLeft.value = left - uni.upx2px(props.barWidth) / 2
|
||||
// 第一次移动滑块的时候,barFirstTimeMove为true,放到延时中将其设置false
|
||||
// 延时是因为scrollBarLeft作用于computed计算时,需要一个过程需,否则导致出错
|
||||
if (barFirstTimeMove.value == true) {
|
||||
setTimeout(() => {
|
||||
barFirstTimeMove.value = false
|
||||
}, 100)
|
||||
}
|
||||
|
||||
// 更新子组件的显示
|
||||
childrens.value.forEach((item, ind) => {
|
||||
const active = ind === currentIndex.value
|
||||
if (active !== item.event.active || !item.event.inited) {
|
||||
item.updateRender(active)
|
||||
}
|
||||
})
|
||||
}
|
||||
// 子组件调用此函数而产生的事件通信
|
||||
const handleChange = (event, updateRender) => {
|
||||
childrens.value.push({ event: event, updateRender })
|
||||
}
|
||||
// 手指触摸
|
||||
const onTouchStart = (event) => {
|
||||
if (!props.swipeable) return
|
||||
swiping.value = true
|
||||
touchStart(event)
|
||||
}
|
||||
// 手指滑动
|
||||
const onTouchMove = (event) => {
|
||||
if (!props.swipeable || !swiping.value) return
|
||||
touchMove(event)
|
||||
}
|
||||
// 手指滑动结束
|
||||
const onTouchEnd = () => {
|
||||
if (!props.swipeable || !swiping.value) return
|
||||
const minSwipeDistance = 50
|
||||
if (touch.direction === 'horizontal' && touch.offsetX >= minSwipeDistance) {
|
||||
let index,
|
||||
len = list.value.length,
|
||||
curIndex = currentIndex.value
|
||||
if (touch.deltaX <= 0) {
|
||||
curIndex >= len - 1 ? (index = 0) : (index = curIndex + 1)
|
||||
} else {
|
||||
curIndex <= 0 ? (index = len - 1) : (index = curIndex - 1)
|
||||
}
|
||||
nextTick(() => {
|
||||
currentIndex.value = index
|
||||
scrollByIndex()
|
||||
})
|
||||
// 发送事件给父组件
|
||||
emit('change', index)
|
||||
}
|
||||
swiping.value = false
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
updateTabs()
|
||||
})
|
||||
|
||||
provide('handleChange', handleChange)
|
||||
provide('updateTabs', updateTabs)
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* #ifndef APP-NVUE */
|
||||
::-webkit-scrollbar,
|
||||
::-webkit-scrollbar,
|
||||
::-webkit-scrollbar {
|
||||
display: none;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
-webkit-appearance: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
|
||||
.scroll-box {
|
||||
height: 100%;
|
||||
position: relative;
|
||||
/* #ifdef MP-TOUTIAO */
|
||||
white-space: nowrap;
|
||||
/* #endif */
|
||||
}
|
||||
|
||||
.tab-fixed {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* #ifdef H5 */
|
||||
// 通过样式穿透,隐藏H5下,scroll-view下的滚动条
|
||||
scroll-view ::v-deep ::-webkit-scrollbar {
|
||||
display: none;
|
||||
width: 0 !important;
|
||||
height: 0 !important;
|
||||
-webkit-appearance: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* #endif */
|
||||
|
||||
.scroll-view {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tab-item {
|
||||
position: relative;
|
||||
/* #ifndef APP-NVUE */
|
||||
display: inline-block;
|
||||
/* #endif */
|
||||
text-align: center;
|
||||
transition-property: background-color, color;
|
||||
}
|
||||
|
||||
.tab-bar {
|
||||
position: absolute;
|
||||
bottom: 6rpx;
|
||||
}
|
||||
|
||||
.tabs-scorll-flex {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
// .tab-content {
|
||||
// overflow: hidden;
|
||||
// .tab-track {
|
||||
// position: relative;
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// }
|
||||
// .tab-animated {
|
||||
// display: flex;
|
||||
// transition-property: left;
|
||||
// }
|
||||
// }
|
||||
</style>
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
indicator-active-color="#4173ff"
|
||||
:autoplay="true"
|
||||
>
|
||||
<swiper-item v-for="(item, index) in content.data" :key="index">
|
||||
<swiper-item
|
||||
v-for="(item, index) in content.data"
|
||||
:key="index"
|
||||
@click="handleClick(item.link)"
|
||||
>
|
||||
<u-image
|
||||
mode="aspectFit"
|
||||
width="100%"
|
||||
@@ -23,6 +27,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { navigateTo } from '@/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
content: {
|
||||
@@ -35,6 +40,9 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
const { getImageUrl } = useAppStore()
|
||||
const handleClick = (link: any) => {
|
||||
navigateTo(link)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
v-for="(item, index) in content.data"
|
||||
:key="index"
|
||||
class="flex flex-col items-center w-1/4 mb-[15px]"
|
||||
@click="handleClick(item.link)"
|
||||
>
|
||||
<u-image width="52" height="52" :src="getImageUrl(item.image)" alt="" />
|
||||
<div class="mt-[7px]">{{ item.name }}</div>
|
||||
@@ -21,8 +22,9 @@
|
||||
v-for="(item, index) in content.data"
|
||||
:key="index"
|
||||
class="flex items-center border-light border-solid border-0 border-b h-[100rpx] px-[24rpx]"
|
||||
@click="handleClick(item.link)"
|
||||
>
|
||||
<u-image width="48" height="48" :src="item.image" alt="" />
|
||||
<u-image width="48" height="48" :src="getImageUrl(item.image)" alt="" />
|
||||
<div class="ml-[20rpx] flex-1">{{ item.name }}</div>
|
||||
<div class="text-muted">
|
||||
<u-icon name="arrow-right" />
|
||||
@@ -33,6 +35,7 @@
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { navigateTo } from '@/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
content: {
|
||||
@@ -45,6 +48,9 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
const { getImageUrl } = useAppStore()
|
||||
const handleClick = (link: any) => {
|
||||
navigateTo(link)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss"></style>
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
v-for="(item, index) in content.data"
|
||||
:key="index"
|
||||
class="flex flex-col items-center w-1/5 mb-[30rpx]"
|
||||
@click="handleClick(item.link)"
|
||||
>
|
||||
<u-image width="41px" height="41px" :src="getImageUrl(item.image)" alt="" />
|
||||
<view class="mt-[14rpx]">{{ item.name }}</view>
|
||||
@@ -15,6 +16,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { navigateTo } from '@/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
content: {
|
||||
@@ -27,6 +29,9 @@ const props = defineProps({
|
||||
}
|
||||
})
|
||||
|
||||
const handleClick = (link: any) => {
|
||||
navigateTo(link)
|
||||
}
|
||||
const { getImageUrl } = useAppStore()
|
||||
</script>
|
||||
|
||||
|
||||
@@ -9,7 +9,11 @@
|
||||
indicator-active-color="#4173ff"
|
||||
:autoplay="true"
|
||||
>
|
||||
<swiper-item v-for="(item, index) in content.data" :key="index">
|
||||
<swiper-item
|
||||
v-for="(item, index) in content.data"
|
||||
:key="index"
|
||||
@click="handleClick(item.limk)"
|
||||
>
|
||||
<u-image
|
||||
mode="aspectFit"
|
||||
width="100%"
|
||||
@@ -24,6 +28,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { navigateTo } from '@/utils/util'
|
||||
|
||||
const props = defineProps({
|
||||
content: {
|
||||
@@ -35,6 +40,9 @@ const props = defineProps({
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
const handleClick = (link: any) => {
|
||||
navigateTo(link)
|
||||
}
|
||||
const { getImageUrl } = useAppStore()
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,19 +1,25 @@
|
||||
<template>
|
||||
<div class="user-info flex items-center px-[50rpx]">
|
||||
<view class="user-info flex px-[50rpx] justify-between py-[50rpx]">
|
||||
<navigator
|
||||
v-if="isLogin"
|
||||
class="flex items-center"
|
||||
hover-class="none"
|
||||
url="/pages/login/login"
|
||||
url="/pages/user_data/user_data"
|
||||
>
|
||||
<u-avatar :src="user.avatar" :size="120"></u-avatar>
|
||||
<div class="text-white text-3xl ml-[20rpx]">{{ user.nickname }}</div>
|
||||
<view class="text-white ml-[20rpx]">
|
||||
<view class="text-2xl">{{ user.nickname }}</view>
|
||||
<view class="text-xs mt-[18rpx]">账号:{{ user.username }}</view>
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator v-else class="flex items-center" hover-class="none" url="/pages/login/login">
|
||||
<u-avatar src="/static/images/user/default_avatar.png" :size="120"></u-avatar>
|
||||
<div class="text-white text-3xl ml-[20rpx]">未登录</div>
|
||||
<view class="text-white text-3xl ml-[20rpx]">未登录</view>
|
||||
</navigator>
|
||||
</div>
|
||||
<navigator v-if="isLogin" hover-class="none" url="/pages/user_set/user_set">
|
||||
<u-icon name="setting" color="#fff" :size="58"></u-icon>
|
||||
</navigator>
|
||||
</view>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
const props = defineProps({
|
||||
|
||||
@@ -3,4 +3,3 @@ export enum AgreementEnum {
|
||||
PRIVACY = 'privacy',
|
||||
SERVICE = 'service'
|
||||
}
|
||||
|
||||
|
||||
@@ -21,5 +21,14 @@ export enum SMSEnum {
|
||||
}
|
||||
|
||||
export enum SearchTypeEnum {
|
||||
HISTORY = 'history'
|
||||
}
|
||||
HISTORY = 'history'
|
||||
}
|
||||
|
||||
// 用户资料
|
||||
export enum FieldType {
|
||||
NONE = '',
|
||||
AVATAR = 'avatar',
|
||||
USERNAME = 'username',
|
||||
NICKNAME = 'nickname',
|
||||
SEX = 'sex'
|
||||
}
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
export const TOKEN_KEY = 'token'
|
||||
|
||||
// 搜索历史记录
|
||||
export const HISTORY = 'history'
|
||||
export const HISTORY = 'history'
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { reactive } from "vue"
|
||||
import { reactive } from 'vue'
|
||||
|
||||
/**
|
||||
* @description 触碰屏幕钩子函数
|
||||
* @return { Function } 暴露钩子
|
||||
*/
|
||||
export function useTouch () {
|
||||
export function useTouch() {
|
||||
// 最小移动距离
|
||||
const MIN_DISTANCE = 10;
|
||||
|
||||
const MIN_DISTANCE = 10
|
||||
|
||||
const touch = reactive({
|
||||
direction: '',
|
||||
deltaX: 0,
|
||||
@@ -22,48 +22,47 @@ export function useTouch () {
|
||||
*/
|
||||
const getDirection = (x: number, y: number) => {
|
||||
if (x > y && x > MIN_DISTANCE) {
|
||||
return 'horizontal';
|
||||
return 'horizontal'
|
||||
}
|
||||
if (y > x && y > MIN_DISTANCE) {
|
||||
return 'vertical';
|
||||
return 'vertical'
|
||||
}
|
||||
return '';
|
||||
return ''
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 重置参数
|
||||
*/
|
||||
const resetTouchStatus = () => {
|
||||
touch.direction = '';
|
||||
touch.deltaX = 0;
|
||||
touch.deltaY = 0;
|
||||
touch.offsetX = 0;
|
||||
touch.offsetY = 0;
|
||||
touch.direction = ''
|
||||
touch.deltaX = 0
|
||||
touch.deltaY = 0
|
||||
touch.offsetX = 0
|
||||
touch.offsetY = 0
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 触发
|
||||
*/
|
||||
const touchStart = (event: any) => {
|
||||
resetTouchStatus();
|
||||
const events = event.touches[0];
|
||||
touch.startX = events.clientX;
|
||||
touch.startY = events.clientY;
|
||||
resetTouchStatus()
|
||||
const events = event.touches[0]
|
||||
touch.startX = events.clientX
|
||||
touch.startY = events.clientY
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @description 移动
|
||||
*/
|
||||
const touchMove = (event: any) => {
|
||||
const events = event.touches[0];
|
||||
touch.deltaX = events.clientX - touch.startX;
|
||||
touch.deltaY = events.clientY - touch.startY;
|
||||
touch.offsetX = Math.abs(touch.deltaX);
|
||||
touch.offsetY = Math.abs(touch.deltaY);
|
||||
touch.direction =
|
||||
touch.direction || getDirection(touch.offsetX, touch.offsetY);
|
||||
const events = event.touches[0]
|
||||
touch.deltaX = events.clientX - touch.startX
|
||||
touch.deltaY = events.clientY - touch.startY
|
||||
touch.offsetX = Math.abs(touch.deltaX)
|
||||
touch.offsetY = Math.abs(touch.deltaY)
|
||||
touch.direction = touch.direction || getDirection(touch.offsetX, touch.offsetY)
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
touch,
|
||||
resetTouchStatus,
|
||||
|
||||
@@ -5,6 +5,7 @@ import './router'
|
||||
import './styles/index.scss'
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
|
||||
app.use(plugins)
|
||||
return {
|
||||
app
|
||||
|
||||
@@ -52,7 +52,8 @@
|
||||
"path": "pages/user_set/user_set",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人设置"
|
||||
}
|
||||
},
|
||||
"auth": true
|
||||
},
|
||||
{
|
||||
"path": "pages/collection/collection",
|
||||
@@ -77,19 +78,31 @@
|
||||
"path": "pages/change_password/change_password",
|
||||
"style": {
|
||||
"navigationBarTitleText": "修改密码"
|
||||
}
|
||||
},
|
||||
"auth": true
|
||||
},
|
||||
{
|
||||
"path": "pages/user_data/user_data",
|
||||
"style": {
|
||||
"navigationBarTitleText": "个人资料"
|
||||
}
|
||||
},
|
||||
"auth": true
|
||||
},
|
||||
{
|
||||
"path": "pages/search/search",
|
||||
"style": {
|
||||
"navigationBarTitleText": "搜索"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/webview/webview"
|
||||
},
|
||||
{
|
||||
"path": "uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper",
|
||||
"style": {
|
||||
"navigationBarTitleText": "头像裁剪",
|
||||
"navigationBarBackgroundColor": "#000000"
|
||||
}
|
||||
}
|
||||
],
|
||||
"globalStyle": {
|
||||
|
||||
@@ -1,36 +1,35 @@
|
||||
<template>
|
||||
<view class="">
|
||||
<u-parse :html="agreementContent"></u-parse>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template>
|
||||
<view class="">
|
||||
<u-parse :html="agreementContent"></u-parse>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref } from 'vue'
|
||||
import { onLoad } from "@dcloudio/uni-app";
|
||||
import { AgreementEnum } from '@/enums/agreementEnums'
|
||||
import { getPolicy } from '@/api/app'
|
||||
|
||||
let agreementType = ref('') // 协议类型
|
||||
let agreementContent = ref('') // 协议内容
|
||||
|
||||
const getData = async (type) => {
|
||||
let res = await getPolicy({ type })
|
||||
console.log(res, 'res')
|
||||
|
||||
agreementContent.value = res.content
|
||||
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.name
|
||||
})
|
||||
}
|
||||
|
||||
onLoad((options: any) => {
|
||||
if(options.type) {
|
||||
agreementType = options.type
|
||||
getData(agreementType)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
||||
import { reactive, ref } from 'vue'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { AgreementEnum } from '@/enums/agreementEnums'
|
||||
import { getPolicy } from '@/api/app'
|
||||
|
||||
let agreementType = ref('') // 协议类型
|
||||
const agreementContent = ref('') // 协议内容
|
||||
|
||||
const getData = async (type) => {
|
||||
const res = await getPolicy({ type })
|
||||
console.log(res, 'res')
|
||||
|
||||
agreementContent.value = res.content
|
||||
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.name
|
||||
})
|
||||
}
|
||||
|
||||
onLoad((options: any) => {
|
||||
if (options.type) {
|
||||
agreementType = options.type
|
||||
getData(agreementType)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
<template>
|
||||
<view class="as-us flex flex-1 flex-col items-center">
|
||||
<image :src="appStore.config.website.logo" mode="" class="img"></image>
|
||||
<view class="text-content mt-[20rpx]">当前版本{{ appStore.config.version }}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template>
|
||||
<view class="as-us flex flex-1 flex-col items-center">
|
||||
<image :src="appStore.config.website.logo" mode="" class="img"></image>
|
||||
<view class="text-content mt-[20rpx]">当前版本{{ appStore.config.version }}</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useAppStore } from '@/stores/app'
|
||||
const appStore = useAppStore()
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.as-us {
|
||||
.img {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-top: 96rpx;
|
||||
}
|
||||
}
|
||||
import { useAppStore } from '@/stores/app'
|
||||
const appStore = useAppStore()
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.as-us {
|
||||
.img {
|
||||
width: 160rpx;
|
||||
height: 160rpx;
|
||||
border-radius: 20rpx;
|
||||
margin-top: 96rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,37 +1,67 @@
|
||||
<template>
|
||||
<view class="">
|
||||
<u-parse :html="agreementContent"></u-parse>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<template>
|
||||
<view
|
||||
class="register bg-white min-h-full flex flex-col items-center px-[40rpx] pt-[100rpx] box-border"
|
||||
>
|
||||
<view class="w-full">
|
||||
<view class="text-2xl font-medium mb-[60rpx]">修改登录密码</view>
|
||||
<u-form borderBottom :label-width="150">
|
||||
<u-form-item label="原密码" borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
v-model="formData.oldPassword"
|
||||
:border="false"
|
||||
placeholder="请输入原来的密码"
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-form-item label="新密码" borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
type="password"
|
||||
v-model="formData.password"
|
||||
placeholder="6-20位数字+字母或符号组合"
|
||||
:border="false"
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-form-item label="确认密码" borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
type="password"
|
||||
v-model="formData.password2"
|
||||
placeholder="再次输入新密码"
|
||||
:border="false"
|
||||
/>
|
||||
</u-form-item>
|
||||
</u-form>
|
||||
<view class="mt-[100rpx]">
|
||||
<u-button type="primary" shape="circle" @click="handleConfirm"> 确定 </u-button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref } from 'vue'
|
||||
import { onLoad } from "@dcloudio/uni-app";
|
||||
import { AgreementEnum } from '@/enums/agreementEnums'
|
||||
import { getPolicy } from '@/api/app'
|
||||
|
||||
let agreementType = ref('') // 协议类型
|
||||
let agreementContent = ref('') // 协议内容
|
||||
// let agreementName = ref('') // 协议名称
|
||||
|
||||
const getData = async (type) => {
|
||||
let res = await getPolicy({ type })
|
||||
console.log(res, 'res')
|
||||
|
||||
agreementContent.value = res.content
|
||||
|
||||
uni.setNavigationBarTitle({
|
||||
title: res.name
|
||||
})
|
||||
}
|
||||
|
||||
onLoad((options: any) => {
|
||||
if(options.type) {
|
||||
agreementType.value = options.type
|
||||
getData(agreementType)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
import { userChangePwd } from '@/api/user'
|
||||
import { reactive } from 'vue'
|
||||
|
||||
const formData = reactive({
|
||||
oldPassword: '',
|
||||
password: '',
|
||||
password2: ''
|
||||
})
|
||||
|
||||
const handleConfirm = async () => {
|
||||
if (!formData.oldPassword) return uni.$u.toast('请输入原来的密码')
|
||||
if (!formData.password) return uni.$u.toast('请输入密码')
|
||||
if (!formData.password2) return uni.$u.toast('请输入确认密码')
|
||||
if (formData.password != formData.password2) return uni.$u.toast('两次输入的密码不一致')
|
||||
await userChangePwd(formData)
|
||||
uni.$u.toast('操作成功')
|
||||
uni.navigateBack()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,50 +1,61 @@
|
||||
<template>
|
||||
<z-paging ref="paging" v-model="collectData" @query="queryList" :fixed="false" height="100%"
|
||||
use-page-scroll>
|
||||
|
||||
<u-swipe-action :show="item.show" :index="index" v-for="(item, index) in collectData" :key="item.id"
|
||||
@click="handleCollect" :options="options" btn-width="120">
|
||||
<news-card :item="item" :newsId="item.articleId"></news-card>
|
||||
</u-swipe-action>
|
||||
</z-paging>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, shallowRef } from 'vue';
|
||||
import { getCollect, cancelCollect } from "@/api/news"
|
||||
|
||||
|
||||
const paging = shallowRef()
|
||||
const options = reactive([{
|
||||
text: '取消收藏',
|
||||
style: {
|
||||
color: '#FFFFFF',
|
||||
backgroundColor: '#FF2C3C'
|
||||
}
|
||||
}])
|
||||
const collectData: any = ref([])
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
const { lists } = await getCollect()
|
||||
lists.forEach(item => {
|
||||
item.show = false
|
||||
})
|
||||
collectData.value = lists
|
||||
paging.value.complete(lists);
|
||||
}
|
||||
|
||||
const handleCollect = async (index: number): Promise<void> => {
|
||||
try{
|
||||
const articleId: number = collectData.value[index].articleId
|
||||
await cancelCollect({ articleId })
|
||||
paging.value.reload()
|
||||
}catch(err){
|
||||
//TODO handle the exception
|
||||
console.log('取消收藏报错=>', err)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<z-paging
|
||||
ref="paging"
|
||||
v-model="collectData"
|
||||
@query="queryList"
|
||||
:fixed="false"
|
||||
height="100%"
|
||||
use-page-scroll
|
||||
>
|
||||
<u-swipe-action
|
||||
:show="item.show"
|
||||
:index="index"
|
||||
v-for="(item, index) in collectData"
|
||||
:key="item.id"
|
||||
@click="handleCollect"
|
||||
:options="options"
|
||||
btn-width="120"
|
||||
>
|
||||
<news-card :item="item" :newsId="item.articleId"></news-card>
|
||||
</u-swipe-action>
|
||||
</z-paging>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, shallowRef } from 'vue'
|
||||
import { getCollect, cancelCollect } from '@/api/news'
|
||||
|
||||
const paging = shallowRef()
|
||||
const options = reactive([
|
||||
{
|
||||
text: '取消收藏',
|
||||
style: {
|
||||
color: '#FFFFFF',
|
||||
backgroundColor: '#FF2C3C'
|
||||
}
|
||||
}
|
||||
])
|
||||
const collectData: any = ref([])
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
const { lists } = await getCollect()
|
||||
lists.forEach((item) => {
|
||||
item.show = false
|
||||
})
|
||||
collectData.value = lists
|
||||
paging.value.complete(lists)
|
||||
}
|
||||
|
||||
const handleCollect = async (index: number): Promise<void> => {
|
||||
try {
|
||||
const articleId: number = collectData.value[index].articleId
|
||||
await cancelCollect({ articleId })
|
||||
paging.value.reload()
|
||||
} catch (err) {
|
||||
//TODO handle the exception
|
||||
console.log('取消收藏报错=>', err)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
class="register bg-white min-h-full flex flex-col items-center px-[40rpx] pt-[100rpx] box-border"
|
||||
>
|
||||
<view class="w-full">
|
||||
<view class="text-2xl font-medium mb-[100rpx]">忘记登录密码</view>
|
||||
<view class="text-2xl font-medium mb-[60rpx]">忘记登录密码</view>
|
||||
<u-form borderBottom :label-width="150">
|
||||
<u-form-item label="手机号" borderBottom>
|
||||
<u-input
|
||||
|
||||
@@ -42,15 +42,18 @@ const getData = async () => {
|
||||
state.pages = JSON.parse(data.pages)
|
||||
state.article = data.article
|
||||
}
|
||||
|
||||
getData()
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.article-title {
|
||||
&::before {
|
||||
content: '';
|
||||
width: 8rpx;
|
||||
height: 34rpx;
|
||||
display: block;
|
||||
margin-right: 10rpx;
|
||||
background: $u-type-primary;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -81,8 +81,20 @@
|
||||
<u-checkbox v-model="isCheckAgreement" shape="circle">
|
||||
<view class="text-xs flex">
|
||||
已阅读并同意
|
||||
<navigator class="text-primary" hover-class="none">《服务协议》</navigator>
|
||||
和<navigator class="text-primary" hover-class="none">
|
||||
<navigator
|
||||
@click.stop=""
|
||||
class="text-primary"
|
||||
hover-class="none"
|
||||
url="/pages/agreement/agreement?type=service"
|
||||
>
|
||||
《服务协议》
|
||||
</navigator>
|
||||
和<navigator
|
||||
@click.stop=""
|
||||
class="text-primary"
|
||||
hover-class="none"
|
||||
url="/pages/agreement/agreement?type=privacy"
|
||||
>
|
||||
《隐私协议》
|
||||
</navigator>
|
||||
</view>
|
||||
@@ -125,6 +137,7 @@ import { SMSEnum } from '@/enums/appEnums'
|
||||
import { useLockFn } from '@/hooks/useLockFn'
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { currentPage } from '@/utils/util'
|
||||
import { reactive, ref, shallowRef } from 'vue'
|
||||
enum LoginTypeEnum {
|
||||
MOBILE = 'mobile',
|
||||
@@ -185,7 +198,14 @@ const loginFun = async (scene: LoginTypeEnum, code?: string) => {
|
||||
await userStore.getUser()
|
||||
uni.$u.toast('登录成功')
|
||||
uni.hideLoading()
|
||||
uni.navigateBack()
|
||||
uni.navigateBack({
|
||||
success: () => {
|
||||
// @ts-ignore
|
||||
const { onLoad, options } = currentPage()
|
||||
// 刷新上一个页面
|
||||
onLoad && onLoad(options)
|
||||
}
|
||||
})
|
||||
} catch (error: any) {
|
||||
uni.hideLoading()
|
||||
throw new Error(error)
|
||||
|
||||
@@ -1,43 +1,65 @@
|
||||
<template>
|
||||
<z-paging ref="paging" v-model="dataList" v-if="i == index" @query="queryList" :fixed="false" height="100%">
|
||||
<block v-for="(newsItem,newsIndex) in dataList" :key="newsIndex">
|
||||
<news-card :item="newsItem" :newsId="newsItem.id"></news-card>
|
||||
</block>
|
||||
</z-paging>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref } from 'vue';
|
||||
import { getArticleList } from "@/api/news"
|
||||
|
||||
const props = withDefaults(defineProps < {
|
||||
cid: number,
|
||||
i: number,
|
||||
index: number
|
||||
} > (), {
|
||||
cid: 0
|
||||
})
|
||||
|
||||
const paging = ref(null)
|
||||
const dataList = ref([{
|
||||
title: '123'
|
||||
}])
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
try{
|
||||
const { lists } = await getArticleList({
|
||||
cid: props.cid,
|
||||
pageNo, pageSize
|
||||
})
|
||||
paging.value.complete(lists);
|
||||
}catch(e){
|
||||
console.log('报错=>',e)
|
||||
//TODO handle the exception
|
||||
paging.value.complete(false);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
<template>
|
||||
<z-paging
|
||||
auto-show-back-to-top
|
||||
:auto="i == index"
|
||||
ref="paging"
|
||||
v-model="dataList"
|
||||
:data-key="i"
|
||||
@query="queryList"
|
||||
:fixed="false"
|
||||
height="100%"
|
||||
>
|
||||
<block v-for="(newsItem, newsIndex) in dataList" :key="newsIndex">
|
||||
<news-card :item="newsItem" :newsId="newsItem.id"></news-card>
|
||||
</block>
|
||||
</z-paging>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, watch, nextTick } from 'vue'
|
||||
import { getArticleList } from '@/api/news'
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
cid: number
|
||||
i: number
|
||||
index: number
|
||||
}>(),
|
||||
{
|
||||
cid: 0
|
||||
}
|
||||
)
|
||||
|
||||
const paging = ref(null)
|
||||
const dataList = ref([])
|
||||
const isFirst = ref<boolean>(true)
|
||||
|
||||
watch(
|
||||
() => props.index,
|
||||
async () => {
|
||||
await nextTick()
|
||||
if (props.i == props.index && isFirst.value) {
|
||||
isFirst.value = false
|
||||
paging.value?.reload()
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
)
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
try {
|
||||
const { lists } = await getArticleList({
|
||||
cid: props.cid,
|
||||
pageNo,
|
||||
pageSize
|
||||
})
|
||||
paging.value.complete(lists)
|
||||
} catch (e) {
|
||||
console.log('报错=>', e)
|
||||
//TODO handle the exception
|
||||
paging.value.complete(false)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
||||
@@ -1,65 +1,58 @@
|
||||
<template>
|
||||
<view class="news" >
|
||||
<!-- 搜索 -->
|
||||
<navigator url="/pages/search/search">
|
||||
<view class="news-search px-[24rpx] py-[14rpx] bg-white">
|
||||
<u-search placeholder="请输入关键词搜索" disabled :show-action="false"></u-search>
|
||||
</view>
|
||||
</navigator>
|
||||
|
||||
<!-- 内容 -->
|
||||
<tabs
|
||||
:current="current"
|
||||
@change="handleChange"
|
||||
height="80"
|
||||
bar-width="60"
|
||||
:barStyle="{'bottom': '0'}"
|
||||
>
|
||||
<tab
|
||||
v-for="(item, i) in tabList"
|
||||
:key="i"
|
||||
:name="item.name"
|
||||
>
|
||||
<view class="news">
|
||||
<!-- 搜索 -->
|
||||
<navigator class="news-search px-[24rpx] py-[14rpx] bg-white" url="/pages/search/search">
|
||||
<u-search placeholder="请输入关键词搜索" disabled :show-action="false"></u-search>
|
||||
</navigator>
|
||||
|
||||
<!-- 内容 -->
|
||||
<tabs
|
||||
:current="current"
|
||||
@change="handleChange"
|
||||
height="80"
|
||||
bar-width="60"
|
||||
:barStyle="{ bottom: '0' }"
|
||||
>
|
||||
<tab v-for="(item, i) in tabList" :key="i" :name="item.name">
|
||||
<view class="news-list pt-[20rpx]">
|
||||
<news-list :cid="item.id" :i="i" :index="current"></news-list>
|
||||
<news-list :cid="item.id" :i="i" :index="current"></news-list>
|
||||
</view>
|
||||
</tab>
|
||||
</tabs>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, computed } from "vue"
|
||||
import { onLoad, onShow, onReady } from "@dcloudio/uni-app";
|
||||
import NewsList from "./component/news-list.vue"
|
||||
import { getArticleCate } from "@/api/news"
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, computed } from 'vue'
|
||||
import { onLoad, onShow, onReady } from '@dcloudio/uni-app'
|
||||
import NewsList from './component/news-list.vue'
|
||||
import { getArticleCate } from '@/api/news'
|
||||
|
||||
const tabList = ref<any>([])
|
||||
const current = ref<number>(0)
|
||||
|
||||
const handleChange = (index: number) => {
|
||||
console.log(index)
|
||||
current.value = Number(index)
|
||||
}
|
||||
|
||||
const getData = async () => {
|
||||
tabList.value = await getArticleCate()
|
||||
}
|
||||
|
||||
onLoad((options) => {
|
||||
getData()
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
const tabList = ref< any >([])
|
||||
const current = ref<number>(0)
|
||||
|
||||
const handleChange = (index: number) => {
|
||||
console.log(index)
|
||||
current.value = Number(index)
|
||||
}
|
||||
|
||||
const getData = async () => {
|
||||
tabList.value = await getArticleCate()
|
||||
}
|
||||
|
||||
onLoad((options) => {
|
||||
getData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.news {
|
||||
&-search {
|
||||
margin-bottom: 2rpx;
|
||||
}
|
||||
|
||||
&-list {
|
||||
height: calc(100vh - 86px);
|
||||
}
|
||||
}
|
||||
.news {
|
||||
&-search {
|
||||
margin-bottom: 2rpx;
|
||||
}
|
||||
|
||||
&-list {
|
||||
height: calc(100vh - 86px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,95 +1,96 @@
|
||||
<template>
|
||||
<view class="news-detail bg-white" >
|
||||
<!-- 标题信心 -->
|
||||
<view class="news-detail-header py-[20rpx] px-[30rpx]">
|
||||
<view class="text-3xl font-medium">{{ newsData.title }}</view>
|
||||
<view class="flex mt-[20rpx] text-xs">
|
||||
<view class="mr-[40rpx]" v-if="newsData.author">作者: {{ newsData.author }}</view>
|
||||
<view class="text-muted mr-[40rpx]">{{ newsData.createTime }}</view>
|
||||
<view class="flex items-center text-muted ">
|
||||
<image src="/static/images/icon/icon_visit.png" class="w-[30rpx] h-[30rpx]"></image>
|
||||
<view class="ml-[10rpx]">{{ newsData.visit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 咨询内容 -->
|
||||
<view class="news-detail-section bg-white p-[20rpx]">
|
||||
<!-- 摘要 -->
|
||||
<view class="summary p-[20rpx] text-base" v-if="newsData.summary">
|
||||
摘要: {{ newsData.summary }}
|
||||
</view>
|
||||
<!-- 封面 -->
|
||||
<view class="mt-[20rpx]" v-if="newsData.image">
|
||||
<image class="w-full" :src="newsData.image" mode="widthFix"></image>
|
||||
</view>
|
||||
<!-- 内容 -->
|
||||
<view class="mt-[20rpx]">
|
||||
<u-parse :html="newsData.content"></u-parse>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="panel-btn flex items-center px-[34rpx]" @click="handleAddCollect(newsData.id)">
|
||||
<u-icon :name="newsData.collect ? 'star-fill' : 'star'" size="36"></u-icon>
|
||||
<text class="ml-[10rpx]">收藏</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, computed } from "vue"
|
||||
import { onLoad, onShow, onReady } from "@dcloudio/uni-app";
|
||||
import { getArticleDetail, addCollect, cancelCollect } from "@/api/news"
|
||||
<view class="news-detail bg-white">
|
||||
<!-- 标题信心 -->
|
||||
<view class="news-detail-header py-[20rpx] px-[30rpx]">
|
||||
<view class="text-3xl font-medium">{{ newsData.title }}</view>
|
||||
<view class="flex mt-[20rpx] text-xs">
|
||||
<view class="mr-[40rpx]" v-if="newsData.author">作者: {{ newsData.author }}</view>
|
||||
<view class="text-muted mr-[40rpx]">{{ newsData.createTime }}</view>
|
||||
<view class="flex items-center text-muted">
|
||||
<image
|
||||
src="/static/images/icon/icon_visit.png"
|
||||
class="w-[30rpx] h-[30rpx]"
|
||||
></image>
|
||||
<view class="ml-[10rpx]">{{ newsData.visit }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 咨询内容 -->
|
||||
<view class="news-detail-section bg-white p-[20rpx]">
|
||||
<!-- 摘要 -->
|
||||
<view class="summary p-[20rpx] text-base" v-if="newsData.summary">
|
||||
摘要: {{ newsData.summary }}
|
||||
</view>
|
||||
<!-- 封面 -->
|
||||
<view class="mt-[20rpx]" v-if="newsData.image">
|
||||
<image class="w-full" :src="newsData.image" mode="widthFix"></image>
|
||||
</view>
|
||||
<!-- 内容 -->
|
||||
<view class="mt-[20rpx]">
|
||||
<u-parse :html="newsData.content"></u-parse>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="panel-btn flex items-center px-[34rpx]" @click="handleAddCollect(newsData.id)">
|
||||
<u-icon :name="newsData.collect ? 'star-fill' : 'star'" size="36"></u-icon>
|
||||
<text class="ml-[10rpx]">收藏</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, computed } from 'vue'
|
||||
import { onLoad, onShow, onReady } from '@dcloudio/uni-app'
|
||||
import { getArticleDetail, addCollect, cancelCollect } from '@/api/news'
|
||||
|
||||
const newsData = ref<any>({})
|
||||
let newsId = ''
|
||||
|
||||
const getData = async (id) => {
|
||||
newsData.value = await getArticleDetail({ id })
|
||||
}
|
||||
|
||||
const handleAddCollect = async (articleId: number) => {
|
||||
try {
|
||||
if (newsData.value.collect) {
|
||||
await cancelCollect({ articleId })
|
||||
} else await addCollect({ articleId })
|
||||
getData(newsId)
|
||||
} catch (e) {
|
||||
//TODO handle the exception
|
||||
}
|
||||
}
|
||||
|
||||
onLoad((options: any) => {
|
||||
newsId = options.id
|
||||
getData(newsId)
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
const newsData = ref< any >({})
|
||||
let newsId = ''
|
||||
|
||||
|
||||
const getData = async (id) => {
|
||||
newsData.value = await getArticleDetail({ id })
|
||||
}
|
||||
|
||||
const handleAddCollect = async (articleId: number) => {
|
||||
try{
|
||||
if( newsData.value.collect ) {
|
||||
await cancelCollect({ articleId })
|
||||
} else await addCollect({ articleId })
|
||||
getData(newsId)
|
||||
}catch(e){
|
||||
//TODO handle the exception
|
||||
}
|
||||
}
|
||||
|
||||
onLoad((options: any) => {
|
||||
newsId = options.id
|
||||
getData(newsId)
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.news-detail {
|
||||
height: 100%;
|
||||
|
||||
&-header {
|
||||
border-bottom: 2rpx solid #F8F8F8;
|
||||
}
|
||||
|
||||
&-section {
|
||||
.summary {
|
||||
border-radius: 12rpx;
|
||||
background-color: #F7F7F7;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-btn {
|
||||
position: fixed;
|
||||
right: 30rpx;
|
||||
height: 80rpx;
|
||||
bottom: 80rpx;
|
||||
border-radius: 40rpx;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.16);
|
||||
}
|
||||
}
|
||||
.news-detail {
|
||||
height: 100%;
|
||||
|
||||
&-header {
|
||||
border-bottom: 2rpx solid #f8f8f8;
|
||||
}
|
||||
|
||||
&-section {
|
||||
.summary {
|
||||
border-radius: 12rpx;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
}
|
||||
|
||||
.panel-btn {
|
||||
position: fixed;
|
||||
right: 30rpx;
|
||||
height: 80rpx;
|
||||
bottom: 80rpx;
|
||||
border-radius: 40rpx;
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.16);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -35,8 +35,22 @@
|
||||
<u-checkbox v-model="isCheckAgreement" shape="circle">
|
||||
<view class="text-xs flex">
|
||||
已阅读并同意
|
||||
<navigator class="text-primary">《服务协议》</navigator>
|
||||
和<navigator class="text-primary">《隐私协议》</navigator>
|
||||
<navigator
|
||||
@click.stop=""
|
||||
class="text-primary"
|
||||
hover-class="none"
|
||||
url="/pages/agreement/agreement?type=service"
|
||||
>
|
||||
《服务协议》
|
||||
</navigator>
|
||||
和<navigator
|
||||
@click.stop=""
|
||||
class="text-primary"
|
||||
hover-class="none"
|
||||
url="/pages/agreement/agreement?type=privacy"
|
||||
>
|
||||
《隐私协议》
|
||||
</navigator>
|
||||
</view>
|
||||
</u-checkbox>
|
||||
</view>
|
||||
|
||||
@@ -1,67 +1,70 @@
|
||||
<template>
|
||||
<view class="suggest bg-white">
|
||||
|
||||
<!-- 热门搜索 -->
|
||||
<view class="hot" v-if="hot_search.length">
|
||||
<view class="text-base font-medium pl-[24rpx] pt-[26rpx] pb-[6rpx]">热门搜索</view>
|
||||
|
||||
<view class="w-full pl-[24rpx] pr-[8rpx]">
|
||||
<block v-for="hotItem in hot_search">
|
||||
<view class="keyword" @click="handleHistoreSearch(hotItem)">{{ hotItem }}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mx-[24rpx] my-[40rpx] border-b border-solid border-0 border-light" v-if="hot_search.length && his_search.length"></view>
|
||||
|
||||
<!-- 历史搜索 -->
|
||||
<view class="history" v-if="his_search.length">
|
||||
<view class="flex justify-between px-[24rpx] pb-[6rpx]">
|
||||
<view class="text-base font-medium">历史搜索</view>
|
||||
<view class="text-xs text-muted" @click="() => emit('clear')">清空</view>
|
||||
</view>
|
||||
|
||||
<view class="w-full pl-[24rpx] pr-[8rpx]">
|
||||
<block v-for="hisItem in his_search">
|
||||
<view class="keyword" @click="handleHistoreSearch(hisItem)">{{ hisItem }}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="suggest bg-white">
|
||||
<!-- 热门搜索 -->
|
||||
<view class="hot" v-if="hot_search.length">
|
||||
<view class="text-base font-medium pl-[24rpx] pt-[26rpx] pb-[6rpx]">热门搜索</view>
|
||||
|
||||
<view class="w-full pl-[24rpx] pr-[8rpx]">
|
||||
<block v-for="hotItem in hot_search">
|
||||
<view class="keyword" @click="handleHistoreSearch(hotItem)">{{ hotItem }}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view
|
||||
class="mx-[24rpx] my-[40rpx] border-b border-solid border-0 border-light"
|
||||
v-if="hot_search.length && his_search.length"
|
||||
></view>
|
||||
|
||||
<!-- 历史搜索 -->
|
||||
<view class="history" v-if="his_search.length">
|
||||
<view class="flex justify-between px-[24rpx] pb-[6rpx]">
|
||||
<view class="text-base font-medium">历史搜索</view>
|
||||
<view class="text-xs text-muted" @click="() => emit('clear')">清空</view>
|
||||
</view>
|
||||
|
||||
<view class="w-full pl-[24rpx] pr-[8rpx]">
|
||||
<block v-for="hisItem in his_search">
|
||||
<view class="keyword" @click="handleHistoreSearch(hisItem)">{{ hisItem }}</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, nextTick } from "vue"
|
||||
|
||||
const emit = defineEmits<{
|
||||
(event: 'search', value: string): void
|
||||
(event: 'clear', value: void): void
|
||||
}>()
|
||||
|
||||
const props = withDefaults(defineProps < {
|
||||
hot_search?: string[],
|
||||
his_search?: string[]
|
||||
|
||||
} > (), {
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, nextTick } from 'vue'
|
||||
|
||||
const emit = defineEmits<{
|
||||
(event: 'search', value: string): void
|
||||
(event: 'clear', value: void): void
|
||||
}>()
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
hot_search?: string[]
|
||||
his_search?: string[]
|
||||
}>(),
|
||||
{
|
||||
hot_search: [],
|
||||
his_search: []
|
||||
})
|
||||
|
||||
const handleHistoreSearch = (text: string) => {
|
||||
emit('search', text)
|
||||
}
|
||||
his_search: []
|
||||
}
|
||||
)
|
||||
|
||||
const handleHistoreSearch = (text: string) => {
|
||||
emit('search', text)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.suggest {
|
||||
height: 100%;
|
||||
.keyword {
|
||||
display: inline-block;
|
||||
margin: 24rpx 16rpx 0 0;
|
||||
padding: 8rpx 24rpx;
|
||||
border-radius: 26rpx;
|
||||
background-color: #F4F4F4;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
.suggest {
|
||||
height: 100%;
|
||||
.keyword {
|
||||
display: inline-block;
|
||||
margin: 24rpx 16rpx 0 0;
|
||||
padding: 8rpx 24rpx;
|
||||
border-radius: 26rpx;
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,126 +1,127 @@
|
||||
<template>
|
||||
<view class="search">
|
||||
<!-- 搜索框 -->
|
||||
<view class="px-[24rpx] py-[14rpx] bg-white">
|
||||
<u-search
|
||||
v-model="keyword"
|
||||
placeholder="请输入关键词搜索"
|
||||
height="72"
|
||||
@search="handleSearch"
|
||||
@custom="handleSearch"
|
||||
@clear="search.searching = false"
|
||||
></u-search>
|
||||
</view>
|
||||
|
||||
<!-- 搜索 -->
|
||||
<view class="search-content">
|
||||
<!-- -->
|
||||
<suggest
|
||||
v-show="!search.searching"
|
||||
@search="handleSearch"
|
||||
@clear="handleClear"
|
||||
:hot_search="search.hot_search"
|
||||
:his_search="search.his_search"
|
||||
></suggest>
|
||||
|
||||
<!-- -->
|
||||
<view class="search-content-s pt-[20rpx]" v-show="search.searching">
|
||||
<z-paging
|
||||
ref="paging"
|
||||
v-model="search.result"
|
||||
@query="queryList"
|
||||
:fixed="false"
|
||||
height="100%"
|
||||
>
|
||||
<block v-for="(item, index) in search.result" :key="item.id">
|
||||
<news-card :item="item" :newsId="item.id"></news-card>
|
||||
</block>
|
||||
</z-paging>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, shallowRef } from 'vue';
|
||||
import Suggest from "./component/suggest.vue"
|
||||
import { HISTORY } from "@/enums/cacheEnums"
|
||||
import { getHotSearch, getSearch } from "@/api/shop"
|
||||
import cache from "@/utils/cache"
|
||||
|
||||
interface Search {
|
||||
hot_search: any
|
||||
his_search: any
|
||||
result: any
|
||||
searching: boolean
|
||||
}
|
||||
|
||||
const search = reactive<Search>({
|
||||
hot_search: [],
|
||||
his_search: [],
|
||||
result: [],
|
||||
searching: false
|
||||
})
|
||||
const keyword = ref<string>('')
|
||||
const paging = shallowRef()
|
||||
<view class="search">
|
||||
<!-- 搜索框 -->
|
||||
<view class="px-[24rpx] py-[14rpx] bg-white">
|
||||
<u-search
|
||||
v-model="keyword"
|
||||
placeholder="请输入关键词搜索"
|
||||
height="72"
|
||||
@search="handleSearch"
|
||||
@custom="handleSearch"
|
||||
@clear="search.searching = false"
|
||||
></u-search>
|
||||
</view>
|
||||
|
||||
const handleSearch = (value: string) => {
|
||||
keyword.value = value
|
||||
if ( keyword.value ) {
|
||||
if ( !search.his_search.includes(keyword.value) ) {
|
||||
search.his_search.unshift(keyword.value)
|
||||
cache.set(HISTORY, search.his_search)
|
||||
}
|
||||
}
|
||||
paging.value.reload()
|
||||
search.searching = true
|
||||
}
|
||||
|
||||
const getHotSearchFunc = async () => {
|
||||
try{
|
||||
search.hot_search = await getHotSearch()
|
||||
}catch(e){
|
||||
//TODO handle the exception
|
||||
}
|
||||
}
|
||||
|
||||
const handleClear = async (): Promise<void> => {
|
||||
const resModel: any = await uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '是否清空历史记录?'
|
||||
})
|
||||
if ( resModel.confirm ) {
|
||||
cache.set(HISTORY, '')
|
||||
search.his_search = []
|
||||
}
|
||||
}
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
try{
|
||||
const { lists } = await getSearch({
|
||||
keyword: keyword.value,
|
||||
pageNo, pageSize
|
||||
})
|
||||
paging.value.complete(lists);
|
||||
}catch(e){
|
||||
console.log('报错=>',e)
|
||||
//TODO handle the exception
|
||||
paging.value.complete(false);
|
||||
}
|
||||
}
|
||||
|
||||
getHotSearchFunc()
|
||||
search.his_search = cache.get(HISTORY) || new Array()
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.search {
|
||||
&-content {
|
||||
height: calc(100vh - 46px - env(safe-area-inset-bottom));
|
||||
&-s {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
<!-- 搜索 -->
|
||||
<view class="search-content">
|
||||
<!-- -->
|
||||
<suggest
|
||||
v-show="!search.searching"
|
||||
@search="handleSearch"
|
||||
@clear="handleClear"
|
||||
:hot_search="search.hot_search"
|
||||
:his_search="search.his_search"
|
||||
></suggest>
|
||||
|
||||
<!-- -->
|
||||
<view class="search-content-s pt-[20rpx]" v-show="search.searching">
|
||||
<z-paging
|
||||
ref="paging"
|
||||
v-model="search.result"
|
||||
@query="queryList"
|
||||
:fixed="false"
|
||||
height="100%"
|
||||
>
|
||||
<block v-for="(item, index) in search.result" :key="item.id">
|
||||
<news-card :item="item" :newsId="item.id"></news-card>
|
||||
</block>
|
||||
</z-paging>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, reactive, shallowRef } from 'vue'
|
||||
import Suggest from './component/suggest.vue'
|
||||
import { HISTORY } from '@/enums/cacheEnums'
|
||||
import { getHotSearch, getSearch } from '@/api/shop'
|
||||
import cache from '@/utils/cache'
|
||||
|
||||
interface Search {
|
||||
hot_search: string[]
|
||||
his_search: string[]
|
||||
result: any
|
||||
searching: boolean
|
||||
}
|
||||
|
||||
const search = reactive<Search>({
|
||||
hot_search: [],
|
||||
his_search: [],
|
||||
result: [],
|
||||
searching: false
|
||||
})
|
||||
const keyword = ref<string>('')
|
||||
const paging = shallowRef()
|
||||
|
||||
const handleSearch = (value: string) => {
|
||||
keyword.value = value
|
||||
if (keyword.value) {
|
||||
if (!search.his_search.includes(keyword.value)) {
|
||||
search.his_search.unshift(keyword.value)
|
||||
cache.set(HISTORY, search.his_search)
|
||||
}
|
||||
}
|
||||
paging.value.reload()
|
||||
search.searching = true
|
||||
}
|
||||
|
||||
const getHotSearchFunc = async () => {
|
||||
try {
|
||||
search.hot_search = await getHotSearch()
|
||||
} catch (e) {
|
||||
//TODO handle the exception
|
||||
console.log('获取热门搜索失败=>', e)
|
||||
}
|
||||
}
|
||||
|
||||
const handleClear = async (): Promise<void> => {
|
||||
const resModel: any = await uni.showModal({
|
||||
title: '温馨提示',
|
||||
content: '是否清空历史记录?'
|
||||
})
|
||||
if (resModel.confirm) {
|
||||
cache.set(HISTORY, '')
|
||||
search.his_search = []
|
||||
}
|
||||
}
|
||||
|
||||
const queryList = async (pageNo, pageSize) => {
|
||||
try {
|
||||
const { lists } = await getSearch({
|
||||
keyword: keyword.value,
|
||||
pageNo,
|
||||
pageSize
|
||||
})
|
||||
paging.value.complete(lists)
|
||||
} catch (e) {
|
||||
console.log('报错=>', e)
|
||||
//TODO handle the exception
|
||||
paging.value.complete(false)
|
||||
}
|
||||
}
|
||||
|
||||
getHotSearchFunc()
|
||||
search.his_search = cache.get(HISTORY) || []
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.search {
|
||||
&-content {
|
||||
height: calc(100vh - 46px - env(safe-area-inset-bottom));
|
||||
&-s {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,351 @@
|
||||
<template>
|
||||
<!-- Main Start -->
|
||||
<!-- 头部修改头像 -->
|
||||
<view class="header bg-white pt-[30rpx]">
|
||||
<view class="flex justify-center">
|
||||
<image @click="uploaderAvatar" :src="userInfo?.avatar"></image>
|
||||
</view>
|
||||
<view class="mt-[20rpx] text-center text-muted text-xs" @click="uploaderAvatar"
|
||||
>点击修改头像</view
|
||||
>
|
||||
</view>
|
||||
|
||||
<!-- 用户ID -->
|
||||
<view
|
||||
class="item text-nr flex justify-between"
|
||||
@click=";(showUserName = true), (newUsername = userInfo?.username)"
|
||||
>
|
||||
<view class="label">账号</view>
|
||||
<view class="content">{{ userInfo?.username }}</view>
|
||||
<u-icon name="arrow-right" size="22" color="#666"></u-icon>
|
||||
</view>
|
||||
|
||||
<!-- 昵称 -->
|
||||
<view
|
||||
class="item text-nr flex justify-between"
|
||||
@click=";(showNickName = true), (newNickname = userInfo?.nickname)"
|
||||
>
|
||||
<view class="label">昵称</view>
|
||||
<view class="content">{{ userInfo?.nickname }}</view>
|
||||
<u-icon name="arrow-right" size="22" color="#666"></u-icon>
|
||||
</view>
|
||||
|
||||
<!-- 性别 -->
|
||||
<view class="item text-nr flex justify-between" @click="changeSex">
|
||||
<view class="label">性别</view>
|
||||
<view class="content">{{ userInfo?.sex }}</view>
|
||||
<u-icon name="arrow-right" size="22" color="#666"></u-icon>
|
||||
</view>
|
||||
|
||||
<!-- 手机号 -->
|
||||
<view class="item text-nr flex justify-between">
|
||||
<view class="label">手机号</view>
|
||||
<view class="content">{{
|
||||
userInfo?.mobile == '' ? '未绑定手机号' : userInfo?.mobile
|
||||
}}</view>
|
||||
|
||||
<!-- #ifdef MP-WEIXIN -->
|
||||
<u-button
|
||||
open-type="getPhoneNumber"
|
||||
@getphonenumber="getPhoneNumber"
|
||||
size="mini"
|
||||
type="primary"
|
||||
shape="circle"
|
||||
:plain="true"
|
||||
>
|
||||
{{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
|
||||
</u-button>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-WEIXIN -->
|
||||
<u-button @click="" size="mini" type="primary" shape="circle" :plain="true">
|
||||
{{ userInfo?.mobile == '' ? '绑定手机号' : '更换手机号' }}
|
||||
</u-button>
|
||||
<!-- #endif -->
|
||||
</view>
|
||||
|
||||
<!-- 注册时间 -->
|
||||
<view class="item text-nr flex justify-between">
|
||||
<view class="label">注册时间</view>
|
||||
<view class="content">{{ userInfo?.createTime }}</view>
|
||||
</view>
|
||||
|
||||
<!-- 昵称修改组件 -->
|
||||
<u-popup v-model="showNickName" :closeable="true" mode="center" border-radius="20">
|
||||
<view class="px-[50rpx] py-[40rpx] bg-white" style="width: 85vw">
|
||||
<view class="mb-[70rpx] text-xl text-center">修改昵称</view>
|
||||
<u-form-item borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
v-model="newNickname"
|
||||
placeholder="请输入昵称"
|
||||
:border="false"
|
||||
/>
|
||||
</u-form-item>
|
||||
<view class="mt-[80rpx]">
|
||||
<u-button @click="changeNameConfirm" type="primary" shape="circle"> 确定 </u-button>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 账号修改组件 -->
|
||||
<u-popup v-model="showUserName" :closeable="true" mode="center" border-radius="20">
|
||||
<view class="px-[50rpx] py-[40rpx] bg-white" style="width: 85vw">
|
||||
<view class="mb-[70rpx] text-xl text-center">修改账号</view>
|
||||
<u-form-item borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
v-model="newUsername"
|
||||
placeholder="请输入账号"
|
||||
:border="false"
|
||||
/>
|
||||
</u-form-item>
|
||||
<view class="mt-[80rpx]">
|
||||
<u-button @click="changeUserNameConfirm" type="primary" shape="circle">
|
||||
确定
|
||||
</u-button>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
|
||||
<!-- 性别修改组件 -->
|
||||
<u-picker
|
||||
mode="selector"
|
||||
v-model="showPicker"
|
||||
confirm-color="#4173FF"
|
||||
:default-selector="[0]"
|
||||
:range="sexList"
|
||||
@confirm="changeSexConfirm"
|
||||
/>
|
||||
|
||||
<!-- 账号修改组件 -->
|
||||
<u-popup v-model="showMobilePop" :closeable="true" mode="center" border-radius="20">
|
||||
<view class="px-[50rpx] py-[40rpx] bg-white" style="width: 85vw">
|
||||
<view class="mb-[70rpx] text-xl text-center">修改手机号码</view>
|
||||
<u-form-item borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
v-model="newMobile"
|
||||
placeholder="请输入新的手机号码"
|
||||
:border="false"
|
||||
/>
|
||||
</u-form-item>
|
||||
<u-form-item borderBottom>
|
||||
<u-input
|
||||
class="flex-1"
|
||||
v-model="mobileCode"
|
||||
placeholder="请输入验证码"
|
||||
:border="false"
|
||||
/>
|
||||
<view
|
||||
class="border-l border-solid border-0 border-light pl-3 text-muted leading-4 ml-3 w-[180rpx]"
|
||||
@click="sendSms"
|
||||
>
|
||||
<u-verification-code
|
||||
ref="uCodeRef"
|
||||
:seconds="60"
|
||||
@change="codeChange"
|
||||
change-text="x秒"
|
||||
/>
|
||||
{{ codeTips }}
|
||||
</view>
|
||||
</u-form-item>
|
||||
<view class="mt-[80rpx]">
|
||||
<u-button @click="changeCodeMobile" type="primary" shape="circle"> 确定 </u-button>
|
||||
</view>
|
||||
</view>
|
||||
</u-popup>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, shallowRef } from 'vue'
|
||||
import { onShow, onUnload } from '@dcloudio/uni-app'
|
||||
import { getUserInfo, userEdit, userBindMobile, userMnpMobile } from '@/api/user.ts'
|
||||
import { smsSend } from '@/api/app'
|
||||
import { FieldType, SMSEnum } from '@/enums/appEnums'
|
||||
import { uploadFile } from '@/utils/util.ts'
|
||||
|
||||
// 用户信息
|
||||
const userInfo = ref<any | null>(null)
|
||||
// 用户信息的枚举
|
||||
const fieldType = ref(FieldType.NONE)
|
||||
//选择性别数据
|
||||
const sexList = ref<Array<string> | null>(['男', '女'])
|
||||
|
||||
//显示昵称弹窗
|
||||
const showNickName = ref<boolean | null>(false)
|
||||
//显示账户弹窗
|
||||
const showUserName = ref<boolean | null>(false)
|
||||
//显示性别选择弹窗
|
||||
const showPicker = ref<boolean | null>(false)
|
||||
// 显示手机号验证码调整弹窗 非小程序才需要
|
||||
const showMobilePop = ref<boolean | null>(false)
|
||||
|
||||
//新昵称
|
||||
const newNickname = ref<string>('')
|
||||
//新账号
|
||||
const newUsername = ref<string>('')
|
||||
//新的手机号码
|
||||
const newMobile = ref<string>('')
|
||||
|
||||
//修改手机验证码
|
||||
const mobileCode = ref<string>('')
|
||||
const codeTips = ref('')
|
||||
const uCodeRef = shallowRef()
|
||||
|
||||
// 获取用户信息
|
||||
const getUser = async (): Promise<void> => {
|
||||
userInfo.value = await getUserInfo()
|
||||
}
|
||||
|
||||
// 获取验证码显示字段
|
||||
const codeChange = (text: string) => {
|
||||
codeTips.value = text
|
||||
}
|
||||
|
||||
// 发送验证码
|
||||
const sendSms = async () => {
|
||||
if (!newMobile.value) return uni.$u.toast('请输入新的手机号码')
|
||||
if (uCodeRef.value?.canGetCode) {
|
||||
await smsSend({
|
||||
scene: userInfo.value.mobile ? SMSEnum.CHANGE_MOBILE : SMSEnum.BIND_MOBILE,
|
||||
mobile: newMobile.value
|
||||
})
|
||||
uni.$u.toast('发送成功')
|
||||
uCodeRef.value?.start()
|
||||
}
|
||||
}
|
||||
|
||||
// 验证码修改手机号-非微信小程序
|
||||
const changeCodeMobile = async () => {
|
||||
await userBindMobile({
|
||||
type: userInfo.value.mobile ? 'change' : 'bind',
|
||||
mobile: newMobile.value,
|
||||
code: mobileCode.value
|
||||
})
|
||||
getUser()
|
||||
}
|
||||
|
||||
// 修改用户信息
|
||||
const setUserInfoFun = async (value: string): Promise<void> => {
|
||||
await userEdit({
|
||||
field: fieldType.value,
|
||||
value: value
|
||||
})
|
||||
getUser()
|
||||
}
|
||||
|
||||
// 上传头像
|
||||
const uploaderAvatar = () => {
|
||||
fieldType.value = FieldType.AVATAR
|
||||
uni.navigateTo({
|
||||
url: '/uni_modules/vk-uview-ui/components/u-avatar-cropper/u-avatar-cropper?destWidth=300&rectWidth=200&fileType=jpg'
|
||||
})
|
||||
}
|
||||
|
||||
// 显示修改用户性别弹窗
|
||||
const changeSex = () => {
|
||||
showPicker.value = true
|
||||
fieldType.value = FieldType.SEX
|
||||
}
|
||||
|
||||
// 修改用户性别
|
||||
const changeSexConfirm = (value) => {
|
||||
setUserInfoFun(value[0] + 1)
|
||||
showPicker.value = false
|
||||
}
|
||||
|
||||
// 修改用户账号
|
||||
const changeUserNameConfirm = () => {
|
||||
if (newUsername.value == '') return uni.$u.toast('账号不能为空')
|
||||
if (newUsername.value.length > 10) return uni.$u.toast('账号长度不得超过十位数')
|
||||
|
||||
fieldType.value = FieldType.USERNAME
|
||||
setUserInfoFun(newUsername.value)
|
||||
showUserName.value = false
|
||||
}
|
||||
|
||||
// 修改用户昵称
|
||||
const changeNameConfirm = () => {
|
||||
if (newNickname.value == '') return uni.$u.toast('昵称不能为空')
|
||||
if (newNickname.value.length > 10) return uni.$u.toast('昵称长度不得超过十位数')
|
||||
showNickName.value = false
|
||||
fieldType.value = FieldType.NICKNAME
|
||||
setUserInfoFun(newNickname.value)
|
||||
}
|
||||
|
||||
// 微信小程序 绑定||修改用户手机号
|
||||
const getPhoneNumber = async (e): Promise<void> => {
|
||||
fieldType.value = FieldType.MOBILE
|
||||
const { encryptedData, iv, code } = e.detail
|
||||
const data = {
|
||||
code,
|
||||
encrypted_data: encryptedData,
|
||||
iv
|
||||
}
|
||||
if (encryptedData) {
|
||||
await userMnpMobile({
|
||||
...data
|
||||
})
|
||||
getUser()
|
||||
}
|
||||
}
|
||||
|
||||
const goPage = (url: string) => {
|
||||
uni.navigateTo({
|
||||
url: url
|
||||
})
|
||||
}
|
||||
|
||||
// 监听从裁剪页发布的事件,获得裁剪结果
|
||||
uni.$on('uAvatarCropper', (path) => {
|
||||
uni.showLoading({
|
||||
title: '正在上传中...',
|
||||
mask: true
|
||||
})
|
||||
uploadFile(path)
|
||||
.then((res) => {
|
||||
uni.hideLoading()
|
||||
setUserInfoFun(res.url)
|
||||
})
|
||||
.catch(() => {
|
||||
uni.hideLoading()
|
||||
uni.$u.toast('上传失败')
|
||||
})
|
||||
})
|
||||
|
||||
onShow(async () => {
|
||||
getUser()
|
||||
})
|
||||
|
||||
onUnload(() => {
|
||||
uni.$off('uAvatarCropper')
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.header {
|
||||
width: 100%;
|
||||
height: 240rpx;
|
||||
|
||||
image {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.item {
|
||||
margin-top: 2rpx;
|
||||
padding: 30rpx;
|
||||
background-color: #ffffff;
|
||||
|
||||
.label {
|
||||
width: 150rpx;
|
||||
}
|
||||
|
||||
.content {
|
||||
flex: 1;
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,97 +1,136 @@
|
||||
<template>
|
||||
<view class="user-set">
|
||||
<navigator :url="`/pages/user_data/user_data`">
|
||||
<view class="item flex bg-white mt-[20rpx]">
|
||||
<u-avatar :src="userInfo.avatar" shape="square"></u-avatar>
|
||||
<view class="ml-[20rpx] flex flex-1 justify-between">
|
||||
<view>
|
||||
<view class="mb-[15rpx] text-xl font-medium">{{ userInfo.nickname }}</view>
|
||||
<view class="text-content text-xs">账号:{{ userInfo.username }}</view>
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
<view class="item bg-white mt-[20rpx] btn-border flex flex-1 justify-between">
|
||||
<view class="text-xl">登录密码</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
<view class="item bg-white btn-border flex flex-1 justify-between">
|
||||
<view class="text-xl">绑定微信</view>
|
||||
<view class=" flex justify-between">
|
||||
<view class="text-muted mr-[20rpx]">
|
||||
{{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<navigator :url="`/pages/agreement/agreement?type=${ AgreementEnum.PRIVACY }`">
|
||||
<view class="item bg-white mt-[20rpx] btn-border flex flex-1 justify-between">
|
||||
<view class="text-xl">隐私政策</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator :url="`/pages/agreement/agreement?type=${ AgreementEnum.SERVICE }`">
|
||||
<view class="item bg-white btn-border flex flex-1 justify-between">
|
||||
<view class="text-xl">服务协议</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</navigator>
|
||||
<view class="item bg-white btn-border flex flex-1 justify-between">
|
||||
<view class="text-xl">关于我们</view>
|
||||
<view class="flex justify-between">
|
||||
<view class="text-muted mr-[20rpx]">
|
||||
{{ appStore.config.version }}
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {
|
||||
getUserInfo
|
||||
} from '@/api/user'
|
||||
import {
|
||||
onShow
|
||||
} from '@dcloudio/uni-app'
|
||||
import {
|
||||
reactive,
|
||||
ref,
|
||||
} from 'vue'
|
||||
import {
|
||||
useAppStore
|
||||
} from '@/stores/app'
|
||||
import {
|
||||
AgreementEnum
|
||||
} from '@/enums/agreementEnums'
|
||||
|
||||
const appStore = useAppStore()
|
||||
let userInfo = ref({})
|
||||
|
||||
const getUser = async () => {
|
||||
let res = await getUserInfo()
|
||||
console.log(res, 'res')
|
||||
|
||||
userInfo.value = res
|
||||
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
getUser()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.user-set {
|
||||
.item {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.btn-border {
|
||||
border-bottom: 1rpx solid $u-form-item-border-color;
|
||||
}
|
||||
}
|
||||
<template>
|
||||
<view class="user-set">
|
||||
<navigator :url="`/pages/user_data/user_data`">
|
||||
<view class="item flex bg-white mt-[20rpx]">
|
||||
<u-avatar :src="userInfo.avatar" shape="square" :size="100"></u-avatar>
|
||||
<view class="ml-[20rpx] flex flex-1 justify-between items-center">
|
||||
<view>
|
||||
<view class="mb-[15rpx] text-xl font-medium">{{ userInfo.nickname }}</view>
|
||||
<view class="text-content text-xs">账号:{{ userInfo.username }}</view>
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
<view
|
||||
class="item bg-white mt-[20rpx] btn-border flex flex-1 justify-between"
|
||||
@click="show = true"
|
||||
>
|
||||
<view class="">登录密码</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
<view class="item bg-white flex flex-1 justify-between">
|
||||
<view class="">绑定微信</view>
|
||||
<view class="flex justify-between">
|
||||
<view class="text-muted mr-[20rpx]">
|
||||
{{ userInfo.isBindMnp ? '已绑定' : '未绑定' }}
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<navigator :url="`/pages/agreement/agreement?type=${AgreementEnum.PRIVACY}`">
|
||||
<view class="item bg-white mt-[20rpx] btn-border flex flex-1 justify-between">
|
||||
<view class="">隐私政策</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator :url="`/pages/agreement/agreement?type=${AgreementEnum.SERVICE}`">
|
||||
<view class="item bg-white btn-border flex flex-1 justify-between">
|
||||
<view class="">服务协议</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator url="/pages/as_us/as_us">
|
||||
<view class="item bg-white flex flex-1 justify-between">
|
||||
<view class="">关于我们</view>
|
||||
<view class="flex justify-between">
|
||||
<view class="text-muted mr-[20rpx]">
|
||||
{{ appStore.config.version }}
|
||||
</view>
|
||||
<u-icon name="arrow-right" color="#666"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
|
||||
<view class="mt-[60rpx] mx-[26rpx]">
|
||||
<u-button type="primary" shape="circle" @click="logoutHandle">
|
||||
退出登录
|
||||
</u-button>
|
||||
</view>
|
||||
|
||||
|
||||
<u-action-sheet :list="list" v-model="show" @click="handleClick" :safe-area-inset-bottom="true"></u-action-sheet>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getUserInfo } from '@/api/user'
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
import { reactive, ref } from 'vue'
|
||||
import { useAppStore } from '@/stores/app'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { AgreementEnum } from '@/enums/agreementEnums'
|
||||
|
||||
const appStore = useAppStore()
|
||||
const userStore = useUserStore()
|
||||
const userInfo = ref({})
|
||||
const list = ref([
|
||||
{
|
||||
text: '修改密码'
|
||||
},
|
||||
{
|
||||
text: '忘记密码'
|
||||
}
|
||||
])
|
||||
const show = ref(false)
|
||||
|
||||
// 获取用户信息
|
||||
const getUser = async () => {
|
||||
const res = await getUserInfo()
|
||||
userInfo.value = res
|
||||
}
|
||||
|
||||
// 修改/忘记密码
|
||||
const handleClick = (index: number) => {
|
||||
switch (index) {
|
||||
case 0:
|
||||
uni.navigateTo({ url: '/pages/change_password/change_password' })
|
||||
break
|
||||
case 1:
|
||||
uni.navigateTo({ url: '/pages/forget_pwd/forget_pwd' })
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
const logoutHandle = () => {
|
||||
uni.showModal({
|
||||
content: '是否退出登录?',
|
||||
confirmColor: '#4173FF',
|
||||
success: ({
|
||||
cancel
|
||||
}) => {
|
||||
if (cancel) return
|
||||
userStore.login()
|
||||
uni.redirectTo({ url: '/pages/login/login' })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
onShow(() => {
|
||||
getUser()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.user-set {
|
||||
.item {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.btn-border {
|
||||
border-bottom: 2rpx solid #F8F8F8;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
16
app/src/pages/webview/webview.vue
Normal file
16
app/src/pages/webview/webview.vue
Normal file
@@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<web-view :src="url" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import { ref } from 'vue'
|
||||
|
||||
const url = ref('')
|
||||
|
||||
onLoad((options) => {
|
||||
url.value = options.url!
|
||||
})
|
||||
</script>
|
||||
|
||||
<style></style>
|
||||
@@ -1,31 +1,27 @@
|
||||
import { getToken } from '@/utils/auth'
|
||||
import { generateRoutes } from './transformPages'
|
||||
const routes = generateRoutes()
|
||||
|
||||
export default async function () {
|
||||
const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
|
||||
list.forEach((item) => {
|
||||
uni.addInterceptor(item, {
|
||||
invoke(e) {
|
||||
// 获取要跳转的页面路径(url去掉"?"和"?"后的参数)
|
||||
const url = e.url.split('?')[0]
|
||||
const currentRoute = routes.find((item) => {
|
||||
return url === item.path
|
||||
export const routes = generateRoutes()
|
||||
const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
|
||||
list.forEach((item) => {
|
||||
uni.addInterceptor(item, {
|
||||
invoke(e) {
|
||||
// 获取要跳转的页面路径(url去掉"?"和"?"后的参数)
|
||||
const url = e.url.split('?')[0]
|
||||
const currentRoute = routes.find((item) => {
|
||||
return url === item.path
|
||||
})
|
||||
// 需要登录并且没有token
|
||||
if (currentRoute?.auth && !getToken()) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
|
||||
// 需要登录并且没有token
|
||||
if (currentRoute?.isAuth && !getToken()) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
return false
|
||||
}
|
||||
return e
|
||||
},
|
||||
fail(err) {
|
||||
// 失败回调拦截
|
||||
console.log(err)
|
||||
return false
|
||||
}
|
||||
})
|
||||
return e
|
||||
},
|
||||
fail(err) {
|
||||
// 失败回调拦截
|
||||
console.log(err)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -3,11 +3,7 @@
|
||||
* (c) 2020 dlhandsome
|
||||
* @license MIT
|
||||
*/
|
||||
(function(global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
(global.WeCropper = factory());
|
||||
}(this, (function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
var device = void 0;
|
||||
@@ -1260,6 +1256,6 @@
|
||||
WeCropper.prototype.cutt = cut;
|
||||
WeCropper.prototype.update = update;
|
||||
|
||||
return WeCropper;
|
||||
export default WeCropper
|
||||
|
||||
|
||||
})));
|
||||
|
||||
@@ -243,7 +243,6 @@ export default {
|
||||
.u-image {
|
||||
position: relative;
|
||||
transition: opacity 0.5s ease-in-out;
|
||||
|
||||
&__image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
@@ -23,7 +23,7 @@ const requestHooks: RequestHooks = {
|
||||
return options
|
||||
},
|
||||
responseInterceptorsHook(response, config) {
|
||||
const { isTransformResponse, isReturnDefaultResponse } = config
|
||||
const { isTransformResponse, isReturnDefaultResponse, isAuth } = config
|
||||
|
||||
//返回默认响应,当需要获取响应头及其他数据时可使用
|
||||
if (isReturnDefaultResponse) {
|
||||
@@ -54,6 +54,11 @@ const requestHooks: RequestHooks = {
|
||||
case RequestCodeEnum.TOKEN_INVALID:
|
||||
case RequestCodeEnum.TOKEN_EMPTY:
|
||||
logout()
|
||||
if (isAuth && !getToken()) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login'
|
||||
})
|
||||
}
|
||||
return Promise.reject()
|
||||
|
||||
default:
|
||||
@@ -77,6 +82,7 @@ const defaultOptions: HttpRequestOptions = {
|
||||
ignoreCancel: false,
|
||||
// 是否携带token
|
||||
withToken: true,
|
||||
isAuth: false,
|
||||
requestHooks: requestHooks
|
||||
}
|
||||
|
||||
|
||||
1
app/src/utils/request/type.d.ts
vendored
1
app/src/utils/request/type.d.ts
vendored
@@ -14,6 +14,7 @@ export interface RequestConfig {
|
||||
urlPrefix: string
|
||||
ignoreCancel: boolean
|
||||
withToken: boolean
|
||||
isAuth: boolean
|
||||
}
|
||||
|
||||
export interface RequestHooks {
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
import { isObject } from '@vue/shared'
|
||||
import { getToken } from './auth'
|
||||
|
||||
/**
|
||||
* @description 获取元素节点信息(在组件中的元素必须要传ctx)
|
||||
* @param { String } selector 选择器 '.app' | '#app'
|
||||
@@ -23,3 +26,114 @@ export const getRect = (selector: string, all = false, context?: any) => {
|
||||
.exec()
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
<<<<<<< HEAD
|
||||
* @description 获取当前页面实例
|
||||
*/
|
||||
export function currentPage() {
|
||||
const pages = getCurrentPages()
|
||||
const currentPage = pages[pages.length - 1]
|
||||
return currentPage || {}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 后台选择链接专用跳转
|
||||
*/
|
||||
interface Link {
|
||||
path: string
|
||||
name?: string
|
||||
type: string
|
||||
isTab: boolean
|
||||
query?: Record<string, any>
|
||||
}
|
||||
|
||||
export enum LinkTypeEnum {
|
||||
'SHOP_PAGES' = 'shop',
|
||||
'CUSTOM_LINK' = 'custom'
|
||||
}
|
||||
export function navigateTo(link: Link) {
|
||||
let url: string
|
||||
switch (link.type) {
|
||||
case LinkTypeEnum.SHOP_PAGES:
|
||||
url = link.query ? `${link.path}?${objectToQuery(link.query)}` : link.path
|
||||
if (link.isTab) {
|
||||
uni.switchTab({ url })
|
||||
} else {
|
||||
uni.navigateTo({ url })
|
||||
}
|
||||
break
|
||||
case LinkTypeEnum.CUSTOM_LINK:
|
||||
uni.navigateTo({ url: `/pages/webview/webview?url=${link.path}` })
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 是否为空
|
||||
* @param {unknown} value
|
||||
* @return {Boolean}
|
||||
*/
|
||||
export const isEmpty = (value: unknown) => {
|
||||
return value == null && typeof value == 'undefined'
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 对象格式化为Query语法
|
||||
* @param { Object } params
|
||||
* @return {string} Query语法
|
||||
*/
|
||||
export function objectToQuery(params: Record<string, any>): string {
|
||||
let query = ''
|
||||
for (const props of Object.keys(params)) {
|
||||
const value = params[props]
|
||||
const part = encodeURIComponent(props) + '='
|
||||
if (!isEmpty(value)) {
|
||||
console.log(encodeURIComponent(props), isObject(value))
|
||||
if (isObject(value)) {
|
||||
for (const key of Object.keys(value)) {
|
||||
if (!isEmpty(value[key])) {
|
||||
const params = props + '[' + key + ']'
|
||||
const subPart = encodeURIComponent(params) + '='
|
||||
query += subPart + encodeURIComponent(value[key]) + '&'
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log(part + encodeURIComponent(value), '####')
|
||||
query += part + encodeURIComponent(value) + '&'
|
||||
}
|
||||
}
|
||||
}
|
||||
return query.slice(0, -1)
|
||||
}
|
||||
/**
|
||||
* @description 上传图片
|
||||
* @param { String } path 选择的本地地址
|
||||
*/
|
||||
export function uploadFile(path: any) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const token = getToken()
|
||||
uni.uploadFile({
|
||||
url: `${import.meta.env.VITE_APP_BASE_URL}/api/upload/image`,
|
||||
filePath: path,
|
||||
name: 'file',
|
||||
header: {
|
||||
token
|
||||
},
|
||||
fileType: 'image',
|
||||
success: (res) => {
|
||||
console.log('uploadFile res ==> ', res)
|
||||
const data = JSON.parse(res.data)
|
||||
console.log('data.code', data.code)
|
||||
if (data.code == 200) {
|
||||
resolve(data.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err)
|
||||
reject()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1 +1 @@
|
||||
import o from"./error.bbecbd19.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"403",setup(u){return(e,s)=>(t(),m("div",i,[p(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1})]))}});export{J as default};
|
||||
import o from"./error.44f50702.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"403",setup(u){return(e,s)=>(t(),m("div",i,[p(o,{code:"403",title:"\u60A8\u7684\u8D26\u53F7\u6743\u9650\u4E0D\u8DB3\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458\u6DFB\u52A0\u6743\u9650\uFF01","show-btn":!1})]))}});export{J as default};
|
||||
@@ -1 +1 @@
|
||||
import o from"./error.bbecbd19.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{J as default};
|
||||
import o from"./error.44f50702.js";import{d as r,o as t,c as m,V as p}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./vue-router.5046cc50.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const i={class:"error404"},J=r({__name:"404",setup(e){return(u,c)=>(t(),m("div",i,[p(o,{code:"404",title:"\u54CE\u5440\uFF0C\u51FA\u9519\u4E86\uFF01\u60A8\u8BBF\u95EE\u7684\u9875\u9762\u4E0D\u5B58\u5728\u2026"})]))}});export{J as default};
|
||||
@@ -1 +1 @@
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import{_ as Q}from"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
import"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import{_ as Q}from"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
@@ -1 +1 @@
|
||||
import{y as b,u as v}from"./element-plus.f93fd622.js";import{_ as y}from"./index.e14f68ca.js";import{_ as F}from"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import{_ as A}from"./picker.29f42532.js";import{f as _,b as B}from"./index.ab5c8d8d.js";import{d as E,o as u,c as r,a as e,W as D,a8 as C,L as U,M as m,V as t,T as $}from"./@vue.cab01781.js";const w={class:"bg-fill-light flex items-center w-full p-4 mb-4"},N={class:"upload-btn w-[60px] h-[60px]"},z={class:"ml-3 flex-1"},L={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),I={class:"flex mt-[18px]"},M=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),P=$("\u6DFB\u52A0"),K=E({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},setup(d){const l=d,p=()=>{var n;((n=l.modelValue)==null?void 0:n.length)<l.max?l.modelValue.push({image:"",name:"",link:{}}):_.msgError(`\u6700\u591A\u6DFB\u52A0${l.max}\u4E2A`)},i=n=>{var s;if(((s=l.modelValue)==null?void 0:s.length)<=l.min)return _.msgError(`\u6700\u5C11\u4FDD\u7559${l.min}\u4E2A`);l.modelValue.splice(n,1)};return(n,s)=>{const f=B,x=A,V=b,h=F,g=y,k=v;return u(),r("div",null,[e("div",null,[(u(!0),r(D,null,C(d.modelValue,(o,c)=>(u(),U(g,{class:"max-w-[400px]",key:c,onClose:a=>i(c)},{default:m(()=>[e("div",w,[t(x,{modelValue:o.image,"onUpdate:modelValue":a=>o.image=a,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",N,[t(f,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",z,[e("div",L,[T,t(V,{modelValue:o.name,"onUpdate:modelValue":a=>o.name=a,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",I,[M,t(h,{modelValue:o.link,"onUpdate:modelValue":a=>o.link=a},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))),128))]),e("div",null,[t(k,{type:"primary",onClick:p},{default:m(()=>[P]),_:1})])])}}});export{K as _};
|
||||
import{y as b,u as v}from"./element-plus.f93fd622.js";import{_ as y}from"./index.8c4e7c10.js";import{_ as F}from"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import{_ as A}from"./picker.99919d7c.js";import{f as _,b as B}from"./index.86c64501.js";import{d as E,o as u,c as r,a as e,W as D,a8 as C,L as U,M as m,V as t,T as $}from"./@vue.cab01781.js";const w={class:"bg-fill-light flex items-center w-full p-4 mb-4"},N={class:"upload-btn w-[60px] h-[60px]"},z={class:"ml-3 flex-1"},L={class:"flex"},T=e("span",{class:"text-tx-regular flex-none mr-3"},"\u540D\u79F0",-1),I={class:"flex mt-[18px]"},M=e("span",{class:"text-tx-regular flex-none mr-3"},"\u94FE\u63A5",-1),P=$("\u6DFB\u52A0"),K=E({__name:"add-nav",props:{modelValue:{type:Array,default:()=>[]},max:{type:Number,default:10},min:{type:Number,default:1}},setup(d){const l=d,p=()=>{var n;((n=l.modelValue)==null?void 0:n.length)<l.max?l.modelValue.push({image:"",name:"",link:{}}):_.msgError(`\u6700\u591A\u6DFB\u52A0${l.max}\u4E2A`)},i=n=>{var s;if(((s=l.modelValue)==null?void 0:s.length)<=l.min)return _.msgError(`\u6700\u5C11\u4FDD\u7559${l.min}\u4E2A`);l.modelValue.splice(n,1)};return(n,s)=>{const f=B,x=A,V=b,h=F,g=y,k=v;return u(),r("div",null,[e("div",null,[(u(!0),r(D,null,C(d.modelValue,(o,c)=>(u(),U(g,{class:"max-w-[400px]",key:c,onClose:a=>i(c)},{default:m(()=>[e("div",w,[t(x,{modelValue:o.image,"onUpdate:modelValue":a=>o.image=a,"upload-class":"bg-body",size:"60px","exclude-domain":""},{upload:m(()=>[e("div",N,[t(f,{name:"el-icon-Plus",size:20})])]),_:2},1032,["modelValue","onUpdate:modelValue"]),e("div",z,[e("div",L,[T,t(V,{modelValue:o.name,"onUpdate:modelValue":a=>o.name=a,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),e("div",I,[M,t(h,{modelValue:o.link,"onUpdate:modelValue":a=>o.link=a},null,8,["modelValue","onUpdate:modelValue"])])])])]),_:2},1032,["onClose"]))),128))]),e("div",null,[t(k,{type:"primary",onClick:p},{default:m(()=>[P]),_:1})])])}}});export{K as _};
|
||||
1
frontend/assets/article.83af4cc1.js
Normal file
1
frontend/assets/article.83af4cc1.js
Normal file
@@ -0,0 +1 @@
|
||||
import{r as e}from"./index.86c64501.js";function a(t){return e.get({url:"/article/cate/list",params:t})}function l(t){return e.get({url:"/article/cate/all",params:t})}function i(t){return e.post({url:"/article/cate/add",params:t})}function c(t){return e.post({url:"/article/cate/edit",params:t})}function u(t){return e.post({url:"/article/cate/del",params:t})}function n(t){return e.get({url:"/article/cate/detail",params:t})}function s(t){return e.post({url:"/article/cate/change",params:t})}function o(t){return e.get({url:"/article/list",params:t})}function d(t){return e.post({url:"/article/add",params:t})}function f(t){return e.post({url:"/article/edit",params:t})}function p(t){return e.post({url:"/article/del",params:t})}function g(t){return e.get({url:"/article/detail",params:t})}function C(t){return e.post({url:"/article/change",params:t})}export{c as a,i as b,n as c,u as d,s as e,a as f,g,l as h,f as i,d as j,C as k,p as l,o as m};
|
||||
@@ -1 +0,0 @@
|
||||
import{r as e}from"./index.ab5c8d8d.js";function a(t){return e.get({url:"/article/cate/list",params:t})}function l(t){return e.get({url:"/article/cate/all",params:t})}function i(t){return e.post({url:"/article/cate/add",params:t})}function c(t){return e.post({url:"/article/cate/edit",params:t})}function u(t){return e.post({url:"/article/cate/del",params:t})}function n(t){return e.get({url:"/article/cate/detail",params:t})}function s(t){return e.post({url:"/article/cate/change",params:t})}function o(t){return e.get({url:"/article/list",params:t})}function f(t){return e.post({url:"/article/edit",params:t})}function d(t){return e.post({url:"/article/del",params:t})}function p(t){return e.get({url:"/article/detail",params:t})}function g(t){return e.post({url:"/article/change",params:t})}export{c as a,i as b,n as c,u as d,s as e,a as f,p as g,l as h,f as i,g as j,d as k,o as l};
|
||||
@@ -1 +1 @@
|
||||
import"./attr-setting.vue_vue_type_script_setup_true_lang.1fae1728.js";import{_ as pm}from"./attr-setting.vue_vue_type_script_setup_true_lang.1fae1728.js";import"./index.c5fc6e86.js";import"./attr.vue_vue_type_script_setup_true_lang.1b6e0b72.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";import"./content.vue_vue_type_script_setup_true_lang.ef2a15e8.js";import"./attr.vue_vue_type_script_setup_true_lang.acb50d99.js";import"./content.be9a8727.js";import"./attr.vue_vue_type_script_setup_true_lang.741d6988.js";import"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import"./content.0444bd3e.js";import"./attr.vue_vue_type_script_setup_true_lang.b011bc50.js";import"./content.f81b935d.js";import"./attr.vue_vue_type_script_setup_true_lang.0b87e513.js";import"./content.b1a283df.js";import"./attr.vue_vue_type_script_setup_true_lang.1a7dc398.js";import"./content.vue_vue_type_script_setup_true_lang.d03661f0.js";import"./attr.vue_vue_type_script_setup_true_lang.0583d8bc.js";import"./content.f0e3062b.js";export{pm as default};
|
||||
import"./attr-setting.vue_vue_type_script_setup_true_lang.c086565f.js";import{_ as pm}from"./attr-setting.vue_vue_type_script_setup_true_lang.c086565f.js";import"./index.6f5e57de.js";import"./attr.vue_vue_type_script_setup_true_lang.a4d005a2.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";import"./content.vue_vue_type_script_setup_true_lang.2c4c92b3.js";import"./attr.vue_vue_type_script_setup_true_lang.ee163012.js";import"./content.38542add.js";import"./attr.vue_vue_type_script_setup_true_lang.920d9401.js";import"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import"./content.10c5ef91.js";import"./attr.vue_vue_type_script_setup_true_lang.2a1b1b18.js";import"./content.279cc4b8.js";import"./attr.vue_vue_type_script_setup_true_lang.0b87e513.js";import"./content.b6235baf.js";import"./attr.vue_vue_type_script_setup_true_lang.be11ffff.js";import"./content.vue_vue_type_script_setup_true_lang.a3e925ac.js";import"./attr.vue_vue_type_script_setup_true_lang.0583d8bc.js";import"./content.7ebe44c2.js";export{pm as default};
|
||||
@@ -1 +1 @@
|
||||
import{w as i}from"./index.c5fc6e86.js";import{d as l,o as t,c as d,a as m,U as f,L as c,R as p,u as g,aK as b}from"./@vue.cab01781.js";const u={class:"pages-setting"},w={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},k=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})}},setup(e){return(y,x)=>{var s,a,n,o,r;return t(),d("div",u,[m("div",w,f((s=e.widget)==null?void 0:s.title),1),(t(),c(b,null,[(t(),c(p((n=g(i)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(r=e.widget)==null?void 0:r.styles},null,8,["content","styles"]))],1024))])}}});export{k as _};
|
||||
import{w as i}from"./index.6f5e57de.js";import{d as l,o as t,c as d,a as m,U as f,L as c,R as p,u as g,aK as b}from"./@vue.cab01781.js";const u={class:"pages-setting"},w={class:"title flex items-center before:w-[3px] before:h-[14px] before:block before:bg-primary before:mr-2"},k=l({__name:"attr-setting",props:{widget:{type:Object,default:()=>({})}},setup(e){return(y,x)=>{var s,a,n,o,r;return t(),d("div",u,[m("div",w,f((s=e.widget)==null?void 0:s.title),1),(t(),c(b,null,[(t(),c(p((n=g(i)[(a=e.widget)==null?void 0:a.name])==null?void 0:n.attr),{class:"pt-5 pr-4",content:(o=e.widget)==null?void 0:o.content,styles:(r=e.widget)==null?void 0:r.styles},null,8,["content","styles"]))],1024))])}}});export{k as _};
|
||||
@@ -1 +1 @@
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.741d6988.js";import{_ as R}from"./attr.vue_vue_type_script_setup_true_lang.741d6988.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{R as default};
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.2a1b1b18.js";import{_ as R}from"./attr.vue_vue_type_script_setup_true_lang.2a1b1b18.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{R as default};
|
||||
@@ -1 +1 @@
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.b011bc50.js";import{_ as R}from"./attr.vue_vue_type_script_setup_true_lang.b011bc50.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{R as default};
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.920d9401.js";import{_ as R}from"./attr.vue_vue_type_script_setup_true_lang.920d9401.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{R as default};
|
||||
@@ -1 +1 @@
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.1b6e0b72.js";import{_ as Q}from"./attr.vue_vue_type_script_setup_true_lang.1b6e0b72.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.a4d005a2.js";import{_ as Q}from"./attr.vue_vue_type_script_setup_true_lang.a4d005a2.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
@@ -1 +1 @@
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.acb50d99.js";import{_ as P}from"./attr.vue_vue_type_script_setup_true_lang.acb50d99.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.29f42532.js";import"./index.ea69f3d7.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.e14f68ca.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{P as default};
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.ee163012.js";import{_ as P}from"./attr.vue_vue_type_script_setup_true_lang.ee163012.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.99919d7c.js";import"./index.78e6f421.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.8c4e7c10.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.1a7dc398.js";import{_ as Q}from"./attr.vue_vue_type_script_setup_true_lang.1a7dc398.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.e14f68ca.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import"./index.ea69f3d7.js";import"./picker.29f42532.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
import"./attr.vue_vue_type_script_setup_true_lang.be11ffff.js";import{_ as Q}from"./attr.vue_vue_type_script_setup_true_lang.be11ffff.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.8c4e7c10.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import"./index.78e6f421.js";import"./picker.99919d7c.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";export{Q as default};
|
||||
@@ -1 +1 @@
|
||||
import{M as c,N as r,A as i,B as f}from"./element-plus.f93fd622.js";import{_ as p}from"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import{d as F,o as E,c as b,V as e,M as t,a as d,T as s}from"./@vue.cab01781.js";const V=s("\u5F00\u542F"),B=s("\u505C\u7528"),x={class:"flex-1"},A=d("div",{class:"form-tips mb-4"},"\u6700\u591A\u53EF\u6DFB\u52A010\u4E2A\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A100px*100px",-1),y=F({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){return(C,a)=>{const u=c,m=r,n=i,_=f;return E(),b("div",null,[e(_,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(m,{modelValue:o.content.enabled,"onUpdate:modelValue":a[0]||(a[0]=l=>o.content.enabled=l)},{default:t(()=>[e(u,{label:1},{default:t(()=>[V]),_:1}),e(u,{label:0},{default:t(()=>[B]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[d("div",x,[A,e(p,{modelValue:o.content.data,"onUpdate:modelValue":a[1]||(a[1]=l=>o.content.data=l)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{y as _};
|
||||
import{M as c,N as r,A as i,B as f}from"./element-plus.f93fd622.js";import{_ as p}from"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import{d as F,o as E,c as b,V as e,M as t,a as d,T as s}from"./@vue.cab01781.js";const V=s("\u5F00\u542F"),B=s("\u505C\u7528"),x={class:"flex-1"},A=d("div",{class:"form-tips mb-4"},"\u6700\u591A\u53EF\u6DFB\u52A010\u4E2A\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A100px*100px",-1),y=F({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){return(C,a)=>{const u=c,m=r,n=i,_=f;return E(),b("div",null,[e(_,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(m,{modelValue:o.content.enabled,"onUpdate:modelValue":a[0]||(a[0]=l=>o.content.enabled=l)},{default:t(()=>[e(u,{label:1},{default:t(()=>[V]),_:1}),e(u,{label:0},{default:t(()=>[B]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[d("div",x,[A,e(p,{modelValue:o.content.data,"onUpdate:modelValue":a[1]||(a[1]=l=>o.content.data=l)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{y as _};
|
||||
@@ -1 +1 @@
|
||||
import{M as _,N as i,A as r,y as f,B as p}from"./element-plus.f93fd622.js";import{_ as V}from"./add-nav.vue_vue_type_script_setup_true_lang.1cb09cc7.js";import{d as b,o as E,c as x,V as e,M as t,a as y,T as d}from"./@vue.cab01781.js";const B=d("\u6A2A\u6392"),F=d("\u7AD6\u6392"),A={class:"flex-1"},U=b({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(l){return(N,o)=>{const u=_,s=i,n=r,m=f,c=p;return E(),x("div",null,[e(c,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u6392\u7248\u6837\u5F0F"},{default:t(()=>[e(s,{modelValue:l.content.style,"onUpdate:modelValue":o[0]||(o[0]=a=>l.content.style=a)},{default:t(()=>[e(u,{label:1},{default:t(()=>[B]),_:1}),e(u,{label:2},{default:t(()=>[F]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u6807\u9898\u540D\u79F0"},{default:t(()=>[e(m,{class:"w-[400px]",modelValue:l.content.title,"onUpdate:modelValue":o[1]||(o[1]=a=>l.content.title=a)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[y("div",A,[e(V,{modelValue:l.content.data,"onUpdate:modelValue":o[2]||(o[2]=a=>l.content.data=a)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{U as _};
|
||||
import{M as _,N as i,A as r,y as f,B as p}from"./element-plus.f93fd622.js";import{_ as V}from"./add-nav.vue_vue_type_script_setup_true_lang.c1cec697.js";import{d as b,o as E,c as x,V as e,M as t,a as y,T as d}from"./@vue.cab01781.js";const B=d("\u6A2A\u6392"),F=d("\u7AD6\u6392"),A={class:"flex-1"},U=b({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(l){return(N,o)=>{const u=_,s=i,n=r,m=f,c=p;return E(),x("div",null,[e(c,{"label-width":"70px"},{default:t(()=>[e(n,{label:"\u6392\u7248\u6837\u5F0F"},{default:t(()=>[e(s,{modelValue:l.content.style,"onUpdate:modelValue":o[0]||(o[0]=a=>l.content.style=a)},{default:t(()=>[e(u,{label:1},{default:t(()=>[B]),_:1}),e(u,{label:2},{default:t(()=>[F]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(n,{label:"\u6807\u9898\u540D\u79F0"},{default:t(()=>[e(m,{class:"w-[400px]",modelValue:l.content.title,"onUpdate:modelValue":o[1]||(o[1]=a=>l.content.title=a)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u83DC\u5355\u8BBE\u7F6E"},{default:t(()=>[y("div",A,[e(V,{modelValue:l.content.data,"onUpdate:modelValue":o[2]||(o[2]=a=>l.content.data=a)},null,8,["modelValue"])])]),_:1})]),_:1})])}}});export{U as _};
|
||||
@@ -1 +1 @@
|
||||
import{M as D,N as U,A as v,y as w,u as N,B as $}from"./element-plus.f93fd622.js";import{_ as j}from"./index.e14f68ca.js";import{_ as I}from"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import{_ as L}from"./picker.29f42532.js";import{f as F}from"./index.ab5c8d8d.js";import{d as M,o as c,c as E,V as e,M as t,a as m,W as O,a8 as R,L as V,S as T,T as r}from"./@vue.cab01781.js";const G=r("\u5F00\u542F"),S=r("\u505C\u7528"),W={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*240px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4"},H={class:"ml-3 flex-1"},J=r("\u6DFB\u52A0\u56FE\u7247"),ee=M({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const d=a,_=5,b=()=>{var n;((n=d.content.data)==null?void 0:n.length)<_?d.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${_}\u5F20\u56FE\u7247`)},h=n=>{var u;if(((u=d.content.data)==null?void 0:u.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");d.content.data.splice(n,1)};return(n,u)=>{const i=D,g=U,s=v,B=L,k=w,x=I,A=j,C=N,y=$;return c(),E("div",null,[e(y,{"label-width":"70px"},{default:t(()=>{var p;return[e(s,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(g,{modelValue:a.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[G]),_:1}),e(i,{label:0},{default:t(()=>[S]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",W,[q,(c(!0),E(O,null,R(a.content.data,(o,f)=>(c(),V(A,{key:f,onClose:l=>h(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(B,{modelValue:o.image,"onUpdate:modelValue":l=>o.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",H,[e(s,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(k,{modelValue:o.name,"onUpdate:modelValue":l=>o.name=l,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(s,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(x,{modelValue:o.link,"onUpdate:modelValue":l=>o.link=l},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))),128))])]),_:1}),((p=a.content.data)==null?void 0:p.length)<_?(c(),V(s,{key:0},{default:t(()=>[e(C,{type:"primary",onClick:b},{default:t(()=>[J]),_:1})]),_:1})):T("",!0)]}),_:1})])}}});export{ee as _};
|
||||
import{M as D,N as U,A as v,y as w,u as N,B as $}from"./element-plus.f93fd622.js";import{_ as j}from"./index.8c4e7c10.js";import{_ as I}from"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import{_ as L}from"./picker.99919d7c.js";import{f as F}from"./index.86c64501.js";import{d as M,o as c,c as E,V as e,M as t,a as m,W as O,a8 as R,L as V,S as T,T as r}from"./@vue.cab01781.js";const G=r("\u5F00\u542F"),S=r("\u505C\u7528"),W={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*240px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4"},H={class:"ml-3 flex-1"},J=r("\u6DFB\u52A0\u56FE\u7247"),ee=M({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const d=a,_=5,b=()=>{var n;((n=d.content.data)==null?void 0:n.length)<_?d.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${_}\u5F20\u56FE\u7247`)},h=n=>{var u;if(((u=d.content.data)==null?void 0:u.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");d.content.data.splice(n,1)};return(n,u)=>{const i=D,g=U,s=v,B=L,k=w,x=I,A=j,C=N,y=$;return c(),E("div",null,[e(y,{"label-width":"70px"},{default:t(()=>{var p;return[e(s,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(g,{modelValue:a.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[G]),_:1}),e(i,{label:0},{default:t(()=>[S]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",W,[q,(c(!0),E(O,null,R(a.content.data,(o,f)=>(c(),V(A,{key:f,onClose:l=>h(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(B,{modelValue:o.image,"onUpdate:modelValue":l=>o.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",H,[e(s,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(k,{modelValue:o.name,"onUpdate:modelValue":l=>o.name=l,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(s,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(x,{modelValue:o.link,"onUpdate:modelValue":l=>o.link=l},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))),128))])]),_:1}),((p=a.content.data)==null?void 0:p.length)<_?(c(),V(s,{key:0},{default:t(()=>[e(C,{type:"primary",onClick:b},{default:t(()=>[J]),_:1})]),_:1})):T("",!0)]}),_:1})])}}});export{ee as _};
|
||||
@@ -1 +1 @@
|
||||
import{M as D,N as U,A as v,y as w,u as N,B as $}from"./element-plus.f93fd622.js";import{_ as j}from"./index.e14f68ca.js";import{_ as I}from"./picker.vue_vue_type_script_setup_true_lang.51278156.js";import{_ as L}from"./picker.29f42532.js";import{f as F}from"./index.ab5c8d8d.js";import{d as M,o as c,c as E,V as e,M as t,a as m,W as O,a8 as R,L as V,S as T,T as r}from"./@vue.cab01781.js";const G=r("\u5F00\u542F"),S=r("\u505C\u7528"),W={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*200px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4"},H={class:"ml-3 flex-1"},J=r("\u6DFB\u52A0\u56FE\u7247"),ee=M({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const d=a,_=5,b=()=>{var n;((n=d.content.data)==null?void 0:n.length)<_?d.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${_}\u5F20\u56FE\u7247`)},h=n=>{var u;if(((u=d.content.data)==null?void 0:u.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");d.content.data.splice(n,1)};return(n,u)=>{const i=D,g=U,s=v,B=L,k=w,x=I,A=j,C=N,y=$;return c(),E("div",null,[e(y,{"label-width":"70px"},{default:t(()=>{var p;return[e(s,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(g,{modelValue:a.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[G]),_:1}),e(i,{label:0},{default:t(()=>[S]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",W,[q,(c(!0),E(O,null,R(a.content.data,(o,f)=>(c(),V(A,{key:f,onClose:l=>h(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(B,{modelValue:o.image,"onUpdate:modelValue":l=>o.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",H,[e(s,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(k,{modelValue:o.name,"onUpdate:modelValue":l=>o.name=l,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(s,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(x,{modelValue:o.link,"onUpdate:modelValue":l=>o.link=l},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))),128))])]),_:1}),((p=a.content.data)==null?void 0:p.length)<_?(c(),V(s,{key:0},{default:t(()=>[e(C,{type:"primary",onClick:b},{default:t(()=>[J]),_:1})]),_:1})):T("",!0)]}),_:1})])}}});export{ee as _};
|
||||
import{M as D,N as U,A as v,y as w,u as N,B as $}from"./element-plus.f93fd622.js";import{_ as j}from"./index.8c4e7c10.js";import{_ as I}from"./picker.vue_vue_type_script_setup_true_lang.a54c417b.js";import{_ as L}from"./picker.99919d7c.js";import{f as F}from"./index.86c64501.js";import{d as M,o as c,c as E,V as e,M as t,a as m,W as O,a8 as R,L as V,S as T,T as r}from"./@vue.cab01781.js";const G=r("\u5F00\u542F"),S=r("\u505C\u7528"),W={class:"flex-1"},q=m("div",{class:"form-tips"},"\u6700\u591A\u6DFB\u52A05\u5F20\uFF0C\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A750px*200px",-1),z={class:"bg-fill-light flex items-center w-full p-4 mt-4"},H={class:"ml-3 flex-1"},J=r("\u6DFB\u52A0\u56FE\u7247"),ee=M({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(a){const d=a,_=5,b=()=>{var n;((n=d.content.data)==null?void 0:n.length)<_?d.content.data.push({image:"",name:"",link:{}}):F.msgError(`\u6700\u591A\u6DFB\u52A0${_}\u5F20\u56FE\u7247`)},h=n=>{var u;if(((u=d.content.data)==null?void 0:u.length)<=1)return F.msgError("\u6700\u5C11\u4FDD\u7559\u4E00\u5F20\u56FE\u7247");d.content.data.splice(n,1)};return(n,u)=>{const i=D,g=U,s=v,B=L,k=w,x=I,A=j,C=N,y=$;return c(),E("div",null,[e(y,{"label-width":"70px"},{default:t(()=>{var p;return[e(s,{label:"\u662F\u5426\u542F\u7528"},{default:t(()=>[e(g,{modelValue:a.content.enabled,"onUpdate:modelValue":u[0]||(u[0]=o=>a.content.enabled=o)},{default:t(()=>[e(i,{label:1},{default:t(()=>[G]),_:1}),e(i,{label:0},{default:t(()=>[S]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(s,{label:"\u56FE\u7247\u8BBE\u7F6E"},{default:t(()=>[m("div",W,[q,(c(!0),E(O,null,R(a.content.data,(o,f)=>(c(),V(A,{key:f,onClose:l=>h(f),class:"max-w-[400px]"},{default:t(()=>[m("div",z,[e(B,{modelValue:o.image,"onUpdate:modelValue":l=>o.image=l,"upload-class":"bg-body","exclude-domain":""},null,8,["modelValue","onUpdate:modelValue"]),m("div",H,[e(s,{label:"\u56FE\u7247\u540D\u79F0"},{default:t(()=>[e(k,{modelValue:o.name,"onUpdate:modelValue":l=>o.name=l,placeholder:"\u8BF7\u8F93\u5165\u540D\u79F0"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),e(s,{class:"mt-[18px]",label:"\u56FE\u7247\u94FE\u63A5"},{default:t(()=>[e(x,{modelValue:o.link,"onUpdate:modelValue":l=>o.link=l},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)])])]),_:2},1032,["onClose"]))),128))])]),_:1}),((p=a.content.data)==null?void 0:p.length)<_?(c(),V(s,{key:0},{default:t(()=>[e(C,{type:"primary",onClick:b},{default:t(()=>[J]),_:1})]),_:1})):T("",!0)]}),_:1})])}}});export{ee as _};
|
||||
@@ -1 +1 @@
|
||||
import{y as c,A as i,B as F}from"./element-plus.f93fd622.js";import{_ as p}from"./picker.29f42532.js";import{d as r,o as f,c as V,V as e,M as o,a as m}from"./@vue.cab01781.js";const B=m("div",{class:"form-tips"},"\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A200*200\u50CF\u7D20\uFF1B\u56FE\u7247\u683C\u5F0F\uFF1Ajpg\u3001png\u3001jpeg",-1),x=r({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(E,l)=>{const a=c,n=i,d=p,s=F;return f(),V("div",null,[e(s,{"label-width":"90px"},{default:o(()=>[e(n,{label:"\u5BA2\u670D\u6807\u9898"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.title,"onUpdate:modelValue":l[0]||(l[0]=u=>t.content.title=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u670D\u52A1\u65F6\u95F4"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.time,"onUpdate:modelValue":l[1]||(l[1]=u=>t.content.time=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u8054\u7CFB\u7535\u8BDD"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.mobile,"onUpdate:modelValue":l[2]||(l[2]=u=>t.content.mobile=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u5BA2\u670D\u4E8C\u7EF4\u7801"},{default:o(()=>[m("div",null,[e(d,{modelValue:t.content.qrcode,"onUpdate:modelValue":l[3]||(l[3]=u=>t.content.qrcode=u),"exclude-domain":""},null,8,["modelValue"]),B])]),_:1})]),_:1})])}}});export{x as _};
|
||||
import{y as c,A as i,B as F}from"./element-plus.f93fd622.js";import{_ as p}from"./picker.99919d7c.js";import{d as r,o as f,c as V,V as e,M as o,a as m}from"./@vue.cab01781.js";const B=m("div",{class:"form-tips"},"\u5EFA\u8BAE\u56FE\u7247\u5C3A\u5BF8\uFF1A200*200\u50CF\u7D20\uFF1B\u56FE\u7247\u683C\u5F0F\uFF1Ajpg\u3001png\u3001jpeg",-1),x=r({__name:"attr",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){return(E,l)=>{const a=c,n=i,d=p,s=F;return f(),V("div",null,[e(s,{"label-width":"90px"},{default:o(()=>[e(n,{label:"\u5BA2\u670D\u6807\u9898"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.title,"onUpdate:modelValue":l[0]||(l[0]=u=>t.content.title=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u670D\u52A1\u65F6\u95F4"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.time,"onUpdate:modelValue":l[1]||(l[1]=u=>t.content.time=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u8054\u7CFB\u7535\u8BDD"},{default:o(()=>[e(a,{class:"w-[400px]",modelValue:t.content.mobile,"onUpdate:modelValue":l[2]||(l[2]=u=>t.content.mobile=u)},null,8,["modelValue"])]),_:1}),e(n,{label:"\u5BA2\u670D\u4E8C\u7EF4\u7801"},{default:o(()=>[m("div",null,[e(d,{modelValue:t.content.qrcode,"onUpdate:modelValue":l[3]||(l[3]=u=>t.content.qrcode=u),"exclude-domain":""},null,8,["modelValue"]),B])]),_:1})]),_:1})])}}});export{x as _};
|
||||
@@ -1 +1 @@
|
||||
import"./auth.vue_vue_type_script_setup_true_lang.358a1248.js";import{_ as I}from"./auth.vue_vue_type_script_setup_true_lang.358a1248.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./role.2bbcee68.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./menu.9fdfcc4b.js";import"./index.ea69f3d7.js";export{I as default};
|
||||
import"./auth.vue_vue_type_script_setup_true_lang.80191698.js";import{_ as I}from"./auth.vue_vue_type_script_setup_true_lang.80191698.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./role.60797ac7.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./menu.8455a8d1.js";import"./index.78e6f421.js";export{I as default};
|
||||
@@ -1 +1 @@
|
||||
import{C as V,T as S,A as T,E as M,B as N}from"./element-plus.f93fd622.js";import{a as I,b as L}from"./role.2bbcee68.js";import{m as P}from"./menu.9fdfcc4b.js";import{P as j}from"./index.ea69f3d7.js";import{f as q,t as H}from"./index.ab5c8d8d.js";import{d as O,s as i,r as u,a0 as U,o as z,c as G,V as t,M as c,a as _,n as k}from"./@vue.cab01781.js";const J={class:"edit-popup"},te=O({__name:"auth",emits:["success","close"],setup(Q,{expose:v,emit:p}){const l=i(),f=i(),r=i(),y=u(!1),d=u(!0),h=u([]),m=u([]),o=U({id:"",name:"",remark:"",sort:0,isDisable:0,menus:[]}),C={name:[{required:!0,message:"\u8BF7\u8F93\u5165\u540D\u79F0",trigger:["blur"]}]},b=async()=>{const e=await P();m.value=e,h.value=H(e)},x=()=>{var s,n;const e=(s=l.value)==null?void 0:s.getCheckedKeys(),a=(n=l.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,a),e},E=()=>{o.menus.forEach(e=>{k(()=>{var a;(a=l.value)==null||a.setChecked(e,!0,!1)})})},g=e=>{const a=m.value;for(let s=0;s<a.length;s++)l.value.store.nodesMap[a[s].id].expanded=e},F=e=>{var a,s;e?(a=l.value)==null||a.setCheckedKeys(h.value.map(n=>n.id)):(s=l.value)==null||s.setCheckedKeys([])},w=async()=>{var e,a;await((e=f.value)==null?void 0:e.validate()),o.menus=x(),await I({...o,menuIds:o.menus.join()}),(a=r.value)==null||a.close(),q.msgSuccess("\u64CD\u4F5C\u6210\u529F"),p("success")},D=()=>{p("close")};return v({open:()=>{var e;(e=r.value)==null||e.open()},setFormData:async e=>{await b();const a=await L({id:e.id});for(const s in o)a[s]!=null&&a[s]!=null&&(o[s]=a[s]);k(()=>{E()})}}),(e,a)=>{const s=V,n=S,B=T,A=M,R=N;return z(),G("div",J,[t(j,{ref_key:"popupRef",ref:r,title:"\u6743\u9650\u8BBE\u7F6E",async:!0,width:"550px",clickModalClose:!0,onConfirm:w,onClose:D},{default:c(()=>[t(R,{class:"ls-form",ref_key:"formRef",ref:f,rules:C,model:o,"label-width":"60px"},{default:c(()=>[t(A,{class:"h-[400px] sm:h-[600px]"},{default:c(()=>[t(B,{label:"\u6743\u9650",prop:"menus"},{default:c(()=>[_("div",null,[t(s,{label:"\u5C55\u5F00/\u6298\u53E0",onChange:g}),t(s,{label:"\u5168\u9009/\u4E0D\u5168\u9009",onChange:F}),t(s,{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=K=>d.value=K),label:"\u7236\u5B50\u8054\u52A8"},null,8,["modelValue"]),_("div",null,[t(n,{ref_key:"treeRef",ref:l,data:m.value,props:{label:"menuName",children:"children"},"check-strictly":!d.value,"node-key":"id","default-expand-all":y.value,"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{te as _};
|
||||
import{C as V,T as S,A as T,E as M,B as N}from"./element-plus.f93fd622.js";import{a as I,b as L}from"./role.60797ac7.js";import{m as P}from"./menu.8455a8d1.js";import{P as j}from"./index.78e6f421.js";import{f as q,t as H}from"./index.86c64501.js";import{d as O,s as i,r as u,a0 as U,o as z,c as G,V as t,M as c,a as _,n as k}from"./@vue.cab01781.js";const J={class:"edit-popup"},te=O({__name:"auth",emits:["success","close"],setup(Q,{expose:v,emit:p}){const l=i(),f=i(),r=i(),y=u(!1),d=u(!0),h=u([]),m=u([]),o=U({id:"",name:"",remark:"",sort:0,isDisable:0,menus:[]}),C={name:[{required:!0,message:"\u8BF7\u8F93\u5165\u540D\u79F0",trigger:["blur"]}]},b=async()=>{const e=await P();m.value=e,h.value=H(e)},x=()=>{var s,n;const e=(s=l.value)==null?void 0:s.getCheckedKeys(),a=(n=l.value)==null?void 0:n.getHalfCheckedKeys();return e==null||e.unshift.apply(e,a),e},E=()=>{o.menus.forEach(e=>{k(()=>{var a;(a=l.value)==null||a.setChecked(e,!0,!1)})})},g=e=>{const a=m.value;for(let s=0;s<a.length;s++)l.value.store.nodesMap[a[s].id].expanded=e},F=e=>{var a,s;e?(a=l.value)==null||a.setCheckedKeys(h.value.map(n=>n.id)):(s=l.value)==null||s.setCheckedKeys([])},w=async()=>{var e,a;await((e=f.value)==null?void 0:e.validate()),o.menus=x(),await I({...o,menuIds:o.menus.join()}),(a=r.value)==null||a.close(),q.msgSuccess("\u64CD\u4F5C\u6210\u529F"),p("success")},D=()=>{p("close")};return v({open:()=>{var e;(e=r.value)==null||e.open()},setFormData:async e=>{await b();const a=await L({id:e.id});for(const s in o)a[s]!=null&&a[s]!=null&&(o[s]=a[s]);k(()=>{E()})}}),(e,a)=>{const s=V,n=S,B=T,A=M,R=N;return z(),G("div",J,[t(j,{ref_key:"popupRef",ref:r,title:"\u6743\u9650\u8BBE\u7F6E",async:!0,width:"550px",clickModalClose:!0,onConfirm:w,onClose:D},{default:c(()=>[t(R,{class:"ls-form",ref_key:"formRef",ref:f,rules:C,model:o,"label-width":"60px"},{default:c(()=>[t(A,{class:"h-[400px] sm:h-[600px]"},{default:c(()=>[t(B,{label:"\u6743\u9650",prop:"menus"},{default:c(()=>[_("div",null,[t(s,{label:"\u5C55\u5F00/\u6298\u53E0",onChange:g}),t(s,{label:"\u5168\u9009/\u4E0D\u5168\u9009",onChange:F}),t(s,{modelValue:d.value,"onUpdate:modelValue":a[0]||(a[0]=K=>d.value=K),label:"\u7236\u5B50\u8054\u52A8"},null,8,["modelValue"]),_("div",null,[t(n,{ref_key:"treeRef",ref:l,data:m.value,props:{label:"menuName",children:"children"},"check-strictly":!d.value,"node-key":"id","default-expand-all":y.value,"show-checkbox":""},null,8,["data","check-strictly","default-expand-all"])])])]),_:1})]),_:1})]),_:1},8,["model"])]),_:1},512)])}}});export{te as _};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import"./code-preview.vue_vue_type_script_setup_true_lang.6ad1d693.js";import{_ as H}from"./code-preview.vue_vue_type_script_setup_true_lang.6ad1d693.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./vue-clipboard3.91d4fd5f.js";import"./clipboard.c0a70c0c.js";export{H as default};
|
||||
import"./code-preview.vue_vue_type_script_setup_true_lang.15a5c65d.js";import{_ as H}from"./code-preview.vue_vue_type_script_setup_true_lang.15a5c65d.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./vue-clipboard3.91d4fd5f.js";import"./clipboard.c0a70c0c.js";export{H as default};
|
||||
@@ -1 +1 @@
|
||||
import{v as w,w as y,E as D,u as B,D as T}from"./element-plus.f93fd622.js";import{f as r,b as N}from"./index.ab5c8d8d.js";import{u as $}from"./vue-clipboard3.91d4fd5f.js";import{d as j,r as F,e as L,a5 as S,o as s,c as i,V as o,M as t,W as U,a8 as M,L as P,a as m,u as R,k as W,T as q}from"./@vue.cab01781.js";const z={class:"code-preview"},A={class:"flex",style:{height:"50vh"}},G=q(" \u590D\u5236 "),Q=j({__name:"code-preview",props:{modelValue:{type:Boolean},code:null},emits:["update:modelValue"],setup(u,{emit:p}){const _=u,{toClipboard:f}=$(),c=F("index0"),b=async l=>{try{await f(l),r.msgSuccess("\u590D\u5236\u6210\u529F")}catch{r.msgError("\u590D\u5236\u5931\u8D25")}},n=L({get(){return _.modelValue},set(l){p("update:modelValue",l)}});return(l,a)=>{const h=S("highlightjs"),V=D,v=N,g=B,C=w,E=y,x=T;return s(),i("div",z,[o(x,{modelValue:R(n),"onUpdate:modelValue":a[1]||(a[1]=e=>W(n)?n.value=e:null),width:"900px",title:"\u4EE3\u7801\u9884\u89C8"},{default:t(()=>[o(E,{modelValue:c.value,"onUpdate:modelValue":a[0]||(a[0]=e=>c.value=e)},{default:t(()=>[(s(!0),i(U,null,M(u.code,(e,d,k)=>(s(),P(C,{label:d,name:`index${k}`,key:d},{default:t(()=>[m("div",A,[o(V,{class:"flex-1"},{default:t(()=>[o(h,{autodetect:"",code:e},null,8,["code"])]),_:2},1024),m("div",null,[o(g,{onClick:H=>b(e),type:"primary",link:""},{icon:t(()=>[o(v,{name:"el-icon-CopyDocument"})]),default:t(()=>[G]),_:2},1032,["onClick"])])])]),_:2},1032,["label","name"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])])}}});export{Q as _};
|
||||
import{v as w,w as y,E as D,u as B,D as T}from"./element-plus.f93fd622.js";import{f as r,b as N}from"./index.86c64501.js";import{u as $}from"./vue-clipboard3.91d4fd5f.js";import{d as j,r as F,e as L,a5 as S,o as s,c as i,V as o,M as t,W as U,a8 as M,L as P,a as m,u as R,k as W,T as q}from"./@vue.cab01781.js";const z={class:"code-preview"},A={class:"flex",style:{height:"50vh"}},G=q(" \u590D\u5236 "),Q=j({__name:"code-preview",props:{modelValue:{type:Boolean},code:null},emits:["update:modelValue"],setup(u,{emit:p}){const _=u,{toClipboard:f}=$(),c=F("index0"),b=async l=>{try{await f(l),r.msgSuccess("\u590D\u5236\u6210\u529F")}catch{r.msgError("\u590D\u5236\u5931\u8D25")}},n=L({get(){return _.modelValue},set(l){p("update:modelValue",l)}});return(l,a)=>{const h=S("highlightjs"),V=D,v=N,g=B,C=w,E=y,x=T;return s(),i("div",z,[o(x,{modelValue:R(n),"onUpdate:modelValue":a[1]||(a[1]=e=>W(n)?n.value=e:null),width:"900px",title:"\u4EE3\u7801\u9884\u89C8"},{default:t(()=>[o(E,{modelValue:c.value,"onUpdate:modelValue":a[0]||(a[0]=e=>c.value=e)},{default:t(()=>[(s(!0),i(U,null,M(u.code,(e,d,k)=>(s(),P(C,{label:d,name:`index${k}`,key:d},{default:t(()=>[m("div",A,[o(V,{class:"flex-1"},{default:t(()=>[o(h,{autodetect:"",code:e},null,8,["code"])]),_:2},1024),m("div",null,[o(g,{onClick:H=>b(e),type:"primary",link:""},{icon:t(()=>[o(v,{name:"el-icon-CopyDocument"})]),default:t(()=>[G]),_:2},1032,["onClick"])])])]),_:2},1032,["label","name"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])])}}});export{Q as _};
|
||||
@@ -1 +1 @@
|
||||
import{r as n}from"./index.ab5c8d8d.js";function r(e){return n.get({url:"/gen/list",params:e})}function a(e){return n.get({url:"/gen/db",params:e})}function o(e){return n.post({url:"/gen/importTable",params:e},{isParamsToData:!1})}function s(e){return n.get({url:"/gen/detail",params:e})}function u(e){return n.post({url:"/gen/syncTable",params:e},{isParamsToData:!1})}function l(e){return n.post({url:"/gen/delTable",params:e})}function g(e){return n.post({url:"/gen/editTable",params:e})}function i(e){return n.get({url:"/gen/previewCode",params:e})}function d(e){return n.get({url:"/gen/genCode",params:e})}function f(e){return n.get({responseType:"blob",url:"/gen/downloadCode",params:e},{isTransformResponse:!1})}export{l as a,i as b,d as c,f as d,r as e,o as f,g,a as h,u as s,s as t};
|
||||
import{r as n}from"./index.86c64501.js";function r(e){return n.get({url:"/gen/list",params:e})}function a(e){return n.get({url:"/gen/db",params:e})}function o(e){return n.post({url:"/gen/importTable",params:e},{isParamsToData:!1})}function s(e){return n.get({url:"/gen/detail",params:e})}function u(e){return n.post({url:"/gen/syncTable",params:e},{isParamsToData:!1})}function l(e){return n.post({url:"/gen/delTable",params:e})}function g(e){return n.post({url:"/gen/editTable",params:e})}function i(e){return n.get({url:"/gen/previewCode",params:e})}function d(e){return n.get({url:"/gen/genCode",params:e})}function f(e){return n.get({responseType:"blob",url:"/gen/downloadCode",params:e},{isTransformResponse:!1})}export{l as a,i as b,d as c,f as d,r as e,o as f,g,a as h,u as s,s as t};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{r as t}from"./index.ab5c8d8d.js";function u(r){return t.get({url:"/user/list",params:r})}function s(r){return t.get({url:"/user/detail",params:r})}function i(r){return t.post({url:"/user/edit",params:r})}export{u as a,s as g,i as u};
|
||||
import{r as t}from"./index.86c64501.js";function u(r){return t.get({url:"/user/list",params:r})}function s(r){return t.get({url:"/user/detail",params:r})}function i(r){return t.post({url:"/user/edit",params:r})}export{u as a,s as g,i as u};
|
||||
@@ -1 +0,0 @@
|
||||
import{u,_ as x,b as f,d as h}from"./index.ab5c8d8d.js";import{d as y,o as t,c as e,a as i,U as s,S as c,W as m,a8 as l,V as a,u as v}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const g={class:"my-service"},b={key:0,class:"title px-[15px] py-[10px]"},k={key:1,class:"flex flex-wrap pt-[20px] pb-[10px]"},w={class:"mt-[7px]"},V={key:2},B={class:"ml-[10px] flex-1"},N=y({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const{getImageUrl:d}=u();return(S,j)=>{const p=x,_=f;return t(),e("div",g,[o.content.title?(t(),e("div",b,[i("div",null,s(o.content.title),1)])):c("",!0),o.content.style==1?(t(),e("div",k,[(t(!0),e(m,null,l(o.content.data,(n,r)=>(t(),e("div",{key:r,class:"flex flex-col items-center w-1/4 mb-[15px]"},[a(p,{width:"26px",height:"26px",src:n.image,alt:""},null,8,["src"]),i("div",w,s(n.name),1)]))),128))])):c("",!0),o.content.style==2?(t(),e("div",V,[(t(!0),e(m,null,l(o.content.data,(n,r)=>(t(),e("div",{key:r,class:"flex items-center border-b border-[#e5e5e5] h-[50px] px-[12px]"},[a(p,{width:"24px",height:"24px",src:v(d)(n.image),alt:""},null,8,["src"]),i("div",B,s(n.name),1),i("div",null,[a(_,{name:"el-icon-ArrowRight"})])]))),128))])):c("",!0)])}}});const nt=h(N,[["__scopeId","data-v-f5f55985"]]);export{nt as default};
|
||||
1
frontend/assets/content.10c5ef91.js
Normal file
1
frontend/assets/content.10c5ef91.js
Normal file
@@ -0,0 +1 @@
|
||||
import{u as x,_ as f,b as h,d as y}from"./index.86c64501.js";import{d as v,o as t,c as e,a as i,U as s,S as c,W as l,a8 as d,V as a,u as _}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const g={class:"my-service"},b={key:0,class:"title px-[15px] py-[10px]"},k={key:1,class:"flex flex-wrap pt-[20px] pb-[10px]"},w={class:"mt-[7px]"},V={key:2},B={class:"ml-[10px] flex-1"},N=v({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(o){const{getImageUrl:p}=x();return(S,j)=>{const m=f,u=h;return t(),e("div",g,[o.content.title?(t(),e("div",b,[i("div",null,s(o.content.title),1)])):c("",!0),o.content.style==1?(t(),e("div",k,[(t(!0),e(l,null,d(o.content.data,(n,r)=>(t(),e("div",{key:r,class:"flex flex-col items-center w-1/4 mb-[15px]"},[a(m,{width:"26px",height:"26px",src:_(p)(n.image),alt:""},null,8,["src"]),i("div",w,s(n.name),1)]))),128))])):c("",!0),o.content.style==2?(t(),e("div",V,[(t(!0),e(l,null,d(o.content.data,(n,r)=>(t(),e("div",{key:r,class:"flex items-center border-b border-[#e5e5e5] h-[50px] px-[12px]"},[a(m,{width:"24px",height:"24px",src:_(p)(n.image),alt:""},null,8,["src"]),i("div",B,s(n.name),1),i("div",null,[a(u,{name:"el-icon-ArrowRight"})])]))),128))])):c("",!0)])}}});const nt=y(N,[["__scopeId","data-v-df02fc9c"]]);export{nt as default};
|
||||
@@ -1 +1 @@
|
||||
import{u as a,_ as m,d as c}from"./index.ab5c8d8d.js";import{d as _,o as t,c as e,a as p,W as d,a8 as l,V as u,u as x,U as f}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const g={class:"nav pt-[15px] pb-[8px]"},v={class:"flex flex-wrap"},h={class:"mt-[7px]"},y=_({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(r){const{getImageUrl:s}=a();return(b,k)=>{const i=m;return t(),e("div",g,[p("div",v,[(t(!0),e(d,null,l(r.content.data,(o,n)=>(t(),e("div",{key:n,class:"flex flex-col items-center w-1/5 mb-[15px]"},[u(i,{width:"41px",height:"41px",src:x(s)(o.image),alt:""},null,8,["src"]),p("div",h,f(o.name),1)]))),128))])])}}});const Y=c(y,[["__scopeId","data-v-7d752d9c"]]);export{Y as default};
|
||||
import{u as a,_ as m,d as c}from"./index.86c64501.js";import{d as _,o as t,c as e,a as p,W as d,a8 as l,V as u,u as x,U as f}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const g={class:"nav pt-[15px] pb-[8px]"},v={class:"flex flex-wrap"},h={class:"mt-[7px]"},y=_({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(r){const{getImageUrl:s}=a();return(b,k)=>{const i=m;return t(),e("div",g,[p("div",v,[(t(!0),e(d,null,l(r.content.data,(o,n)=>(t(),e("div",{key:n,class:"flex flex-col items-center w-1/5 mb-[15px]"},[u(i,{width:"41px",height:"41px",src:x(s)(o.image),alt:""},null,8,["src"]),p("div",h,f(o.name),1)]))),128))])])}}});const Y=c(y,[["__scopeId","data-v-7d752d9c"]]);export{Y as default};
|
||||
@@ -1 +0,0 @@
|
||||
.my-service[data-v-f5f55985]{margin:10px 10px 0;background-color:#fff;border-radius:7px}.my-service .title[data-v-f5f55985]{border-bottom:1px solid #e5e5e5;font-size:16px;font-weight:500}
|
||||
@@ -1 +1 @@
|
||||
import{u as s,_ as c,d as n}from"./index.ab5c8d8d.js";import{d as r,o as m,c as a,V as u,u as _,a as e,U as o,b9 as d,b8 as l}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const x=t=>(d("data-v-14c2b598"),t=t(),l(),t),f={class:"customer-service"},h={class:"text-[15px] mt-[7px] font-medium"},F={class:"text-[#666] mt-[20px]"},v={class:"text-[#666] mt-[7px]"},b=x(()=>e("div",{class:"text-white text-[16px] rounded-[42px] bg-[#4173FF] w-full h-[42px] flex justify-center items-center mt-[50px]"}," \u4FDD\u5B58\u4E8C\u7EF4\u7801\u56FE\u7247 ",-1)),g=r({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const{getImageUrl:i}=s();return(y,D)=>{const p=c;return m(),a("div",f,[u(p,{width:"140px",height:"140px",src:_(i)(t.content.qrcode),alt:""},null,8,["src"]),e("div",h,o(t.content.title),1),e("div",F,"\u670D\u52A1\u65F6\u95F4\uFF1A"+o(t.content.time),1),e("div",v,"\u5BA2\u670D\u7535\u8BDD\uFF1A"+o(t.content.mobile),1),b])}}});const Z=n(g,[["__scopeId","data-v-14c2b598"]]);export{Z as default};
|
||||
import{u as s,_ as c,d as n}from"./index.86c64501.js";import{d as r,o as m,c as a,V as u,u as _,a as e,U as o,b9 as d,b8 as l}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const x=t=>(d("data-v-14c2b598"),t=t(),l(),t),f={class:"customer-service"},h={class:"text-[15px] mt-[7px] font-medium"},F={class:"text-[#666] mt-[20px]"},v={class:"text-[#666] mt-[7px]"},b=x(()=>e("div",{class:"text-white text-[16px] rounded-[42px] bg-[#4173FF] w-full h-[42px] flex justify-center items-center mt-[50px]"}," \u4FDD\u5B58\u4E8C\u7EF4\u7801\u56FE\u7247 ",-1)),g=r({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(t){const{getImageUrl:i}=s();return(y,D)=>{const p=c;return m(),a("div",f,[u(p,{width:"140px",height:"140px",src:_(i)(t.content.qrcode),alt:""},null,8,["src"]),e("div",h,o(t.content.title),1),e("div",F,"\u670D\u52A1\u65F6\u95F4\uFF1A"+o(t.content.time),1),e("div",v,"\u5BA2\u670D\u7535\u8BDD\uFF1A"+o(t.content.mobile),1),b])}}});const Z=n(g,[["__scopeId","data-v-14c2b598"]]);export{Z as default};
|
||||
@@ -1 +1 @@
|
||||
import{d as r}from"./index.ab5c8d8d.js";import{o as e,c as i,b9 as c,b8 as s,a as o}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const m="/assets/default_avatar.fa19527b.png";const _={},p=t=>(c("data-v-cdcc3d15"),t=t(),s(),t),a={class:"user-info flex items-center px-[25px]"},d=p(()=>o("img",{src:m,class:"w-[60px] h-[60px]",alt:""},null,-1)),n=p(()=>o("div",{class:"text-white text-[18px] ml-[10px]"},"\u672A\u767B\u5F55",-1)),l=[d,n];function x(t,f){return e(),i("div",a,l)}const P=r(_,[["render",x],["__scopeId","data-v-cdcc3d15"]]);export{P as default};
|
||||
import{d as r}from"./index.86c64501.js";import{o as e,c as i,b9 as c,b8 as s,a as o}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const m="/assets/default_avatar.fa19527b.png";const _={},p=t=>(c("data-v-cdcc3d15"),t=t(),s(),t),a={class:"user-info flex items-center px-[25px]"},d=p(()=>o("img",{src:m,class:"w-[60px] h-[60px]",alt:""},null,-1)),n=p(()=>o("div",{class:"text-white text-[18px] ml-[10px]"},"\u672A\u767B\u5F55",-1)),l=[d,n];function x(t,f){return e(),i("div",a,l)}const P=r(_,[["render",x],["__scopeId","data-v-cdcc3d15"]]);export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import"./content.vue_vue_type_script_setup_true_lang.d03661f0.js";import{_ as F}from"./content.vue_vue_type_script_setup_true_lang.d03661f0.js";import"./index.ab5c8d8d.js";import"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";export{F as default};
|
||||
import"./content.vue_vue_type_script_setup_true_lang.a3e925ac.js";import{_ as F}from"./content.vue_vue_type_script_setup_true_lang.a3e925ac.js";import"./index.86c64501.js";import"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";export{F as default};
|
||||
@@ -1 +1 @@
|
||||
import{d as p,b as r}from"./index.ab5c8d8d.js";import{o as c,c as i,a as t,V as s,b9 as m,b8 as a}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const _={},n=o=>(m("data-v-6fb29c10"),o=o(),a(),o),d={class:"search"},f={class:"search-con flex items-center px-[15px]"},l=n(()=>t("span",{class:"ml-[5px]"},"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22",-1));function h(o,x){const e=r;return c(),i("div",d,[t("div",f,[s(e,{name:"el-icon-Search",size:17}),l])])}const P=p(_,[["render",h],["__scopeId","data-v-6fb29c10"]]);export{P as default};
|
||||
import{d as p,b as r}from"./index.86c64501.js";import{o as c,c as i,a as t,V as s,b9 as m,b8 as a}from"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const _={},n=o=>(m("data-v-6fb29c10"),o=o(),a(),o),d={class:"search"},f={class:"search-con flex items-center px-[15px]"},l=n(()=>t("span",{class:"ml-[5px]"},"\u8BF7\u8F93\u5165\u5173\u952E\u8BCD\u641C\u7D22",-1));function h(o,x){const e=r;return c(),i("div",d,[t("div",f,[s(e,{name:"el-icon-Search",size:17}),l])])}const P=p(_,[["render",h],["__scopeId","data-v-6fb29c10"]]);export{P as default};
|
||||
@@ -1 +1 @@
|
||||
import"./content.vue_vue_type_script_setup_true_lang.ef2a15e8.js";import{_ as F}from"./content.vue_vue_type_script_setup_true_lang.ef2a15e8.js";import"./index.ab5c8d8d.js";import"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";export{F as default};
|
||||
import"./content.vue_vue_type_script_setup_true_lang.2c4c92b3.js";import{_ as F}from"./content.vue_vue_type_script_setup_true_lang.2c4c92b3.js";import"./index.86c64501.js";import"./@vue.cab01781.js";import"./element-plus.f93fd622.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";export{F as default};
|
||||
1
frontend/assets/content.c4421dd6.css
Normal file
1
frontend/assets/content.c4421dd6.css
Normal file
@@ -0,0 +1 @@
|
||||
.my-service[data-v-df02fc9c]{margin:10px 10px 0;background-color:#fff;border-radius:7px}.my-service .title[data-v-df02fc9c]{border-bottom:1px solid #e5e5e5;font-size:16px;font-weight:500}
|
||||
@@ -1 +1 @@
|
||||
import{u as r,_ as i}from"./index.ab5c8d8d.js";import{d as p,e as _,o as m,c as u,a as d,V as l,u as t}from"./@vue.cab01781.js";const f={class:"banner"},g={class:"banner-image"},x=p({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,{getImageUrl:s}=r(),a=_(()=>{const{data:e}=o.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,h)=>{const c=i;return m(),u("div",f,[d("div",g,[l(c,{width:"100%",height:"170px",src:t(s)(t(a)),fit:"contain"},null,8,["src"])])])}}});export{x as _};
|
||||
import{u as r,_ as i}from"./index.86c64501.js";import{d as p,e as _,o as m,c as u,a as d,V as l,u as t}from"./@vue.cab01781.js";const f={class:"banner"},g={class:"banner-image"},x=p({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,{getImageUrl:s}=r(),a=_(()=>{const{data:e}=o.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,h)=>{const c=i;return m(),u("div",f,[d("div",g,[l(c,{width:"100%",height:"170px",src:t(s)(t(a)),fit:"contain"},null,8,["src"])])])}}});export{x as _};
|
||||
@@ -1 +1 @@
|
||||
import{u as r,_ as p}from"./index.ab5c8d8d.js";import{d as i,e as _,o as m,c as u,a as d,V as l,u as t}from"./@vue.cab01781.js";const f={class:"banner mx-[10px] mt-[10px]"},g={class:"banner-image"},b=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,{getImageUrl:s}=r(),a=_(()=>{const{data:e}=o.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,h)=>{const c=p;return m(),u("div",f,[d("div",g,[l(c,{width:"100%",height:"100px",src:t(s)(t(a)),fit:"contain"},null,8,["src"])])])}}});export{b as _};
|
||||
import{u as r,_ as p}from"./index.86c64501.js";import{d as i,e as _,o as m,c as u,a as d,V as l,u as t}from"./@vue.cab01781.js";const f={class:"banner mx-[10px] mt-[10px]"},g={class:"banner-image"},b=i({__name:"content",props:{content:{type:Object,default:()=>({})},styles:{type:Object,default:()=>({})}},setup(n){const o=n,{getImageUrl:s}=r(),a=_(()=>{const{data:e}=o.content;return Array.isArray(e)&&e[0]?e[0].image:""});return(e,h)=>{const c=p;return m(),u("div",f,[d("div",g,[l(c,{width:"100%",height:"100px",src:t(s)(t(a)),fit:"contain"},null,8,["src"])])])}}});export{b as _};
|
||||
@@ -1 +1 @@
|
||||
import"./data-table.vue_vue_type_script_setup_true_lang.710e99ff.js";import{_ as I}from"./data-table.vue_vue_type_script_setup_true_lang.710e99ff.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.ea69f3d7.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./usePaging.226fac59.js";import"./code.c9ce80f0.js";export{I as default};
|
||||
import"./data-table.vue_vue_type_script_setup_true_lang.13faadd0.js";import{_ as I}from"./data-table.vue_vue_type_script_setup_true_lang.13faadd0.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.78e6f421.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./usePaging.226fac59.js";import"./code.3cf40a70.js";export{I as default};
|
||||
@@ -1 +1 @@
|
||||
import{y,A as N,u as T,B as D,H as x,I as P,J as I}from"./element-plus.f93fd622.js";import{P as R}from"./index.ea69f3d7.js";import{u as S,_ as U}from"./usePaging.226fac59.js";import{f as j,h as z}from"./code.c9ce80f0.js";import{f}from"./index.ab5c8d8d.js";import{d as A,s as L,a0 as M,r as $,w as H,o as b,c as C,V as e,M as t,I as J,u as s,O,a as q,k as G,T as h}from"./@vue.cab01781.js";const K={class:"data-table"},Q=h("\u67E5\u8BE2"),W=h("\u91CD\u7F6E"),X={class:"m-4"},Y={class:"flex justify-end mt-4"},ne=A({__name:"data-table",emits:["success"],setup(Z,{emit:g}){const i=L(),o=M({tableName:"",tableComment:""}),{pager:n,getLists:d,resetParams:F,resetPage:E}=S({fetchFun:z,params:o,size:10}),r=$([]),v=a=>{r.value=a.map(({tableName:l})=>l)},w=async()=>{var a;if(!r.value.length)return f.msgError("\u8BF7\u9009\u62E9\u6570\u636E\u8868");await j({tables:r.value.join()}),f.msgSuccess("\u5BFC\u5165\u6210\u529F"),(a=i.value)==null||a.close(),g("success")};return H(()=>{var a;return(a=i.value)==null?void 0:a.visible},a=>{a&&d()}),(a,l)=>{const _=y,c=N,p=T,V=D,m=x,k=P,B=I;return b(),C("div",K,[e(R,{ref_key:"popupRef",ref:i,clickModalClose:!1,title:"\u9009\u62E9\u8868",width:"900px",async:!0,onConfirm:w},{trigger:t(()=>[J(a.$slots,"default")]),default:t(()=>[e(V,{class:"ls-form",model:o,inline:""},{default:t(()=>[e(c,{label:"\u8868\u540D\u79F0"},{default:t(()=>[e(_,{class:"w-56",modelValue:o.tableName,"onUpdate:modelValue":l[0]||(l[0]=u=>o.tableName=u)},null,8,["modelValue"])]),_:1}),e(c,{label:"\u8868\u63CF\u8FF0"},{default:t(()=>[e(_,{class:"w-56",modelValue:o.tableComment,"onUpdate:modelValue":l[1]||(l[1]=u=>o.tableComment=u)},null,8,["modelValue"])]),_:1}),e(c,null,{default:t(()=>[e(p,{type:"primary",onClick:s(E)},{default:t(()=>[Q]),_:1},8,["onClick"]),e(p,{onClick:s(F)},{default:t(()=>[W]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"]),O((b(),C("div",X,[e(k,{height:"400",size:"large",data:s(n).lists,onSelectionChange:v},{default:t(()=>[e(m,{type:"selection",width:"55"}),e(m,{label:"\u8868\u540D\u79F0",prop:"tableName","min-width":"150"}),e(m,{label:"\u8868\u63CF\u8FF0",prop:"tableComment","min-width":"160"}),e(m,{label:"\u521B\u5EFA\u65F6\u95F4",prop:"createTime","min-width":"180"})]),_:1},8,["data"])])),[[B,s(n).loading]]),q("div",Y,[e(U,{modelValue:s(n),"onUpdate:modelValue":l[2]||(l[2]=u=>G(n)?n.value=u:null),onChange:s(d)},null,8,["modelValue","onChange"])])]),_:3},512)])}}});export{ne as _};
|
||||
import{y,A as N,u as T,B as D,H as x,I as P,J as I}from"./element-plus.f93fd622.js";import{P as R}from"./index.78e6f421.js";import{u as S,_ as U}from"./usePaging.226fac59.js";import{f as j,h as z}from"./code.3cf40a70.js";import{f}from"./index.86c64501.js";import{d as A,s as L,a0 as M,r as $,w as H,o as b,c as C,V as e,M as t,I as J,u as s,O,a as q,k as G,T as h}from"./@vue.cab01781.js";const K={class:"data-table"},Q=h("\u67E5\u8BE2"),W=h("\u91CD\u7F6E"),X={class:"m-4"},Y={class:"flex justify-end mt-4"},ne=A({__name:"data-table",emits:["success"],setup(Z,{emit:g}){const i=L(),o=M({tableName:"",tableComment:""}),{pager:n,getLists:d,resetParams:F,resetPage:E}=S({fetchFun:z,params:o,size:10}),r=$([]),v=a=>{r.value=a.map(({tableName:l})=>l)},w=async()=>{var a;if(!r.value.length)return f.msgError("\u8BF7\u9009\u62E9\u6570\u636E\u8868");await j({tables:r.value.join()}),f.msgSuccess("\u5BFC\u5165\u6210\u529F"),(a=i.value)==null||a.close(),g("success")};return H(()=>{var a;return(a=i.value)==null?void 0:a.visible},a=>{a&&d()}),(a,l)=>{const _=y,c=N,p=T,V=D,m=x,k=P,B=I;return b(),C("div",K,[e(R,{ref_key:"popupRef",ref:i,clickModalClose:!1,title:"\u9009\u62E9\u8868",width:"900px",async:!0,onConfirm:w},{trigger:t(()=>[J(a.$slots,"default")]),default:t(()=>[e(V,{class:"ls-form",model:o,inline:""},{default:t(()=>[e(c,{label:"\u8868\u540D\u79F0"},{default:t(()=>[e(_,{class:"w-56",modelValue:o.tableName,"onUpdate:modelValue":l[0]||(l[0]=u=>o.tableName=u)},null,8,["modelValue"])]),_:1}),e(c,{label:"\u8868\u63CF\u8FF0"},{default:t(()=>[e(_,{class:"w-56",modelValue:o.tableComment,"onUpdate:modelValue":l[1]||(l[1]=u=>o.tableComment=u)},null,8,["modelValue"])]),_:1}),e(c,null,{default:t(()=>[e(p,{type:"primary",onClick:s(E)},{default:t(()=>[Q]),_:1},8,["onClick"]),e(p,{onClick:s(F)},{default:t(()=>[W]),_:1},8,["onClick"])]),_:1})]),_:1},8,["model"]),O((b(),C("div",X,[e(k,{height:"400",size:"large",data:s(n).lists,onSelectionChange:v},{default:t(()=>[e(m,{type:"selection",width:"55"}),e(m,{label:"\u8868\u540D\u79F0",prop:"tableName","min-width":"150"}),e(m,{label:"\u8868\u63CF\u8FF0",prop:"tableComment","min-width":"160"}),e(m,{label:"\u521B\u5EFA\u65F6\u95F4",prop:"createTime","min-width":"180"})]),_:1},8,["data"])])),[[B,s(n).loading]]),q("div",Y,[e(U,{modelValue:s(n),"onUpdate:modelValue":l[2]||(l[2]=u=>G(n)?n.value=u:null),onChange:s(d)},null,8,["modelValue","onChange"])])]),_:3},512)])}}});export{ne as _};
|
||||
@@ -1 +1 @@
|
||||
import{r as t}from"./index.ab5c8d8d.js";function r(e){return t.get({url:"/decorate/pages/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate/pages/save",params:e})}function s(e){return t.get({url:"/decorate/tabbar/detail",params:e})}function n(e){return t.post({url:"/decorate/tabbar/save",params:e})}export{s as a,n as b,r as g,o as s};
|
||||
import{r as t}from"./index.86c64501.js";function r(e){return t.get({url:"/decorate/pages/detail",params:e},{ignoreCancelToken:!0})}function o(e){return t.post({url:"/decorate/pages/save",params:e})}function s(e){return t.get({url:"/decorate/tabbar/detail",params:e})}function n(e){return t.post({url:"/decorate/tabbar/save",params:e})}export{s as a,n as b,r as g,o as s};
|
||||
@@ -1 +1 @@
|
||||
import{r as e}from"./index.ab5c8d8d.js";function r(t){return e.get({url:"/system/dept/list",params:t})}function d(t){return e.post({url:"/system/dept/add",params:t})}function u(t){return e.post({url:"/system/dept/edit",params:t})}function n(t){return e.post({url:"/system/dept/del",params:t})}function p(t){return e.get({url:"/system/dept/detail",params:t})}export{u as a,d as b,p as c,r as d,n as e};
|
||||
import{r as e}from"./index.86c64501.js";function r(t){return e.get({url:"/system/dept/list",params:t})}function d(t){return e.post({url:"/system/dept/add",params:t})}function u(t){return e.post({url:"/system/dept/edit",params:t})}function n(t){return e.post({url:"/system/dept/del",params:t})}function p(t){return e.get({url:"/system/dept/detail",params:t})}export{u as a,d as b,p as c,r as d,n as e};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import{r as e}from"./index.ab5c8d8d.js";function n(t){return e.get({url:"/setting/dict/type/list",params:t})}function d(t){return e.get({url:"/setting/dict/type/all",params:t})}function r(t){return e.post({url:"/setting/dict/type/add",params:t})}function s(t){return e.post({url:"/setting/dict/type/edit",params:t})}function a(t){return e.post({url:"/setting/dict/type/del",params:t})}function c(t){return e.get({url:"/setting/dict/data/list",params:t},{ignoreCancelToken:!0})}function u(t){return e.post({url:"/setting/dict/data/add",params:t})}function l(t){return e.post({url:"/setting/dict/data/edit",params:t})}function o(t){return e.post({url:"/setting/dict/data/del",params:t})}export{l as a,u as b,o as c,d,c as e,s as f,r as g,a as h,n as i};
|
||||
import{r as e}from"./index.86c64501.js";function n(t){return e.get({url:"/setting/dict/type/list",params:t})}function d(t){return e.get({url:"/setting/dict/type/all",params:t})}function r(t){return e.post({url:"/setting/dict/type/add",params:t})}function s(t){return e.post({url:"/setting/dict/type/edit",params:t})}function a(t){return e.post({url:"/setting/dict/type/del",params:t})}function c(t){return e.get({url:"/setting/dict/data/list",params:t},{ignoreCancelToken:!0})}function u(t){return e.post({url:"/setting/dict/data/add",params:t})}function l(t){return e.post({url:"/setting/dict/data/edit",params:t})}function o(t){return e.post({url:"/setting/dict/data/del",params:t})}export{l as a,u as b,o as c,d,c as e,s as f,r as g,a as h,n as i};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.23109308.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.23109308.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./role.2bbcee68.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.ea69f3d7.js";export{H as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.2ddf59bd.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.2ddf59bd.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./post.a69d1775.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.78e6f421.js";export{H as default};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.6383396b.js";import{_ as G}from"./edit.vue_vue_type_script_setup_true_lang.6383396b.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.ea69f3d7.js";export{G as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.afd65d73.js";import{_ as G}from"./edit.vue_vue_type_script_setup_true_lang.afd65d73.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.78e6f421.js";export{G as default};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.4a41cfb9.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.4a41cfb9.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./message.22e9789c.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.ea69f3d7.js";export{H as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.7d0c4811.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.7d0c4811.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./article.83af4cc1.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.78e6f421.js";export{H as default};
|
||||
@@ -1 +1 @@
|
||||
import{L as h,M as k,N as y,G as V,A as I,y as x,B as R,u as q,J as U}from"./element-plus.f93fd622.js";import{_ as $}from"./index.8ed21860.js";import{u as L,a as S}from"./vue-router.5046cc50.js";import{f as G}from"./index.ab5c8d8d.js";import{n as M,s as O}from"./message.22e9789c.js";import{d as T,r as j,a0 as H,s as J,o as f,c as P,V as e,M as u,O as z,L as K,T as s,U as d,a}from"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const Q=a("div",{class:"font-medium mb-7"},"\u901A\u77E5\u540D\u79F0",-1),W=a("div",{class:"font-medium mb-7"},"\u77ED\u4FE1\u901A\u77E5",-1),X=s("\u5173\u95ED"),Y=s("\u5F00\u542F"),Z={class:"w-80"},ee={class:"flex-1"},ue={class:"w-full max-w-[320px]"},te=a("div",{class:"form-tips"},[s(" \u53EF\u9009\u53D8\u91CF \u7528\u6237\u6635\u79F0:nickname \u8BA2\u5355\u7F16\u53F7:order_sn \u652F\u4ED8\u65F6\u95F4:pay_time "),a("br"),s(" \u793A\u4F8B\uFF1A\u4EB2\u7231\u7684${nickname}\uFF0C\u60A8\u7684\u8BA2\u5355${order_sn}\u5DF2\u652F\u4ED8\u6210\u529F\uFF0C\u5546\u5BB6\u6B63\u5728\u5FEB\u9A6C\u52A0\u97AD\u4E3A\u60A8\u5B89\u6392\u53D1\u8D27\u3002 "),a("br"),s(" \u751F\u6548\u6761\u4EF6\uFF1A1\u3001\u7BA1\u7406\u540E\u53F0\u5B8C\u6210\u77ED\u4FE1\u8BBE\u7F6E\u30022\u3001\u7B2C\u4E09\u65B9\u77ED\u4FE1\u5E73\u53F0\u7533\u8BF7\u6A21\u677F\u3002 ")],-1),oe=s("\u4FDD\u5B58"),Ue=T({__name:"edit",setup(se){const p=L(),E=S(),m=j(!1),t=H({id:"",name:"",type:"",remarks:"",smsNotice:{status:0,templateId:"",content:""}}),B={"smsNotice.templateId":[{required:!0,message:"\u8BF7\u8F93\u5165\u6A21\u677FID",trigger:"blur"}],"smsNotice.content":[{required:!0,message:"\u8BF7\u8F93\u5165\u77ED\u4FE1\u5185\u5BB9",trigger:"blur"}]},c=J(),D=async()=>{m.value=!0;const r=await M({id:p.query.id});Object.keys(r).forEach(o=>{t[o]=r[o]}),m.value=!1},A=async()=>{var r;await((r=c.value)==null?void 0:r.validate()),await O(t),G.msgSuccess("\u64CD\u4F5C\u6210\u529F"),E.back()};return p.query.id&&D(),(r,o)=>{const b=h,i=V,l=I,_=k,v=y,F=x,g=R,N=q,w=$,C=U;return f(),P("div",null,[e(i,{class:"!border-none",shadow:"never"},{default:u(()=>[e(b,{content:"\u7F16\u8F91\u901A\u77E5\u8BBE\u7F6E",onBack:o[0]||(o[0]=n=>r.$router.back())})]),_:1}),z((f(),K(g,{ref_key:"formRef",ref:c,model:t,"label-width":"120px",rules:B},{default:u(()=>[e(i,{class:"!border-none mt-4",shadow:"never"},{default:u(()=>[Q,e(l,{label:"\u901A\u77E5\u540D\u79F0",prop:"name"},{default:u(()=>[s(d(t.name),1)]),_:1}),e(l,{label:"\u901A\u77E5\u7C7B\u578B",prop:"name"},{default:u(()=>[s(d(t.type),1)]),_:1}),e(l,{label:"\u901A\u77E5\u4E1A\u52A1",prop:"name"},{default:u(()=>[s(d(t.remarks),1)]),_:1})]),_:1}),e(i,{class:"!border-none mt-4",shadow:"never"},{default:u(()=>[W,e(l,{label:"\u5F00\u542F\u72B6\u6001",prop:"smsNotice.status",required:""},{default:u(()=>[e(v,{modelValue:t.smsNotice.status,"onUpdate:modelValue":o[1]||(o[1]=n=>t.smsNotice.status=n)},{default:u(()=>[e(_,{label:"0"},{default:u(()=>[X]),_:1}),e(_,{label:"1"},{default:u(()=>[Y]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(l,{label:"\u6A21\u677FID",prop:"smsNotice.templateId"},{default:u(()=>[a("div",Z,[e(F,{modelValue:t.smsNotice.templateId,"onUpdate:modelValue":o[2]||(o[2]=n=>t.smsNotice.templateId=n),placeholder:"\u8BF7\u8F93\u5165\u6A21\u677FID"},null,8,["modelValue"])])]),_:1}),e(l,{label:"\u77ED\u4FE1\u5185\u5BB9",prop:"smsNotice.content"},{default:u(()=>[a("div",ee,[a("div",ue,[e(F,{type:"textarea",rows:6,modelValue:t.smsNotice.content,"onUpdate:modelValue":o[3]||(o[3]=n=>t.smsNotice.content=n)},null,8,["modelValue"])]),te])]),_:1})]),_:1})]),_:1},8,["model"])),[[C,m.value]]),e(w,null,{default:u(()=>[e(N,{type:"primary",onClick:A},{default:u(()=>[oe]),_:1})]),_:1})])}}});export{Ue as default};
|
||||
import{L as h,M as k,N as y,G as V,A as I,y as x,B as R,u as q,J as U}from"./element-plus.f93fd622.js";import{_ as $}from"./index.250c57ef.js";import{u as L,a as S}from"./vue-router.5046cc50.js";import{f as G}from"./index.86c64501.js";import{n as M,s as O}from"./message.e116a72b.js";import{d as T,r as j,a0 as H,s as J,o as f,c as P,V as e,M as u,O as z,L as K,T as s,U as d,a}from"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./lodash.b68d77aa.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";const Q=a("div",{class:"font-medium mb-7"},"\u901A\u77E5\u540D\u79F0",-1),W=a("div",{class:"font-medium mb-7"},"\u77ED\u4FE1\u901A\u77E5",-1),X=s("\u5173\u95ED"),Y=s("\u5F00\u542F"),Z={class:"w-80"},ee={class:"flex-1"},ue={class:"w-full max-w-[320px]"},te=a("div",{class:"form-tips"},[s(" \u53EF\u9009\u53D8\u91CF \u7528\u6237\u6635\u79F0:nickname \u8BA2\u5355\u7F16\u53F7:order_sn \u652F\u4ED8\u65F6\u95F4:pay_time "),a("br"),s(" \u793A\u4F8B\uFF1A\u4EB2\u7231\u7684${nickname}\uFF0C\u60A8\u7684\u8BA2\u5355${order_sn}\u5DF2\u652F\u4ED8\u6210\u529F\uFF0C\u5546\u5BB6\u6B63\u5728\u5FEB\u9A6C\u52A0\u97AD\u4E3A\u60A8\u5B89\u6392\u53D1\u8D27\u3002 "),a("br"),s(" \u751F\u6548\u6761\u4EF6\uFF1A1\u3001\u7BA1\u7406\u540E\u53F0\u5B8C\u6210\u77ED\u4FE1\u8BBE\u7F6E\u30022\u3001\u7B2C\u4E09\u65B9\u77ED\u4FE1\u5E73\u53F0\u7533\u8BF7\u6A21\u677F\u3002 ")],-1),oe=s("\u4FDD\u5B58"),Ue=T({__name:"edit",setup(se){const p=L(),E=S(),m=j(!1),t=H({id:"",name:"",type:"",remarks:"",smsNotice:{status:0,templateId:"",content:""}}),B={"smsNotice.templateId":[{required:!0,message:"\u8BF7\u8F93\u5165\u6A21\u677FID",trigger:"blur"}],"smsNotice.content":[{required:!0,message:"\u8BF7\u8F93\u5165\u77ED\u4FE1\u5185\u5BB9",trigger:"blur"}]},c=J(),D=async()=>{m.value=!0;const r=await M({id:p.query.id});Object.keys(r).forEach(o=>{t[o]=r[o]}),m.value=!1},A=async()=>{var r;await((r=c.value)==null?void 0:r.validate()),await O(t),G.msgSuccess("\u64CD\u4F5C\u6210\u529F"),E.back()};return p.query.id&&D(),(r,o)=>{const b=h,i=V,l=I,_=k,v=y,F=x,g=R,N=q,w=$,C=U;return f(),P("div",null,[e(i,{class:"!border-none",shadow:"never"},{default:u(()=>[e(b,{content:"\u7F16\u8F91\u901A\u77E5\u8BBE\u7F6E",onBack:o[0]||(o[0]=n=>r.$router.back())})]),_:1}),z((f(),K(g,{ref_key:"formRef",ref:c,model:t,"label-width":"120px",rules:B},{default:u(()=>[e(i,{class:"!border-none mt-4",shadow:"never"},{default:u(()=>[Q,e(l,{label:"\u901A\u77E5\u540D\u79F0",prop:"name"},{default:u(()=>[s(d(t.name),1)]),_:1}),e(l,{label:"\u901A\u77E5\u7C7B\u578B",prop:"name"},{default:u(()=>[s(d(t.type),1)]),_:1}),e(l,{label:"\u901A\u77E5\u4E1A\u52A1",prop:"name"},{default:u(()=>[s(d(t.remarks),1)]),_:1})]),_:1}),e(i,{class:"!border-none mt-4",shadow:"never"},{default:u(()=>[W,e(l,{label:"\u5F00\u542F\u72B6\u6001",prop:"smsNotice.status",required:""},{default:u(()=>[e(v,{modelValue:t.smsNotice.status,"onUpdate:modelValue":o[1]||(o[1]=n=>t.smsNotice.status=n)},{default:u(()=>[e(_,{label:"0"},{default:u(()=>[X]),_:1}),e(_,{label:"1"},{default:u(()=>[Y]),_:1})]),_:1},8,["modelValue"])]),_:1}),e(l,{label:"\u6A21\u677FID",prop:"smsNotice.templateId"},{default:u(()=>[a("div",Z,[e(F,{modelValue:t.smsNotice.templateId,"onUpdate:modelValue":o[2]||(o[2]=n=>t.smsNotice.templateId=n),placeholder:"\u8BF7\u8F93\u5165\u6A21\u677FID"},null,8,["modelValue"])])]),_:1}),e(l,{label:"\u77ED\u4FE1\u5185\u5BB9",prop:"smsNotice.content"},{default:u(()=>[a("div",ee,[a("div",ue,[e(F,{type:"textarea",rows:6,modelValue:t.smsNotice.content,"onUpdate:modelValue":o[3]||(o[3]=n=>t.smsNotice.content=n)},null,8,["modelValue"])]),te])]),_:1})]),_:1})]),_:1},8,["model"])),[[C,m.value]]),e(w,null,{default:u(()=>[e(N,{type:"primary",onClick:A},{default:u(()=>[oe]),_:1})]),_:1})])}}});export{Ue as default};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.95237981.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.95237981.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./article.99eb0f9b.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.ea69f3d7.js";export{H as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.3597711b.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.3597711b.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./message.e116a72b.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.78e6f421.js";export{H as default};
|
||||
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.29312fb0.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.29312fb0.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.ea69f3d7.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./dict.25b3b485.js";export{H as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.0d4b0bdf.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.0d4b0bdf.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.78e6f421.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./dict.e61ac0ab.js";export{H as default};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.e1d8ecd9.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.e1d8ecd9.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.ea69f3d7.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./dict.25b3b485.js";export{H as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.cfb685b3.js";import{_ as H}from"./edit.vue_vue_type_script_setup_true_lang.cfb685b3.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./index.78e6f421.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./dict.e61ac0ab.js";export{H as default};
|
||||
1
frontend/assets/edit.c69b54b5.js
Normal file
1
frontend/assets/edit.c69b54b5.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.85afe771.js";import{_ as I}from"./edit.vue_vue_type_script_setup_true_lang.85afe771.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./department.9406e6bc.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.ea69f3d7.js";import"./useDictOptions.254b0f8d.js";export{I as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.9e6f8458.js";import{_ as I}from"./edit.vue_vue_type_script_setup_true_lang.9e6f8458.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./department.e46fc6ed.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.78e6f421.js";import"./useDictOptions.7e2891d1.js";export{I as default};
|
||||
@@ -1 +1 @@
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.7b1d4669.js";import{_ as T}from"./edit.vue_vue_type_script_setup_true_lang.7b1d4669.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.29f42532.js";import"./index.ea69f3d7.js";import"./index.ab5c8d8d.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.be7557e1.js";import"./usePaging.226fac59.js";import"./index.e14f68ca.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";import"./useDictOptions.254b0f8d.js";import"./role.2bbcee68.js";import"./post.58b0c96b.js";import"./department.9406e6bc.js";export{T as default};
|
||||
import"./edit.vue_vue_type_script_setup_true_lang.eb1a840d.js";import{_ as T}from"./edit.vue_vue_type_script_setup_true_lang.eb1a840d.js";import"./element-plus.f93fd622.js";import"./@vue.cab01781.js";import"./@vueuse.724ed0af.js";import"./@element-plus.92b4185f.js";import"./lodash-es.29c53eac.js";import"./dayjs.66926594.js";import"./axios.2d915936.js";import"./async-validator.fb49d0f5.js";import"./@ctrl.82a509e0.js";import"./@popperjs.36402333.js";import"./escape-html.e5dfadb9.js";import"./normalize-wheel-es.8aeb3683.js";import"./picker.99919d7c.js";import"./index.78e6f421.js";import"./index.86c64501.js";import"./lodash.b68d77aa.js";import"./vue-router.5046cc50.js";import"./pinia.e85e8286.js";import"./vue-demi.bfae2336.js";import"./css-color-function.a8f9466d.js";import"./color.903ca10f.js";import"./clone.9d64bb7a.js";import"./color-convert.69e17089.js";import"./color-string.e356f5de.js";import"./color-name.e7a4e1d3.js";import"./nprogress.a96d99f2.js";import"./echarts.6ad8c478.js";import"./zrender.f91f2f01.js";import"./highlight.js.4ebdf9a4.js";import"./@highlightjs.0ab41b7b.js";import"./index.1f6589be.js";import"./usePaging.226fac59.js";import"./index.8c4e7c10.js";import"./index.vue_vue_type_script_setup_true_lang.6f61ba2e.js";import"./vue3-video-play.05975c53.js";import"./vuedraggable.a5db575d.js";import"./vue.de4be77f.js";import"./sortablejs.cd7e2c7e.js";import"./useDictOptions.7e2891d1.js";import"./role.60797ac7.js";import"./post.a69d1775.js";import"./department.e46fc6ed.js";export{T as default};
|
||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user