增加添加商品功能
This commit is contained in:
1
components/admin/AdminPagination.uvue
Normal file
1
components/admin/AdminPagination.uvue
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -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>
|
||||
|
||||
BIN
pages/mall/admin/product/product-management/edit_tmp.txt
Normal file
BIN
pages/mall/admin/product/product-management/edit_tmp.txt
Normal file
Binary file not shown.
@@ -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')
|
||||
}
|
||||
|
||||
|
||||
2
pages/mall/admin/sql/ml_products_rows.sql
Normal file
2
pages/mall/admin/sql/ml_products_rows.sql
Normal file
File diff suppressed because one or more lines are too long
@@ -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>
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
@@ -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\"}"}
|
||||
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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\"}"}
|
||||
@@ -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
Reference in New Issue
Block a user