upda
parent
b2facaefb9
commit
282785fedc
@ -0,0 +1,48 @@
|
||||
import {
|
||||
request
|
||||
} from "@/utils/request";
|
||||
|
||||
export default {
|
||||
|
||||
LevelShow(data) {
|
||||
return request({
|
||||
url: "/admin/UserMembers/LevelShow",
|
||||
method: "GET",
|
||||
data,
|
||||
})
|
||||
},
|
||||
|
||||
LevelSave(data) {
|
||||
return request({
|
||||
url: "/admin/UserMembers/LevelSave",
|
||||
method: "GET",
|
||||
data,
|
||||
})
|
||||
},
|
||||
|
||||
SetList(data) {
|
||||
return request({
|
||||
url: "/admin/UserMembers/SetList",
|
||||
method: "GET",
|
||||
data,
|
||||
})
|
||||
},
|
||||
|
||||
SetSave(data) {
|
||||
return request({
|
||||
url: "/admin/UserMembers/SetSave",
|
||||
method: "GET",
|
||||
data,
|
||||
})
|
||||
},
|
||||
|
||||
DiscountList(data) {
|
||||
return request({
|
||||
url: "/admin/UserMembers/DiscountList",
|
||||
method: "GET",
|
||||
data,
|
||||
})
|
||||
},
|
||||
|
||||
|
||||
};
|
||||
@ -0,0 +1,176 @@
|
||||
<template>
|
||||
<view>
|
||||
<view v-if="props.modelValue && props.modelValue.length" @click="open(true)" class="flex gap-2 overflow-x-auto">
|
||||
<view class=" flex rounded-[14px] relative" :key="img">
|
||||
已选择 {{ LArr.length || 0 }} 件商品
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-else @click="open(true)" class="flex gap-2 overflow-x-auto">
|
||||
<view style="" class=" flex rounded-[14px] relative flex-col items-center justify-center">
|
||||
<view class="font-bold text-[12px]">请选择商品</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<wd-popup :z-index="998" v-model="show" closable position="left" custom-style="width: 86vw;" @close="close(false)">
|
||||
<view class="pop yUpload h-dvh overflow-hidden">
|
||||
<view class="bg-white overflow-hidden h-full" style="background-clip: content-box;">
|
||||
|
||||
<view class="bg-gray-100 p-4 flex">
|
||||
<view>
|
||||
<wd-button @tap="ok">确认选择</wd-button>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view v-if="LArr.length" class="shadow-lg ">
|
||||
<view class="text px-2 mt-3 font-bold">已选择 ( {{ LArr.length || 0 }}) 件商品</view>
|
||||
<view class="bg-gray images flex gap-2 overflow-x-auto p-4 pt-2 ">
|
||||
<view @click="onClickCheck(item)" class=" border-gray-100 border-solid flex rounded-[14px] relative"
|
||||
v-for="item of LArr" :key="img">
|
||||
|
||||
<div class="flex flex-col">
|
||||
<view>
|
||||
<wd-img mode="aspectFill" radius="10" :width="100" :height="100" :src="item.pic_url" />
|
||||
</view>
|
||||
<view class="list-item-name" style="width: 100px;">{{ item.name }}</view>
|
||||
</div>
|
||||
|
||||
<view class="absolute bg-white opacity-80 inset-0 flex items-center justify-center border-spacing-1">取消选择
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-else class="shadow-lg ">
|
||||
<view class="text p-3 font-bold">请选择商品</view>
|
||||
</view>
|
||||
|
||||
<view class="overflow-hidden rounded-t-3xl">
|
||||
<yList ref="yListRef" :apiObj="goods.list" :params="{ ...params, classify_id: 0 }">
|
||||
<template #default="{ list }">
|
||||
|
||||
<view class="grid grid-cols-2 gap-4 p-4 overflow-hidden rounded-t-3xl">
|
||||
<view
|
||||
class="relative flex flex-col items-center justify-center bg-gray-100 p-4 rounded-md overflow-hidden"
|
||||
v-for="item of list" :key="item.id">
|
||||
<view class="list-item-img" @click="onClickCheck(item)"
|
||||
:style="{ backgroundImage: 'url(' + item.pic_url + ')' }"></view>
|
||||
|
||||
<view class="list-item-name">{{ item.name }}</view>
|
||||
|
||||
<view @click="onClickCheck(item)"
|
||||
class="absolute bg-white opacity-80 inset-2 flex items-center justify-center border-spacing-1"
|
||||
v-if="idArr.includes(item.id)">取消选择</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
</yList>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</wd-popup>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, computed } from 'vue'
|
||||
import goods from '@/api/store/goods.js'
|
||||
import yList from "/components/yList/index.vue"
|
||||
const yListRef = ref(null)
|
||||
|
||||
const emit = defineEmits(['update:modelValue']);
|
||||
const props = defineProps({
|
||||
modelValue: {
|
||||
type: String,
|
||||
default: ""
|
||||
},
|
||||
})
|
||||
|
||||
const params = ref({
|
||||
keywords: "",
|
||||
status: "",
|
||||
})
|
||||
|
||||
const LArr = ref([])
|
||||
|
||||
const idArr = computed(() => {
|
||||
return LArr.value.map(item => item.id)
|
||||
})
|
||||
|
||||
const show = ref(false)
|
||||
const open = (O) => {
|
||||
show.value = O
|
||||
|
||||
if (O && yListRef.value?.upData) {
|
||||
yListRef.value.upData()
|
||||
}
|
||||
|
||||
if (props.modelValue) {
|
||||
if (Array.isArray(props.modelValue)) {
|
||||
LArr.value = JSON.parse(JSON.stringify(props.modelValue))
|
||||
} else {
|
||||
LArr.value = [props.modelValue]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
open(false)
|
||||
|
||||
const close = () => {
|
||||
// LArr.value = []
|
||||
}
|
||||
|
||||
const ok = () => {
|
||||
if (props.size == 1) {
|
||||
emit("update:modelValue", LArr.value.pop())
|
||||
} else {
|
||||
emit("update:modelValue", LArr.value)
|
||||
}
|
||||
|
||||
show.value = false
|
||||
}
|
||||
|
||||
const onClickCheck = (row) => {
|
||||
const index = LArr.value.findIndex(item => item.id === row.id)
|
||||
|
||||
if (index > -1) {
|
||||
LArr.value.splice(index, 1)
|
||||
} else {
|
||||
LArr.value.unshift(row)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.list-item-img {
|
||||
width: 100%;
|
||||
height: 80px;
|
||||
background-position: center center;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.list-item-name {
|
||||
text-align: center;
|
||||
padding: 5px 10px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: 12px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pop {
|
||||
// position: fixed;
|
||||
background: rgba(0, 0, 0, 0.256);
|
||||
background-clip: border-box;
|
||||
overflow: hidden;
|
||||
inset: 0px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,58 @@
|
||||
import { ref } from "vue"
|
||||
|
||||
/**
|
||||
* 用于执行 API 请求和管理相关状态的自定义钩子。
|
||||
*
|
||||
* @param {Function} apiF - 表示 API 请求的异步函数。
|
||||
* @param {Object} [opt={}] - 可选配置选项。
|
||||
* @param {Ref<boolean>} [opt.loading=false] - 可选的 loading 状态变量。
|
||||
*
|
||||
* @returns {Object} - 包含响应式变量和 fetchData 函数的对象。
|
||||
* @property {Ref<boolean>} loading - 表示 API 请求加载状态的 ref。
|
||||
* @property {Ref<any>} result - 表示 API 请求结果的 ref。
|
||||
* @property {Ref<any>} error - 表示 API 请求失败时的错误的 ref。
|
||||
* @property {Function} fetchData - 用于执行 API 请求并更新状态变量的函数。
|
||||
*/
|
||||
export const useApi = (apiF, opt = {}) => {
|
||||
// 使用 ref 包装状态变量
|
||||
const loading = opt.loading || ref(false)
|
||||
const result = ref(null)
|
||||
const error = ref(null)
|
||||
|
||||
/**
|
||||
* 执行 API 请求并更新状态的函数。
|
||||
*
|
||||
* @param {*} p - 用于 API 请求的参数。
|
||||
* @returns {Promise} - 包含 API 响应对象的 Promise。
|
||||
*/
|
||||
const fetchData = async (p) => {
|
||||
try {
|
||||
// 开始请求,设置 loading 为 true
|
||||
loading.value = true
|
||||
// 执行异步 API 请求
|
||||
const res = await apiF(p)
|
||||
|
||||
// 根据返回的 code 判断请求是否成功
|
||||
if (res.code === 0) {
|
||||
// 请求成功,更新 result 变量
|
||||
result.value = res
|
||||
} else {
|
||||
// 请求失败,更新 error 变量
|
||||
error.value = res
|
||||
}
|
||||
|
||||
// 返回 API 响应对象
|
||||
return res
|
||||
} catch (err) {
|
||||
// 捕获异常,更新 error 变量并抛出错误
|
||||
error.value = err
|
||||
throw err
|
||||
} finally {
|
||||
// 无论请求成功或失败,都会在最终阶段设置 loading 为 false
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
// 返回包含状态变量和 fetchData 函数的对象
|
||||
return { loading, result, error, fetchData }
|
||||
}
|
||||
@ -0,0 +1,221 @@
|
||||
<template>
|
||||
<view>
|
||||
<kevyloading v-if="loading" type="bsm-loader" color="#618af8" transparent></kevyloading>
|
||||
|
||||
|
||||
<wd-form ref="form" :model="storeData" :rules="formRules">
|
||||
<!-- 基础信息 -->
|
||||
<wd-cell-group title="基础信息" border>
|
||||
<wd-input label="商城名称" label-width="100px" v-model="storeData.name" />
|
||||
|
||||
<!-- 商城LOGO -->
|
||||
<wd-cell-group class="flex py-2 w-full" title="商城LOGO">
|
||||
|
||||
<view class="ml-3">
|
||||
<yUpload v-model="storeData.logo_url" :size="1"></yUpload>
|
||||
</view>
|
||||
|
||||
</wd-cell-group>
|
||||
|
||||
<!-- 门头照图片 -->
|
||||
<wd-cell-group class="flex py-2 w-full" title="门头照图片">
|
||||
|
||||
<view class="ml-3">
|
||||
<yUpload v-model="storeData.store_url" :size="1"></yUpload>
|
||||
</view>
|
||||
|
||||
</wd-cell-group>
|
||||
|
||||
<!-- <wd-input label="联系人" label-width="100px" v-model="storeData.contact" /> -->
|
||||
<wd-input label="联系方式" label-width="100px" v-model="storeData.mobile" />
|
||||
<!-- 其他基础信息字段可以根据需要添加 -->
|
||||
</wd-cell-group>
|
||||
|
||||
<!-- 地址信息 -->
|
||||
<wd-cell-group class="flex py-2 w-full" title="所在地区">
|
||||
<view class="ml-3">
|
||||
<!-- 省市区选择器 -->
|
||||
<uni-data-picker placeholder="请选择省市区" popup-title="请选择" :localdata="addrList" :map="{
|
||||
text: 'name',
|
||||
value: 'id',
|
||||
}" v-model="storeData.district" @change="select">
|
||||
</uni-data-picker>
|
||||
</view>
|
||||
</wd-cell-group>
|
||||
|
||||
<wd-input label="详细地址" label-width="100px" v-model="storeData.detail" use-suffix-slot>
|
||||
</wd-input>
|
||||
|
||||
<!-- 其他信息 -->
|
||||
<wd-cell-group title="其他信息" border>
|
||||
<!-- 云喇叭通知表单项 -->
|
||||
<wd-form-item label="云喇叭通知:" prop="zhangyou_device_name">
|
||||
<wd-input v-model="storeData.zhangyou_device_name" placeholder="请输入设备编号" clearable />
|
||||
|
||||
<div style="color: #666;font-size: 12px;">
|
||||
掌优4G云喇叭编号
|
||||
</div>
|
||||
</wd-form-item>
|
||||
</wd-cell-group>
|
||||
|
||||
<view class="p-3 bg-white rounded mb-2">
|
||||
<div class="name mb-2 text-xs">非营业时间下单</div>
|
||||
<view class="bg-white px-3 py-2 rounded flex items-center">
|
||||
<wd-switch v-model="storeData.is_opening" :active-value="1" :inactive-value="0" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="p-3 bg-white rounded mb-2">
|
||||
<div class="name mb-2 text-xs">状态</div>
|
||||
<view class="bg-white px-3 py-2 rounded flex items-center">
|
||||
<wd-switch v-model="storeData.status" :active-value="1" :inactive-value="0" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 提交按钮 -->
|
||||
<view class="mt-2 px-12 py-3 bg-slate-50">
|
||||
<wd-button type="primary" size="large" @click="handleSubmit" block>
|
||||
保存
|
||||
</wd-button>
|
||||
</view>
|
||||
</wd-form>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref } from 'vue';
|
||||
import yUpload from "@/components/yUpload/index.vue";
|
||||
import uniDataPicker from "@/components/uni-data-picker/components/uni-data-picker/uni-data-picker.vue";
|
||||
import system from '@/api/modules/system.js';
|
||||
import index from '@/api/store/index.js';
|
||||
import kevyloading from "@/components/kevy-loading/kevy-loading";
|
||||
import utils from '@/utils/utils.js'
|
||||
import shop from '@/api/store/shop.js';
|
||||
|
||||
/**
|
||||
* 从本地存储中获取用户信息
|
||||
*/
|
||||
const user_info = uni.getStorageSync("user_info");
|
||||
|
||||
export default {
|
||||
components: {
|
||||
yUpload, uniDataPicker, kevyloading
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
utils,
|
||||
user_info,
|
||||
// 表单数据
|
||||
storeData: {
|
||||
name: '',
|
||||
logo_url: '',
|
||||
mobile: '',
|
||||
district: null,
|
||||
latlngCurrent: '',
|
||||
pay_time: '',
|
||||
confirm_time: '',
|
||||
sale_time: '',
|
||||
pay_type: [],
|
||||
delivery_type: [],
|
||||
after_sale_name: '',
|
||||
after_sale_phone: '',
|
||||
after_sale_address: '',
|
||||
ali_express_app_code: '',
|
||||
zhangyou_device_name: '',
|
||||
},
|
||||
shippingOptions: [
|
||||
{ label: "邮寄", value: 1 },
|
||||
{ label: "自提", value: 2 },
|
||||
],
|
||||
// 表单验证规则
|
||||
formRules: {
|
||||
name: [{ required: true, message: "请输入门店名称", trigger: "blur" }],
|
||||
// 在这里添加其他字段的验证规则
|
||||
},
|
||||
// 地区选择器的数据
|
||||
addrList: [
|
||||
// 在这里添加省市区的数据
|
||||
],
|
||||
loading: false
|
||||
};
|
||||
},
|
||||
onLoad(e) {
|
||||
this.getDistrict();
|
||||
// this.getStoreSetting();
|
||||
|
||||
this.storeData = JSON.parse(e.edit)
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 获取省市区数据
|
||||
*/
|
||||
async getDistrict() {
|
||||
const res = await system.getDistrict();
|
||||
this.addrList = res.data;
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取门店设置
|
||||
*/
|
||||
async getStoreSetting() {
|
||||
this.loading = true;
|
||||
const res = await index.getStoreSetting();
|
||||
|
||||
if (res.data.id) {
|
||||
this.storeData = res.data;
|
||||
}
|
||||
this.loading = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理省市区选择变化
|
||||
* @param {Object} value - 选择的值
|
||||
*/
|
||||
areaChange(value) {
|
||||
// 处理省市区选择变化的逻辑
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理省市区选择
|
||||
* @param {Object} detail - 选择器详细信息
|
||||
*/
|
||||
select({ detail }) {
|
||||
if (detail.value.length) {
|
||||
const [province_id, city_id, district_id] = detail.value.map(
|
||||
(el) => el.value
|
||||
);
|
||||
|
||||
this.storeData.province_id = province_id;
|
||||
this.storeData.city_id = city_id;
|
||||
this.storeData.district_id = district_id;
|
||||
this.storeData.district = [province_id, city_id, district_id];
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理表单提交
|
||||
*/
|
||||
async handleSubmit() {
|
||||
// 处理表单提交的逻辑
|
||||
const res = await shop.edit({
|
||||
...this.storeData
|
||||
});
|
||||
|
||||
if (res.code == 0) {
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '保存成功!',
|
||||
icon: 'success'
|
||||
});
|
||||
}, 100);
|
||||
uni.navigateBack()
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* 在这里添加样式,根据需要自定义表单样式 */
|
||||
</style>
|
||||
@ -0,0 +1,156 @@
|
||||
<template>
|
||||
<view>
|
||||
<kevyloading v-if="loading" type="bsm-loader" color="#618af8" transparent></kevyloading>
|
||||
|
||||
<wd-form ref="formEl" :model="dataForm" label-width="100px" class="demo-dataForm" :size="formSize" status-icon>
|
||||
<wd-timeline>
|
||||
<wd-timeline-item timestamp="基本设置" placement="top">
|
||||
<div class="form">
|
||||
<wd-form-item :prop="dataForm.image" label="背景图像">
|
||||
<yUpload v-model="dataForm.image" :size="1"></yUpload>
|
||||
</wd-form-item>
|
||||
<wd-form-item :prop="dataForm.show_member" label="显示等级">
|
||||
<wd-switch active-value="1" inactive-value="0" v-model="dataForm.show_member" />
|
||||
</wd-form-item>
|
||||
<wd-form-item :prop="dataForm.show_task" label="显示折扣">
|
||||
<wd-switch active-value="1" inactive-value="0" v-model="dataForm.show_task" />
|
||||
</wd-form-item>
|
||||
<wd-form-item prop="dataForm.show_sign" label="显示签到">
|
||||
<wd-switch active-value="1" inactive-value="0" v-model="dataForm.show_sign" />
|
||||
</wd-form-item>
|
||||
<wd-form-item :prop="dataForm.show_integral" label="显示积分">
|
||||
<wd-switch active-value="1" inactive-value="0" v-model="dataForm.show_integral" />
|
||||
</wd-form-item>
|
||||
</div>
|
||||
</wd-timeline-item>
|
||||
|
||||
<wd-timeline-item timestamp="成长值设置" placement="top">
|
||||
<div class="form">
|
||||
<wd-form-item :prop="dataForm.order_growth" label="下单成长值:">
|
||||
<wd-input placeholder="请输入下单成长值" v-model.number="dataForm.order_growth"></wd-input>
|
||||
</wd-form-item>
|
||||
|
||||
<wd-form-item :prop="dataForm.sign_growth" label="签到成长值:">
|
||||
<wd-input placeholder="请输入签到成长值" v-model.number="dataForm.sign_growth"></wd-input>
|
||||
</wd-form-item>
|
||||
|
||||
<wd-form-item :prop="dataForm.reg_growth" label="下级注册成长值:">
|
||||
<wd-input placeholder="请输入下级注册成长值" v-model.number="dataForm.reg_growth"></wd-input>
|
||||
</wd-form-item>
|
||||
</div>
|
||||
</wd-timeline-item>
|
||||
</wd-timeline>
|
||||
|
||||
<!-- 提交按钮 -->
|
||||
<view class="mt-2 px-12 py-3 bg-slate-50">
|
||||
<wd-button type="primary" size="large" @click="handleSubmit" block>
|
||||
保存
|
||||
</wd-button>
|
||||
</view>
|
||||
|
||||
</wd-form>
|
||||
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref } from 'vue';
|
||||
import yUpload from "@/components/yUpload/index.vue";
|
||||
import uniDataPicker from "@/components/uni-data-picker/components/uni-data-picker/uni-data-picker.vue";
|
||||
import system from '@/api/modules/system.js';
|
||||
import index from '@/api/store/index.js';
|
||||
import kevyloading from "@/components/kevy-loading/kevy-loading";
|
||||
import utils from '@/utils/utils.js'
|
||||
import userMembers from '@/api/store/userMembers.js';
|
||||
|
||||
/**
|
||||
* 从本地存储中获取用户信息
|
||||
*/
|
||||
const user_info = uni.getStorageSync("user_info");
|
||||
|
||||
export default {
|
||||
components: {
|
||||
yUpload, uniDataPicker, kevyloading
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
utils,
|
||||
user_info,
|
||||
// 表单数据
|
||||
dataForm: {
|
||||
image: '',
|
||||
show_member: 0,
|
||||
show_sign: 0,
|
||||
show_task: 0,
|
||||
show_integral: 0,
|
||||
},
|
||||
columns: [],
|
||||
loading: false
|
||||
};
|
||||
},
|
||||
onLoad(e) {
|
||||
this.getStoreSetting()
|
||||
},
|
||||
methods: {
|
||||
async getStoreSetting() {
|
||||
this.loading = true;
|
||||
const res = await userMembers.SetList();
|
||||
|
||||
if (res.data.settings) {
|
||||
this.dataForm = res.data.settings;
|
||||
}
|
||||
this.loading = false;
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理省市区选择变化
|
||||
* @param {Object} value - 选择的值
|
||||
*/
|
||||
areaChange(value) {
|
||||
// 处理省市区选择变化的逻辑
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理省市区选择
|
||||
* @param {Object} detail - 选择器详细信息
|
||||
*/
|
||||
select({ detail }) {
|
||||
if (detail.value.length) {
|
||||
const [province_id, city_id, district_id] = detail.value.map(
|
||||
(el) => el.value
|
||||
);
|
||||
|
||||
this.dataForm.province_id = province_id;
|
||||
this.dataForm.city_id = city_id;
|
||||
this.dataForm.district_id = district_id;
|
||||
this.dataForm.district = [province_id, city_id, district_id];
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理表单提交
|
||||
*/
|
||||
async handleSubmit() {
|
||||
// 处理表单提交的逻辑
|
||||
const res = await userMembers.SetSave({
|
||||
...this.dataForm
|
||||
});
|
||||
|
||||
if (res.code == 0) {
|
||||
setTimeout(() => {
|
||||
uni.showToast({
|
||||
title: '保存成功!',
|
||||
icon: 'success'
|
||||
});
|
||||
}, 100);
|
||||
}
|
||||
this.getStoreSetting()
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* 在这里添加样式,根据需要自定义表单样式 */
|
||||
</style>
|
||||
@ -0,0 +1,5 @@
|
||||
import type { ComponentPublicInstance } from 'vue'
|
||||
|
||||
export type CalendarViewInstance = ComponentPublicInstance<{
|
||||
scrollIntoView: () => void
|
||||
}>
|
||||
@ -0,0 +1,18 @@
|
||||
/*
|
||||
* @Author: weisheng
|
||||
* @Date: 2023-12-14 11:21:58
|
||||
* @LastEditTime: 2024-01-03 21:51:36
|
||||
* @LastEditors: weisheng
|
||||
* @Description:
|
||||
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-cell-group/types.ts
|
||||
* 记得注释
|
||||
*/
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type CelllGroupProvide = {
|
||||
props: {
|
||||
border?: boolean
|
||||
}
|
||||
}
|
||||
|
||||
export const CELL_GROUP_KEY: InjectionKey<CelllGroupProvide> = Symbol('wd-cell-group')
|
||||
@ -0,0 +1,30 @@
|
||||
/*
|
||||
* @Author: weisheng
|
||||
* @Date: 2023-12-14 11:21:58
|
||||
* @LastEditTime: 2024-01-03 22:47:50
|
||||
* @LastEditors: weisheng
|
||||
* @Description:
|
||||
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-checkbox-group/types.ts
|
||||
* 记得注释
|
||||
*/
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
type checkShape = 'circle' | 'square' | 'button'
|
||||
|
||||
export type checkboxGroupProvide = {
|
||||
props: {
|
||||
modelValue: Array<string | number | boolean>
|
||||
cell?: boolean
|
||||
shape?: checkShape
|
||||
checkedColor?: string
|
||||
disabled?: boolean
|
||||
min?: number
|
||||
max?: number
|
||||
inline?: boolean
|
||||
size?: string
|
||||
name?: string
|
||||
}
|
||||
changeSelectState: (value: string | number | boolean) => void
|
||||
}
|
||||
|
||||
export const CHECKBOX_GROUP_KEY: InjectionKey<checkboxGroupProvide> = Symbol('wd-checkbox-group')
|
||||
@ -1,7 +1,25 @@
|
||||
/**
|
||||
* 折叠面板子项
|
||||
*/
|
||||
export interface CollapseItem {
|
||||
name: string
|
||||
expanded: boolean
|
||||
import { type ComponentPublicInstance, type InjectionKey } from 'vue'
|
||||
|
||||
export type CollapseToggleAllOptions =
|
||||
| boolean
|
||||
| {
|
||||
expanded?: boolean
|
||||
skipDisabled?: boolean
|
||||
}
|
||||
|
||||
export type CollapseInstance = ComponentPublicInstance<{
|
||||
toggleAll: (options?: boolean | CollapseToggleAllOptions) => void
|
||||
}>
|
||||
|
||||
export type CollapseProvide = {
|
||||
props: {
|
||||
modelValue: string | Array<string> | boolean
|
||||
accordion?: boolean
|
||||
viewmore?: boolean
|
||||
useMoreSlot?: boolean
|
||||
lineNum?: number
|
||||
}
|
||||
toggle: (name: string, expanded: boolean) => void
|
||||
}
|
||||
|
||||
export const COLLAPSE_KEY: InjectionKey<CollapseProvide> = Symbol('wd-collapse')
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
import { type InjectionKey, type Ref } from 'vue'
|
||||
|
||||
type DropDirction = 'up' | 'down'
|
||||
|
||||
export type DropMenuProvide = {
|
||||
props: {
|
||||
zIndex?: number
|
||||
direction?: DropDirction
|
||||
modal?: boolean
|
||||
closeOnClickModal?: boolean
|
||||
duration?: number
|
||||
}
|
||||
fold: (child?: any) => void
|
||||
offset: Ref<number>
|
||||
}
|
||||
|
||||
export const DROP_MENU_KEY: InjectionKey<DropMenuProvide> = Symbol('wd-drop-menu')
|
||||
@ -0,0 +1,16 @@
|
||||
/*
|
||||
* @Author: weisheng
|
||||
* @Date: 2023-12-14 11:21:58
|
||||
* @LastEditTime: 2024-01-03 21:37:58
|
||||
* @LastEditors: weisheng
|
||||
* @Description:
|
||||
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-grid/types.ts
|
||||
* 记得注释
|
||||
*/
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type GridProvide = {
|
||||
props: { clickable?: boolean; square?: boolean; column?: number; border?: boolean; bgColor?: string; gutter?: number }
|
||||
}
|
||||
|
||||
export const GRID_KEY: InjectionKey<GridProvide> = Symbol('wd-grid')
|
||||
@ -0,0 +1,18 @@
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
type RadioShape = 'dot' | 'button' | 'check'
|
||||
|
||||
export type RadioGroupProvide = {
|
||||
props: {
|
||||
modelValue?: string | number | boolean
|
||||
shape?: RadioShape
|
||||
checkedColor?: string
|
||||
disabled?: boolean
|
||||
cell?: boolean
|
||||
size?: string
|
||||
inline?: boolean
|
||||
}
|
||||
updateValue: (value: string | number | boolean) => void
|
||||
}
|
||||
|
||||
export const RADIO_GROUP_KEY: InjectionKey<RadioGroupProvide> = Symbol('wd-radio-group')
|
||||
@ -0,0 +1,7 @@
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type RowProvide = {
|
||||
props: { gutter?: number }
|
||||
}
|
||||
|
||||
export const ROW_KEY: InjectionKey<RowProvide> = Symbol('wd-row')
|
||||
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* @Author: weisheng
|
||||
* @Date: 2024-01-05 18:03:27
|
||||
* @LastEditTime: 2024-01-05 18:08:28
|
||||
* @LastEditors: weisheng
|
||||
* @Description:
|
||||
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-sidebar/types.ts
|
||||
* 记得注释
|
||||
*/
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type SidebarProvide = {
|
||||
props: {
|
||||
modelValue?: number | string
|
||||
}
|
||||
setChange: (value: number | string, label: string) => void
|
||||
}
|
||||
|
||||
export const SIDEBAR_KEY: InjectionKey<SidebarProvide> = Symbol('wd-sidebar')
|
||||
@ -0,0 +1,7 @@
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type StepsProvide = {
|
||||
props: { active?: number; vertical?: boolean; dot?: boolean; space?: string; alignCenter?: boolean }
|
||||
}
|
||||
|
||||
export const STEPS_KEY: InjectionKey<StepsProvide> = Symbol('wd-steps')
|
||||
@ -1,7 +1,16 @@
|
||||
/*
|
||||
* @Author: weisheng
|
||||
* @Date: 2024-01-01 20:00:29
|
||||
* @LastEditTime: 2024-01-06 15:32:06
|
||||
* @LastEditors: weisheng
|
||||
* @Description:
|
||||
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-tabbar-item/types.ts
|
||||
* 记得注释
|
||||
*/
|
||||
/**
|
||||
* 折叠面板子项
|
||||
*/
|
||||
export interface TabbarItem {
|
||||
// 唯一标识
|
||||
name: string
|
||||
name: string | number
|
||||
}
|
||||
|
||||
@ -0,0 +1,9 @@
|
||||
import { type InjectionKey } from 'vue'
|
||||
|
||||
export type TabsProvide = {
|
||||
state: {
|
||||
activeIndex: number
|
||||
}
|
||||
}
|
||||
|
||||
export const TABS_KEY: InjectionKey<TabsProvide> = Symbol('wd-tabs')
|
||||
Loading…
Reference in New Issue