增加添加商品功能

This commit is contained in:
2026-03-10 11:26:52 +08:00
parent 912087fa75
commit 8561d1debc
318 changed files with 737 additions and 97 deletions

View File

@@ -0,0 +1 @@

View File

@@ -20,7 +20,7 @@
<!-- 表单内容 -->
<view class="form-card">
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>商品类型:</text></view>
<view class="input-wrap">
<view class="radio-group">
@@ -35,81 +35,112 @@
</view>
</view>
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>商品名称:</text></view>
<view class="input-wrap">
<view class="input-box">
<input class="real-input" value="UR2024夏季新款女装复古纯欲氛围感一字肩短款T恤衫UWG440060" />
<text class="count">36/80</text>
<input class="real-input" v-model="formData.name" placeholder="请输入商品名称" />
</view>
</view>
</view>
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>单位:</text></view>
<view class="input-wrap">
<view class="input-box small">
<input class="real-input" value="件" />
<text class="count">1/5</text>
<input class="real-input" v-model="formData.attributes.unit" placeholder="例: 件" />
</view>
</view>
</view>
<view class="form-item">
<view class="form-item multi-line">
<view class="label"><text class="required">*</text><text>商品轮播图:</text></view>
<view class="input-wrap">
<view class="image-uploader">
<view v-for="(img, i) in carouselImages" :key="i" class="img-item">
<view v-for="(img, i) in formData.image_urls" :key="i" class="img-item">
<image :src="img" mode="aspectFill" />
<view class="img-close">×</view>
<view v-if="i === 0" class="main-tag">主图</view>
<view class="img-close" @click="removeImage(i)">×</view>
</view>
<view class="upload-btn">
<view class="upload-btn" @click="uploadImage" v-if="formData.image_urls.length < 10">
<text class="icon">+</text>
<text class="upload-txt">添加图片</text>
</view>
</view>
<text class="tip">建议尺寸800*800可拖拽改变图片顺序,默认首张图为主图最多上传10张</text>
<text class="tip">建议尺寸800*800默认首张图为主图最多上传10张</text>
</view>
</view>
<view class="form-item">
<view class="form-item multi-line">
<view class="label"><text>添加视频:</text></view>
<view class="input-wrap">
<view class="upload-btn v-btn">
<view class="image-uploader">
<view v-for="(vid, i) in formData.video_urls" :key="i" class="img-item video-item">
<video :src="vid" style="width: 100%; height: 100%; border-radius: 4px;" :controls="false"></video>
<view class="img-close" @click="removeVideo(i)">×</view>
</view>
<view class="upload-btn v-btn" @click="uploadVideo" v-if="formData.video_urls.length < 1">
<text class="v-icon">📹</text>
<text class="upload-txt">上传视频</text>
</view>
</view>
<text class="tip">建议时长9~30秒视频宽高比16:9</text>
</view>
</view>
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>商品分类:</text></view>
<view class="input-wrap">
<view class="tag-selector">
<view v-for="tag in categories" :key="tag" class="tag-item">
<text>{{ tag }}</text>
<text class="close">×</text>
<picker :range="categories" @change="onCategoryChange">
<view class="mock-btn-select">
<text>{{ categoryName || '请选择分类' }}</text>
</view>
<text class="add-link">新增分类</text>
</picker>
</view>
</view>
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>商品售价:</text></view>
<view class="input-wrap">
<view class="input-box small">
<input class="real-input" type="number" v-model="formData.base_price" placeholder="请输入售价" />
<text class="unit">元</text>
</view>
</view>
</view>
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text class="required">*</text><text>商品库存:</text></view>
<view class="input-wrap">
<view class="input-box small">
<input class="real-input" type="number" v-model="formData.available_stock" placeholder="请输入库存" />
<text class="unit">件</text>
</view>
</view>
</view>
<view class="form-item align-center">
<view class="label"><text>商品标签:</text></view>
<view class="input-wrap">
<view class="mock-btn-select">选择标签</view>
<view class="tag-selector">
<view v-for="(tg, index) in formData.tags" :key="index" class="tag-item">
<text>{{ tg }}</text>
<text class="close" @click="removeTag(index)">×</text>
</view>
<text class="add-link" @click="addTag">+添加标签</text>
</view>
</view>
</view>
<view class="form-item">
<view class="form-item align-center">
<view class="label"><text>商品状态:</text></view>
<view class="input-wrap">
<view class="radio-group-simple">
<view class="radio-simple on">
<view class="radio-simple" :class="{ on: formData.status === 1 }" @click="formData.status = 1">
<text class="dot"></text>
<text>上架</text>
</view>
<view class="radio-simple">
<view class="radio-simple" :class="{ on: formData.status === 2 }" @click="formData.status = 2">
<text class="dot"></text>
<text>下架</text>
</view>
@@ -119,30 +150,279 @@
</view>
<view class="footer-btns">
<button class="btn-next">下一步</button>
<button class="btn-save">保存</button>
<button class="btn-save" @click="saveDraftProduct">草稿箱</button>
<button class="btn-next" @click="saveAndNext">下一步</button>
</view>
</view>
</template>
<script setup lang="uts">
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import { openRoute } from '@/layouts/admin/store/adminNavStore.uts'
import supa, { ensureSupabaseReady } from '@/components/supadb/aksupainstance'
const activeStep = ref(0)
const steps = ['基础信息', '规格库存', '商品详情', '物流设置', '会员价/佣金', '营销设置', '其他设置']
const carouselImages = ref([
'https://img1.baidu.com/it/u=254065646,3100346083&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
'https://img2.baidu.com/it/u=3025255470,3051061730&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
'https://img2.baidu.com/it/u=3775079632,546700868&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
])
const formData = ref({
id: '',
merchant_id: '',
category_id: '',
name: '',
base_price: 0,
available_stock: 0,
total_stock: 0,
main_image_url: '',
image_urls: [] as string[],
video_urls: [] as string[],
status: 1, // 1上架 2下架 3草稿 4删除
tags: [] as string[],
attributes: { unit: '件' } as Record<string, any>,
published_at: null as string | null
})
const categories = ref(['生活家居', '运动专区 / 361', '运动专区 / 特步', '运动专区 / 匹克'])
const categories = ref(['361', '特步', '匹克', '生活家居'])
const categoryName = ref('')
onMounted(async () => {
await ensureSupabaseReady()
const mId = uni.getStorageSync('merchant_id') as string | null
if (!mId) {
uni.showToast({ title: '未获取到商家信息,请重新登录', icon: 'none' })
return
}
formData.value.merchant_id = mId
const editId = uni.getStorageSync('edit_product_id') as string | null
if (editId) {
uni.removeStorageSync('edit_product_id')
await fetchProductDetail(editId, mId)
}
})
async function fetchProductDetail(id: string, mId: string) {
try {
const { data, error } = await supa
.from('ml_products')
.select('*')
.eq('id', id)
.eq('merchant_id', mId)
.single()
if (error) throw error
if (data) {
formData.value.id = data.id
formData.value.name = data.name || ''
formData.value.base_price = data.base_price || 0
formData.value.available_stock = data.available_stock || 0
formData.value.total_stock = data.total_stock || data.available_stock || 0
formData.value.status = data.status || 1
formData.value.main_image_url = data.main_image_url || ''
formData.value.image_urls = data.image_urls || []
formData.value.video_urls = data.video_urls || []
formData.value.tags = data.tags || []
if (data.attributes && typeof data.attributes === 'object') {
const attrs = data.attributes as Record<string, any>
formData.value.attributes.unit = attrs['unit'] || '件'
}
// Try to map category
formData.value.category_id = data.category_id || ''
categoryName.value = data.category_id ? '已绑定分类' : ''
}
} catch (e) {
console.error('获取详情失败', e)
uni.showToast({ title: '获取商品信息失败,或者无权限编辑', icon: 'none' })
}
}
function onCategoryChange(e: any) {
const v = e.detail.value as number
categoryName.value = categories.value[v]
// In a real project, this maps to an actual category ID, but for now we use a mock one
formData.value.category_id = `cat_${v}`
}
function addTag() {
uni.showModal({
title: '添加标签',
editable: true,
success: (res) => {
if (res.confirm && res.content) {
formData.value.tags.push(res.content)
}
}
})
}
function removeTag(index: number) {
formData.value.tags.splice(index, 1)
}
function uploadImage() {
const maxCount = 10 - formData.value.image_urls.length
if (maxCount <= 0) return
uni.chooseImage({
count: maxCount,
success: (res) => {
const paths = res.tempFilePaths as string[]
formData.value.image_urls.push(...paths)
}
})
}
function removeImage(index: number) {
formData.value.image_urls.splice(index, 1)
}
function uploadVideo() {
uni.chooseVideo({
sourceType: ['camera', 'album'],
success: (res) => {
formData.value.video_urls.push(res.tempFilePath as string)
}
})
}
function removeVideo(index: number) {
formData.value.video_urls.splice(index, 1)
}
function goBack() {
openRoute('product_productList')
}
// 通用上传方法
async function uploadToSupabase(filePath: string): Promise<string> {
if (filePath.startsWith('http') && !filePath.startsWith('blob:')) {
return filePath
}
const extMatch = filePath.match(/\.(\w+)$/)
const ext = extMatch ? extMatch[1] : 'png'
const uuid = Math.random().toString(36).substring(2, 10)
const remotePath = `products/${formData.value.merchant_id}_${Date.now()}_${uuid}.${ext}`
uni.showLoading({ title: '上传中...' })
try {
const { data, error } = await supa.storage.from('zhipao').upload(remotePath, filePath, {})
if (error) {
throw error
}
const urlKey = typeof data === 'object' ? (data as any)['Key'] || (data as any)['path'] : ''
// fallback logic, generally Supabase uses 'storage/v1/object/public/bucket/' + path
if (urlKey) {
return `https://ak3.oulog.com/storage/v1/object/public/${urlKey}`
}
return ''
} catch (e: any) {
console.error('上传文件失败:', e)
throw new Error(e.message || '上传异常')
} finally {
uni.hideLoading()
}
}
async function uploadAllCurrentFiles() {
const newImages = [] as string[]
for (const p of formData.value.image_urls) {
const u = await uploadToSupabase(p)
if(u) newImages.push(u)
}
formData.value.image_urls = newImages
const newVideos = [] as string[]
for (const p of formData.value.video_urls) {
const u = await uploadToSupabase(p)
if(u) newVideos.push(u)
}
formData.value.video_urls = newVideos
}
async function doSaveProduct(targetStatus: number) {
if (!formData.value.name) return uni.showToast({ title: '请输入商品名称', icon: 'none' })
if (!formData.value.category_id) return uni.showToast({ title: '请选择商品分类', icon: 'none' })
if (formData.value.image_urls.length === 0) return uni.showToast({ title: '请至少上传一张商品图', icon: 'none' })
// 必须获取正确的 merchant_id并且存在
if (!formData.value.merchant_id || formData.value.merchant_id.startsWith('merchant_123')) {
const mId = uni.getStorageSync('merchant_id') as string | null
if (!mId) {
uni.showToast({ title: '未获取到商家信息,请重新登录', icon: 'none' })
return
}
formData.value.merchant_id = mId
}
uni.showLoading({ title: '保存中...' })
try {
// 1. 上传文件拿到正式 URL
await uploadAllCurrentFiles()
// 2. 组装 Payload
// 根据 CRMEB: 1:上架 2:下架 3:草稿 4:删除
formData.value.status = targetStatus
if (targetStatus === 1) {
formData.value.published_at = new Date().toISOString()
} else if (targetStatus === 3) {
formData.value.published_at = null
}
const payload = {
merchant_id: formData.value.merchant_id,
name: formData.value.name,
category_id: formData.value.category_id || null,
base_price: Number(formData.value.base_price),
main_image_url: formData.value.image_urls.length > 0 ? formData.value.image_urls[0] : '', // 首图同步
image_urls: formData.value.image_urls,
video_urls: formData.value.video_urls,
available_stock: Number(formData.value.available_stock),
total_stock: Number(formData.value.total_stock) || Number(formData.value.available_stock),
status: formData.value.status,
tags: formData.value.tags,
attributes: formData.value.attributes,
published_at: formData.value.published_at
}
let result;
if (formData.value.id) {
// 必须加上 merchant_id 检查,防止越权串数据
result = await supa.from('ml_products')
.update(payload)
.eq('id', formData.value.id)
.eq('merchant_id', formData.value.merchant_id)
} else {
result = await supa.from('ml_products').insert([payload])
}
uni.hideLoading()
if (result && result.error) {
console.error('Save Product DB Error:', result.error)
uni.showToast({ title: '保存失败: ' + result.error.message, icon: 'none' })
} else {
uni.showToast({ title: '保存成功', icon: 'success' })
uni.$emit('REFRESH_PRODUCT_LIST')
setTimeout(() => goBack(), 1000)
}
} catch (error: any) {
uni.hideLoading()
console.error('保存报错:', error)
uni.showToast({ title: '发生错误: ' + (error.message || ''), icon: 'none' })
}
}
// 草稿箱
function saveDraftProduct() {
doSaveProduct(3) // 3 表示草稿
}
// 下一步/发布
function saveAndNext() {
// 这里如果原本要求点击下一步是发布上架,则传入 1
doSaveProduct(1)
}
</script>
<style scoped lang="scss">
@@ -216,15 +496,28 @@ function goBack() {
display: flex;
flex-direction: row;
margin-bottom: 30px;
&.align-center {
align-items: center;
}
&.multi-line {
align-items: flex-start;
}
.label {
width: 120px;
text-align: right;
font-size: 14px;
color: #333;
padding-top: 8px;
margin-right: 20px;
line-height: 20px;
.required { color: #f5222d; margin-right: 4px; }
}
&.multi-line .label {
padding-top: 8px; /* 顶部对齐缓冲 */
}
.input-wrap { flex: 1; }
}
@@ -267,7 +560,7 @@ function goBack() {
height: 36px;
&.small { width: 150px; }
.real-input { flex: 1; font-size: 14px; color: #333; }
.count { font-size: 12px; color: #bfbfbf; }
.count, .unit { font-size: 14px; color: #666; margin-left: 8px; }
}
.image-uploader {
@@ -277,21 +570,37 @@ function goBack() {
gap: 12px;
margin-bottom: 8px;
.img-item {
width: 80px; height: 80px; position: relative;
width: 100px; height: 100px; position: relative; border-radius: 4px; overflow: visible;
border: 1px solid #e8e8e8;
background-color: #f9f9f9;
image { width: 100%; height: 100%; border-radius: 4px; }
.img-close {
position: absolute; right: -6px; top: -6px; width: 16px; height: 16px;
position: absolute; right: -8px; top: -8px; width: 20px; height: 20px;
background: rgba(0,0,0,0.5); color: #fff; border-radius: 50%;
display: flex; align-items: center; justify-content: center; font-size: 12px;
cursor: pointer; z-index: 2;
}
.main-tag {
position: absolute; left: 0; bottom: 0; background: rgba(24,144,255,0.8);
color: #fff; font-size: 12px; padding: 2px 6px; border-top-right-radius: 4px; border-bottom-left-radius: 4px;
}
}
.video-item {
width: 150px; height: 100px;
}
}
.upload-btn {
width: 80px; height: 80px; border: 1px dashed #d9d9d9; border-radius: 4px;
display: flex; align-items: center; justify-content: center;
.icon { font-size: 24px; color: #999; }
&.v-btn { width: 64px; height: 64px; margin-bottom: 8px; .v-icon { font-size: 24px; } }
width: 100px; height: 100px; border: 1px dashed #d9d9d9; border-radius: 4px;
display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer;
background-color: #fafafa;
&:hover { border-color: #1890ff; }
.icon { font-size: 28px; color: #999; margin-bottom: 4px; }
.upload-txt { font-size: 12px; color: #666; }
&.v-btn {
width: 150px; height: 100px;
.v-icon { font-size: 24px; color: #999; margin-bottom: 4px; }
}
}
.tip { font-size: 12px; color: #999; }
@@ -303,17 +612,17 @@ function goBack() {
gap: 8px;
align-items: center;
.tag-item {
background: #f5f5f5; border: 1px solid #d9d9d9; padding: 2px 10px; border-radius: 4px;
background: #f5f5f5; border: 1px solid #d9d9d9; padding: 4px 10px; border-radius: 4px;
display: flex; flex-direction: row; align-items: center; gap: 6px;
font-size: 14px; color: #666;
.close { color: #999; cursor: pointer; }
.close { color: #999; cursor: pointer; font-size: 16px; margin-left: 2px; }
}
.add-link { font-size: 14px; color: #1890ff; cursor: pointer; }
.add-link { font-size: 14px; color: #1890ff; cursor: pointer; padding: 4px 0; }
}
.mock-btn-select {
border: 1px solid #d9d9d9; border-radius: 4px; padding: 6px 16px;
font-size: 14px; color: #666; display: inline-block;
border: 1px solid #d9d9d9; border-radius: 4px; padding: 0 16px; height: 36px;
font-size: 14px; color: #333; display: flex; align-items: center; cursor: pointer;
}
.radio-group-simple {
@@ -321,7 +630,7 @@ function goBack() {
flex-direction: row;
gap: 20px;
.radio-simple {
display: flex; flex-direction: row; align-items: center; gap: 6px; font-size: 14px; color: #666;
display: flex; flex-direction: row; align-items: center; gap: 6px; font-size: 14px; color: #666; cursor: pointer;
.dot { width: 14px; height: 14px; border: 1px solid #d9d9d9; border-radius: 50%; position: relative; }
&.on {
color: #1890ff;
@@ -341,7 +650,8 @@ function goBack() {
justify-content: center;
gap: 16px;
padding-bottom: 40px;
.btn-next { background: #1890ff; color: #fff; border: none; padding: 0 24px; height: 40px; border-radius: 4px; }
.btn-save { background: #fff; color: #1890ff; border: 1px solid #1890ff; padding: 0 24px; height: 40px; border-radius: 4px; }
.btn-next { background: #1890ff; color: #fff; border: none; padding: 0 24px; height: 40px; border-radius: 4px; cursor: pointer; font-size: 14px; }
.btn-save { background: #fff; color: #333; border: 1px solid #d9d9d9; padding: 0 24px; height: 40px; border-radius: 4px; cursor: pointer; font-size: 14px; }
.btn-save:hover { color: #1890ff; border-color: #1890ff; }
}
</style>

View File

@@ -162,60 +162,82 @@
</template>
<script setup lang="uts">
import { ref } from 'vue'
import { ref, onMounted, onUnmounted } from 'vue'
import { openRoute } from '@/layouts/admin/store/adminNavStore.uts'
import StatusSwitch from '@/components/StatusSwitch.uvue'
import supa, { ensureSupabaseReady } from '@/components/supadb/aksupainstance'
const total = ref(49)
const total = ref(0)
const activeStatus = ref('selling')
const activeDropdownId = ref<number | null>(null)
const statusTabs = ref([
{ key: 'selling', label: '出售中的商品', count: 49 },
{ key: 'warehouse', label: '仓库中的商品', count: 4 },
{ key: 'soldout', label: '已经售罄商品', count: 11 },
{ key: 'alarm', label: '警戒库存商品', count: 27 },
{ key: 'recycle', label: '回收站的商品', count: 176 },
{ key: 'selling', label: '出售中的商品', count: 0 },
{ key: 'warehouse', label: '仓库中的商品', count: 0 },
{ key: 'soldout', label: '已经售罄商品', count: 0 },
{ key: 'alarm', label: '警戒库存商品', count: 0 },
{ key: 'recycle', label: '回收站的商品', count: 0 },
])
const productList = ref([
{
id: 963,
image: 'https://img1.baidu.com/it/u=254065646,3100346083&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
name: 'UR2024夏季新款女装复古纯欲氛围感一字肩短款T恤衫UWG440060',
activities: ['kj', 'pt'],
typeName: '普通商品',
price: '0.01',
sales: 639,
stock: 1602,
sort: 9999,
status: 1
},
{
id: 108,
image: 'https://img2.baidu.com/it/u=3033501986,2204481084&fm=253&fmt=auto&app=138&f=JPEG?w=569&h=500',
name: 'FOMIX 蛋壳椅 进口头层牛皮橙色单人沙发椅Egg chair设计师师单椅单沙头层牛皮/单椅',
activities: ['pt', 'ms'],
typeName: '普通商品',
price: '7580.00',
sales: 14,
stock: 16638,
sort: 9999,
status: 1
},
{
id: 48,
image: 'https://img0.baidu.com/it/u=1762118431,3101886131&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
name: '阿迪达斯官网 adidas BBALL CAP COT 男女训练运动帽子FQ5270 传奇墨水蓝/传奇墨水蓝/白 XL',
activities: ['kj', 'pt', 'ms'],
typeName: '普通商品',
price: '100.00',
sales: 841,
stock: 2318,
sort: 9998,
status: 1
const productList = ref<any[]>([])
onMounted(() => {
fetchProducts()
uni.$on('REFRESH_PRODUCT_LIST', () => {
fetchProducts()
})
})
onUnmounted(() => {
uni.$off('REFRESH_PRODUCT_LIST')
})
// 从 ml_products 表中获取商品数据
async function fetchProducts() {
await ensureSupabaseReady()
// 从本地缓存获取 current merchant_id
const currentMerchantId = uni.getStorageSync('merchant_id') as string | null
if (!currentMerchantId) {
uni.showToast({ title: '未获取到商家信息,请重新登录', icon: 'none' })
return
}
])
try {
const { data, error, count } = await supa
.from('ml_products')
.select('id, name, main_image_url, base_price, available_stock, status, created_at', { count: 'exact' })
.eq('merchant_id', currentMerchantId)
.order('created_at', { ascending: false })
if (error) {
console.error('Fetch products error:', error)
return
}
if (data) {
productList.value = data.map((item: any) => {
return {
id: item.id,
image: item.main_image_url || '',
name: item.name || '未命名商品',
activities: [],
typeName: '普通商品',
price: item.base_price !== null ? Number(item.base_price).toFixed(2) : '0.00',
sales: 0,
stock: item.available_stock || 0,
sort: 0,
status: item.status || 0
}
})
total.value = count || data.length
}
} catch (err) {
console.error('获取商品列表失败:', err)
uni.showToast({ title: '加载失败', icon: 'none' })
}
}
function getActivityName(tag: string): string {
if (tag === 'kj') return '砍价'
@@ -225,6 +247,11 @@ function getActivityName(tag: string): string {
}
function goEdit(id: number | null) {
if (id !== null) {
uni.setStorageSync('edit_product_id', id)
} else {
uni.removeStorageSync('edit_product_id')
}
openRoute('product_edit')
}

File diff suppressed because one or more lines are too long

View File

@@ -84,7 +84,7 @@
<view class="card-head">
<text class="card-title">商品销售分析</text>
<view class="card-head-right">
<select class="select" v-model="selectedProductId" @change="handleProductChange">
<select class="select" :value="selectedProductId" @change="(e: any) => { selectedProductId = parseInt(e.detail?.value ?? e.target?.value ?? '0'); handleProductChange(); }">
<option v-for="p in topProducts" :key="p.id" :value="p.id">{{ p.name }}</option>
</select>
</view>

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n name: \"EChartsView\",\n props: {\n option: { type: Object, default: () => { return (new UTSJSONObject({})); } },\n theme: { type: String, default: \"light\" },\n },\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/uni_modules/charts/EChartsView.vue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"EChartsView.vue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"EChartsView.vue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACA,+BAAe;IACb,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE;QACL,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAM,OAAA,mBAAC,EAAE,EAAC,EAAJ,CAAI,EAAE;QAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;KAC1C;CACF,EAAC\"}"}

View File

@@ -0,0 +1 @@
{"code":"// types/analytics/dashboard.uts\nexport class TrendData extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n x: { type: \"Unknown\", optional: false },\n gmv: { type: \"Unknown\", optional: false },\n orders: { type: \"Unknown\", optional: false }\n };\n },\n name: \"TrendData\"\n };\n }\n constructor(options, metadata = TrendData.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.x = this.__props__.x;\n this.gmv = this.__props__.gmv;\n this.orders = this.__props__.orders;\n delete this.__props__;\n }\n}\nexport class SegmentItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n value: { type: Number, optional: false }\n };\n },\n name: \"SegmentItem\"\n };\n }\n constructor(options, metadata = SegmentItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.value = this.__props__.value;\n delete this.__props__;\n }\n}\nexport class TrafficItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n value: { type: Number, optional: false }\n };\n },\n name: \"TrafficItem\"\n };\n }\n constructor(options, metadata = TrafficItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.value = this.__props__.value;\n delete this.__props__;\n }\n}\nexport class TopProductItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n rank: { type: Number, optional: false },\n name: { type: String, optional: false },\n sales: { type: Number, optional: false }\n };\n },\n name: \"TopProductItem\"\n };\n }\n constructor(options, metadata = TopProductItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.rank = this.__props__.rank;\n this.name = this.__props__.name;\n this.sales = this.__props__.sales;\n delete this.__props__;\n }\n}\nexport class TopMerchantItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n rank: { type: Number, optional: false },\n name: { type: String, optional: false },\n sales: { type: Number, optional: false },\n growth: { type: Number, optional: false }\n };\n },\n name: \"TopMerchantItem\"\n };\n }\n constructor(options, metadata = TopMerchantItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.rank = this.__props__.rank;\n this.name = this.__props__.name;\n this.sales = this.__props__.sales;\n this.growth = this.__props__.growth;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/dashboard.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"dashboard.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"dashboard.uts\"],\"names\":[],\"mappings\":\"AAAA,gCAAgC;AAEhC,MAAM,OAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;AACrB,MAAM,OAAM,WAAW;;;;;;;;;;;;;;;;;;;;;AACvB,MAAM,OAAM,WAAW;;;;;;;;;;;;;;;;;;;;;AACvB,MAAM,OAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;AAC1B,MAAM,OAAM,eAAe\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, gei as _gei, sei as _sei } from \"vue\";\nimport { ref, reactive } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'config',\n setup(__props) {\n const form = reactive(new UTSJSONObject({ appId: 'Aiok6xUdyOmpgXNd8Syf', appSecret: 'IO30qpzHFLf2CPIPjcwTWTPVID1jeX9uTVDz', invoiceStatus: '0' }));\n const onInvoiceStatusChange = (e = null) => { form.invoiceStatus = e.detail.value; };\n const handleSubmit = () => { uni.showToast({ title: '提交成功' }); };\n const navigateTo = (url) => { uni.navigateTo({ url }); };\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _o($event => { return navigateTo('/pages/mall/admin/setting/interface/onepass/index'); }),\n b: form.appId,\n c: _o($event => { return form.appId = $event.detail.value; }),\n d: form.appSecret,\n e: _o($event => { return form.appSecret = $event.detail.value; }),\n f: form.invoiceStatus == '1',\n g: form.invoiceStatus == '0',\n h: _o(onInvoiceStatusChange),\n i: _o(handleSubmit),\n j: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/setting/interface/onepass/config.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":["uni.showToast","uni.navigateTo"],"map":"{\"version\":3,\"file\":\"config.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"config.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAEvD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,QAAQ;IAChB,KAAK,CAAC,OAAO;QAEf,MAAM,IAAI,GAAG,QAAQ,mBAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,sCAAsC,EAAE,aAAa,EAAE,GAAG,EAAE,EAAC,CAAA;QAC/H,MAAM,qBAAqB,GAAG,CAAC,QAAO,OAAO,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,CAAC,CAAC,CAAA;QAClF,MAAM,YAAY,GAAG,QAAQ,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;QAC/D,MAAM,UAAU,GAAG,CAAC,GAAY,OAAO,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;QAEhE,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,UAAU,CAAC,mDAAmD,CAAC,EAA/D,CAA+D,CAAC;gBAChF,CAAC,EAAE,IAAI,CAAC,KAAK;gBACb,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAhC,CAAgC,CAAC;gBACjD,CAAC,EAAE,IAAI,CAAC,SAAS;gBACjB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAApC,CAAoC,CAAC;gBACrD,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,GAAG;gBAC5B,CAAC,EAAE,IAAI,CAAC,aAAa,IAAI,GAAG;gBAC5B,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC;gBAC5B,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC;gBACnB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, n as _n, gei as _gei, sei as _sei, e as _e } from \"vue\";\nimport { ref, reactive } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'collect',\n setup(__props) {\n const activeTab = ref(0);\n const form = reactive(new UTSJSONObject({\n base: new UTSJSONObject({\n type: 'onepass'\n }),\n api99: new UTSJSONObject({\n apiKey: ''\n })\n }));\n const onBaseChange = (key, e = null) => {\n form.base[key] = e.detail.value;\n };\n const handleSave = () => {\n uni.showToast({\n title: '提交成功',\n icon: 'success'\n });\n };\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = _e({\n a: _n(activeTab.value == 0 ? 'active' : ''),\n b: _o($event => { return activeTab.value = 0; }),\n c: _n(activeTab.value == 1 ? 'active' : ''),\n d: _o($event => { return activeTab.value = 1; }),\n e: activeTab.value == 0\n }, activeTab.value == 0 ? {\n f: form.base.type == 'onepass',\n g: form.base.type == '99api',\n h: _o($event => { return onBaseChange('type', $event); }),\n i: _o(handleSave)\n } : {}, {\n j: activeTab.value == 1\n }, activeTab.value == 1 ? {\n k: form.api99.apiKey,\n l: _o($event => { return form.api99.apiKey = $event.detail.value; }),\n m: _o(handleSave)\n } : {}, {\n n: _sei(_gei(_ctx, ''), 'view')\n });\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/setting/interface/collect.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":["uni.showToast"],"map":"{\"version\":3,\"file\":\"collect.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"collect.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,KAAK,CAAA;AAEzE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAGnC,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,SAAS;IACjB,KAAK,CAAC,OAAO;QAEf,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,IAAI,GAAG,QAAQ,mBAAC;YACpB,IAAI,oBAAE;gBACJ,IAAI,EAAE,SAAS;aAChB,CAAA;YACD,KAAK,oBAAE;gBACL,MAAM,EAAE,EAAE;aACX,CAAA;SACF,EAAC,CAAA;QAEF,MAAM,YAAY,GAAG,CAAC,GAAY,EAAE,QAAO;YACzC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;QACjC,CAAC,CAAA;QAED,MAAM,UAAU,GAAG;YACjB,GAAG,CAAC,SAAS,CAAC;gBACZ,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,SAAS;aAChB,CAAC,CAAA;QACJ,CAAC,CAAA;QAED,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG,EAAE,CAAC;gBACxB,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,SAAS,CAAC,KAAK,GAAG,CAAC,EAAnB,CAAmB,CAAC;gBACpC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,SAAS,CAAC,KAAK,GAAG,CAAC,EAAnB,CAAmB,CAAC;gBACpC,CAAC,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;aACxB,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS;gBAC9B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO;gBAC5B,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,EAA5B,CAA4B,CAAC;gBAC7C,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;aAClB,CAAC,CAAC,CAAC,EAAE,EAAE;gBACN,CAAC,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC;aACxB,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBACpB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAvC,CAAuC,CAAC;gBACxD,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC;aAClB,CAAC,CAAC,CAAC,EAAE,EAAE;gBACN,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAC,CAAA;YACA,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent } from \"vue\";\nexport default defineComponent({\n props: {\n title: {\n type: String,\n default: '数据分析中心'\n },\n lastUpdateTime: {\n type: String,\n default: ''\n },\n // 由页面传入:当前侧边栏是否处于“打开/显示”状态(窄屏下用于隐藏菜单按钮)\n sidebarVisible: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n showMoreMenu: false,\n isWideScreen: false\n };\n },\n computed: {\n showMenuIcon() {\n // 宽屏不显示;窄屏仅在侧边栏未打开时显示\n return !this.isWideScreen && !this.sidebarVisible;\n }\n },\n onLoad() {\n this.checkScreenSize();\n },\n onShow() {\n this.checkScreenSize();\n },\n methods: {\n checkScreenSize() {\n const systemInfo = uni.getSystemInfoSync();\n const w = systemInfo.windowWidth || systemInfo.screenWidth;\n // 与侧边栏一致960px 以上视为宽屏\n this.isWideScreen = w >= 960;\n },\n handleMenu() {\n this.$emit('menu-click');\n },\n handleRefresh() {\n this.$emit('refresh');\n },\n handleSearch() {\n this.$emit('search');\n },\n handleNotification() {\n this.showMoreMenu = false;\n this.$emit('notification');\n },\n handleFullscreen() {\n this.showMoreMenu = false;\n this.$emit('fullscreen');\n },\n handleMobile() {\n this.showMoreMenu = false;\n this.$emit('mobile');\n },\n handleDropdown() {\n this.$emit('dropdown');\n },\n handleSettings() {\n this.showMoreMenu = false;\n this.$emit('settings');\n },\n toggleMoreMenu() {\n this.showMoreMenu = !this.showMoreMenu;\n }\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/components/analytics/AnalyticsTopBar.uvue?vue&type=script&lang.uts.js.map","references":[],"uniExtApis":["uni.getSystemInfoSync"],"map":"{\"version\":3,\"file\":\"AnalyticsTopBar.uvue?vue&type=script&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"AnalyticsTopBar.uvue?vue&type=script&lang.uts\"],\"names\":[],\"mappings\":\";AACA,+BAAe;IACb,KAAK,EAAE;QACL,KAAK,EAAE;YACL,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,QAAQ;SAClB;QACD,cAAc,EAAE;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,wCAAwC;QACxC,cAAc,EAAE;YACd,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;SACf;KACF;IACD,IAAI;QACF,OAAO;YACL,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,KAAK;SACpB,CAAA;IACH,CAAC;IACD,QAAQ,EAAE;QACR,YAAY;YACV,sBAAsB;YACtB,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;QACnD,CAAC;KACF;IACD,MAAM;QACJ,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IACD,MAAM;QACJ,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IACD,OAAO,EAAE;QACP,eAAe;YACb,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAA;YAC1C,MAAM,CAAC,GAAG,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAA;YAC1D,sBAAsB;YACtB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,CAAA;QAC9B,CAAC;QACD,UAAU;YACR,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC1B,CAAC;QACD,aAAa;YACX,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACvB,CAAC;QACD,YAAY;YACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;QACD,kBAAkB;YAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QAC5B,CAAC;QACD,gBAAgB;YACd,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC1B,CAAC;QACD,YAAY;YACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACxB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;YACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACxB,CAAC;QACD,cAAc;YACZ,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAA;QACxC,CAAC;KACF;CACF,EAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, toDisplayString as _toDisplayString, t as _t, f as _f, gei as _gei, sei as _sei } from \"vue\";\nimport _imports_0 from '/static/logo.png';\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const levelList = ref([\n new UTSJSONObject({ id: '1', name: '一级分销员', level: 1, percent1: 0.00, percent2: 0.00, taskTotal: 0, taskFinish: 0, show: true }),\n ]);\n function onSearch() { uni.showToast({ title: '查询中...', icon: 'none' }); }\n function onAdd() { uni.showToast({ title: '添加中...', icon: 'none' }); }\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _o(onSearch),\n b: _o(onAdd),\n c: _f(levelList.value, (item, k0, i0) => {\n return {\n a: _t(item.id),\n b: _t(item.name),\n c: _t(item.level),\n d: _t(item.percent1),\n e: _t(item.percent2),\n f: _t(item.taskTotal),\n g: _t(item.taskFinish),\n h: item.show,\n i: item.id\n };\n }),\n d: _imports_0,\n e: _t(levelList.value.length),\n f: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/distribution/level/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":["uni.showToast"],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAC9G,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,SAAS,GAAG,GAAG,CAAC;8BACpB,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE;SAC9G,CAAC,CAAA;QACF,SAAS,QAAQ,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC;QACxE,SAAS,KAAK,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC;QAErE,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;gBACf,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;gBACZ,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBAClC,OAAO;wBACL,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACd,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBACjB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACpB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACpB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;wBACrB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;wBACtB,CAAC,EAAE,IAAI,CAAC,IAAI;wBACZ,CAAC,EAAE,IAAI,CAAC,EAAE;qBACX,CAAC;gBACJ,CAAC,CAAC;gBACF,CAAC,EAAE,UAAU;gBACb,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC7B,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nimport _imports_0 from '/static/placeholder.png';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'news',\n setup(__props) {\n // 图文管理逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _imports_0,\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/news.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"news.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"news.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAC9C,OAAO,UAAU,MAAM,yBAAyB,CAAA;AAGhD,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,MAAM;IACd,KAAK,CAAC,OAAO;QAEf,SAAS;QAET,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,UAAU;gBACb,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { Metric, TimePeriod, ChartType } from \"./common\";\nexport class CustomReport extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n name: { type: String, optional: false },\n description: { type: String, optional: false },\n metrics: { type: \"Unknown\", optional: false },\n charts: { type: \"Unknown\", optional: false },\n updated_at: { type: String, optional: false },\n period: { type: String, optional: true }\n };\n },\n name: \"CustomReport\"\n };\n }\n constructor(options, metadata = CustomReport.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.name = this.__props__.name;\n this.description = this.__props__.description;\n this.metrics = this.__props__.metrics;\n this.charts = this.__props__.charts;\n this.updated_at = this.__props__.updated_at;\n this.period = this.__props__.period;\n delete this.__props__;\n }\n}\nexport class ReportForm extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n description: { type: String, optional: false },\n metrics: { type: \"Unknown\", optional: false },\n period: { type: String, optional: false },\n chartType: { type: String, optional: false }\n };\n },\n name: \"ReportForm\"\n };\n }\n constructor(options, metadata = ReportForm.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.description = this.__props__.description;\n this.metrics = this.__props__.metrics;\n this.period = this.__props__.period;\n this.chartType = this.__props__.chartType;\n delete this.__props__;\n }\n}\nexport class ReportFormErrors extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n description: { type: String, optional: false },\n metrics: { type: String, optional: false },\n period: { type: String, optional: false },\n chartType: { type: String, optional: false }\n };\n },\n name: \"ReportFormErrors\"\n };\n }\n constructor(options, metadata = ReportFormErrors.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.description = this.__props__.description;\n this.metrics = this.__props__.metrics;\n this.period = this.__props__.period;\n this.chartType = this.__props__.chartType;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/custom-report.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"custom-report.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"custom-report.uts\"],\"names\":[],\"mappings\":\"OAEY,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE;AAE7C,MAAM,OAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUxB,MAAM,OAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQtB,MAAM,OAAM,gBAAgB\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { toDisplayString as _toDisplayString, t as _t, o as _o, f as _f, gei as _gei, sei as _sei } from \"vue\";\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'category',\n setup(__props) {\n const categoryList = ref([\n new UTSJSONObject({ id: 9, name: '分销配置', field: 'fenxiao', status: true }),\n new UTSJSONObject({ id: 65, name: '接口设置', field: 'system_serve', status: true }),\n new UTSJSONObject({ id: 69, name: '客服配置', field: 'kefu_config', status: true }),\n new UTSJSONObject({ id: 78, name: '应用配置', field: 'sys_app', status: true }),\n new UTSJSONObject({ id: 100, name: '用户配置', field: 'system_user_config', status: true }),\n new UTSJSONObject({ id: 113, name: '订单配置', field: 'order_config', status: true }),\n new UTSJSONObject({ id: 129, name: '系统配置', field: 'system_config', status: true }),\n new UTSJSONObject({ id: 136, name: '商品配置', field: 'product_config', status: true })\n ]);\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _f(categoryList.value, (item, k0, i0) => {\n return {\n a: _t(item.id),\n b: _t(item.name),\n c: _t(item.field),\n d: item.status ? 1 : '',\n e: _o($event => { return item.status = !item.status; }, item.id),\n f: item.id\n };\n }),\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/maintain/dev-config/category.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"category.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"category.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAE9G,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAGzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,UAAU;IAClB,KAAK,CAAC,OAAO;QAEf,MAAM,YAAY,GAAG,GAAG,CAAC;8BACvB,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;8BACvD,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC7D,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC5D,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;8BACxD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE;8BACpE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC9D,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE;8BAC/D,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE;SACjE,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBACrC,OAAO;wBACL,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;wBACd,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBACjB,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;wBACvB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAA1B,CAA0B,EAAE,IAAI,CAAC,EAAE,CAAC;wBACpD,CAAC,EAAE,IAAI,CAAC,EAAE;qBACX,CAAC;gBACJ,CAAC,CAAC;gBACF,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import '\u0000plugin-vue:export-helper';\nimport 'uni-mp-runtime';\nimport './pages-json-js'; // 简化的main.uts移除i18n依赖\nimport { createSSRApp } from 'vue';\nimport App from './App.uvue';\nexport function createApp() {\n const app = createSSRApp(App);\n // 注册 i18n 全局属性,使组件可以使用 $t 方法\n app.config.globalProperties.$t = (key, values = null, locale = null) => {\n // 临时方案:移除对未定义 i18n 的引用,直接返回 Key\n // 如果之后需要 i18n应正确导入并初始化\n return key;\n };\n return { app };\n}\n;\ncreateApp().app.mount(\"#app\");\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/main.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/骅锋/mall/App.uvue.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"main.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"main.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,2BAA2B,CAAC;AAAA,OAAO,gBAAgB,CAAC;AAAA,OAAO,iBAAiB,CAAC,CAAA,uBAAuB;AAC3G,OAAO,EAAE,YAAY,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,GAAG,MAAM,YAAY,CAAA;AAE5B,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IAE7B,6BAA6B;IAC9B,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,GAAW,EAAE,aAAY,EAAE,aAAe;QAC3E,gCAAgC;QAC9B,wBAAwB;QAC1B,OAAO,GAAG,CAAA;IACX,CAAC,CAAA;IAEA,OAAO,EAAE,GAAG,EAAE,CAAA;AAChB,CAAC;AACD,CAAC;AACD,SAAS,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'AdminPageLoading',\n setup(__props) {\n // 管理后台统一加载动画组件\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/layouts/admin/components/AdminPageLoading.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"AdminPageLoading.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"AdminPageLoading.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,kBAAkB;IAC1B,KAAK,CAAC,OAAO;QAEf,eAAe;QAEf,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import supa from \"@/components/supadb/aksupainstance\";\nexport function getUserIdOrNull() {\n try {\n const sessionInfo = supa.getSession();\n if (sessionInfo == null || sessionInfo.user == null)\n return null;\n const userObj = sessionInfo.user;\n if (userObj.getString != null) {\n return userObj.getString('id');\n }\n if (userObj.id != null) {\n return String(userObj.id);\n }\n if (typeof userObj === 'object' && 'id' in userObj) {\n return String(userObj.id);\n }\n return null;\n }\n catch (e) {\n return null;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/services/analytics/auth.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"auth.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"auth.uts\"],\"names\":[],\"mappings\":\"OAAO,IAAI;AAEX,MAAM,UAAU,eAAe;IAC7B,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACrC,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAChE,MAAM,OAAO,GAAG,WAAW,CAAC,IAAW,CAAA;QACvC,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,EAAE;YAC7B,OAAQ,OAAO,CAAC,SAAS,CAAC,IAAI,CAAmB,CAAA;SAClD;QACD,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE;YACtB,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;SAC1B;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,IAAI,IAAI,OAAO,EAAE;YAClD,OAAO,MAAM,CAAE,OAAe,CAAC,EAAE,CAAC,CAAA;SACnC;QACD,OAAO,IAAI,CAAA;KACZ;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,IAAI,CAAA;KACZ;AACH,CAAC\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'config',\n setup(__props) {\n // APP配置逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/mobile/config.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"config.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"config.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,QAAQ;IAChB,KAAK,CAAC,OAAO;QAEf,UAAU;QAEV,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'menu',\n setup(__props) {\n // 微信菜单页面逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/menu.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"menu.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"menu.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,MAAM;IACd,KAAK,CAAC,OAAO;QAEf,WAAW;QAEX,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"// types/analytics/insight.uts\nexport class InsightDetail extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n report_id: { type: String, optional: false },\n type: { type: String, optional: false },\n impact: { type: String, optional: false },\n title: { type: String, optional: false },\n content: { type: String, optional: false },\n created_at: { type: String, optional: false }\n };\n },\n name: \"InsightDetail\"\n };\n }\n constructor(options, metadata = InsightDetail.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.report_id = this.__props__.report_id;\n this.type = this.__props__.type;\n this.impact = this.__props__.impact;\n this.title = this.__props__.title;\n this.content = this.__props__.content;\n this.created_at = this.__props__.created_at;\n delete this.__props__;\n }\n}\nexport class RelatedReport extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n title: { type: String, optional: false },\n type: { type: String, optional: false },\n period: { type: String, optional: false },\n generated_at: { type: String, optional: false }\n };\n },\n name: \"RelatedReport\"\n };\n }\n constructor(options, metadata = RelatedReport.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.title = this.__props__.title;\n this.type = this.__props__.type;\n this.period = this.__props__.period;\n this.generated_at = this.__props__.generated_at;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/insight.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"insight.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"insight.uts\"],\"names\":[],\"mappings\":\"AAAA,8BAA8B;AAE9B,MAAM,OAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUzB,MAAM,OAAM,aAAa\"}"}

View File

@@ -0,0 +1 @@
{"code":"// types/analytics/user.uts\n/**\n * Key Performance Indicators for the User Analysis page.\n */\nexport class UserData extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n total_users: { type: Number, optional: false },\n user_growth: { type: Number, optional: false },\n new_users: { type: Number, optional: false },\n new_user_growth: { type: Number, optional: false },\n active_users: { type: Number, optional: false },\n active_growth: { type: Number, optional: false },\n ordering_users: { type: Number, optional: false },\n ordering_growth: { type: Number, optional: false },\n paid_users: { type: Number, optional: false },\n paid_growth: { type: Number, optional: false },\n new_user_conversion_rate: { type: Number, optional: false },\n repurchase_rate: { type: Number, optional: false },\n repurchase_growth: { type: Number, optional: false }\n };\n },\n name: \"UserData\"\n };\n }\n constructor(options, metadata = UserData.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.total_users = this.__props__.total_users;\n this.user_growth = this.__props__.user_growth;\n this.new_users = this.__props__.new_users;\n this.new_user_growth = this.__props__.new_user_growth;\n this.active_users = this.__props__.active_users;\n this.active_growth = this.__props__.active_growth;\n this.ordering_users = this.__props__.ordering_users;\n this.ordering_growth = this.__props__.ordering_growth;\n this.paid_users = this.__props__.paid_users;\n this.paid_growth = this.__props__.paid_growth;\n this.new_user_conversion_rate = this.__props__.new_user_conversion_rate;\n this.repurchase_rate = this.__props__.repurchase_rate;\n this.repurchase_growth = this.__props__.repurchase_growth;\n delete this.__props__;\n }\n}\n/**\n * Represents a single step in a conversion funnel.\n */\nexport class FunnelStep extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n step: { type: String, optional: false },\n value: { type: Number, optional: false }\n };\n },\n name: \"FunnelStep\"\n };\n }\n constructor(options, metadata = FunnelStep.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.step = this.__props__.step;\n this.value = this.__props__.value;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/user.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"user.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"user.uts\"],\"names\":[],\"mappings\":\"AAAA,2BAA2B;AAE3B;;GAEG;AACH,MAAM,OAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBpB;;GAEG;AACH,MAAM,OAAM,UAAU\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { unref as _unref, toDisplayString as _toDisplayString, t as _t, gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'AdminFooter',\n setup(__props) {\n const year = new Date().getFullYear();\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _t(_unref(year)),\n b: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/layouts/admin/components/AdminFooter.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"AdminFooter.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"AdminFooter.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG7G,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,aAAa;IACrB,KAAK,CAAC,OAAO;QAEf,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAErC,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACnB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, toDisplayString as _toDisplayString, t as _t, gei as _gei, sei as _sei } from \"vue\";\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'follow',\n setup(__props) {\n const replyContent = ref('567856875687');\n const goBack = () => {\n // 返回逻辑\n };\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _o(goBack),\n b: _t(replyContent.value),\n c: replyContent.value,\n d: _o($event => { return replyContent.value = $event.detail.value; }),\n e: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/reply/follow.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"follow.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"follow.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAErG,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAGzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,QAAQ;IAChB,KAAK,CAAC,OAAO;QAEf,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,CAAC,CAAA;QAExC,MAAM,MAAM,GAAG;YACb,OAAO;QACT,CAAC,CAAA;QAED,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC;gBACb,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC;gBACzB,CAAC,EAAE,YAAY,CAAC,KAAK;gBACrB,CAAC,EAAE,EAAE,CAAC,MAAM,MAAI,OAAA,YAAY,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAxC,CAAwC,CAAC;gBACzD,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"// types/analytics/dashboard.uts\nexport class TrendData extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n x: { type: \"Unknown\", optional: false },\n gmv: { type: \"Unknown\", optional: false },\n orders: { type: \"Unknown\", optional: false }\n };\n },\n name: \"TrendData\"\n };\n }\n constructor(options, metadata = TrendData.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.x = this.__props__.x;\n this.gmv = this.__props__.gmv;\n this.orders = this.__props__.orders;\n delete this.__props__;\n }\n}\nexport class SegmentItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n value: { type: Number, optional: false }\n };\n },\n name: \"SegmentItem\"\n };\n }\n constructor(options, metadata = SegmentItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.value = this.__props__.value;\n delete this.__props__;\n }\n}\nexport class TrafficItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n name: { type: String, optional: false },\n value: { type: Number, optional: false }\n };\n },\n name: \"TrafficItem\"\n };\n }\n constructor(options, metadata = TrafficItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.name = this.__props__.name;\n this.value = this.__props__.value;\n delete this.__props__;\n }\n}\nexport class TopProductItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n rank: { type: Number, optional: false },\n name: { type: String, optional: false },\n sales: { type: Number, optional: false }\n };\n },\n name: \"TopProductItem\"\n };\n }\n constructor(options, metadata = TopProductItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.rank = this.__props__.rank;\n this.name = this.__props__.name;\n this.sales = this.__props__.sales;\n delete this.__props__;\n }\n}\nexport class TopMerchantItem extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n rank: { type: Number, optional: false },\n name: { type: String, optional: false },\n sales: { type: Number, optional: false },\n growth: { type: Number, optional: false }\n };\n },\n name: \"TopMerchantItem\"\n };\n }\n constructor(options, metadata = TopMerchantItem.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.rank = this.__props__.rank;\n this.name = this.__props__.name;\n this.sales = this.__props__.sales;\n this.growth = this.__props__.growth;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/dashboard.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"dashboard.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"dashboard.uts\"],\"names\":[],\"mappings\":\"AAAA,gCAAgC;AAEhC,MAAM,OAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;AACrB,MAAM,OAAM,WAAW;;;;;;;;;;;;;;;;;;;;;AACvB,MAAM,OAAM,WAAW;;;;;;;;;;;;;;;;;;;;;AACvB,MAAM,OAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;AAC1B,MAAM,OAAM,eAAe\"}"}

View File

@@ -0,0 +1 @@
{"code":"// types/analytics/coupon.uts\nexport class CouponData extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n total_issued: { type: Number, optional: false },\n issued_growth: { type: Number, optional: false },\n total_used: { type: Number, optional: false },\n usage_rate: { type: Number, optional: false },\n gmv_increase: { type: Number, optional: false },\n gmv_growth: { type: Number, optional: false },\n roi: { type: Number, optional: false }\n };\n },\n name: \"CouponData\"\n };\n }\n constructor(options, metadata = CouponData.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.total_issued = this.__props__.total_issued;\n this.issued_growth = this.__props__.issued_growth;\n this.total_used = this.__props__.total_used;\n this.usage_rate = this.__props__.usage_rate;\n this.gmv_increase = this.__props__.gmv_increase;\n this.gmv_growth = this.__props__.gmv_growth;\n this.roi = this.__props__.roi;\n delete this.__props__;\n }\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/types/analytics/coupon.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"coupon.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"coupon.uts\"],\"names\":[],\"mappings\":\"AAAA,6BAA6B;AAE7B,MAAM,OAAM,UAAU\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { __awaiter } from \"tslib\";\nimport { rpcOrEmptyArray, rpcOrNull } from \"./rpc\";\nexport class ReportInfo extends UTS.UTSType {\n static get$UTSMetadata$() {\n return {\n kind: 2,\n get fields() {\n return {\n id: { type: String, optional: false },\n title: { type: String, optional: false },\n description: { type: String, optional: false },\n definition: { type: \"Any\", optional: false },\n updated_at: { type: String, optional: false }\n };\n },\n name: \"ReportInfo\"\n };\n }\n constructor(options, metadata = ReportInfo.get$UTSMetadata$(), isJSONParse = false) {\n super();\n this.__props__ = UTS.UTSType.initProps(options, metadata, isJSONParse);\n this.id = this.__props__.id;\n this.title = this.__props__.title;\n this.description = this.__props__.description;\n this.definition = this.__props__.definition;\n this.updated_at = this.__props__.updated_at;\n delete this.__props__;\n }\n}\nfunction safeString(v = null) {\n return v != null ? `${v}` : '';\n}\n// 改造:调用 rpc_data_detail_report_info\nexport function fetchReportInfo(reportId) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function* () {\n const row = yield rpcOrNull('rpc_data_detail_report_info', {\n p_report_id: reportId\n });\n if (row == null)\n return null;\n return {\n id: safeString((_a = row.getAny) === null || _a === void 0 ? null : _a.call(row, 'id')),\n title: safeString((_b = row.getAny) === null || _b === void 0 ? null : _b.call(row, 'title')),\n description: safeString((_c = row.getAny) === null || _c === void 0 ? null : _c.call(row, 'description')),\n definition: (_d = row.getAny) === null || _d === void 0 ? null : _d.call(row, 'definition'),\n updated_at: safeString((_e = row.getAny) === null || _e === void 0 ? null : _e.call(row, 'updated_at'))\n };\n });\n}\n// 改造:调用 rpc_data_detail_rows\nexport function fetchReportRows(reportId, params = null) {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield rpcOrNull('rpc_data_detail_rows', {\n p_report_id: reportId,\n p_params: params\n });\n if (result == null)\n return [];\n const anyData = result;\n return Array.isArray(anyData) ? anyData : [];\n });\n}\n// 保留调用,但 RPC 是模拟数据\nexport function fetchDrilldown(reportId, itemId) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield rpcOrEmptyArray('rpc_data_detail_drill_items', {\n p_report_id: reportId,\n p_item_id: itemId\n });\n });\n}\n// 保留调用,但 RPC 是模拟数据\nexport function fetchComparison(itemId, period) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield rpcOrEmptyArray('rpc_data_detail_compare_gmv', {\n p_item_id: itemId,\n p_period: period\n });\n });\n}\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/services/analytics/dataDetailService.uts.js.map","references":[],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"dataDetailService.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"dataDetailService.uts\"],\"names\":[],\"mappings\":\";OAAO,EAAE,eAAe,EAAE,SAAS,EAAE;AAErC,MAAM,OAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQtB,SAAS,UAAU,CAAC,QAAM;IACxB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AAChC,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAgB,eAAe,CAAC,QAAgB;;;QACpD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,6BAA6B,EAAE;YACzD,WAAW,EAAE,QAAQ;SACf,CAAC,CAAA;QAET,IAAI,GAAG,IAAI,IAAI;YAAE,OAAO,IAAI,CAAA;QAE5B,OAAO;YACL,EAAE,EAAE,UAAU,CAAC,MAAA,GAAG,CAAC,MAAM,kDAAG,IAAI,CAAC,CAAC;YAClC,KAAK,EAAE,UAAU,CAAC,MAAA,GAAG,CAAC,MAAM,kDAAG,OAAO,CAAC,CAAC;YACxC,WAAW,EAAE,UAAU,CAAC,MAAA,GAAG,CAAC,MAAM,kDAAG,aAAa,CAAC,CAAC;YACpD,UAAU,EAAE,MAAA,GAAG,CAAC,MAAM,kDAAG,YAAY,CAAC;YACtC,UAAU,EAAE,UAAU,CAAC,MAAA,GAAG,CAAC,MAAM,kDAAG,YAAY,CAAC,CAAC;SACnD,CAAA;;CACF;AAED,6BAA6B;AAC7B,MAAM,UAAgB,eAAe,CAAC,QAAgB,EAAE,aAAW;;QACjE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,sBAAsB,EAAE;YACrD,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,MAAM;SACV,CAAC,CAAA;QAET,IAAI,MAAM,IAAI,IAAI;YAAE,OAAO,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,MAAa,CAAA;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAgC,CAAC,CAAC,CAAE,EAA2B,CAAA;IAClG,CAAC;CAAA;AAED,mBAAmB;AACnB,MAAM,UAAgB,cAAc,CAAC,QAAgB,EAAE,MAAc;;QACnE,OAAO,MAAM,eAAe,CAAC,6BAA6B,EAAE;YAC1D,WAAW,EAAE,QAAQ;YACrB,SAAS,EAAE,MAAM;SACX,CAAC,CAAA;IACX,CAAC;CAAA;AAED,mBAAmB;AACnB,MAAM,UAAgB,eAAe,CAAC,MAAc,EAAE,MAAc;;QAClE,OAAO,MAAM,eAAe,CAAC,6BAA6B,EAAE;YAC1D,SAAS,EAAE,MAAM;YACjB,QAAQ,EAAE,MAAM;SACV,CAAC,CAAA;IACX,CAAC;CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { o as _o, toDisplayString as _toDisplayString, t as _t, f as _f, gei as _gei, sei as _sei } from \"vue\";\nimport _imports_0 from '/static/logo.png';\nimport { ref } from 'vue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'agent',\n setup(__props) {\n const agentList = ref([\n new UTSJSONObject({ uid: '60569', name: 'cs2020', ratio: 50, staffCount: 1, endTime: '2026-01-01', status: true }),\n ]);\n function onSearch() { uni.showToast({ title: '查询中...', icon: 'none' }); }\n function onAdd() { uni.showToast({ title: '添加中...', icon: 'none' }); }\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _o(onSearch),\n b: _o(onAdd),\n c: _f(agentList.value, (item, k0, i0) => {\n return {\n a: _t(item.uid),\n b: _t(item.name),\n c: _t(item.ratio),\n d: _t(item.staffCount),\n e: _t(item.endTime),\n f: item.status,\n g: item.uid\n };\n }),\n d: _imports_0,\n e: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/distribution/division/agent.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":["uni.showToast"],"map":"{\"version\":3,\"file\":\"agent.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"agent.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,eAAe,IAAI,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAC9G,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,SAAS,GAAG,GAAG,CAAC;8BACpB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE;SAChG,CAAC,CAAA;QACF,SAAS,QAAQ,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC;QACxE,SAAS,KAAK,KAAK,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA,CAAC,CAAC;QAErE,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC;gBACf,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;gBACZ,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE;oBAClC,OAAO;wBACL,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;wBACf,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;wBAChB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;wBACjB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;wBACtB,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;wBACnB,CAAC,EAAE,IAAI,CAAC,MAAM;wBACd,CAAC,EAAE,IAAI,CAAC,GAAG;qBACZ,CAAC;gBACJ,CAAC,CAAC;gBACF,CAAC,EAAE,UAAU;gBACb,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { unref as _unref, gei as _gei, sei as _sei } from \"vue\";\nconst __BINDING_COMPONENTS__ = '{\"AdminLayout\":{\"name\":\"_unref(AdminLayout)\",\"type\":\"setup\"}}';\nif (!Math) {\n (_unref(AdminLayout))();\n}\nimport { ref, onMounted } from 'vue';\nimport AdminLayout from '@/layouts/admin/AdminLayout.uvue';\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'index',\n setup(__props) {\n const title = ref('管理后台首页');\n onMounted(() => {\n uni.__f__('log', 'at pages/mall/admin/homePage/index.uvue:15', '首页加载完成');\n uni.__f__('log', 'at pages/mall/admin/homePage/index.uvue:16', '首页显示');\n });\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/homePage/index.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/骅锋/mall/layouts/admin/AdminLayout.uvue.ts"],"uniExtApis":["uni.__f__"],"map":"{\"version\":3,\"file\":\"index.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"index.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/D,MAAM,sBAAsB,GAAG,+DAA+D,CAAA;AAC9F,IAAI,CAAC,IAAI,EAAE;IAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAA;CAAE;AAEtC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AACpC,OAAO,WAAW,MAAM,kCAAkC,CAAA;AAG1D,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,OAAO;IACf,KAAK,CAAC,OAAO;QAEf,MAAM,KAAK,GAAG,GAAG,CAAS,QAAQ,CAAC,CAAA;QAEnC,SAAS,CAAC;YACR,GAAG,CAAC,KAAK,CAAC,KAAK,EAAC,4CAA4C,EAAC,QAAQ,CAAC,CAAA;YACtE,GAAG,CAAC,KAAK,CAAC,KAAK,EAAC,4CAA4C,EAAC,MAAM,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

View File

@@ -0,0 +1 @@
{"code":"import { defineComponent as _defineComponent } from 'vue';\nimport { gei as _gei, sei as _sei } from \"vue\";\nexport default /*#__PURE__*/ _defineComponent({\n __name: 'invalid',\n setup(__props) {\n // 无效关键词回复逻辑\n return (_ctx, _cache) => {\n \"raw js\";\n const __returned__ = {\n a: _sei(_gei(_ctx, ''), 'view')\n };\n return __returned__;\n };\n }\n});\n//# sourceMappingURL=D:/%E9%AA%85%E9%94%8B/mall/pages/mall/admin/app/wechat/reply/invalid.uvue?vue&type=script&setup=true&lang.uts.js.map","references":["D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts","D:/Hbiulder/HBuilderX/plugins/uniapp-cli-vite/node_modules/@vue/runtime-core/dist/runtime-core.d.ts"],"uniExtApis":[],"map":"{\"version\":3,\"file\":\"invalid.uvue?vue&type=script&setup=true&lang.uts.js\",\"sourceRoot\":\"\",\"sources\":[\"invalid.uvue?vue&type=script&setup=true&lang.uts\"],\"names\":[],\"mappings\":\"AAAA,OAAO,EAAE,eAAe,IAAI,gBAAgB,EAAE,MAAM,KAAK,CAAA;AACzD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,KAAK,CAAA;AAG9C,eAAe,aAAa,CAAA,gBAAgB,CAAC;IAC3C,MAAM,EAAE,SAAS;IACjB,KAAK,CAAC,OAAO;QAEf,YAAY;QAEZ,OAAO,CAAC,IAAI,EAAE,MAAM;YAAO,QAAQ,CAAA;YACjC,MAAM,YAAY,GAAG;gBACrB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;aAChC,CAAA;YACC,OAAO,YAAY,CAAA;QACrB,CAAC,CAAA;IACD,CAAC;CAEA,CAAC,CAAA\"}"}

Some files were not shown because too many files have changed in this diff Show More