让企业管理更智慧、更快捷

Skip to content
源代码提交(15)
module.exports = {
"stories": [
"../src//**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-viewport",
"@storybook/addon-notes",
"@storybook/addon-storysource",
"@storybook/addon-actions",
"@storybook/addon-a11y",
"@storybook/addon-knobs"
]
"stories": [
"../src//**/*.stories.mdx",
"../src/**/*.stories.@(js|jsx|ts|tsx)"
],
"addons": [
"@storybook/addon-links",
"@storybook/addon-essentials",
"@storybook/addon-viewport",
"@storybook/addon-notes",
"@storybook/addon-storysource",
"@storybook/addon-actions",
"@storybook/addon-a11y",
"@storybook/addon-knobs"
],
// previewHead: (head) => (`
// ${head}
// <script src="//unpkg.com/echarts"></script>
// `)
}
<!-- .storybook/preview-head.html -->
<!-- Pull in static files served from your Static directory or the internet -->
<script src="//unpkg.com/echarts"></script>
\ No newline at end of file
......@@ -19,7 +19,6 @@ import '@package/icon-park/styles/index.css';
// return cellValue === true ? '正常' : '禁止'
// }
// })
console.log('Element:', Element)
Vue.use(VueCompositionAPI);
Vue.use(Element);
Vue.use(VXETable);
......
## [0.1.37](http://git.leadwaycloud.com/package/lwc-ui-components/compare/v0.1.36...v0.1.37) (2021-09-02)
### Bug Fixes
* 修复hoc模板events/props未传值报错 ([17a5c08](http://git.leadwaycloud.com/package/lwc-ui-components/commits/17a5c08cdff86914d9424e608ddcf596bec752ea))
### Features
* 移除 ant-design-vue 库,涉及到的组件全部替换为 element-ui, 减小运行/打包体积 ([3015695](http://git.leadwaycloud.com/package/lwc-ui-components/commits/30156958c9d9c7050d95fe284857fc9764918fb2))
* lwc-tags-basic 组件新增两种type: main、friendly,tailwindcss 新增对应颜色配置 ([cbc9977](http://git.leadwaycloud.com/package/lwc-ui-components/commits/cbc9977a24d599c3d57a7eb43abcc4a2b7bc5403))
## [0.1.36](http://git.leadwaycloud.com/package/lwc-ui-components/compare/v0.1.35...v0.1.36) (2021-08-02)
......
......@@ -19,7 +19,7 @@ externals = [
commonjs2: "underscore",
amd: "underscore",
root: "_",
}
},
},
externals
),
......
......@@ -57,27 +57,6 @@ module.exports = {
'css-loader'
]
},
{
test: /\.less$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#a24689',
'success-color': '#67C23A',
'warning-color': '#E6A23C',
'error-color': '#F56C6C',
},
javascriptEnabled: true,
}
}
}],
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
......
......@@ -62,27 +62,6 @@ const webpackConfig = {
loader: "css-loader"
}]
},
{
test: /\.less$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#a24689',
'success-color': '#67C23A',
'warning-color': '#E6A23C',
'error-color': '#F56C6C',
},
javascriptEnabled: true,
}
}
}],
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
......
......@@ -29,6 +29,7 @@ module.exports = {
},
externals: {
vue: config.vue,
'echarts': 'echarts'
},
optimization: {
minimizer: [
......@@ -74,27 +75,6 @@ module.exports = {
use: ["style-loader", "css-loader", "sass-loader"],
include: path.resolve(__dirname, "../src"),
},
{
test: /\.less$/,
use: [{
loader: 'style-loader'
}, {
loader: 'css-loader'
}, {
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#a24689',
'success-color': '#67C23A',
'warning-color': '#E6A23C',
'error-color': '#F56C6C',
},
javascriptEnabled: true,
}
}
}],
},
{
test: /\.(svg|otf|ttf|woff2?|eot|gif|png|jpe?g)(\?\S*)?$/,
loader: "url-loader",
......
此差异已折叠。
此差异已折叠。
{
"name": "@package/lwc-ui-components",
"version": "0.1.37",
"version": "0.1.38",
"private": false,
"license": "UNLICENSED",
"scripts": {
......@@ -31,37 +31,29 @@
],
"dependencies": {
"@mdx-js/vue-loader": "^1.6.22",
"@package/icon-park": "^1.2.5",
"@vue/composition-api": "^1.0.0-beta.19",
"clipboard": "^2.0.6",
"core-js": "^3.6.5",
"dayjs": "^1.9.6",
"echarts": "^4.9.0",
"element-ui": "^2.15.6",
"jsbarcode": "^3.11.3",
"lodash": "^4.17.20",
"mockjs": "^1.1.0",
"moment": "^2.29.1",
"qrcode": "^1.4.4",
"resize-detector": "^0.2.2",
"tailwindcss": "^1.9.4",
"underscore": "^1.11.0",
"uuid": "^8.3.2",
"validate-commit-msg": "^2.14.0",
"vue": "^2.6.11",
"vue-cropper": "^0.5.6",
"vue-i18n": "^8.22.1",
"vue-quill-editor": "^3.0.6",
"vxe-table": "^3.2.17"
"vue-quill-editor": "^3.0.6"
},
"devDependencies": {
"@babel/core": "^7.12.3",
"@package/icon-park": "^1.2.5",
"@storybook/addon-a11y": "^6.1.21",
"@storybook/addon-actions": "^6.1.21",
"@storybook/addon-essentials": "^6.1.21",
"@storybook/addon-knobs": "^6.1.21",
"@storybook/addon-links": "^6.1.21",
"@storybook/addon-notes": "^5.3.21",
"@storybook/addon-notes": "^6.0.0-alpha.6",
"@storybook/addon-storysource": "^6.1.21",
"@storybook/addon-viewport": "^6.1.21",
"@storybook/vue": "^6.1.21",
......@@ -75,6 +67,8 @@
"clean-webpack-plugin": "^3.0.0",
"css-loader": "^5.0.0",
"cz-conventional-changelog": "^3.3.0",
"echarts": "^5.2.0",
"element-ui": "^2.15.6",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.2.2",
"figlet": "^1.5.0",
......@@ -85,7 +79,10 @@
"json-templater": "^1.2.0",
"less": "^3.12.2",
"less-loader": "^7.0.2",
"lodash": "^4.17.20",
"mini-css-extract-plugin": "0.9.0",
"mockjs": "^1.1.0",
"moment": "^2.29.1",
"node-sass": "^4.14.1",
"postcss": "^8.1.2",
"postcss-cli": "^8.1.0",
......@@ -102,9 +99,12 @@
"svelte": "^3.29.0",
"svelte-loader": "^2.13.6",
"svelte-preprocess": "^4.5.1",
"tailwindcss": "^1.9.4",
"url-loader": "^4.1.1",
"validate-commit-msg": "^2.14.0",
"vue-loader": "^15.9.3",
"vue-template-compiler": "^2.6.11",
"vxe-table": "^3.2.17",
"vxe-table-plugin-element": "^1.11.2",
"webpack": "4.44.2",
"webpack-cli": "3.0.8",
......
......@@ -33,7 +33,6 @@ import LwcDashboardFourBlockDefault from './stories/dashboard/four-block-default
import LwcDashboardFrequentlyFunction from './stories/dashboard/frequently-function/index.js';
import LwcDashboardGoodsOverview from './stories/dashboard/goods-overview/index.js';
import LwcDashboardLatestMembers from './stories/dashboard/latest-members/index.js';
import LwcDashboardPlanCalendar from './stories/dashboard/plan-calendar/index.js';
import LwcDashboardQuickCreate from './stories/dashboard/quick-create/index.js';
import LwcDashboardRankingClientSumAmount from './stories/dashboard/ranking-client-sum-amount/index.js';
import LwcDashboardRankingConversionRate from './stories/dashboard/ranking-conversion-rate/index.js';
......@@ -88,6 +87,7 @@ import LwcUploadImage from './stories/upload/image/index.js';
/* 引入css */
import "./theme-chalk/lib/index.css";
import "./plugins/tailwindcss/index.css";
const components = [
LwcBasicButton,
......@@ -123,7 +123,6 @@ const components = [
LwcDashboardFrequentlyFunction,
LwcDashboardGoodsOverview,
LwcDashboardLatestMembers,
LwcDashboardPlanCalendar,
LwcDashboardQuickCreate,
LwcDashboardRankingClientSumAmount,
LwcDashboardRankingConversionRate,
......@@ -205,7 +204,7 @@ if (typeof window !== 'undefined' && window.Vue) {
}
export default {
version: '0.1.36',
version: '0.1.37',
install,
LwcBasicButton,
LwcBasicButtonIcon,
......@@ -240,7 +239,6 @@ export default {
LwcDashboardFrequentlyFunction,
LwcDashboardGoodsOverview,
LwcDashboardLatestMembers,
LwcDashboardPlanCalendar,
LwcDashboardQuickCreate,
LwcDashboardRankingClientSumAmount,
LwcDashboardRankingConversionRate,
......
......@@ -6,20 +6,20 @@
:style="{ backgroundColor: backgroundColor }"
>
<el-row>
<el-row @click.native="onClick(card)">
<el-row @click.native="onClick($props)">
<!-- 头像 -->
<el-row class="py-1">
<el-col :span="24" class="text-center">
<el-avatar :size="70" :src="card.imageUrl || defaultAvatar"></el-avatar>
<el-avatar :size="70" :src="image || defaultAvatar"></el-avatar>
</el-col>
</el-row>
<!-- 信息行 -->
<el-row class="mt-2">
<el-col :span="24" class="text-center">
<el-col :span="24" class="text-center text-color-primary flex items-center justify-center">
<!-- <slot name="description"></slot> -->
{{ card.displayName || "暂无名称" }}
{{ name }}
<el-divider direction="vertical"></el-divider>
{{ card.level || "暂无级别" }}
<lwc-data-display-badge-text v-bind="badgeStatus"/>
</el-col>
</el-row>
<!-- 分割线 -->
......@@ -30,20 +30,20 @@
</el-row>
<!-- 数据展示 -->
<el-row class="p-1">
<el-col class="text-gray-600 text-left text-base">
<el-col class="text-color-secondary text-left text-base">
<el-row class="mb-1">
账号:
&nbsp;{{ card.name || "暂无" }}
级别:
&nbsp; {{ level }}
</el-row>
<el-row class="mb-1">
状态:
&nbsp;{{ card.status || "暂无" }}
员工号:
&nbsp;{{ empNo || "暂无" }}
</el-row>
</el-col>
</el-row>
</el-row>
<!-- operation -->
<el-row class="absolute inline-block top-0 right-0">
<el-row class="absolute inline-block top-0 right-0" v-if="showAction">
<el-dropdown trigger="click" class="hover-content" @command="handleCommand">
<span class="el-dropdown-link">
<i class="el-icon-more el-icon--right cursor-pointer transform rotate-90"></i>
......@@ -63,7 +63,9 @@
</template>
<script>
import { useDefaultData } from "../../../composables";
import LwcDataDisplayBadgeText from '../../data-display/badge-text';
export default {
components: { LwcDataDisplayBadgeText },
name: "lwc-card-cashier",
setup(props, context) {
const { defaultAvatar } = useDefaultData();
......@@ -75,12 +77,39 @@ export default {
type: String,
default: "#fff",
},
card: {
type: Object,
default() {
return {};
},
name: {
type: String,
default: ""
},
level: {
type: String,
default: ""
},
account: {
type: String,
default: ""
},
status: {
type: [String, Boolean, Number],
default: ""
},
image: {
type: String,
default: ""
},
empNo: {
type: [String, Number],
default: ""
},
showAction: {
type: Boolean,
default: false
},
statusConfig: {
type: Object,
default: () => {}
}
},
computed: {
statusList() {
......@@ -89,15 +118,28 @@ export default {
{ value: 3, label: "锁定" },
{ value: 9, label: "作废" },
];
return _.filter(tmpArrayData, (item) => item.label !== this.card.status);
return _.filter(tmpArrayData, (item) => item.label !== this.status);
},
badgeStatus() {
const def = {
options: [],
visible: () => true,
className: [],
textClassName: [],
}
return {
...def,
value: this.status,
...this.statusConfig
}
}
},
methods: {
onClick(currentValue) {
this.$emit("onClick", currentValue);
},
handleCommand(command) {
this.$emit("onCommand", this.card, command);
this.$emit("onCommand", this.$props, command);
},
},
};
......
......@@ -21,11 +21,20 @@ const BasicTemplate = (args, { argTypes }) => ({
export const Default = BasicTemplate.bind({});
Default.args = {
card: {
name: 9999,
level: 3,
displayName: "王五",
status: 1,
imageUrl: "http://img.leadwaycloud.com/33231c51b869bf787bcdbe6f32dc82a2"
name: "王五",
level: '店长',
status: "ACTIVE",
empNo: "101",
imageUrl: "http://img.leadwaycloud.com/33231c51b869bf787bcdbe6f32dc82a2",
statusConfig: {
options: [{
label: '启用',
type: 'success',
value: "ACTIVE"
}, {
label: '禁用',
type: 'danger',
value: "ACTIVE"
}]
}
};
......@@ -11,12 +11,12 @@
<el-avatar class="w-full h-full" :fit="fit" :size="70" :src="user.image || defaultAvatar"></el-avatar>
</el-col>
<el-col :span="18">
<el-col class="truncate" :span="24">
<el-col class="truncate text-color-primary" :span="24">
{{ user.name || "No Name" }}
<el-divider direction="vertical"></el-divider>
{{ user.categoryName || '无等级' }}
{{ user.categoryName || '普通用户' }}
</el-col>
<el-col :span="24" class="text-gray-600 text-left text-base mt-2">
<el-col :span="24" class="text-color-secondary text-left text-base mt-2">
<el-row class="truncate">
<i class="el-icon-postcard"></i>
&nbsp;{{ user.barcode || '' }}
......@@ -31,7 +31,7 @@
<el-col>
<el-divider class="my-2"></el-divider>
</el-col>
<el-col class="py-2 text-gray-600 text-base text-center">
<el-col class="py-2 text-color-secondary text-base text-center">
<span v-for="(item, index) in user.otherInfo" :key="`other_info_${index}`">
{{ item.label }} {{ item.value }}
<el-divider direction="vertical" v-if="index < user.otherInfo.length - 1"></el-divider>
......
......@@ -11,16 +11,16 @@
<el-col :span="24">
<el-avatar :size="70" :src="user.image || defaultAvatar"></el-avatar>
</el-col>
<el-col :span="24" class="truncate mt-2">
<el-col :span="24" class="truncate mt-2 text-color-primary flex justify-center items-center">
{{ user.name || "No Name" }}
<el-divider direction="vertical"></el-divider>
{{ user.isCompany ? '公司' : '个人' }}
<lwc-data-display-badge-text v-bind="badgeStatus"/>
</el-col>
</el-row>
<el-col>
<el-divider class="my-2"></el-divider>
</el-col>
<el-col class="p-1 text-gray-600 text-left text-base">
<el-col class="p-1 text-color-secondary text-left text-base">
<el-row class="mb-1 truncate">
<i class="el-icon-message"></i>
<span class="ml-2">{{ user.email || '未设置' }}</span>
......@@ -44,8 +44,10 @@
</template>
<script>
import { useDefaultData } from "../../../composables";
import LwcDataDisplayBadgeText from '../../data-display/badge-text';
export default {
name: 'lwc-card-contact',
components: { LwcDataDisplayBadgeText },
setup() {
const { defaultAvatar } = useDefaultData();
return { defaultAvatar }
......@@ -69,6 +71,27 @@ export default {
computed: {
hasDelete() {
return _.indexOf(this.actions, 'delete') !== -1;
},
badgeStatus() {
const def = {
options: [],
visible: () => true,
className: [],
textClassName: [],
}
return {
...def,
value: this.user.isCompany,
options: [{
label: '公司',
value: true,
type: 'primary'
}, {
label: '个人',
value: false,
type: 'warning'
}]
}
}
}
}
......
......@@ -4,7 +4,7 @@
shadow="hover">
<el-row @click.native="onClick(value)">
<el-col :span="24" class="text-base mb-2 flex justify-between items-center">
<span class="over-ellipsis inline-block font-bold">
<span class="over-ellipsis inline-block text-color-primary">
{{ value.name || "暂无名称" }}
</span>
<span class="inline-block">
......@@ -12,7 +12,7 @@
</span>
</el-col>
<el-col :span="24" class="flex justify-between items-center">
<el-col class="text-gray-600 text-sm">
<el-col class="text-color-secondary text-sm">
<el-col class="truncate">
<i class="el-icon-time"></i>&nbsp;
<span v-if="value.startDate && value.endDate"> {{ value.startDate }} ~ {{ value.endDate }} </span>
......@@ -25,7 +25,7 @@
</span>
</el-col>
</el-col>
<el-col class="text-right">
<el-col class="text-right text-color-secondary">
<lwc-currency-money
v-show="!hiddenAmount"
:value="value.amountTotal"
......
......@@ -6,7 +6,7 @@
:body-style="{ padding: '1rem' }"
>
<el-row class="px-2" @click.native="onClick(user)">
<el-row :gutter="32" class="text-center py-1">
<el-row :gutter="32" class="text-center py-1 text-color-primary">
<el-col :span="24">
<el-avatar :size="70" :src="user.image || defaultAvatar"></el-avatar>
</el-col>
......@@ -19,7 +19,7 @@
<el-col>
<el-divider class="my-2"></el-divider>
</el-col>
<el-col class="p-1 text-gray-600 text-left text-base">
<el-col class="p-1 text-color-secondary text-left text-base">
<el-row class="mb-1 truncate">
<i class="el-icon-message"></i>
<span class="ml-2">{{ user.email || '未设置' }}</span>
......
......@@ -10,13 +10,13 @@
</el-row>
<el-divider class="mt-2 mb-2"></el-divider>
<el-row class="px-2 py-2">
<el-col :span="24" class="text-base mb-1 flex justify-between items-center">
<el-col :span="24" class="text-base mb-1 flex justify-between items-center text-color-primary">
<span class="truncate inline-block">
{{ value.name || '暂无名称' }}
</span>
</el-col>
<el-col :span="24" class="flex justify-between items-end">
<el-col :span="20" class="text-gray-600 text-sm">
<el-col :span="20" class="text-color-secondary text-sm">
<el-col>
<span :class="{'line-through': value.price2}">
零售价
......
......@@ -15,13 +15,13 @@
</el-row>
<el-row class="flex flex-col justify-center">
<el-col :span="24" class="text-base mb-1 flex justify-between items-center">
<span class="truncate inline-block">
<span class="truncate inline-block text-color-primary">
{{ value.name || '暂无名称' }}
</span>
</el-col>
<el-col :span="24" class="flex justify-between items-center">
<el-col :span="20" class="text-gray-600 text-sm">
<el-col>
<el-col :span="20" class="text-color-secondary text-sm">
<el-col class="truncate">
货号
<span class="over-ellipsis">{{
value.code || '暂无'
......