npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ccitu-web-common

v1.2.10

Published

<!-- - 查看开发文档:<a href="https://www.showdoc.com.cn/CCITU/10214210447546515" target="_blank">zx参考文档</a> -->

Downloads

6

Readme

CCITU.Web.Common

💝常见中大型后台组件库 前端公共组件库💝

📚 参考文档

🌈 介绍

基于 vue3.x + ElementPlus二次封装表格表单下拉框富文本等等常见后台管理系统组件,希望减少工作量,帮助大家实现快速开发。

1. 安装组件

npm i ccitu-web-common

2. 注册组件 main.js

import {
    scSearchForm, //搜索框头部
    scUpload, // 上传单张图片组件
    scUploadMultiple, // 上传多张图片组件
    scFileUpload, // 上传文件
    scTable, // 表格组件
    scSelect, // 下拉框组件
    scEcharts, // 图表组件
    scEditor // 富文本组件
    scQrCode, // 二维码组件
    scCropper, // 图片裁剪组件
	scSelectTree, // 下拉树形组件

} from 'ccitu-web-common'

//注册全局组件
app.component('scSearchForm', scSearchForm);
app.component('scUpload', scUpload);
app.component('scUploadMultiple', scUploadMultiple);
app.component('scFileUpload', scFileUpload);
app.component('scTable', scTable);
app.component('scSelect', scSelect);
app.component('scSelectTree', scSelectTree);
app.component('scQrCode', scQrCode);
app.component('scEcharts', scEcharts);
app.component('scCropper', scCropper);
app.component('scEditor', scEditor);

3. 引用组件

3.1 搜索头部组件

<!--搜索头部组件-->
<template>
    <el-container>
        <el-header class="searchbox">
            <scSearchForm size="medium" 
            :search-data="searchDatas"
            :search-form="searchForms">
                <el-col :xs="24" :sm="12" :md="8" :lg="4">
                    <el-button type="primary" icon="el-icon-search">
                    搜索</el-button>
                    <el-button>导入</el-button>
                </el-col>
            </scSearchForm>
        </el-header>
    </el-container>
</template>

export default {
    data() {
        return {
            searchDatas: {
               field:'对应prop v-model字段'
            },
            searchForms: [
                {
                    具体看文档
                }
            ],
    },
};

3.2 上传单张图片组件

⚠️需要在外部配置文件 import config from "@/config/upload"; //上传配置

import API from "@/api";
export default {
	apiObj: API.file.uploadFile,//上传请求API对象
	imgApiObj: API.file.uploadImage,//上传图片请求API对象
	maxSize: 5,//最大文件大小 默认5MB
	parseData: function (res) {
		return {
			code: res.ResultCode,//分析状态字段结构
			fileId: res.Tag.FileId,//分析远程地址结构
			name: res.Tag.OriginName,//分析远程地址结构
			url: res.Tag.Url,//分析远程地址结构
			msg: res.Message//分析描述字段结构
		}
	}
}
 <scUpload v-model="IconUrl" :showFileList="true" :multiple="false" :drag="true"  style="width:150px;height:150px" ></scUpload>

3.3 上传多张图片组件

  <scUploadMultiple v-model="addForm.ShippingImg" :limit="3">
  </scUploadMultiple>

3.5 上传文件

  <scFileUpload v-model="addForm.ShippingImg" :limit="3">
  </scFileUpload>

3.6 表格组件

   <scTable ref="userTable" :apiObj="" :params="params" :column="column" @loadFinished="loadFinished" @selectGroupAll-change ='selectAllItems' stripe style="height:80vh">
          <!-- 各列自定义template -->
          <el-table-column label="序号" type="index" width="60" align="center"></el-table-column>
          <template #CreatedTime="scope">
          </template>
        </scTable>


⚠️需要在外部配置文件 import config from "@/config/table";
//数据表格配置
import { ElMessage } from 'element-plus'
import sysConfig from "@/config"
import tool from '@/utils/tool'

export default {
	pageSize: 20,//表格每一页条数
	parseData: function (res) {
        return {
            data: res.Tag,
            rows: res.Tag,//分析行数据字段结构
            total: res.TotalRecord,//分析总数字段结构
            msg: res.Message,//分析描述字段结构
            code: res.ResultCode//分析状态字段结构
			column:{
				 {
				label: "",
				prop: "selection",   //显示全选按钮
				width: "40",
				},
			}
        }
	},
	}
	props: {
	    //分组表格显示数据条数 超过则显示 查看更多
	    groupRowCount: { type: Number,  default: 0  },	
	    //分组表格数据名称			
	    groupFields: {  type: String,  default:'' }			
  	},
	request: {				                
		page: 'pageIndex',//规定当前分页字段
		pageSize: 'pageSize',//规定一页条数字段
		prop: 'prop',//规定排序字段名字段
		order: 'order'//规定排序规格字段
	},
	/**
	 * 自定义列保存处理
	 * @tableName scTable组件的props->tableName
	 * @column 用户配置好的列
	 * @ref 列配置弹窗组件的ref
	 */
	columnSettingSave: function (tableName, column, ref) {
        ref.isSave = true
        setTimeout(()=>{
            ref.isSave = false
            tool.data.set(sysConfig.AuthorizationKey + "_column_" + tableName, column);
            ElMessage.success('配置保存成功')

        },1000)
	}
}

3.7 下拉框选择

<scSelect 
:apiObj="apiObj" 
:params="{}" apiMethod="post" 
:props="{ label: 'label', value: 'value' }"
placeholder="" 
multiple
v-model="formdata.AgentTypeIdList">

</scSelect>

⚠️需要在外部配置文件 import config from "@/config/select";
//数据下拉框配置
import { ElMessage } from 'element-plus'
import sysConfig from "@/config"
import tool from '@/utils/tool'

export default {
	dicApiObj: null,//API.system.dic.get,		//获取字典接口对象
	parseData: function (res) {
		return {
			data: res.Tag,				//分析行数据字段结构
			msg: res.Message,			//分析描述字段结构
			code: res.ResultCode		//分析状态字段结构
		}
	},
	request: {
		name: 'name'					//规定搜索字段
	},
	props: {
		labelFormat: '',				//映射label格式
		labelFormatArray: [],           //映射label格式字段
		label: 'label',					//映射label显示字段
		value: 'value',					//映射value值字段
	}
}

3.8 图表组件

<scEcharts height="300px" width="1200px" :option="options"></scEcharts>

3.9 富文本组件

⚠️需要在外部配置文件 import config from "@/config/upload"; //上传配置

import API from "@/api";
export default {
	apiObj: API.file.uploadFile,//上传请求API对象
	imgApiObj: API.file.uploadImage,//上传图片请求API对象
	maxSize: 5,//最大文件大小 默认5MB
	parseData: function (res) {
		return {
			code: res.ResultCode,//分析状态字段结构
			fileId: res.Tag.FileId,//分析远程地址结构
			name: res.Tag.OriginName,//分析远程地址结构
			url: res.Tag.Url,//分析远程地址结构
			msg: res.Message//分析描述字段结构
		}
	}
}

<scEditor v-model="" placeholder="" :height="370"></scEditor>

3.10 二维码组件

	// 后续补充

3.11 图片裁剪组件

	// 后续补充

3.12 下拉树形组件

	// 后续补充

3.13 scVxeTable 表格组件

  <scVxeTable ref="userTable" :apiObj="" :params="params" :column="column" @select-ChangeEvent='selectChangeEvent' @selection-change="selectionChange" :stripe='stripe' stripe style="height:80vh" :groupFields='groupFields'>
    	<!-- 表头插槽 -->
        <template #fieldHeader></template>
		<template #fieldHeader>
          {{column[0].title}}     	<!-- 表头标题 -->
        </template>
		<!-- 表头内容 -->
        <template #Photo="scope">
          <div v-if="scope.row.ItemList">
            <span class="selection_span"> 仓库:{{scope.row.RemovalNo}}</span>
            <span class="selection_span">Sku:{{scope.row.Creator}}</span>
            <span class="selection_span">目的地:{{scope.row.RecordStatus}}</span>
            <span class="selection_span">日期:{{scope.row.CreatedTime }}</span>
            <span class="selection_span">备注:{{scope.row.RemovalCategory}}</span>
          </div>
          <div v-else-if="scope.row.Photo">
            <el-image :src="scope.row.Photo" :preview-src-list="[scope.row.Photo]" :initial-index="0" fit="cover" hide-on-click-modal append-to-body :z-index="9999" style="width:35px; height:35px" lazy :scroll-container="scrollContainer" />
          </div>
        </template>
    </scVxeTable>

⚠️需要在main.js 外部配置文件 
import VXETable from 'vxe-table'
import 'vxe-table/lib/style.css'
app.use(VXETable)
//数据表格配置

export default {
	pageSize: 20,//表格每一页条数
	parseData: function (res) {
        return {
            data: res.Tag,
            rows: res.Tag,//分析行数据字段结构
            msg: res.Message,//分析描述字段结构
            code: res.ResultCode//分析状态字段结构,
			tablePage:{
				total: 0,  //分析总数字段结构
				currentPage: 1,
				pageSize: 10
			}
			column:{
				{	
					title: "",			 //列标题
					field: "",   //列字段名
					align:'',			 //列对齐方式
					width: "",		 //列宽度    列宽度无法撑满表格时 需将宽度设置成自适应 auto
					fieldHeader:'fieldHeader'     //表头自定义插槽
					visible:true        //默认显示  false隐藏
				},
			}
        }
	},
	}
	props: {
	    //分组表格显示数据条数 超过则显示“查看更多”操作,0=默认显示全部
	    groupRowCount: { type: Number,  default: 0  },	
	    //分组表格数据来源字段
	    groupFields: {  type: String,  default:'' }			
  	},
	request: {				                
		page: 'pageIndex',//规定当前分页字段
		pageSize: 'pageSize',//规定一页条数字段
		prop: 'prop',//规定排序字段名字段
		order: 'order'//规定排序规格字段
	},
}