1.3.5 • Published 4 years ago

t-web-atom-components v1.3.5

Weekly downloads
9
License
ISC
Repository
-
Last release
4 years ago

前端组件库 t-web-atom-components

1、基础组件库结构

src : 源文件目录
组建、指令、混入实现、工具 等等
lib :输出目录
打包输出目录
demo :实例目录
运行demo,可以直接通过vue-cli3+版本运行组件
命令:vue serve

2、Install

npm install t-web-atom-components -S

3、组件库用法

1)UploadImage 上传图片组件
作用:支持H5input标签上传、微信上传、tc APP

1、使用方式:
import UploadImage from "t-web-atom-components/lib/uploadImage"
或者
import { UploadImage } from "t-web-atom-components"
Vue.use(UploadImage);

2、组件中应用
<UploadImage :config="config" @success="handleSuccess" @error="handleError" >
</UploadImage>

3、配置:
config: {
    type: "",         //type: input|wx|tcApp,input: H5原生,wx: 微信上传,tcApp:tc App
    multiple: false,  //是否多选
    imgQuality: 1,    //图片压缩质量,
    max: 9,           //最对选几张
    action: "",       //上传地址
}

4、上传成功回调:handleSuccess
    input 返回一个图片base64的数组;
    wx 返回上传到wx服务器的serverId数组;
    成功回调数据格式
    {
        data:[]
    }

5、上传失败回调:handleError
    失败回调格式:
    {   
        type: "openError",            //错误类型
        message: "input open error",  //错误消息
        extend: {}                    //扩展字段
    }
2)TreeSelect 层级选择树
作用:层级选择树,支持单选或者多选

1、使用方式:
注意:本组件基于elementui中的一些基础组件(如下引用),如果框架中全局引入过element-ui样式,则无需单独引入css否则需要引入以下几个css:
import 'element-ui/lib/theme-chalk/dropdown.css';
import 'element-ui/lib/theme-chalk/dropdown-menu.css';
import 'element-ui/lib/theme-chalk/select.css';
import 'element-ui/lib/theme-chalk/option.css';
import 'element-ui/lib/theme-chalk/tree.css';
import 'element-ui/lib/theme-chalk/input.css';
import TreeSelect from "t-web-atom-components/lib/treeSelect"
或者
import { TreeSelect } from "t-web-atom-components"
Vue.use(TreeSelect);

2、组件中应用
单选树型组件:
<TreeSelect v-model="dept" :clearable="true" :data="root" 
    :props="{ label: 'text' }">
</TreeSelect>
多选树型组件:
<TreeSelect v-model="depts" :clearable="true" :data="root" 
    :props="{ label: 'text' }" :multiple="true">
</TreeSelect>

3、数据结构
{
    "children": [
        {
            "children": [],
            "id": "12148",
            "text": "数科基础架构小组",
            "parentId": "9323"
        },
    ],
    "id": "9323",
    "text": "数科平台架构组",
    "parentId": "6181"
}
3)Edges 和 NodeBlock 画板
1、使用方式
import NodeBlock from "t-web-atom-components/lib/nodeBlock";
import Edges from "t-web-atom-components/lib/edges";
或者
import { NodeBlock,Edges } from "t-web-atom-components";
Vue.use(NodeBlock);
Vue.use(Edges);

2、组件中应用(具体见demo中使用)
<NodeBlock
    class="block"
    :ref="`nodeBlock_${index}`"
    :key="nodeBlock.data.nodeId"
    :x="nodeBlock.x"
    :y="nodeBlock.y"
    :nodeBlockWidth="nodeBlockWidth"
    :nodeBlockHeight="nodeBlockHeight"
    :nodeTypeName="getNodeTypeName(nodeBlock.data.nodeType)"
    :toNodeOptions="toNodeOptions"
    :initialNode="nodeBlock.data"
    :linking="linking"
    @updatePosition="updateNodePosition(index, $event)"
    @stopMove="saveScenario"
    @deleteNode="deleteNode(index)"
    @editNode="editNode(index)"
    @copyNode="copyNode(index)"
    @linkingStart="linkingStart(index, $event)"
    @linkingStop="linkingStop(index, $event)"
    @mouseEnterDstSlot="mouseEnterDstSlot(index, $event)"
    @mouseLeaveDstSlot="mouseLeaveDstSlot(index)"
/>
<Edges
    :edges="filteredEdges"
    :nodeBlockWidth="nodeBlockWidth"
    :nodeBlockHeight="nodeBlockHeight"
    :linkingEdge="linkingEdge"
/>
NodeBlock 属性(用法可参见demo)
属性说明
x相对于画布x轴坐标
y相对于画布y轴坐标
nodeBlockWidth节点宽度
nodeBlockHeight节点高度
nodeTypeName节点类型名称
toNodeOptions能作为子节点的配置(如:起始节点不能作为子节点)
initialNode初始值
linking连线中
@updatePosition更新节点位置回调
@stopMove停止移动节点回调
@deleteNode删除节点回调
@editNode编辑节点回调
@copyNode复制节点回调
@linkingStart开始连线回调
@linkingStop结束连线回调
@mouseEnterDstSlot鼠标移到节点上回调
@mouseLeaveDstSlot鼠标移除节点回调
Edges 属性(用法可参见demo)
属性说明
edges渲染线的数组
nodeBlockWidth节点宽度,作用:计算线的转角位置
nodeBlockHeight节点高度,作用:计算线的转角位置
linkingEdge牵出线和节点信息

4、vue指令用法

1、按需注入指令
new VDirective(['copy','long-press','click-outside','debounce','throttle'],Vue);
2、注入全部指令
new VDirective('*',Vue);
3、指令详情
    1)copy: 复制指令 v-copy="copye"
    2)long-press:长按指令  v-long-press = "longPress" 
    3)click-outside: 点击其他位置,不是本组件的任何位置 
       v-click-outside.mousedown.capture = "clickOutSide" 
    4)debounce: 防抖指令 v-debounce="[事件名('debounce'),500]" 
    5)throttle: 节流指令 v-throttle="[事件名('throttle'),500]" 
audio 使用说明
<template>
  <div style="margin-top: 100px;">
      <TcAudio 
        ref="audio"
        :audioSrc="audioSrc"        //播放音频源地址,需要支持断点续传,音频状态返回 206
        :className="'myaudio'"      //自定义 class 可修改样式
        :speedList="[1,2,3,4,5]"    //播放速度
        :autoplay="true"            //如果出现该属性,则音频在就绪后马上播放。chrome浏览器限制,可能设置无效
        @emptied="emptied"          //播放出现异常
        @stalled="stalled"          //未能正常加载
        @waiting="waiting"          //正在加载
        @play="play"                //开始播放回调
        @pause="pause"              //暂停播放回调
        @ended="ended"              //音频播放完成
        ></TcAudio>
        <button @click="setPlay">播放</button>
        <button @click="setPause">暂停</button>
        <button @click="setCurTime">设置播放时间点</button>
        <button @click="setVolume">设置播放声音</button>
  </div>
</template>

<script>
import Vue from "vue";
import TcAudio from '../../src/components/audio';
Vue.use(TcAudio);

export default {
    data(){
        return {
            audioSrc:'https://file.40017.cn/tcservice/temp/test.m4a'
        }
    },
    methods:{
        /**
         * 播放出现异常
         */
        emptied(data){
            console.log(data)
        },
         /**
         * 未能正常加载
         */
        stalled(data){
            console.log(data)
        },
        
        /**
         * 正在加载
         */
        waiting(data){
            console.log(data)
        },
        /**
         * 开始播放回调
         */
        play(data){
            console.log(data)
        },
        
        /**
         * 暂停播放回调
         */
        pause(data){
            console.log(data)
        },

        /**
         * 音频播放完成
         */
        ended(data){
            console.log(data)
        },
        
        /**
         * 设置播放的位置
         */
        setCurTime(){
            this.$refs.audio.setCurTime(100)
        },

         /**
         * 设置音量, 音量范围:0-1
         */
        setVolume(){
            this.$refs.audio.setVolume(0.2)
        },

        /**
         * 播放
         */
        setPlay(){
            this.$refs.audio.setPlay()
        },

         /**
         * 暂停
         */
        setPause(){
            this.$refs.audio.setPause()
        }
    }
}
</script>

saas商业化页面基础组件

  1. MainMenu - 左侧菜单栏
  2. MainHeader - 页面顶部栏
  3. MainTags - 子页面标签栏
  4. MainBreadcrumb - 面包屑
// 注意:组件内统一使用inject访问外部模块,在App.vue中,使用provide为组件提供外部依赖
{
    ...
    provide() {
        return {
            pubsub: pubsub,
            menuBll: menuBll,
            topic: topic,
            globalInfo: globalInfo,
            adminOrigin: adminOrigin,
            HIDE_TAGS_ROUTE: [
                '/404',
                '/homepage/Announcement',
                '/homepage/Index',
                '/Robot/Index',
                '/Robot/DialogFlow/Design',
                '/CCT/Index',
                '/rtc/Load'
            ]
        };
    },
    ...
    
}

MainMenu - 左侧菜单栏

  1. 使用方式
import MainMenu from 't-web-atom-components/lib/saas/mainMenu';
import 't-web-atom-components/lib/css/saas/mainMenu.css'

<template>
    ...
    <MainMenu v-if="!isMicroApp" />
    ...
</template>

MainHeader - 页面顶部栏

  1. 使用方式
import MainMenu from 't-web-atom-components/lib/saas/mainHeader';
import 't-web-atom-components/lib/css/saas/mainHeader.css'

<template>
    ...
    <MainHeader></MainHeader>
    ...
</template>

MainTags - 子页面标签栏

  1. 使用方式
import MainMenu from 't-web-atom-components/lib/saas/mainTags';
import 't-web-atom-components/lib/css/saas/mainTags.css'

<template>
    ...
    <MainTags></MainTags>
    ...
</template>

MainBreadcrumb - 面包屑

  1. 使用方式
import MainMenu from 't-web-atom-components/lib/saas/mainBreadcrumb';
import 't-web-atom-components/lib/css/saas/mainBreadcrumb.css'

<template>
    ...
    <MainBreadcrumb></MainBreadcrumb>
    ...
</template>

App.vue示例

<template>
<el-container class="app">
    <div class="app-container">
        <MainHeader></MainHeader>

        <el-container :class="{ microAppheight: !isMicroApp }">
            <MainMenu v-if="!isMicroApp" />
            <div class="page-content">
                <MainTags />
                <div class="app-main">
                    <MainBreadcrumb />
                    <keep-alive>
                        <router-view
                            v-if="isNeedRefresh"
                            class="router-view-content"
                            :key="new Date().getTime()"
                        ></router-view>
                        <router-view v-else class="router-view-content"></router-view>
                    </keep-alive>
                </div>
            </div>
        </el-container>
    </div>
</el-container>
</template>
<script>
...
import MainTags from 't-web-atom-components/lib/saas/mainTags';
import MainMenu from 't-web-atom-components/lib/saas/mainMenu';
import MainHeader from 't-web-atom-components/lib/saas/mainHeader';
import MainBreadcrumb from 't-web-atom-components/lib/saas/mainBreadcrumb';
import 't-web-atom-components/lib/css/saas/mainTags.css'
import 't-web-atom-components/lib/css/saas/mainMenu.css'
import 't-web-atom-components/lib/css/saas/mainHeader.css'
import 't-web-atom-components/lib/css/saas/mainBreadcrumb.css'
...

export default {
    name: 'app',
    provide() {
        return {
            pubsub: pubsub,
            menuBll: menuBll,
            topic: topic,
            globalInfo: globalInfo,
            adminOrigin: adminOrigin,
            HIDE_TAGS_ROUTE: [
                '/404',
                '/homepage/Announcement',
                '/homepage/Index',
                '/Robot/Index',
                '/Robot/DialogFlow/Design',
                '/CCT/Index',
                '/rtc/Load'
            ]
        };
    },
    ...    
}
</script>
1.3.5

4 years ago

1.2.8

4 years ago

1.3.3

4 years ago

1.3.2

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.9

4 years ago

1.2.7

4 years ago

1.2.6

4 years ago

1.2.5

4 years ago

1.2.4

4 years ago

1.2.3

4 years ago

1.2.0

4 years ago

1.2.1

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.1

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago