mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 20:28:45 +08:00 
			
		
		
		
	@@ -12,18 +12,24 @@ export interface TabBarProperty {
 | 
			
		||||
 | 
			
		||||
// 选项属性
 | 
			
		||||
export interface TabBarItemProperty {
 | 
			
		||||
  name: string // 标签名称
 | 
			
		||||
  link: string // 链接
 | 
			
		||||
  iconUrl: string // 默认图标链接
 | 
			
		||||
  activeIconUrl: string // 选中的图标链接
 | 
			
		||||
  // 标签文字
 | 
			
		||||
  text: string
 | 
			
		||||
  // 链接
 | 
			
		||||
  url: string
 | 
			
		||||
  // 默认图标链接
 | 
			
		||||
  iconUrl: string
 | 
			
		||||
  // 选中的图标链接
 | 
			
		||||
  activeIconUrl: string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 样式
 | 
			
		||||
export interface TabBarStyle {
 | 
			
		||||
  // 背景类型
 | 
			
		||||
  backgroundType: 'color' | 'img'
 | 
			
		||||
  // 背景颜色 或 图片链接
 | 
			
		||||
  background: string
 | 
			
		||||
  bgType: 'color' | 'img'
 | 
			
		||||
  // 背景颜色
 | 
			
		||||
  bgColor: string
 | 
			
		||||
  // 图片链接
 | 
			
		||||
  bgImg: string
 | 
			
		||||
  // 默认颜色
 | 
			
		||||
  color: string
 | 
			
		||||
  // 选中的颜色
 | 
			
		||||
@@ -38,33 +44,33 @@ export const component = {
 | 
			
		||||
  property: {
 | 
			
		||||
    theme: 'red',
 | 
			
		||||
    style: {
 | 
			
		||||
      backgroundType: 'color',
 | 
			
		||||
      background: '#fff',
 | 
			
		||||
      bgType: 'color',
 | 
			
		||||
      bgColor: '#fff',
 | 
			
		||||
      color: '#282828',
 | 
			
		||||
      activeColor: '#fc4141'
 | 
			
		||||
    },
 | 
			
		||||
    items: [
 | 
			
		||||
      {
 | 
			
		||||
        name: '首页',
 | 
			
		||||
        link: '/',
 | 
			
		||||
        text: '首页',
 | 
			
		||||
        url: '/pages/index/index',
 | 
			
		||||
        iconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-001.png',
 | 
			
		||||
        activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/1-002.png'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: '分类',
 | 
			
		||||
        link: '/pages/goods_cate/goods_cate',
 | 
			
		||||
        text: '分类',
 | 
			
		||||
        url: '/pages/index/category?id=3',
 | 
			
		||||
        iconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-001.png',
 | 
			
		||||
        activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/2-002.png'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: '购物车',
 | 
			
		||||
        link: '/pages/order_addcart/order_addcart',
 | 
			
		||||
        text: '购物车',
 | 
			
		||||
        url: '/pages/index/cart',
 | 
			
		||||
        iconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-001.png',
 | 
			
		||||
        activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/3-002.png'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        name: '我的',
 | 
			
		||||
        link: '/pages/user/index',
 | 
			
		||||
        text: '我的',
 | 
			
		||||
        url: '/pages/index/user',
 | 
			
		||||
        iconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-001.png',
 | 
			
		||||
        activeIconUrl: 'http://mall.yudao.iocoder.cn/static/images/4-002.png'
 | 
			
		||||
      }
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,9 @@
 | 
			
		||||
      class="tab-bar-bg"
 | 
			
		||||
      :style="{
 | 
			
		||||
        background:
 | 
			
		||||
          property.style.backgroundType === 'color'
 | 
			
		||||
            ? property.style.background
 | 
			
		||||
            : `url(${property.style.background})`,
 | 
			
		||||
          property.style.bgType === 'color'
 | 
			
		||||
            ? property.style.bgColor
 | 
			
		||||
            : `url(${property.style.bgImg})`,
 | 
			
		||||
        backgroundSize: '100% 100%',
 | 
			
		||||
        backgroundRepeat: 'no-repeat'
 | 
			
		||||
      }"
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
      <div v-for="(item, index) in property.items" :key="index" class="tab-bar-item">
 | 
			
		||||
        <img :src="index === 0 ? item.activeIconUrl : item.iconUrl" alt="" />
 | 
			
		||||
        <span :style="{ color: index === 0 ? property.style.activeColor : property.style.color }">
 | 
			
		||||
          {{ item.name }}
 | 
			
		||||
          {{ item.text }}
 | 
			
		||||
        </span>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
  <div class="tab-bar">
 | 
			
		||||
    <!-- 表单 -->
 | 
			
		||||
    <el-form :model="formData" label-width="80px">
 | 
			
		||||
      <el-form-item label="主题">
 | 
			
		||||
      <el-form-item label="主题" prop="theme">
 | 
			
		||||
        <el-select v-model="formData!.theme" @change="handleThemeChange">
 | 
			
		||||
          <el-option
 | 
			
		||||
            v-for="(theme, index) in THEME_LIST"
 | 
			
		||||
@@ -26,24 +26,16 @@
 | 
			
		||||
        <ColorInput v-model="formData!.style.activeColor" />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item label="导航背景">
 | 
			
		||||
        <el-radio-group
 | 
			
		||||
          v-model="formData!.style.backgroundType"
 | 
			
		||||
          @change="handleBackgroundTypeChange"
 | 
			
		||||
        >
 | 
			
		||||
        <el-radio-group v-model="formData!.style.bgType">
 | 
			
		||||
          <el-radio-button label="color">纯色</el-radio-button>
 | 
			
		||||
          <el-radio-button label="img">图片</el-radio-button>
 | 
			
		||||
        </el-radio-group>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item label="选择颜色" v-if="formData!.style.backgroundType === 'color'">
 | 
			
		||||
        <ColorInput v-model="formData!.style.background" />
 | 
			
		||||
      <el-form-item label="选择颜色" v-if="formData!.style.bgType === 'color'">
 | 
			
		||||
        <ColorInput v-model="formData!.style.bgColor" />
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-form-item label="选择图片" v-if="formData!.style.backgroundType === 'img'">
 | 
			
		||||
        <UploadImg
 | 
			
		||||
          v-model="formData!.style.background"
 | 
			
		||||
          width="100%"
 | 
			
		||||
          height="50px"
 | 
			
		||||
          class="min-w-200px"
 | 
			
		||||
        >
 | 
			
		||||
      <el-form-item label="选择图片" v-if="formData!.style.bgType === 'img'">
 | 
			
		||||
        <UploadImg v-model="formData!.style.bgImg" width="100%" height="50px" class="min-w-200px">
 | 
			
		||||
          <template #tip> 建议尺寸 375 * 50 </template>
 | 
			
		||||
        </UploadImg>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
@@ -92,11 +84,11 @@
 | 
			
		||||
                  <el-text>选中图片</el-text>
 | 
			
		||||
                </div>
 | 
			
		||||
              </div>
 | 
			
		||||
              <el-form-item draggable="false" label-width="0" class="m-b-8px!">
 | 
			
		||||
                <el-input v-model="element.name" placeholder="请输入文字" />
 | 
			
		||||
              <el-form-item prop="text" label-width="0" class="m-b-8px!">
 | 
			
		||||
                <el-input v-model="element.text" placeholder="请输入文字" />
 | 
			
		||||
              </el-form-item>
 | 
			
		||||
              <el-form-item draggable="false" label-width="0" class="m-b-0!">
 | 
			
		||||
                <el-input v-model="element.link" placeholder="请选择链接" />
 | 
			
		||||
              <el-form-item prop="url" label-width="0" class="m-b-0!">
 | 
			
		||||
                <el-input v-model="element.url" placeholder="请选择链接" />
 | 
			
		||||
              </el-form-item>
 | 
			
		||||
            </div>
 | 
			
		||||
          </div>
 | 
			
		||||
@@ -132,14 +124,6 @@ const props = defineProps<{ modelValue: TabBarProperty }>()
 | 
			
		||||
const emit = defineEmits(['update:modelValue'])
 | 
			
		||||
const { formData } = usePropertyForm(props.modelValue, emit)
 | 
			
		||||
 | 
			
		||||
// 缓存背景:当背景类型切换时,防止参数丢失
 | 
			
		||||
const backgroundCache = ref('')
 | 
			
		||||
const handleBackgroundTypeChange = () => {
 | 
			
		||||
  const background = formData.value!.style.background
 | 
			
		||||
  formData.value!.style.background = backgroundCache.value
 | 
			
		||||
  backgroundCache.value = background
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 添加导航项 */
 | 
			
		||||
const handleAddItem = () => {
 | 
			
		||||
  formData?.value?.items?.push({} as TabBarItemProperty)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user