Browse Source

富文本

bihuisong 1 năm trước cách đây
mục cha
commit
0081d59c03
76 tập tin đã thay đổi với 1469 bổ sung9515 xóa
  1. 17 6
      pages/knowledge/knowledgeForm.vue
  2. 8 0
      uni_modules/piaoyi-editor/changelog.md
  3. 784 0
      uni_modules/piaoyi-editor/components/piaoyi-editor/color-picker.vue
  4. 123 0
      uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.css
  5. BIN
      uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.ttf
  6. BIN
      uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.woff
  7. BIN
      uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.woff2
  8. 421 0
      uni_modules/piaoyi-editor/components/piaoyi-editor/piaoyi-editor.vue
  9. 15 0
      uni_modules/piaoyi-editor/package.json
  10. 101 0
      uni_modules/piaoyi-editor/readme.md
  11. 0 109
      uni_modules/uni-datetime-picker/changelog.md
  12. 0 187
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue
  13. 0 924
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue
  14. 0 22
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json
  15. 0 8
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js
  16. 0 22
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json
  17. 0 22
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json
  18. 0 45
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js
  19. 0 946
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue
  20. 0 1010
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue
  21. 0 415
      uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js
  22. 0 87
      uni_modules/uni-datetime-picker/package.json
  23. 0 21
      uni_modules/uni-datetime-picker/readme.md
  24. 0 22
      uni_modules/uni-icons/changelog.md
  25. 0 1169
      uni_modules/uni-icons/components/uni-icons/icons.js
  26. 0 96
      uni_modules/uni-icons/components/uni-icons/uni-icons.vue
  27. 0 663
      uni_modules/uni-icons/components/uni-icons/uniicons.css
  28. BIN
      uni_modules/uni-icons/components/uni-icons/uniicons.ttf
  29. 0 86
      uni_modules/uni-icons/package.json
  30. 0 8
      uni_modules/uni-icons/readme.md
  31. 0 27
      uni_modules/uni-pagination/changelog.md
  32. 0 5
      uni_modules/uni-pagination/components/uni-pagination/i18n/en.json
  33. 0 5
      uni_modules/uni-pagination/components/uni-pagination/i18n/es.json
  34. 0 5
      uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json
  35. 0 12
      uni_modules/uni-pagination/components/uni-pagination/i18n/index.js
  36. 0 5
      uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json
  37. 0 5
      uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json
  38. 0 465
      uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue
  39. 0 83
      uni_modules/uni-pagination/package.json
  40. 0 11
      uni_modules/uni-pagination/readme.md
  41. 0 8
      uni_modules/uni-scss/changelog.md
  42. 0 1
      uni_modules/uni-scss/index.scss
  43. 0 82
      uni_modules/uni-scss/package.json
  44. 0 4
      uni_modules/uni-scss/readme.md
  45. 0 7
      uni_modules/uni-scss/styles/index.scss
  46. 0 3
      uni_modules/uni-scss/styles/setting/_border.scss
  47. 0 66
      uni_modules/uni-scss/styles/setting/_color.scss
  48. 0 55
      uni_modules/uni-scss/styles/setting/_radius.scss
  49. 0 56
      uni_modules/uni-scss/styles/setting/_space.scss
  50. 0 167
      uni_modules/uni-scss/styles/setting/_styles.scss
  51. 0 24
      uni_modules/uni-scss/styles/setting/_text.scss
  52. 0 146
      uni_modules/uni-scss/styles/setting/_variables.scss
  53. 0 19
      uni_modules/uni-scss/styles/tools/functions.scss
  54. 0 31
      uni_modules/uni-scss/theme.scss
  55. 0 62
      uni_modules/uni-scss/variables.scss
  56. 0 2
      uni_modules/uni-section/changelog.md
  57. 0 167
      uni_modules/uni-section/components/uni-section/uni-section.vue
  58. 0 87
      uni_modules/uni-section/package.json
  59. 0 8
      uni_modules/uni-section/readme.md
  60. 0 27
      uni_modules/uni-table/changelog.md
  61. 0 455
      uni_modules/uni-table/components/uni-table/uni-table.vue
  62. 0 29
      uni_modules/uni-table/components/uni-tbody/uni-tbody.vue
  63. 0 90
      uni_modules/uni-table/components/uni-td/uni-td.vue
  64. 0 511
      uni_modules/uni-table/components/uni-th/filter-dropdown.vue
  65. 0 285
      uni_modules/uni-table/components/uni-th/uni-th.vue
  66. 0 129
      uni_modules/uni-table/components/uni-thead/uni-thead.vue
  67. 0 179
      uni_modules/uni-table/components/uni-tr/table-checkbox.vue
  68. 0 171
      uni_modules/uni-table/components/uni-tr/uni-tr.vue
  69. 0 9
      uni_modules/uni-table/i18n/en.json
  70. 0 9
      uni_modules/uni-table/i18n/es.json
  71. 0 9
      uni_modules/uni-table/i18n/fr.json
  72. 0 12
      uni_modules/uni-table/i18n/index.js
  73. 0 9
      uni_modules/uni-table/i18n/zh-Hans.json
  74. 0 9
      uni_modules/uni-table/i18n/zh-Hant.json
  75. 0 83
      uni_modules/uni-table/package.json
  76. 0 13
      uni_modules/uni-table/readme.md

+ 17 - 6
pages/knowledge/knowledgeForm.vue

@@ -7,14 +7,16 @@
 					<uni-easyinput v-model="customFormData.titleName" placeholder="请输入标题" />
 				</uni-forms-item>
 				<uni-forms-item label="正文" required name="textDetails">
-					<uni-easyinput v-model="customFormData.textDetails" placeholder="请输入正文" />
+					<!-- <uni-easyinput v-model="customFormData.textDetails" placeholder="请输入正文" /> -->
+					<piaoyiEditor :maxlength="30000" @changes="saveContens" :readOnly="readOnly" :photoUrl="photoUrl"
+						:api="api" :name="name" />
 				</uni-forms-item>
 				<uni-forms-item label="图片" required name="url">
 					<upload :imgArr="imgUrlList" :fileSize="1" :limit="3" @updateImg="updateImg" />
 				</uni-forms-item>
-				<uni-forms-item label="是否热门" required name="integral">
+				<!-- <uni-forms-item label="是否热门" required name="integral">
 					<switch v-model="customFormData.popular" />
-				</uni-forms-item>
+				</uni-forms-item> -->
 				<uni-forms-item label="付费积分" required name="integral">
 					<uni-number-box v-model="customFormData.integral" />
 				</uni-forms-item>
@@ -28,14 +30,19 @@
 	import {
 		addKnowledge
 	} from "@/api/knowledge/knowledge";
-	import upload from '../../components/upload/index.vue'
+	import upload from '../../components/upload/index.vue';
+	import piaoyiEditor from '@/uni_modules/piaoyi-editor/components/piaoyi-editor/piaoyi-editor.vue';
+	import config from '@/config'
 	export default {
 		components: {
-			upload
+			upload,
+			piaoyiEditor
 		},
 		data() {
 			return {
-				html: '<div>Hello World!</div>',
+				api: config.baseUrl + `/common/upload`,
+				// photoUrl: config.baseUrl,
+				readOnly: false,
 				// 基础表单数据
 				baseFormData: {
 					titleName: '',
@@ -70,6 +77,10 @@
 		},
 		created() {},
 		methods: {
+			saveContens(e) {
+				console.log("eeeeeeee", e)
+				this.customFormData.textDetails = e.html
+			},
 			submit(ref) {
 				this.$refs[ref].validate().then(res => {
 					if (res) {

+ 8 - 0
uni_modules/piaoyi-editor/changelog.md

@@ -0,0 +1,8 @@
+## 1.0.9(2024-02-04)
+更新使用文档说明
+## 1.0.8(2023-12-28)
+修改文档使用注意事项
+## 1.0.7(2023-12-05)
+优化
+## 1.0.6(2023-12-05)
+优化

+ 784 - 0
uni_modules/piaoyi-editor/components/piaoyi-editor/color-picker.vue

@@ -0,0 +1,784 @@
+<template>
+	<view v-if="show" class="t-wrapper" @touchmove.stop.prevent="moveHandle">
+		<view class="t-mask" :class="{active:active}" @click.stop="close"></view>
+		<view class="t-box" :class="{active:active}">
+			<view class="t-header">
+				<view class="t-header-button" @click="close">取消</view>
+				<view class="t-header-button" @click="confirm">确认</view>
+			</view>
+			<view class="t-color__box" :style="{ background: 'rgb(' + bgcolor.r + ',' + bgcolor.g + ',' + bgcolor.b + ')'}">
+				<view class="t-background boxs" @touchstart="touchstart($event, 0)" @touchmove="touchmove($event, 0)" @touchend="touchend($event, 0)">
+					<view class="t-color-mask"></view>
+					<view class="t-pointer" :style="{ top: site[0].top - 8 + 'px', left: site[0].left - 8 + 'px' }"></view>
+				</view>
+			</view>
+			<view class="t-control__box">
+				<view class="t-control__color">
+					<view class="t-control__color-content" :style="{ background: 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + rgba.a + ')' }"></view>
+				</view>
+				<view class="t-control-box__item">
+					<view class="t-controller boxs" @touchstart="touchstart($event, 1)" @touchmove="touchmove($event, 1)" @touchend="touchend($event, 1)">
+						<view class="t-hue">
+							<view class="t-circle" :style="{ left: site[1].left - 12 + 'px' }"></view>
+						</view>
+					</view>
+					<view class="t-controller boxs" @touchstart="touchstart($event, 2)" @touchmove="touchmove($event, 2)" @touchend="touchend($event, 2)">
+						<view class="t-transparency">
+							<view class="t-circle" :style="{ left: site[2].left - 12 + 'px' }"></view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="t-result__box">
+				<view v-if="mode" class="t-result__item">
+					<view class="t-result__box-input">{{hex}}</view>
+					<view class="t-result__box-text">HEX</view>
+				</view>
+				<template v-else>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.r}}</view>
+						<view class="t-result__box-text">R</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.g}}</view>
+						<view class="t-result__box-text">G</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.b}}</view>
+						<view class="t-result__box-text">B</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.a}}</view>
+						<view class="t-result__box-text">A</view>
+					</view>
+				</template>
+
+				<view class="t-result__item t-select" @click="select">
+					<view class="t-result__box-input">
+						<view>切换</view>
+						<view>模式</view>
+					</view>
+				</view>
+			</view>
+			<view class="t-alternative">
+				<view class="t-alternative__item" v-for="(item,index) in colorList" :key="index">
+					<view class="t-alternative__item-content" :style="{ background: 'rgba(' + item.r + ',' + item.g + ',' + item.b + ',' + item.a + ')' }"
+					 @click="selectColor(item)">
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			color: {
+				type: Object,
+				default () {
+					return {
+						r: 0,
+						g: 0,
+						b: 0,
+						a: 0
+					}
+				}
+			},
+			spareColor: {
+				type: Array,
+				default () {
+					return []
+				}
+			}
+		},
+		data() {
+			return {
+				show: false,
+				active: false,
+				// rgba 颜色
+				rgba: {
+					r: 0,
+					g: 0,
+					b: 0,
+					a: 1
+				},
+				// hsb 颜色
+				hsb: {
+					h: 0,
+					s: 0,
+					b: 0
+				},
+				site: [{
+					top: 0,
+					left: 0
+				}, {
+					left: 0
+				}, {
+					left: 0
+				}],
+				index: 0,
+				bgcolor: {
+					r: 255,
+					g: 0,
+					b: 0,
+					a: 1
+				},
+				hex: '#000000',
+				mode: true,
+				colorList: [{
+					r: 244,
+					g: 67,
+					b: 54,
+					a: 1
+				}, {
+					r: 233,
+					g: 30,
+					b: 99,
+					a: 1
+				}, {
+					r: 156,
+					g: 39,
+					b: 176,
+					a: 1
+				}, {
+					r: 103,
+					g: 58,
+					b: 183,
+					a: 1
+				}, {
+					r: 63,
+					g: 81,
+					b: 181,
+					a: 1
+				}, {
+					r: 33,
+					g: 150,
+					b: 243,
+					a: 1
+				}, {
+					r: 3,
+					g: 169,
+					b: 244,
+					a: 1
+				}, {
+					r: 0,
+					g: 188,
+					b: 212,
+					a: 1
+				}, {
+					r: 0,
+					g: 150,
+					b: 136,
+					a: 1
+				}, {
+					r: 76,
+					g: 175,
+					b: 80,
+					a: 1
+				}, {
+					r: 139,
+					g: 195,
+					b: 74,
+					a: 1
+				}, {
+					r: 205,
+					g: 220,
+					b: 57,
+					a: 1
+				}, {
+					r: 255,
+					g: 235,
+					b: 59,
+					a: 1
+				}, {
+					r: 255,
+					g: 193,
+					b: 7,
+					a: 1
+				}, {
+					r: 255,
+					g: 152,
+					b: 0,
+					a: 1
+				}, {
+					r: 255,
+					g: 87,
+					b: 34,
+					a: 1
+				}, {
+					r: 121,
+					g: 85,
+					b: 72,
+					a: 1
+				}, {
+					r: 158,
+					g: 158,
+					b: 158,
+					a: 1
+				}, {
+					r: 0,
+					g: 0,
+					b: 0,
+					a: 0.5
+				}, {
+					r: 0,
+					g: 0,
+					b: 0,
+					a: 0
+				}, ]
+			};
+		},
+		created() {
+			this.rgba = this.color;
+			if (this.spareColor.length !== 0) {
+				this.colorList = this.spareColor;
+			}
+		},
+		methods: {
+			/**
+			 * 初始化
+			 */
+			init() {
+				// hsb 颜色
+				this.hsb = this.rgbToHex(this.rgba);
+				// this.setColor();
+				this.setValue(this.rgba);
+			},
+			moveHandle() {},
+			open() {
+				this.show = true;
+				this.$nextTick(() => {
+					this.init();
+					setTimeout(() => {
+						this.active = true;
+						setTimeout(() => {
+							this.getSelectorQuery();
+						}, 350)
+					}, 50)
+				})
+
+			},
+			close() {
+				this.active = false;
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.show = false;
+					}, 500)
+				})
+			},
+			confirm() {
+				this.close();
+				this.$emit('confirm', {
+					rgba: this.rgba,
+					hex: this.hex
+				})
+			},
+			// 选择模式
+			select() {
+				this.mode = !this.mode
+			},
+			// 常用颜色选择
+			selectColor(item) {
+				this.setColorBySelect(item)
+			},
+			touchstart(e, index) {
+				const {
+					pageX,
+					pageY
+				} = e.touches[0];
+				this.pageX = pageX;
+				this.pageY = pageY;
+				this.setPosition(pageX, pageY, index);
+			},
+			touchmove(e, index) {
+				const {
+					pageX,
+					pageY
+				} = e.touches[0];
+				this.moveX = pageX;
+				this.moveY = pageY;
+				this.setPosition(pageX, pageY, index);
+			},
+			touchend(e, index) {},
+			/**
+			 * 设置位置
+			 */
+			setPosition(x, y, index) {
+				this.index = index;
+				const {
+					top,
+					left,
+					width,
+					height
+				} = this.position[index];
+				// 设置最大最小值
+
+				this.site[index].left = Math.max(0, Math.min(parseInt(x - left), width));
+				if (index === 0) {
+					this.site[index].top = Math.max(0, Math.min(parseInt(y - top), height));
+					// 设置颜色
+					this.hsb.s = parseInt((100 * this.site[index].left) / width);
+					this.hsb.b = parseInt(100 - (100 * this.site[index].top) / height);
+					this.setColor();
+					this.setValue(this.rgba);
+				} else {
+					this.setControl(index, this.site[index].left);
+				}
+			},
+			/**
+			 * 设置 rgb 颜色
+			 */
+			setColor() {
+				const rgb = this.HSBToRGB(this.hsb);
+				this.rgba.r = rgb.r;
+				this.rgba.g = rgb.g;
+				this.rgba.b = rgb.b;
+			},
+			/**
+			 * 设置二进制颜色
+			 * @param {Object} rgb
+			 */
+			setValue(rgb) {
+				this.hex = '#' + this.rgbToHex(rgb);
+			},
+			setControl(index, x) {
+				const {
+					top,
+					left,
+					width,
+					height
+				} = this.position[index];
+
+				if (index === 1) {
+					this.hsb.h = parseInt((360 * x) / width);
+					this.bgcolor = this.HSBToRGB({
+						h: this.hsb.h,
+						s: 100,
+						b: 100
+					});
+					this.setColor()
+				} else {
+					this.rgba.a = (x / width).toFixed(1);
+				}
+				this.setValue(this.rgba);
+			},
+			/**
+			 * rgb 转 二进制 hex
+			 * @param {Object} rgb
+			 */
+			rgbToHex(rgb) {
+				let hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];
+				hex.map(function(str, i) {
+					if (str.length == 1) {
+						hex[i] = '0' + str;
+					}
+				});
+				return hex.join('');
+			},
+			setColorBySelect(getrgb) {
+				const {
+					r,
+					g,
+					b,
+					a
+				} = getrgb;
+				let rgb = {}
+				rgb = {
+					r: r ? parseInt(r) : 0,
+					g: g ? parseInt(g) : 0,
+					b: b ? parseInt(b) : 0,
+					a: a ? a : 0,
+				};
+				this.rgba = rgb;
+				this.hsb = this.rgbToHsb(rgb);
+				this.changeViewByHsb();
+			},
+			changeViewByHsb() {
+				const [a, b, c] = this.position;
+				this.site[0].left = parseInt(this.hsb.s * a.width / 100);
+				this.site[0].top = parseInt((100 - this.hsb.b) * a.height / 100);
+				this.setColor(this.hsb.h);
+				this.setValue(this.rgba);
+				this.bgcolor = this.HSBToRGB({
+					h: this.hsb.h,
+					s: 100,
+					b: 100
+				});
+
+				this.site[1].left = this.hsb.h / 360 * b.width;
+				this.site[2].left = this.rgba.a * c.width;
+
+			},
+			/**
+			 * hsb 转 rgb
+			 * @param {Object} 颜色模式  H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度
+			 */
+			HSBToRGB(hsb) {
+				let rgb = {};
+				let h = Math.round(hsb.h);
+				let s = Math.round((hsb.s * 255) / 100);
+				let v = Math.round((hsb.b * 255) / 100);
+				if (s == 0) {
+					rgb.r = rgb.g = rgb.b = v;
+				} else {
+					let t1 = v;
+					let t2 = ((255 - s) * v) / 255;
+					let t3 = ((t1 - t2) * (h % 60)) / 60;
+					if (h == 360) h = 0;
+					if (h < 60) {
+						rgb.r = t1;
+						rgb.b = t2;
+						rgb.g = t2 + t3;
+					} else if (h < 120) {
+						rgb.g = t1;
+						rgb.b = t2;
+						rgb.r = t1 - t3;
+					} else if (h < 180) {
+						rgb.g = t1;
+						rgb.r = t2;
+						rgb.b = t2 + t3;
+					} else if (h < 240) {
+						rgb.b = t1;
+						rgb.r = t2;
+						rgb.g = t1 - t3;
+					} else if (h < 300) {
+						rgb.b = t1;
+						rgb.g = t2;
+						rgb.r = t2 + t3;
+					} else if (h < 360) {
+						rgb.r = t1;
+						rgb.g = t2;
+						rgb.b = t1 - t3;
+					} else {
+						rgb.r = 0;
+						rgb.g = 0;
+						rgb.b = 0;
+					}
+				}
+				return {
+					r: Math.round(rgb.r),
+					g: Math.round(rgb.g),
+					b: Math.round(rgb.b)
+				};
+			},
+			rgbToHsb(rgb) {
+				let hsb = {
+					h: 0,
+					s: 0,
+					b: 0
+				};
+				let min = Math.min(rgb.r, rgb.g, rgb.b);
+				let max = Math.max(rgb.r, rgb.g, rgb.b);
+				let delta = max - min;
+				hsb.b = max;
+				hsb.s = max != 0 ? 255 * delta / max : 0;
+				if (hsb.s != 0) {
+					if (rgb.r == max) hsb.h = (rgb.g - rgb.b) / delta;
+					else if (rgb.g == max) hsb.h = 2 + (rgb.b - rgb.r) / delta;
+					else hsb.h = 4 + (rgb.r - rgb.g) / delta;
+				} else hsb.h = -1;
+				hsb.h *= 60;
+				if (hsb.h < 0) hsb.h = 0;
+				hsb.s *= 100 / 255;
+				hsb.b *= 100 / 255;
+				return hsb;
+			},
+			getSelectorQuery() {
+				const views = uni.createSelectorQuery().in(this);
+				views
+					.selectAll('.boxs')
+					.boundingClientRect(data => {
+						if (!data || data.length === 0) {
+							setTimeout(() => this.getSelectorQuery(), 20)
+							return
+						}
+						this.position = data;
+						// this.site[0].top = data[0].height;
+						// this.site[0].left = 0;
+						// this.site[1].left = data[1].width;
+						// this.site[2].left = data[2].width;
+						this.setColorBySelect(this.rgba);
+					})
+					.exec();
+			}
+		},
+		watch: {
+			spareColor(newVal) {
+				this.colorList = newVal;
+			}
+		}
+	};
+</script>
+
+<style>
+	.t-wrapper {
+		position: fixed;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		box-sizing: border-box;
+		z-index: 9999;
+	}
+
+	.t-box {
+		width: 100%;
+		position: absolute;
+		bottom: 0;
+		padding: 30upx 0;
+		padding-top: 0;
+		background: #fff;
+		transition: all 0.3s;
+		transform: translateY(100%);
+	}
+
+	.t-box.active {
+		transform: translateY(0%);
+	}
+
+	.t-header {
+		display: flex;
+		justify-content: space-between;
+		width: 100%;
+		height: 100upx;
+		border-bottom: 1px #eee solid;
+		box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+		background: #fff;
+	}
+
+	.t-header-button {
+		display: flex;
+		align-items: center;
+		width: 150upx;
+		height: 100upx;
+		font-size: 30upx;
+		color: #666;
+		padding-left: 20upx;
+	}
+
+	.t-header-button:last-child {
+		justify-content: flex-end;
+		padding-right: 20upx;
+	}
+
+	.t-mask {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.6);
+		z-index: -1;
+		transition: all 0.3s;
+		opacity: 0;
+	}
+
+	.t-mask.active {
+		opacity: 1;
+	}
+
+	.t-color__box {
+		position: relative;
+		height: 400upx;
+		background: rgb(255, 0, 0);
+		overflow: hidden;
+		box-sizing: border-box;
+		margin: 0 20upx;
+		margin-top: 20upx;
+		box-sizing: border-box;
+	}
+
+	.t-background {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0));
+	}
+
+	.t-color-mask {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		width: 100%;
+		height: 400upx;
+		background: linear-gradient(to top, #000, rgba(0, 0, 0, 0));
+	}
+
+	.t-pointer {
+		position: absolute;
+		bottom: -8px;
+		left: -8px;
+		z-index: 2;
+		width: 15px;
+		height: 15px;
+		border: 1px #fff solid;
+		border-radius: 50%;
+	}
+
+	.t-show-color {
+		width: 100upx;
+		height: 50upx;
+	}
+
+	.t-control__box {
+		margin-top: 50upx;
+		width: 100%;
+		display: flex;
+		padding-left: 20upx;
+		box-sizing: border-box;
+	}
+
+	.t-control__color {
+		flex-shrink: 0;
+		width: 100upx;
+		height: 100upx;
+		border-radius: 50%;
+		background-color: #fff;
+		background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+			linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		background-size: 36upx 36upx;
+		background-position: 0 0, 18upx 18upx;
+		border: 1px #eee solid;
+		overflow: hidden;
+	}
+
+	.t-control__color-content {
+		width: 100%;
+		height: 100%;
+	}
+
+	.t-control-box__item {
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+		width: 100%;
+		padding: 0 30upx;
+	}
+
+	.t-controller {
+		position: relative;
+		width: 100%;
+		height: 16px;
+		background-color: #fff;
+		background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+			linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		background-size: 32upx 32upx;
+		background-position: 0 0, 16upx 16upx;
+	}
+
+	.t-hue {
+		width: 100%;
+		height: 100%;
+		background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);
+	}
+
+	.t-transparency {
+		width: 100%;
+		height: 100%;
+		background: linear-gradient(to right, rgba(0, 0, 0, 0) 0%, rgb(0, 0, 0));
+	}
+
+	.t-circle {
+		position: absolute;
+		/* right: -10px; */
+		top: -2px;
+		width: 20px;
+		height: 20px;
+		box-sizing: border-box;
+		border-radius: 50%;
+		background: #fff;
+		box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.1);
+	}
+
+	.t-result__box {
+		margin-top: 20upx;
+		padding: 10upx;
+		width: 100%;
+		display: flex;
+		box-sizing: border-box;
+	}
+
+	.t-result__item {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		padding: 10upx;
+		width: 100%;
+		box-sizing: border-box;
+	}
+
+	.t-result__box-input {
+		padding: 10upx 0;
+		width: 100%;
+		font-size: 28upx;
+		box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1);
+		color: #999;
+		text-align: center;
+		background: #fff;
+	}
+
+	.t-result__box-text {
+		margin-top: 10upx;
+		font-size: 28upx;
+		line-height: 2;
+	}
+
+	.t-select {
+		flex-shrink: 0;
+		width: 150upx;
+		padding: 0 30upx;
+	}
+
+	.t-select .t-result__box-input {
+		border-radius: 10upx;
+		border: none;
+		color: #999;
+		box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.1);
+		background: #fff;
+	}
+
+	.t-select .t-result__box-input:active {
+		box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.1);
+	}
+
+	.t-alternative {
+		display: flex;
+		flex-wrap: wrap;
+		/* justify-content: space-between; */
+		width: 100%;
+		padding-right: 10upx;
+		box-sizing: border-box;
+	}
+
+	.t-alternative__item {
+		margin-left: 12upx;
+		margin-top: 10upx;
+		width: 50upx;
+		height: 50upx;
+		border-radius: 10upx;
+		background-color: #fff;
+		background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+			linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		background-size: 36upx 36upx;
+		background-position: 0 0, 18upx 18upx;
+		border: 1px #eee solid;
+		overflow: hidden;
+	}
+
+	.t-alternative__item-content {
+		width: 50upx;
+		height: 50upx;
+		background: rgba(255, 0, 0, 0.5);
+	}
+
+	.t-alternative__item:active {
+		transition: all 0.3s;
+		transform: scale(1.1);
+	}
+</style>

+ 123 - 0
uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.css

@@ -0,0 +1,123 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 4040150 */
+  src: url('iconfont.woff2?t=1682491617906') format('woff2'),
+       url('iconfont.woff?t=1682491617906') format('woff'),
+       url('iconfont.ttf?t=1682491617906') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-checklist:before {
+  content: "\e600";
+}
+
+.icon-zitiyanse:before {
+  content: "\e646";
+}
+
+.icon-formatheader1:before {
+  content: "\e860";
+}
+
+.icon-formatheader2:before {
+  content: "\e861";
+}
+
+.icon-undo:before {
+  content: "\e787";
+}
+
+.icon-redo:before {
+  content: "\e788";
+}
+
+.icon-indent:before {
+  content: "\e7f3";
+}
+
+.icon-outdent:before {
+  content: "\e7f4";
+}
+
+.icon-zitijiacu:before {
+  content: "\ec83";
+}
+
+.icon-zuoyouduiqi:before {
+  content: "\ec87";
+}
+
+.icon-Character-Spacing:before {
+  content: "\ed91";
+}
+
+.icon-format:before {
+  content: "\e6da";
+}
+
+.icon-font-size:before {
+  content: "\e7b9";
+}
+
+.icon-duanhouju:before {
+  content: "\e61a";
+}
+
+.icon-duanqianju:before {
+  content: "\e61b";
+}
+
+.icon-shanchuxian:before {
+  content: "\e602";
+}
+
+.icon-charutupian:before {
+  content: "\e603";
+}
+
+.icon-fengexian:before {
+  content: "\e60e";
+}
+
+.icon-juzhongduiqi:before {
+  content: "\e620";
+}
+
+.icon-wuxupailie:before {
+  content: "\e63e";
+}
+
+.icon-youduiqi:before {
+  content: "\e64b";
+}
+
+.icon-youxupailie:before {
+  content: "\e64c";
+}
+
+.icon-zitixiahuaxian:before {
+  content: "\e657";
+}
+
+.icon-zitixieti:before {
+  content: "\e658";
+}
+
+.icon-zuoduiqi:before {
+  content: "\e65a";
+}
+
+.icon-LineHeight:before {
+  content: "\e624";
+}
+
+.icon-editor-background-color:before {
+  content: "\e829";
+}
+

BIN
uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.ttf


BIN
uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.woff


BIN
uni_modules/piaoyi-editor/components/piaoyi-editor/iconfont.woff2


+ 421 - 0
uni_modules/piaoyi-editor/components/piaoyi-editor/piaoyi-editor.vue

@@ -0,0 +1,421 @@
+<template>
+	<view class="container-editor">
+		<view class="textarea">
+			<view class="page-body">
+				<view class='wrapper'>
+					<PickerColor ref="colorPicker" :color="{r: 255,g: 0,b: 0,a: 0.6}" @confirm="confirm"></PickerColor>
+					<view class='toolbar' @tap="format">
+						<view :class="formats.fontSize === '24px' ? 'ql-active' : ''" class="iconfont icon-font-size"
+							data-name="fontSize" data-value="24px"></view>
+						<view :class="formats.color? 'ql-active' : ''" class="iconfont icon-zitiyanse" data-name="color" :data-value="formats.color">
+						</view>
+						<view :class="formats.header === 1 ? 'ql-active' : ''" class="iconfont icon-formatheader1"
+							data-name="header" :data-value="1"></view>
+						<view :class="formats.header === 2 ? 'ql-active' : ''" class="iconfont icon-formatheader2"
+							data-name="header" :data-value="2"></view>
+						<view :class="formats.bold ? 'ql-active' : ''" class="iconfont icon-zitijiacu" data-name="bold">
+						</view>
+						<view :class="formats.italic ? 'ql-active' : ''" class="iconfont icon-zitixieti"
+							data-name="italic"></view>
+						<view :class="formats.underline ? 'ql-active' : ''" class="iconfont icon-zitixiahuaxian"
+							data-name="underline"></view>
+						<view :class="formats.strike ? 'ql-active' : ''" class="iconfont icon-shanchuxian"
+							data-name="strike"></view>
+						<view :class="formats.align === 'left' ? 'ql-active' : ''" class="iconfont icon-zuoduiqi"
+							data-name="align" data-value="left"></view>
+						<view :class="formats.align === 'center' ? 'ql-active' : ''" class="iconfont icon-juzhongduiqi"
+							data-name="align" data-value="center"></view>
+						<view :class="formats.align === 'right' ? 'ql-active' : ''" class="iconfont icon-youduiqi"
+							data-name="align" data-value="right"></view>
+						<view :class="formats.align === 'justify' ? 'ql-active' : ''" class="iconfont icon-zuoyouduiqi"
+							data-name="align" data-value="justify"></view>
+						<view :class="formats.lineHeight ? 'ql-active' : ''" class="iconfont icon-LineHeight"
+							data-name="lineHeight" data-value="2"></view>
+						<view :class="formats.letterSpacing ? 'ql-active' : ''" class="iconfont icon-Character-Spacing"
+							data-name="letterSpacing" data-value="2em">
+						</view>
+						<view :class="formats.marginTop ? 'ql-active' : ''" class="iconfont icon-duanqianju"
+							data-name="marginTop" data-value="10px"></view>
+						<view :class="formats.previewarginBottom ? 'ql-active' : ''" class="iconfont icon-duanhouju"
+							data-name="marginBottom" data-value="10px"></view>
+						<!-- <view class="iconfont icon-rili4" @tap="insertDate"></view> -->
+						<view class="iconfont icon-checklist" data-name="list" data-value="check"></view>
+						<view :class="formats.list === 'ordered' ? 'ql-active' : ''" class="iconfont icon-youxupailie"
+							data-name="list" data-value="ordered"></view>
+						<view :class="formats.list === 'bullet' ? 'ql-active' : ''" class="iconfont icon-wuxupailie"
+							data-name="list" data-value="bullet"></view>
+						<view class="iconfont icon-outdent" data-name="indent" data-value="-1"></view>
+						<view class="iconfont icon-indent" data-name="indent" data-value="+1"></view>
+						<view class="iconfont icon-fengexian" @tap="insertDivider"></view>
+						<view class="iconfont icon-charutupian" @tap="insertImage"></view>
+						<view class="iconfont icon-undo" @tap="undo"></view>
+						<view class="iconfont icon-redo" @tap="redo"></view>
+						<view class="iconfont icon-format" @tap="clear"></view>
+					</view>
+					<editor id="editor" class="editor" placeholder="开始输入..." showImgSize showImgToolbar showImgResize
+						@statuschange="onStatusChange" :read-only="readOnly" @ready="onEditorReady"
+						@input="saveContens">
+					</editor>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import PickerColor from "./color-picker.vue"
+	import config from '@/config'
+	export default {
+		components: {
+			PickerColor
+		},
+		props: {
+			api: {
+				type: String,
+				default: '',
+			},
+			photoUrl: {
+				type: String,
+				default: ''
+			},
+			values: {
+				type: String,
+				default: ''
+			},
+			readOnly: {
+				type: Boolean,
+				default: false
+			},
+			maxlength: {
+				type: Number,
+				default: 300
+			},
+			name: {
+				type: String,
+				default: 'file'
+			}
+		},
+		data() {
+			return {
+				currentTab: 0,
+				curColor: '#000000',
+				show: true,
+				hdid: "",
+				myHtml: "",
+				formats: {},
+			}
+		},
+		methods: {
+			showPicker() {
+				this.$refs.colorPicker.open()
+			},
+			confirm(e) {
+				this.editorCtx.format('color', e.hex)
+			},
+			saveContens() {
+				let that = this;
+				let maxlength = parseInt(that.maxlength);
+				that.editorCtx.getContents({
+					success: function(res) {
+						let html_text = res.html;
+						let html_length = html_text.length;
+						if (html_length > maxlength) {
+							uni.showModal({
+								title: '最多只能输入' + maxlength + '字',
+								confirmText: '确定',
+								showCancel: false,
+								success(res) {
+									that.$emit("changes", {
+										html: res.html,
+										length: html_length
+									});
+								}
+							});
+						} else {
+							that.$emit("changes", {
+								html: res.html,
+								length: html_length
+							});
+						}
+					},
+				})
+			},
+			update() {
+				//获取一下是否有数据
+				let that = this;
+				setTimeout(() => {
+					that.editorCtx.setContents({
+						"html": that.values
+					});
+				}, 1000)
+			},
+			onEditorReady() {
+				let that = this;
+				console.log(uni.createSelectorQuery().in(this).select('#editor'))
+				uni.createSelectorQuery().in(this).select('#editor').context((res) => {
+					that.editorCtx = res.context;
+					that.update();
+				}).exec((result) => {});
+			},
+			undo() {
+				this.editorCtx.undo()
+			},
+			redo() {
+				this.editorCtx.redo()
+			},
+			format(e) {
+				let {
+					name,
+					value
+				} = e.target.dataset
+				if (!name) return
+				if (name == 'color') {
+					this.showPicker()
+				} else {
+					this.editorCtx.format(name, value)
+				}
+			},
+			onStatusChange(e) {
+				const formats = e.detail
+				this.formats = formats
+			},
+			insertDivider() {
+				this.editorCtx.insertDivider();
+			},
+			clear() {
+				this.editorCtx.clear();
+				this.$emit()
+			},
+			insertDate() {
+				const date = new Date()
+				const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
+				this.editorCtx.insertText({
+					text: formatDate
+				})
+			},
+			insertImage() {
+				let that = this;
+				// #ifdef APP-PLUS || H5
+				uni.chooseImage({
+					count: 1, //默认9
+					sizeType: ['original'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['album'], //从相册或者相机选择
+					success: (res) => {
+						const tempFilePaths = res.tempFilePaths[0]
+						if (!this.api || !this.photoUrl) {
+							that.editorCtx.insertImage({
+								src: tempFilePaths,
+								alt: '图像',
+								success: function() {}
+							})
+							uni.showToast({
+								title: '未传入api字段或者photoUrl字段,此为临时图片路径',
+								duration: 3000,
+								icon: 'none'
+							})
+						} else {
+							uni.uploadFile({
+								url: this.photoUrl + this.api,
+								filePath: tempFilePaths,
+								name: this.name,
+								formData: {},
+								success: (uploadFileRes) => {
+									var obj = JSON.parse(uploadFileRes.data)
+									if (obj.code == 200) {
+										this.img = this.photoUrl + '/' + obj.data
+										wx.showToast({
+											title: obj.msg,
+											icon: 'none'
+										})
+										this.editorCtx.insertImage({
+											src: this.img,
+											alt: '图像',
+											success: function() {}
+										})
+									} else {
+										wx.showToast({
+											title: obj.msg,
+											icon: 'none'
+										})
+									}
+								}
+							});
+						}
+					},
+					fail() {
+						uni.showToast({
+							title: '未授权访问相册权限,请授权后使用',
+							icon: 'none'
+						})
+					}
+				});
+				// #endif
+				// #ifdef MP
+				uni.chooseMedia({
+					count: 1,
+					mediaType: ['image'],
+					sourceType: ['album'],
+					sizeType: 'compressed',
+					success: (chooseImageRes) => {
+						console.log("this.api",this.api)
+						console.log("this.photoUrl",this.photoUrl)
+						const tempFilePaths = chooseImageRes.tempFiles[0].tempFilePath;
+						console.log(tempFilePaths)
+						if (!this.api || !this.photoUrl) {
+							that.editorCtx.insertImage({
+								src: tempFilePaths,
+								alt: '图像',
+								success: function() {}
+							})
+							// uni.showToast({
+							// 	title: '未传入api字段或者photoUrl字段,此为临时图片路径',
+							// 	duration: 3000,
+							// 	icon: 'none'
+							// })
+						} else {
+							uni.uploadFile({
+								url: this.photoUrl + this.api,
+								filePath: tempFilePaths,
+								name: this.name,
+								formData: {},
+								success: (uploadFileRes) => {
+									var obj = JSON.parse(uploadFileRes.data)
+									if (obj.code == 200) {
+										this.img = path + '/' + obj.data
+										wx.showToast({
+											title: obj.msg,
+											icon: 'none'
+										})
+										this.editorCtx.insertImage({
+											src: this.img,
+											alt: '图像',
+											success: function() {}
+										})
+									} else {
+										wx.showToast({
+											title: obj.msg,
+											icon: 'none'
+										})
+									}
+								},
+								fail(err) {
+									console.log(err)
+									uni.showToast({
+										title: err.errMsg,
+										icon: 'none'
+									})
+								}
+							});
+						}
+					}
+				})
+				// #endif
+			}
+		}
+	}
+</script>
+
+<style>
+	@import url('iconfont.css');
+
+	.tabs {
+		display: flex;
+		justify-content: space-around;
+		background-color: #FFFFFF;
+	}
+
+	.tabs .current {
+		border-bottom: 2px solid #0369D6;
+	}
+
+	.tabs .tab {
+		font-size: 32upx;
+	}
+
+	.main {
+		padding: 20upx;
+		background-color: #FFFFFF;
+	}
+
+	.main .item {
+		display: flex;
+		justify-content: space-between;
+		line-height: 80upx;
+		border-bottom: 1px solid #F2F2F2;
+	}
+
+	.main .item .left {
+		min-width: 200upx;
+	}
+
+	.main .title {
+		padding-bottom: 20upx;
+		font-weight: bold;
+		border-bottom: 1px solid #F2F2F2;
+	}
+
+	.main .textarea {
+		border: 1px solid #F2F2F2;
+	}
+
+	.wrapper {
+		padding: 0 10upx;
+	}
+
+	.iconfont {
+		display: inline-block;
+		width: 9%;
+		cursor: pointer;
+		font-size: 40upx !important;
+		text-align: center;
+		padding: 10upx 0;
+	}
+
+	.icon-rili4 {
+		font-size: 48upx !important;
+	}
+
+	.icon-duanqianju,
+	.icon-duanhouju,
+	.icon-zitijiacu,
+	.icon-zitixieti,
+	.icon-zitixiahuaxian,
+	.icon-shanchuxian {
+		font-size: 36upx !important;
+	}
+
+	.toolbar {
+		box-sizing: border-box;
+		border-bottom: 0;
+		margin-bottom: 10upx;
+	}
+
+	.ql-container {
+		box-sizing: border-box;
+		width: 100%;
+		min-height: 300upx;
+		height: auto;
+		background: #fff;
+		font-size: 32upx;
+		line-height: 1;
+		padding-bottom: 60upx;
+	}
+
+	/deep/ .ql-editor.ql-blank:before {
+		font-size: 28upx;
+		font-style: inherit;
+	}
+
+	.ql-active {
+		color: #ff0000;
+	}
+
+	button {
+		width: 150upx;
+		font-size: 30upx;
+	}
+
+	.editor {
+		color: #333;
+	}
+</style>

+ 15 - 0
uni_modules/piaoyi-editor/package.json

@@ -0,0 +1,15 @@
+{
+    "id": "piaoyi-editor",
+    "name": "多功能富文本编辑器",
+    "displayName": "多功能富文本编辑器",
+    "version": "1.0.9",
+    "description": "富文本编辑器,内置上传图片以及更改颜色, 多样化等功能",
+    "keywords": [
+        "富文本编辑器",
+        "上传图片",
+        "字体颜色"
+    ],
+    "dcloudext": {
+        "type": "component-vue"
+    }
+}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 101 - 0
uni_modules/piaoyi-editor/readme.md


+ 0 - 109
uni_modules/uni-datetime-picker/changelog.md

@@ -1,109 +0,0 @@
-## 2.2.14(2023-01-30)
-- 修复 某些情况切换月份错误问题
-## 2.2.13(2023-01-10)
-- 修复 多次加载组件造成内存占用的 bug
-## 2.2.12(2022-12-01)
-- 修复 vue3 下 i18n 国际化初始值不正确的 bug
-## 2.2.11(2022-09-19)
-- 修复,支付宝小程序样式错乱,[详情](https://github.com/dcloudio/uni-app/issues/3861)
-## 2.2.10(2022-09-19)
-- 修复,反向选择日期范围,日期显示异常,[详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
-## 2.2.9(2022-09-16)
-- 可以使用 uni-scss 控制主题色
-## 2.2.8(2022-09-08)
-- 修复 close事件无效的 bug
-## 2.2.7(2022-09-05)
-- 修复 移动端 maskClick 无效的 bug,详见:[https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false](https://ask.dcloud.net.cn/question/140824?item_id=209458&rf=false)
-## 2.2.6(2022-06-30)
-- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
-## 2.2.5(2022-06-24)
-- 修复 日历顶部年月及底部确认未国际化 bug
-## 2.2.4(2022-03-31)
-- 修复 Vue3 下动态赋值,单选类型未响应的 bug
-## 2.2.3(2022-03-28)
-- 修复 Vue3 下动态赋值未响应的 bug
-## 2.2.2(2021-12-10)
-- 修复 clear-icon 属性在小程序平台不生效的 bug
-## 2.2.1(2021-12-10)
-- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的 bug
-## 2.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
-## 2.1.5(2021-11-09)
-- 新增 提供组件设计资源,组件样式调整
-## 2.1.4(2021-09-10)
-- 修复 hide-second 在移动端的 bug
-- 修复 单选赋默认值时,赋值日期未高亮的 bug
-- 修复 赋默认值时,移动端未正确显示时间的 bug
-## 2.1.3(2021-09-09)
-- 新增 hide-second 属性,支持只使用时分,隐藏秒
-## 2.1.2(2021-09-03)
-- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
-- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
-- 优化 调整字号大小,美化日历界面
-- 修复 因国际化导致的 placeholder 失效的 bug
-## 2.1.1(2021-08-24)
-- 新增 支持国际化
-- 优化 范围选择器在 pc 端过宽的问题
-## 2.1.0(2021-08-09)
-- 新增 适配 vue3
-## 2.0.19(2021-08-09)
-- 新增 支持作为 uni-forms 子组件相关功能
-- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的 bug
-## 2.0.18(2021-08-05)
-- 修复 type 属性动态赋值无效的 bug
-- 修复 ‘确认’按钮被 tabbar 遮盖 bug
-- 修复 组件未赋值时范围选左、右日历相同的 bug
-## 2.0.17(2021-08-04)
-- 修复 范围选未正确显示当前值的 bug
-- 修复 h5 平台(移动端)报错 'cale' of undefined 的 bug
-## 2.0.16(2021-07-21)
-- 新增 return-type 属性支持返回 date 日期对象
-## 2.0.15(2021-07-14)
-- 修复 单选日期类型,初始赋值后不在当前日历的 bug
-- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
-- 优化 移动端移除显示框的清空按钮,无实际用途
-## 2.0.14(2021-07-14)
-- 修复 组件赋值为空,界面未更新的 bug
-- 修复 start 和 end 不能动态赋值的 bug
-- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的 bug
-## 2.0.13(2021-07-08)
-- 修复 范围选择不能动态赋值的 bug
-## 2.0.12(2021-07-08)
-- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
-## 2.0.11(2021-07-08)
-- 优化 弹出层在超出视窗边缘定位不准确的问题
-## 2.0.10(2021-07-08)
-- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的 bug
-- 优化 弹出层在超出视窗边缘被遮盖的问题
-## 2.0.9(2021-07-07)
-- 新增 maskClick 事件
-- 修复 特殊情况日历 rpx 布局错误的 bug,rpx -> px
-- 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
-## 2.0.8(2021-07-07)
-- 新增 日期时间显示框支持插槽
-## 2.0.7(2021-07-01)
-- 优化 添加 uni-icons 依赖
-## 2.0.6(2021-05-22)
-- 修复 图标在小程序上不显示的 bug
-- 优化 重命名引用组件,避免潜在组件命名冲突
-## 2.0.5(2021-05-20)
-- 优化 代码目录扁平化
-## 2.0.4(2021-05-12)
-- 新增 组件示例地址
-## 2.0.3(2021-05-10)
-- 修复 ios 下不识别 '-' 日期格式的 bug
-- 优化 pc 下弹出层添加边框和阴影
-## 2.0.2(2021-05-08)
-- 修复 在 admin 中获取弹出层定位错误的bug
-## 2.0.1(2021-05-08)
-- 修复 type 属性向下兼容,默认值从 date 变更为 datetime
-## 2.0.0(2021-04-30)
-- 支持日历形式的日期+时间的范围选择
- > 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
-## 1.0.6(2021-03-18)
-- 新增 hide-second 属性,时间支持仅选择时、分
-- 修复 选择跟显示的日期不一样的 bug
-- 修复 chang事件触发2次的 bug
-- 修复 分、秒 end 范围错误的 bug
-- 优化 更好的 nvue 适配

+ 0 - 187
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar-item.vue

@@ -1,187 +0,0 @@
-<template>
-	<view class="uni-calendar-item__weeks-box" :class="{
-		'uni-calendar-item--disable':weeks.disable,
-		'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
-		'uni-calendar-item--multiple': weeks.multiple,
-		'uni-calendar-item--after-checked-x':weeks.afterMultiple,
-		}" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)">
-		<view class="uni-calendar-item__weeks-box-item" :class="{
-				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
-				'uni-calendar-item--checked-range-text': checkHover,
-				'uni-calendar-item--before-checked':weeks.beforeMultiple,
-				'uni-calendar-item--multiple': weeks.multiple,
-				'uni-calendar-item--after-checked':weeks.afterMultiple,
-				'uni-calendar-item--disable':weeks.disable,
-				}">
-			<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
-			<text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
-		</view>
-		<view :class="{'uni-calendar-item--isDay': weeks.isDay}"></view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			weeks: {
-				type: Object,
-				default () {
-					return {}
-				}
-			},
-			calendar: {
-				type: Object,
-				default: () => {
-					return {}
-				}
-			},
-			selected: {
-				type: Array,
-				default: () => {
-					return []
-				}
-			},
-			lunar: {
-				type: Boolean,
-				default: false
-			},
-			checkHover: {
-				type: Boolean,
-				default: false
-			}
-		},
-		methods: {
-			choiceDate(weeks) {
-				this.$emit('change', weeks)
-			},
-			handleMousemove(weeks) {
-				this.$emit('handleMouse', weeks)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-primary: #007aff !default;
-
-	.uni-calendar-item__weeks-box {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		margin: 1px 0;
-		position: relative;
-	}
-
-	.uni-calendar-item__weeks-box-text {
-		font-size: 14px;
-		// font-family: Lato-Bold, Lato;
-		font-weight: bold;
-		color: darken($color: $uni-primary, $amount: 40%);
-	}
-
-	.uni-calendar-item__weeks-lunar-text {
-		font-size: 12px;
-		color: #333;
-	}
-
-	.uni-calendar-item__weeks-box-item {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		width: 40px;
-		height: 40px;
-		/* #ifdef H5 */
-		cursor: pointer;
-		/* #endif */
-	}
-
-
-	.uni-calendar-item__weeks-box-circle {
-		position: absolute;
-		top: 5px;
-		right: 5px;
-		width: 8px;
-		height: 8px;
-		border-radius: 8px;
-		background-color: #dd524d;
-
-	}
-
-	.uni-calendar-item__weeks-box .uni-calendar-item--disable {
-		// background-color: rgba(249, 249, 249, $uni-opacity-disabled);
-		cursor: default;
-	}
-
-	.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
-		color: #D1D1D1;
-	}
-
-	.uni-calendar-item--isDay {
-		position: absolute;
-		top: 10px;
-		right: 17%;
-		background-color: #dd524d;
-		width:6px;
-		height: 6px;
-		border-radius: 50%;
-	}
-
-	.uni-calendar-item--extra {
-		color: #dd524d;
-		opacity: 0.8;
-	}
-
-	.uni-calendar-item__weeks-box .uni-calendar-item--checked {
-		background-color: $uni-primary;
-		border-radius: 50%;
-		box-sizing: border-box;
-		border: 3px solid #fff;
-	}
-
-	.uni-calendar-item--checked .uni-calendar-item--checked-text {
-		color: #fff;
-	}
-
-	.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
-		color: #333;
-	}
-
-	.uni-calendar-item--multiple {
-		background-color:  #F6F7FC;
-		// color: #fff;
-	}
-
-	.uni-calendar-item--multiple .uni-calendar-item--before-checked,
-	.uni-calendar-item--multiple .uni-calendar-item--after-checked {
-		background-color: $uni-primary;
-		border-radius: 50%;
-		box-sizing: border-box;
-		border: 3px solid #F6F7FC;
-	}
-
-	.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
-	.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
-		color: #fff;
-	}
-
-	.uni-calendar-item--before-checked-x {
-		border-top-left-radius: 50px;
-		border-bottom-left-radius: 50px;
-		box-sizing: border-box;
-		background-color: #F6F7FC;
-	}
-
-	.uni-calendar-item--after-checked-x {
-		border-top-right-radius: 50px;
-		border-bottom-right-radius: 50px;
-		background-color: #F6F7FC;
-	}
-</style>

+ 0 - 924
uni_modules/uni-datetime-picker/components/uni-datetime-picker/calendar.vue

@@ -1,924 +0,0 @@
-<template>
-	<view class="uni-calendar" @mouseleave="leaveCale">
-		<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}"
-			@click="clean();maskClick()"></view>
-		<view v-if="insert || show" class="uni-calendar__content"
-			:class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow, 'uni-calendar__content-mobile': aniMaskShow}">
-			<view class="uni-calendar__header" :class="{'uni-calendar__header-mobile' :!insert}">
-				<view v-if="left" class="uni-calendar__header-btn-box" @click.stop="pre">
-					<view class="uni-calendar__header-btn uni-calendar--left"></view>
-				</view>
-				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
-					<text
-						class="uni-calendar__header-text">{{ (nowDate.year||'') + yearText + ( nowDate.month||'') + monthText}}</text>
-				</picker>
-				<view v-if="right" class="uni-calendar__header-btn-box" @click.stop="next">
-					<view class="uni-calendar__header-btn uni-calendar--right"></view>
-				</view>
-				<view v-if="!insert" class="dialog-close" @click="clean">
-					<view class="dialog-close-plus" data-id="close"></view>
-					<view class="dialog-close-plus dialog-close-rotate" data-id="close"></view>
-				</view>
-
-				<!-- <text class="uni-calendar__backtoday" @click="backtoday">回到今天</text> -->
-			</view>
-			<view class="uni-calendar__box">
-				<view v-if="showMonth" class="uni-calendar__box-bg">
-					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
-				</view>
-				<view class="uni-calendar__weeks" style="padding-bottom: 7px;">
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SUNText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{MONText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{TUEText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{WEDText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{THUText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{FRIText}}</text>
-					</view>
-					<view class="uni-calendar__weeks-day">
-						<text class="uni-calendar__weeks-day-text">{{SATText}}</text>
-					</view>
-				</view>
-				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
-					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
-						<calendar-item class="uni-calendar-item--hook" :weeks="weeks" :calendar="calendar"
-							:selected="selected" :lunar="lunar" :checkHover="range" @change="choiceDate"
-							@handleMouse="handleMouse">
-						</calendar-item>
-					</view>
-				</view>
-			</view>
-			<view v-if="!insert && !range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top"
-				style="padding: 0 80px;">
-				<view class="uni-date-changed--time-date">{{tempSingleDate ? tempSingleDate : selectDateText}}</view>
-				<time-picker type="time" :start="reactStartTime" :end="reactEndTime" v-model="time"
-					:disabled="!tempSingleDate" :border="false" :hide-second="hideSecond" class="time-picker-style">
-				</time-picker>
-			</view>
-
-			<view v-if="!insert && range && typeHasTime" class="uni-date-changed uni-calendar--fixed-top">
-				<view class="uni-date-changed--time-start">
-					<view class="uni-date-changed--time-date">{{tempRange.before ? tempRange.before : startDateText}}
-					</view>
-					<time-picker type="time" :start="reactStartTime" v-model="timeRange.startTime" :border="false"
-						:hide-second="hideSecond" :disabled="!tempRange.before" class="time-picker-style">
-					</time-picker>
-				</view>
-				<view style="line-height: 50px;">
-					<uni-icons type="arrowthinright" color="#999"></uni-icons>
-				</view>
-				<view class="uni-date-changed--time-end">
-					<view class="uni-date-changed--time-date">{{tempRange.after ? tempRange.after : endDateText}}</view>
-					<time-picker type="time" :end="reactEndTime" v-model="timeRange.endTime" :border="false"
-						:hide-second="hideSecond" :disabled="!tempRange.after" class="time-picker-style">
-					</time-picker>
-				</view>
-			</view>
-			<view v-if="!insert" class="uni-date-changed uni-date-btn--ok">
-				<!-- <view class="uni-calendar__header-btn-box">
-					<text class="uni-calendar__button-text uni-calendar--fixed-width">{{okText}}</text>
-				</view> -->
-				<view class="uni-datetime-picker--btn" @click="confirm">{{confirmText}}</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import Calendar from './util.js';
-	import calendarItem from './calendar-item.vue'
-	import timePicker from './time-picker.vue'
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {
-		t
-	} = initVueI18n(messages)
-	/**
-	 * Calendar 日历
-	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
-	 * @property {String} date 自定义当前时间,默认为今天
-	 * @property {Boolean} lunar 显示农历
-	 * @property {String} startDate 日期选择范围-开始日期
-	 * @property {String} endDate 日期选择范围-结束日期
-	 * @property {Boolean} range 范围选择
-	 * @property {Boolean} insert = [true|false] 插入模式,默认为false
-	 * 	@value true 弹窗模式
-	 * 	@value false 插入模式
-	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
-	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
-	 * @property {Boolean} showMonth 是否选择月份为背景
-	 * @event {Function} change 日期改变,`insert :ture` 时生效
-	 * @event {Function} confirm 确认选择`insert :false` 时生效
-	 * @event {Function} monthSwitch 切换月份时触发
-	 * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
-	 */
-	export default {
-		components: {
-			calendarItem,
-			timePicker
-		},
-		props: {
-			date: {
-				type: String,
-				default: ''
-			},
-			defTime: {
-				type: [String, Object],
-				default: ''
-			},
-			selectableTimes: {
-				type: [Object],
-				default () {
-					return {}
-				}
-			},
-			selected: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			lunar: {
-				type: Boolean,
-				default: false
-			},
-			startDate: {
-				type: String,
-				default: ''
-			},
-			endDate: {
-				type: String,
-				default: ''
-			},
-			range: {
-				type: Boolean,
-				default: false
-			},
-			typeHasTime: {
-				type: Boolean,
-				default: false
-			},
-			insert: {
-				type: Boolean,
-				default: true
-			},
-			showMonth: {
-				type: Boolean,
-				default: true
-			},
-			clearDate: {
-				type: Boolean,
-				default: true
-			},
-			left: {
-				type: Boolean,
-				default: true
-			},
-			right: {
-				type: Boolean,
-				default: true
-			},
-			checkHover: {
-				type: Boolean,
-				default: true
-			},
-			hideSecond: {
-				type: [Boolean],
-				default: false
-			},
-			pleStatus: {
-				type: Object,
-				default () {
-					return {
-						before: '',
-						after: '',
-						data: [],
-						fulldate: ''
-					}
-				}
-			}
-		},
-		data() {
-			return {
-				show: false,
-				weeks: [],
-				calendar: {},
-				nowDate: '',
-				aniMaskShow: false,
-				firstEnter: true,
-				time: '',
-				timeRange: {
-					startTime: '',
-					endTime: ''
-				},
-				tempSingleDate: '',
-				tempRange: {
-					before: '',
-					after: ''
-				}
-			}
-		},
-		watch: {
-			date: {
-				immediate: true,
-				handler(newVal, oldVal) {
-					if (!this.range) {
-						this.tempSingleDate = newVal
-						setTimeout(() => {
-							this.init(newVal)
-						}, 100)
-					}
-				}
-			},
-			defTime: {
-				immediate: true,
-				handler(newVal, oldVal) {
-					if (!this.range) {
-						this.time = newVal
-					} else {
-						// console.log('-----', newVal);
-						this.timeRange.startTime = newVal.start
-						this.timeRange.endTime = newVal.end
-					}
-				}
-			},
-			startDate(val) {
-				this.cale.resetSatrtDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			endDate(val) {
-				this.cale.resetEndDate(val)
-				this.cale.setDate(this.nowDate.fullDate)
-				this.weeks = this.cale.weeks
-			},
-			selected(newVal) {
-				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
-				this.weeks = this.cale.weeks
-			},
-			pleStatus: {
-				immediate: true,
-				handler(newVal, oldVal) {
-					const {
-						before,
-						after,
-						fulldate,
-						which
-					} = newVal
-					this.tempRange.before = before
-					this.tempRange.after = after
-					setTimeout(() => {
-						if (fulldate) {
-							this.cale.setHoverMultiple(fulldate)
-							if (before && after) {
-								this.cale.lastHover = true
-								if (this.rangeWithinMonth(after, before)) return
-								this.setDate(before)
-							} else {
-								this.cale.setMultiple(fulldate)
-								this.setDate(this.nowDate.fullDate)
-								this.calendar.fullDate = ''
-								this.cale.lastHover = false
-							}
-						} else {
-							this.cale.setDefaultMultiple(before, after)
-							if (which === 'left') {
-								this.setDate(before)
-								this.weeks = this.cale.weeks
-							} else {
-								this.setDate(after)
-								this.weeks = this.cale.weeks
-							}
-							this.cale.lastHover = true
-						}
-					}, 16)
-				}
-			}
-		},
-		computed: {
-			reactStartTime() {
-				const activeDate = this.range ? this.tempRange.before : this.calendar.fullDate
-				const res = activeDate === this.startDate ? this.selectableTimes.start : ''
-				return res
-			},
-			reactEndTime() {
-				const activeDate = this.range ? this.tempRange.after : this.calendar.fullDate
-				const res = activeDate === this.endDate ? this.selectableTimes.end : ''
-				return res
-			},
-			/**
-			 * for i18n
-			 */
-			selectDateText() {
-				return t("uni-datetime-picker.selectDate")
-			},
-			startDateText() {
-				return this.startPlaceholder || t("uni-datetime-picker.startDate")
-			},
-			endDateText() {
-				return this.endPlaceholder || t("uni-datetime-picker.endDate")
-			},
-			okText() {
-				return t("uni-datetime-picker.ok")
-			},
-			yearText() {
-				return t("uni-datetime-picker.year")
-			},
-			monthText() {
-				return t("uni-datetime-picker.month")
-			},
-			MONText() {
-				return t("uni-calender.MON")
-			},
-			TUEText() {
-				return t("uni-calender.TUE")
-			},
-			WEDText() {
-				return t("uni-calender.WED")
-			},
-			THUText() {
-				return t("uni-calender.THU")
-			},
-			FRIText() {
-				return t("uni-calender.FRI")
-			},
-			SATText() {
-				return t("uni-calender.SAT")
-			},
-			SUNText() {
-				return t("uni-calender.SUN")
-			},
-			confirmText() {
-				return t("uni-calender.confirm")
-			},
-		},
-		created() {
-			// 获取日历方法实例
-			this.cale = new Calendar({
-				// date: new Date(),
-				selected: this.selected,
-				startDate: this.startDate,
-				endDate: this.endDate,
-				range: this.range,
-				// multipleStatus: this.pleStatus
-			})
-			// 选中某一天
-			// this.cale.setDate(this.date)
-			this.init(this.date)
-			// this.setDay
-		},
-		methods: {
-			leaveCale() {
-				this.firstEnter = true
-			},
-			handleMouse(weeks) {
-				if (weeks.disable) return
-				if (this.cale.lastHover) return
-				let {
-					before,
-					after
-				} = this.cale.multipleStatus
-				if (!before) return
-				this.calendar = weeks
-				// 设置范围选
-				this.cale.setHoverMultiple(this.calendar.fullDate)
-				this.weeks = this.cale.weeks
-				// hover时,进入一个日历,更新另一个
-				if (this.firstEnter) {
-					this.$emit('firstEnterCale', this.cale.multipleStatus)
-					this.firstEnter = false
-				}
-			},
-			rangeWithinMonth(A, B) {
-				const [yearA, monthA] = A.split('-')
-				const [yearB, monthB] = B.split('-')
-				return yearA === yearB && monthA === monthB
-			},
-
-			// 取消穿透
-			clean() {
-				this.close()
-			},
-
-			// 蒙版点击事件
-			maskClick() {
-				this.$emit('maskClose')
-			},
-
-			clearCalender() {
-				if (this.range) {
-					this.timeRange.startTime = ''
-					this.timeRange.endTime = ''
-					this.tempRange.before = ''
-					this.tempRange.after = ''
-					this.cale.multipleStatus.before = ''
-					this.cale.multipleStatus.after = ''
-					this.cale.multipleStatus.data = []
-					this.cale.lastHover = false
-				} else {
-					this.time = ''
-					this.tempSingleDate = ''
-				}
-				this.calendar.fullDate = ''
-				this.setDate()
-			},
-
-			bindDateChange(e) {
-				const value = e.detail.value + '-1'
-				this.init(value)
-			},
-			/**
-			 * 初始化日期显示
-			 * @param {Object} date
-			 */
-			init(date) {
-				this.cale.setDate(date)
-				this.weeks = this.cale.weeks
-				this.nowDate = this.calendar = this.cale.getInfo(date)
-			},
-			// choiceDate(weeks) {
-			// 	if (weeks.disable) return
-			// 	this.calendar = weeks
-			// 	// 设置多选
-			// 	this.cale.setMultiple(this.calendar.fullDate, true)
-			// 	this.weeks = this.cale.weeks
-			// 	this.tempSingleDate = this.calendar.fullDate
-			// 	this.tempRange.before = this.cale.multipleStatus.before
-			// 	this.tempRange.after = this.cale.multipleStatus.after
-			// 	this.change()
-			// },
-			/**
-			 * 打开日历弹窗
-			 */
-			open() {
-				// 弹窗模式并且清理数据
-				if (this.clearDate && !this.insert) {
-					this.cale.cleanMultipleStatus()
-					// this.cale.setDate(this.date)
-					this.init(this.date)
-				}
-				this.show = true
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.aniMaskShow = true
-					}, 50)
-				})
-			},
-			/**
-			 * 关闭日历弹窗
-			 */
-			close() {
-				this.aniMaskShow = false
-				this.$nextTick(() => {
-					setTimeout(() => {
-						this.show = false
-						this.$emit('close')
-					}, 300)
-				})
-			},
-			/**
-			 * 确认按钮
-			 */
-			confirm() {
-				this.setEmit('confirm')
-				this.close()
-			},
-			/**
-			 * 变化触发
-			 */
-			change() {
-				if (!this.insert) return
-				this.setEmit('change')
-			},
-			/**
-			 * 选择月份触发
-			 */
-			monthSwitch() {
-				let {
-					year,
-					month
-				} = this.nowDate
-				this.$emit('monthSwitch', {
-					year,
-					month: Number(month)
-				})
-			},
-			/**
-			 * 派发事件
-			 * @param {Object} name
-			 */
-			setEmit(name) {
-				let {
-					year,
-					month,
-					date,
-					fullDate,
-					lunar,
-					extraInfo
-				} = this.calendar
-				this.$emit(name, {
-					range: this.cale.multipleStatus,
-					year,
-					month,
-					date,
-					time: this.time,
-					timeRange: this.timeRange,
-					fulldate: fullDate,
-					lunar,
-					extraInfo: extraInfo || {}
-				})
-			},
-			/**
-			 * 选择天触发
-			 * @param {Object} weeks
-			 */
-			choiceDate(weeks) {
-				if (weeks.disable) return
-				this.calendar = weeks
-				this.calendar.userChecked = true
-				// 设置多选
-				this.cale.setMultiple(this.calendar.fullDate, true)
-				this.weeks = this.cale.weeks
-				this.tempSingleDate = this.calendar.fullDate
-				const beforeStatus = this.cale.multipleStatus.before
-				const beforeDate = new Date(this.cale.multipleStatus.before).getTime()
-				const afterDate = new Date(this.cale.multipleStatus.after).getTime()
-				if (beforeDate > afterDate && afterDate) {
-					this.tempRange.before = this.cale.multipleStatus.after
-					this.tempRange.after = this.cale.multipleStatus.before
-				} else {
-					this.tempRange.before = this.cale.multipleStatus.before
-					this.tempRange.after = this.cale.multipleStatus.after
-				}
-				this.change()
-			},
-			/**
-			 * 回到今天
-			 */
-			backtoday() {
-				let date = this.cale.getDate(new Date()).fullDate
-				// this.cale.setDate(date)
-				this.init(date)
-				this.change()
-			},
-			/**
-			 * 比较时间大小
-			 */
-			dateCompare(startDate, endDate) {
-				// 计算截止时间
-				startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
-				// 计算详细项的截止时间
-				endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
-				if (startDate <= endDate) {
-					return true
-				} else {
-					return false
-				}
-			},
-			/**
-			 * 上个月
-			 */
-			pre() {
-				const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
-				this.setDate(preDate)
-				this.monthSwitch()
-
-			},
-			/**
-			 * 下个月
-			 */
-			next() {
-				const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
-				this.setDate(nextDate)
-				this.monthSwitch()
-			},
-			/**
-			 * 设置日期
-			 * @param {Object} date
-			 */
-			setDate(date) {
-				this.cale.setDate(date)
-				this.weeks = this.cale.weeks
-				this.nowDate = this.cale.getInfo(date)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" >
-	$uni-primary: #007aff !default;
-
-	.uni-calendar {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-	}
-
-	.uni-calendar__mask {
-		position: fixed;
-		bottom: 0;
-		top: 0;
-		left: 0;
-		right: 0;
-		background-color: rgba(0, 0, 0, 0.4);
-		transition-property: opacity;
-		transition-duration: 0.3s;
-		opacity: 0;
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--mask-show {
-		opacity: 1
-	}
-
-	.uni-calendar--fixed {
-		position: fixed;
-		bottom: calc(var(--window-bottom));
-		left: 0;
-		right: 0;
-		transition-property: transform;
-		transition-duration: 0.3s;
-		transform: translateY(460px);
-		/* #ifndef APP-NVUE */
-		z-index: 99;
-		/* #endif */
-	}
-
-	.uni-calendar--ani-show {
-		transform: translateY(0);
-	}
-
-	.uni-calendar__content {
-		background-color: #fff;
-	}
-
-	.uni-calendar__content-mobile {
-		border-top-left-radius: 10px;
-		border-top-right-radius: 10px;
-		box-shadow: 0px 0px 5px 3px rgba(0, 0, 0, 0.1);
-	}
-
-	.uni-calendar__header {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 50px;
-	}
-
-	.uni-calendar__header-mobile {
-		padding: 10px;
-		padding-bottom: 0;
-	}
-
-	.uni-calendar--fixed-top {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-		border-top-color: rgba(0, 0, 0, 0.4);
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-calendar--fixed-width {
-		width: 50px;
-	}
-
-	.uni-calendar__backtoday {
-		position: absolute;
-		right: 0;
-		top: 25rpx;
-		padding: 0 5px;
-		padding-left: 10px;
-		height: 25px;
-		line-height: 25px;
-		font-size: 12px;
-		border-top-left-radius: 25px;
-		border-bottom-left-radius: 25px;
-		color: #fff;
-		background-color: #f1f1f1;
-	}
-
-	.uni-calendar__header-text {
-		text-align: center;
-		width: 100px;
-		font-size: 15px;
-		color: #666;
-	}
-
-	.uni-calendar__button-text {
-		text-align: center;
-		width: 100px;
-		font-size: 14px;
-		color: $uni-primary;
-		/* #ifndef APP-NVUE */
-		letter-spacing: 3px;
-		/* #endif */
-	}
-
-	.uni-calendar__header-btn-box {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		width: 50px;
-		height: 50px;
-	}
-
-	.uni-calendar__header-btn {
-		width: 9px;
-		height: 9px;
-		border-left-color: #808080;
-		border-left-style: solid;
-		border-left-width: 1px;
-		border-top-color: #555555;
-		border-top-style: solid;
-		border-top-width: 1px;
-	}
-
-	.uni-calendar--left {
-		transform: rotate(-45deg);
-	}
-
-	.uni-calendar--right {
-		transform: rotate(135deg);
-	}
-
-
-	.uni-calendar__weeks {
-		position: relative;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-calendar__weeks-item {
-		flex: 1;
-	}
-
-	.uni-calendar__weeks-day {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		justify-content: center;
-		align-items: center;
-		height: 40px;
-		border-bottom-color: #F5F5F5;
-		border-bottom-style: solid;
-		border-bottom-width: 1px;
-	}
-
-	.uni-calendar__weeks-day-text {
-		font-size: 12px;
-		color: #B2B2B2;
-	}
-
-	.uni-calendar__box {
-		position: relative;
-		// padding: 0 10px;
-		padding-bottom: 7px;
-	}
-
-	.uni-calendar__box-bg {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center;
-		position: absolute;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-	}
-
-	.uni-calendar__box-bg-text {
-		font-size: 200px;
-		font-weight: bold;
-		color: #999;
-		opacity: 0.1;
-		text-align: center;
-		/* #ifndef APP-NVUE */
-		line-height: 1;
-		/* #endif */
-	}
-
-	.uni-date-changed {
-		padding: 0 10px;
-		// line-height: 50px;
-		text-align: center;
-		color: #333;
-		border-top-color: #DCDCDC;
-		;
-		border-top-style: solid;
-		border-top-width: 1px;
-		flex: 1;
-	}
-
-	.uni-date-btn--ok {
-		padding: 20px 15px;
-	}
-
-	.uni-date-changed--time-start {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-	}
-
-	.uni-date-changed--time-end {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		align-items: center;
-	}
-
-	.uni-date-changed--time-date {
-		color: #999;
-		line-height: 50px;
-		margin-right: 5px;
-		// opacity: 0.6;
-	}
-
-	.time-picker-style {
-		// width: 62px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		justify-content: center;
-		align-items: center
-	}
-
-	.mr-10 {
-		margin-right: 10px;
-	}
-
-	.dialog-close {
-		position: absolute;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-		align-items: center;
-		padding: 0 25px;
-		margin-top: 10px;
-	}
-
-	.dialog-close-plus {
-		width: 16px;
-		height: 2px;
-		background-color: #737987;
-		border-radius: 2px;
-		transform: rotate(45deg);
-	}
-
-	.dialog-close-rotate {
-		position: absolute;
-		transform: rotate(-45deg);
-	}
-
-	.uni-datetime-picker--btn {
-		border-radius: 100px;
-		height: 40px;
-		line-height: 40px;
-		background-color: $uni-primary;
-		color: #fff;
-		font-size: 16px;
-		letter-spacing: 2px;
-	}
-
-	/* #ifndef APP-NVUE */
-	.uni-datetime-picker--btn:active {
-		opacity: 0.7;
-	}
-	/* #endif */
-</style>

+ 0 - 22
uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json

@@ -1,22 +0,0 @@
-{
-	"uni-datetime-picker.selectDate": "select date",
-	"uni-datetime-picker.selectTime": "select time",
-	"uni-datetime-picker.selectDateTime": "select datetime",
-	"uni-datetime-picker.startDate": "start date",
-	"uni-datetime-picker.endDate": "end date",
-	"uni-datetime-picker.startTime": "start time",
-	"uni-datetime-picker.endTime": "end time",
-	"uni-datetime-picker.ok": "ok",
-	"uni-datetime-picker.clear": "clear",
-	"uni-datetime-picker.cancel": "cancel",
-	"uni-datetime-picker.year": "-",
-	"uni-datetime-picker.month": "",
-	"uni-calender.MON": "MON",
-	"uni-calender.TUE": "TUE",
-	"uni-calender.WED": "WED",
-	"uni-calender.THU": "THU",
-	"uni-calender.FRI": "FRI",
-	"uni-calender.SAT": "SAT",
-	"uni-calender.SUN": "SUN",
-	"uni-calender.confirm": "confirm"
-}

+ 0 - 8
uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js

@@ -1,8 +0,0 @@
-import en from './en.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 22
uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json

@@ -1,22 +0,0 @@
-{
-	"uni-datetime-picker.selectDate": "选择日期",
-	"uni-datetime-picker.selectTime": "选择时间",
-	"uni-datetime-picker.selectDateTime": "选择日期时间",
-	"uni-datetime-picker.startDate": "开始日期",
-	"uni-datetime-picker.endDate": "结束日期",
-	"uni-datetime-picker.startTime": "开始时间",
-	"uni-datetime-picker.endTime": "结束时间",
-	"uni-datetime-picker.ok": "确定",
-	"uni-datetime-picker.clear": "清除",
-	"uni-datetime-picker.cancel": "取消",
-	"uni-datetime-picker.year": "年",
-	"uni-datetime-picker.month": "月",
-	"uni-calender.SUN": "日",
-	"uni-calender.MON": "一",
-	"uni-calender.TUE": "二",
-	"uni-calender.WED": "三",
-	"uni-calender.THU": "四",
-	"uni-calender.FRI": "五",
-	"uni-calender.SAT": "六",
-	"uni-calender.confirm": "确认"
-}

+ 0 - 22
uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json

@@ -1,22 +0,0 @@
-{
-  "uni-datetime-picker.selectDate": "選擇日期",
-  "uni-datetime-picker.selectTime": "選擇時間",
-  "uni-datetime-picker.selectDateTime": "選擇日期時間",
-  "uni-datetime-picker.startDate": "開始日期",
-  "uni-datetime-picker.endDate": "結束日期",
-  "uni-datetime-picker.startTime": "開始时间",
-  "uni-datetime-picker.endTime": "結束时间",
-  "uni-datetime-picker.ok": "確定",
-  "uni-datetime-picker.clear": "清除",
-  "uni-datetime-picker.cancel": "取消",
-  "uni-datetime-picker.year": "年",
-  "uni-datetime-picker.month": "月",
-  "uni-calender.SUN": "日",
-  "uni-calender.MON": "一",
-  "uni-calender.TUE": "二",
-  "uni-calender.WED": "三",
-  "uni-calender.THU": "四",
-  "uni-calender.FRI": "五",
-  "uni-calender.SAT": "六",
-  "uni-calender.confirm": "確認"
-}

+ 0 - 45
uni_modules/uni-datetime-picker/components/uni-datetime-picker/keypress.js

@@ -1,45 +0,0 @@
-// #ifdef H5
-export default {
-  name: 'Keypress',
-  props: {
-    disable: {
-      type: Boolean,
-      default: false
-    }
-  },
-  mounted () {
-    const keyNames = {
-      esc: ['Esc', 'Escape'],
-      tab: 'Tab',
-      enter: 'Enter',
-      space: [' ', 'Spacebar'],
-      up: ['Up', 'ArrowUp'],
-      left: ['Left', 'ArrowLeft'],
-      right: ['Right', 'ArrowRight'],
-      down: ['Down', 'ArrowDown'],
-      delete: ['Backspace', 'Delete', 'Del']
-    }
-    const listener = ($event) => {
-      if (this.disable) {
-        return
-      }
-      const keyName = Object.keys(keyNames).find(key => {
-        const keyName = $event.key
-        const value = keyNames[key]
-        return value === keyName || (Array.isArray(value) && value.includes(keyName))
-      })
-      if (keyName) {
-        // 避免和其他按键事件冲突
-        setTimeout(() => {
-          this.$emit(keyName, {})
-        }, 0)
-      }
-    }
-    document.addEventListener('keyup', listener)
-    this.$once('hook:beforeDestroy', () => {
-      document.removeEventListener('keyup', listener)
-    })
-  },
-	render: () => {}
-}
-// #endif

+ 0 - 946
uni_modules/uni-datetime-picker/components/uni-datetime-picker/time-picker.vue

@@ -1,946 +0,0 @@
-<template>
-	<view class="uni-datetime-picker">
-		<view @click="initTimePicker">
-			<slot>
-				<view class="uni-datetime-picker-timebox-pointer"
-					:class="{'uni-datetime-picker-disabled': disabled, 'uni-datetime-picker-timebox': border}">
-					<text class="uni-datetime-picker-text">{{time}}</text>
-					<view v-if="!time" class="uni-datetime-picker-time">
-						<text class="uni-datetime-picker-text">{{selectTimeText}}</text>
-					</view>
-				</view>
-			</slot>
-		</view>
-		<view v-if="visible" id="mask" class="uni-datetime-picker-mask" @click="tiggerTimePicker"></view>
-		<view v-if="visible" class="uni-datetime-picker-popup" :class="[dateShow && timeShow ? '' : 'fix-nvue-height']"
-			:style="fixNvueBug">
-			<view class="uni-title">
-				<text class="uni-datetime-picker-text">{{selectTimeText}}</text>
-			</view>
-			<view v-if="dateShow" class="uni-datetime-picker__container-box">
-				<picker-view class="uni-datetime-picker-view" :indicator-style="indicatorStyle" :value="ymd"
-					@change="bindDateChange">
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in years" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in months" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in days" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<!-- 兼容 nvue 不支持伪类 -->
-				<text class="uni-datetime-picker-sign sign-left">-</text>
-				<text class="uni-datetime-picker-sign sign-right">-</text>
-			</view>
-			<view v-if="timeShow" class="uni-datetime-picker__container-box">
-				<picker-view class="uni-datetime-picker-view" :class="[hideSecond ? 'time-hide-second' : '']"
-					:indicator-style="indicatorStyle" :value="hms" @change="bindTimeChange">
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in hours" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column>
-						<view class="uni-datetime-picker-item" v-for="(item,index) in minutes" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-					<picker-view-column v-if="!hideSecond">
-						<view class="uni-datetime-picker-item" v-for="(item,index) in seconds" :key="index">
-							<text class="uni-datetime-picker-item">{{lessThanTen(item)}}</text>
-						</view>
-					</picker-view-column>
-				</picker-view>
-				<!-- 兼容 nvue 不支持伪类 -->
-				<text class="uni-datetime-picker-sign" :class="[hideSecond ? 'sign-center' : 'sign-left']">:</text>
-				<text v-if="!hideSecond" class="uni-datetime-picker-sign sign-right">:</text>
-			</view>
-			<view class="uni-datetime-picker-btn">
-				<view @click="clearTime">
-					<text class="uni-datetime-picker-btn-text">{{clearText}}</text>
-				</view>
-				<view class="uni-datetime-picker-btn-group">
-					<view class="uni-datetime-picker-cancel" @click="tiggerTimePicker">
-						<text class="uni-datetime-picker-btn-text">{{cancelText}}</text>
-					</view>
-					<view @click="setTime">
-						<text class="uni-datetime-picker-btn-text">{{okText}}</text>
-					</view>
-				</view>
-			</view>
-		</view>
-		<!-- #ifdef H5 -->
-		<!-- <keypress v-if="visible" @esc="tiggerTimePicker" @enter="setTime" /> -->
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	// #ifdef H5
-	import keypress from './keypress'
-	// #endif
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {	t	} = initVueI18n(messages)
-
-	/**
-	 * DatetimePicker 时间选择器
-	 * @description 可以同时选择日期和时间的选择器
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=xxx
-	 * @property {String} type = [datetime | date | time] 显示模式
-	 * @property {Boolean} multiple = [true|false] 是否多选
-	 * @property {String|Number} value 默认值
-	 * @property {String|Number} start 起始日期或时间
-	 * @property {String|Number} end 起始日期或时间
-	 * @property {String} return-type = [timestamp | string]
-	 * @event {Function} change  选中发生变化触发
-	 */
-
-	export default {
-		name: 'UniDatetimePicker',
-		components: {
-			// #ifdef H5
-			keypress
-			// #endif
-		},
-		data() {
-			return {
-				indicatorStyle: `height: 50px;`,
-				visible: false,
-				fixNvueBug: {},
-				dateShow: true,
-				timeShow: true,
-				title: '日期和时间',
-				// 输入框当前时间
-				time: '',
-				// 当前的年月日时分秒
-				year: 1920,
-				month: 0,
-				day: 0,
-				hour: 0,
-				minute: 0,
-				second: 0,
-				// 起始时间
-				startYear: 1920,
-				startMonth: 1,
-				startDay: 1,
-				startHour: 0,
-				startMinute: 0,
-				startSecond: 0,
-				// 结束时间
-				endYear: 2120,
-				endMonth: 12,
-				endDay: 31,
-				endHour: 23,
-				endMinute: 59,
-				endSecond: 59,
-			}
-		},
-		props: {
-			type: {
-				type: String,
-				default: 'datetime'
-			},
-			value: {
-				type: [String, Number],
-				default: ''
-			},
-			modelValue: {
-				type: [String, Number],
-				default: ''
-			},
-			start: {
-				type: [Number, String],
-				default: ''
-			},
-			end: {
-				type: [Number, String],
-				default: ''
-			},
-			returnType: {
-				type: String,
-				default: 'string'
-			},
-			disabled: {
-				type: [Boolean, String],
-				default: false
-			},
-			border: {
-				type: [Boolean, String],
-				default: true
-			},
-			hideSecond: {
-				type: [Boolean, String],
-				default: false
-			}
-		},
-		watch: {
-			// #ifndef VUE3
-			value: {
-				handler(newVal, oldVal) {
-					if (newVal) {
-						this.parseValue(this.fixIosDateFormat(newVal)) //兼容 iOS、safari 日期格式
-						this.initTime(false)
-					} else {
-						this.time = ''
-						this.parseValue(Date.now())
-					}
-				},
-				immediate: true
-			},
-			// #endif
-			// #ifdef VUE3
-			modelValue: {
-				handler(newVal, oldVal) {
-					if (newVal) {
-						this.parseValue(this.fixIosDateFormat(newVal)) //兼容 iOS、safari 日期格式
-						this.initTime(false)
-					} else {
-						this.time = ''
-						this.parseValue(Date.now())
-					}
-				},
-				immediate: true
-			},
-			// #endif
-			type: {
-				handler(newValue) {
-					if (newValue === 'date') {
-						this.dateShow = true
-						this.timeShow = false
-						this.title = '日期'
-					} else if (newValue === 'time') {
-						this.dateShow = false
-						this.timeShow = true
-						this.title = '时间'
-					} else {
-						this.dateShow = true
-						this.timeShow = true
-						this.title = '日期和时间'
-					}
-				},
-				immediate: true
-			},
-			start: {
-				handler(newVal) {
-					this.parseDatetimeRange(this.fixIosDateFormat(newVal), 'start') //兼容 iOS、safari 日期格式
-				},
-				immediate: true
-			},
-			end: {
-				handler(newVal) {
-					this.parseDatetimeRange(this.fixIosDateFormat(newVal), 'end') //兼容 iOS、safari 日期格式
-				},
-				immediate: true
-			},
-
-			// 月、日、时、分、秒可选范围变化后,检查当前值是否在范围内,不在则当前值重置为可选范围第一项
-			months(newVal) {
-				this.checkValue('month', this.month, newVal)
-			},
-			days(newVal) {
-				this.checkValue('day', this.day, newVal)
-			},
-			hours(newVal) {
-				this.checkValue('hour', this.hour, newVal)
-			},
-			minutes(newVal) {
-				this.checkValue('minute', this.minute, newVal)
-			},
-			seconds(newVal) {
-				this.checkValue('second', this.second, newVal)
-			}
-		},
-		computed: {
-			// 当前年、月、日、时、分、秒选择范围
-			years() {
-				return this.getCurrentRange('year')
-			},
-
-			months() {
-				return this.getCurrentRange('month')
-			},
-
-			days() {
-				return this.getCurrentRange('day')
-			},
-
-			hours() {
-				return this.getCurrentRange('hour')
-			},
-
-			minutes() {
-				return this.getCurrentRange('minute')
-			},
-
-			seconds() {
-				return this.getCurrentRange('second')
-			},
-
-			// picker 当前值数组
-			ymd() {
-				return [this.year - this.minYear, this.month - this.minMonth, this.day - this.minDay]
-			},
-			hms() {
-				return [this.hour - this.minHour, this.minute - this.minMinute, this.second - this.minSecond]
-			},
-
-			// 当前 date 是 start
-			currentDateIsStart() {
-				return this.year === this.startYear && this.month === this.startMonth && this.day === this.startDay
-			},
-
-			// 当前 date 是 end
-			currentDateIsEnd() {
-				return this.year === this.endYear && this.month === this.endMonth && this.day === this.endDay
-			},
-
-			// 当前年、月、日、时、分、秒的最小值和最大值
-			minYear() {
-				return this.startYear
-			},
-			maxYear() {
-				return this.endYear
-			},
-			minMonth() {
-				if (this.year === this.startYear) {
-					return this.startMonth
-				} else {
-					return 1
-				}
-			},
-			maxMonth() {
-				if (this.year === this.endYear) {
-					return this.endMonth
-				} else {
-					return 12
-				}
-			},
-			minDay() {
-				if (this.year === this.startYear && this.month === this.startMonth) {
-					return this.startDay
-				} else {
-					return 1
-				}
-			},
-			maxDay() {
-				if (this.year === this.endYear && this.month === this.endMonth) {
-					return this.endDay
-				} else {
-					return this.daysInMonth(this.year, this.month)
-				}
-			},
-			minHour() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart) {
-						return this.startHour
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					return this.startHour
-				}
-			},
-			maxHour() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd) {
-						return this.endHour
-					} else {
-						return 23
-					}
-				}
-				if (this.type === 'time') {
-					return this.endHour
-				}
-			},
-			minMinute() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart && this.hour === this.startHour) {
-						return this.startMinute
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.startHour) {
-						return this.startMinute
-					} else {
-						return 0
-					}
-				}
-			},
-			maxMinute() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd && this.hour === this.endHour) {
-						return this.endMinute
-					} else {
-						return 59
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.endHour) {
-						return this.endMinute
-					} else {
-						return 59
-					}
-				}
-			},
-			minSecond() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsStart && this.hour === this.startHour && this.minute === this.startMinute) {
-						return this.startSecond
-					} else {
-						return 0
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.startHour && this.minute === this.startMinute) {
-						return this.startSecond
-					} else {
-						return 0
-					}
-				}
-			},
-			maxSecond() {
-				if (this.type === 'datetime') {
-					if (this.currentDateIsEnd && this.hour === this.endHour && this.minute === this.endMinute) {
-						return this.endSecond
-					} else {
-						return 59
-					}
-				}
-				if (this.type === 'time') {
-					if (this.hour === this.endHour && this.minute === this.endMinute) {
-						return this.endSecond
-					} else {
-						return 59
-					}
-				}
-			},
-
-			/**
-			 * for i18n
-			 */
-			selectTimeText() {
-				return t("uni-datetime-picker.selectTime")
-			},
-			okText() {
-				return t("uni-datetime-picker.ok")
-			},
-			clearText() {
-				return t("uni-datetime-picker.clear")
-			},
-			cancelText() {
-				return t("uni-datetime-picker.cancel")
-			}
-		},
-
-		mounted() {
-			// #ifdef APP-NVUE
-			const res = uni.getSystemInfoSync();
-			this.fixNvueBug = {
-				top: res.windowHeight / 2,
-				left: res.windowWidth / 2
-			}
-			// #endif
-		},
-
-		methods: {
-			/**
-			 * @param {Object} item
-			 * 小于 10 在前面加个 0
-			 */
-
-			lessThanTen(item) {
-				return item < 10 ? '0' + item : item
-			},
-
-			/**
-			 * 解析时分秒字符串,例如:00:00:00
-			 * @param {String} timeString
-			 */
-			parseTimeType(timeString) {
-				if (timeString) {
-					let timeArr = timeString.split(':')
-					this.hour = Number(timeArr[0])
-					this.minute = Number(timeArr[1])
-					this.second = Number(timeArr[2])
-				}
-			},
-
-			/**
-			 * 解析选择器初始值,类型可以是字符串、时间戳,例如:2000-10-02、'08:30:00'、 1610695109000
-			 * @param {String | Number} datetime
-			 */
-			initPickerValue(datetime) {
-				let defaultValue = null
-				if (datetime) {
-					defaultValue = this.compareValueWithStartAndEnd(datetime, this.start, this.end)
-				} else {
-					defaultValue = Date.now()
-					defaultValue = this.compareValueWithStartAndEnd(defaultValue, this.start, this.end)
-				}
-				this.parseValue(defaultValue)
-			},
-
-			/**
-			 * 初始值规则:
-			 * - 用户设置初始值 value
-			 * 	- 设置了起始时间 start、终止时间 end,并 start < value < end,初始值为 value, 否则初始值为 start
-			 * 	- 只设置了起始时间 start,并 start < value,初始值为 value,否则初始值为 start
-			 * 	- 只设置了终止时间 end,并 value < end,初始值为 value,否则初始值为 end
-			 * 	- 无起始终止时间,则初始值为 value
-			 * - 无初始值 value,则初始值为当前本地时间 Date.now()
-			 * @param {Object} value
-			 * @param {Object} dateBase
-			 */
-			compareValueWithStartAndEnd(value, start, end) {
-				let winner = null
-				value = this.superTimeStamp(value)
-				start = this.superTimeStamp(start)
-				end = this.superTimeStamp(end)
-
-				if (start && end) {
-					if (value < start) {
-						winner = new Date(start)
-					} else if (value > end) {
-						winner = new Date(end)
-					} else {
-						winner = new Date(value)
-					}
-				} else if (start && !end) {
-					winner = start <= value ? new Date(value) : new Date(start)
-				} else if (!start && end) {
-					winner = value <= end ? new Date(value) : new Date(end)
-				} else {
-					winner = new Date(value)
-				}
-
-				return winner
-			},
-
-			/**
-			 * 转换为可比较的时间戳,接受日期、时分秒、时间戳
-			 * @param {Object} value
-			 */
-			superTimeStamp(value) {
-				let dateBase = ''
-				if (this.type === 'time' && value && typeof value === 'string') {
-					const now = new Date()
-					const year = now.getFullYear()
-					const month = now.getMonth() + 1
-					const day = now.getDate()
-					dateBase = year + '/' + month + '/' + day + ' '
-				}
-				if (Number(value) && typeof value !== NaN) {
-					value = parseInt(value)
-					dateBase = 0
-				}
-				return this.createTimeStamp(dateBase + value)
-			},
-
-			/**
-			 * 解析默认值 value,字符串、时间戳
-			 * @param {Object} defaultTime
-			 */
-			parseValue(value) {
-				if (!value) {
-					return
-				}
-				if (this.type === 'time' && typeof value === "string") {
-					this.parseTimeType(value)
-				} else {
-					let defaultDate = null
-					defaultDate = new Date(value)
-					if (this.type !== 'time') {
-						this.year = defaultDate.getFullYear()
-						this.month = defaultDate.getMonth() + 1
-						this.day = defaultDate.getDate()
-					}
-					if (this.type !== 'date') {
-						this.hour = defaultDate.getHours()
-						this.minute = defaultDate.getMinutes()
-						this.second = defaultDate.getSeconds()
-					}
-				}
-				if (this.hideSecond) {
-					this.second = 0
-				}
-			},
-
-			/**
-			 * 解析可选择时间范围 start、end,年月日字符串、时间戳
-			 * @param {Object} defaultTime
-			 */
-			parseDatetimeRange(point, pointType) {
-				// 时间为空,则重置为初始值
-				if (!point) {
-					if (pointType === 'start') {
-						this.startYear = 1920
-						this.startMonth = 1
-						this.startDay = 1
-						this.startHour = 0
-						this.startMinute = 0
-						this.startSecond = 0
-					}
-					if (pointType === 'end') {
-						this.endYear = 2120
-						this.endMonth = 12
-						this.endDay = 31
-						this.endHour = 23
-						this.endMinute = 59
-						this.endSecond = 59
-					}
-					return
-				}
-				if (this.type === 'time') {
-					const pointArr = point.split(':')
-					this[pointType + 'Hour'] = Number(pointArr[0])
-					this[pointType + 'Minute'] = Number(pointArr[1])
-					this[pointType + 'Second'] = Number(pointArr[2])
-				} else {
-					if (!point) {
-						pointType === 'start' ? this.startYear = this.year - 60 : this.endYear = this.year + 60
-						return
-					}
-					if (Number(point) && Number(point) !== NaN) {
-						point = parseInt(point)
-					}
-					// datetime 的 end 没有时分秒, 则不限制
-					const hasTime = /[0-9]:[0-9]/
-					if (this.type === 'datetime' && pointType === 'end' && typeof point === 'string' && !hasTime.test(
-							point)) {
-						point = point + ' 23:59:59'
-					}
-					const pointDate = new Date(point)
-					this[pointType + 'Year'] = pointDate.getFullYear()
-					this[pointType + 'Month'] = pointDate.getMonth() + 1
-					this[pointType + 'Day'] = pointDate.getDate()
-					if (this.type === 'datetime') {
-						this[pointType + 'Hour'] = pointDate.getHours()
-						this[pointType + 'Minute'] = pointDate.getMinutes()
-						this[pointType + 'Second'] = pointDate.getSeconds()
-					}
-				}
-			},
-
-			// 获取 年、月、日、时、分、秒 当前可选范围
-			getCurrentRange(value) {
-				const range = []
-				for (let i = this['min' + this.capitalize(value)]; i <= this['max' + this.capitalize(value)]; i++) {
-					range.push(i)
-				}
-				return range
-			},
-
-			// 字符串首字母大写
-			capitalize(str) {
-				return str.charAt(0).toUpperCase() + str.slice(1)
-			},
-
-			// 检查当前值是否在范围内,不在则当前值重置为可选范围第一项
-			checkValue(name, value, values) {
-				if (values.indexOf(value) === -1) {
-					this[name] = values[0]
-				}
-			},
-
-			// 每个月的实际天数
-			daysInMonth(year, month) { // Use 1 for January, 2 for February, etc.
-				return new Date(year, month, 0).getDate();
-			},
-
-			//兼容 iOS、safari 日期格式
-			fixIosDateFormat(value) {
-				if (typeof value === 'string') {
-					value = value.replace(/-/g, '/')
-				}
-				return value
-			},
-
-			/**
-			 * 生成时间戳
-			 * @param {Object} time
-			 */
-			createTimeStamp(time) {
-				if (!time) return
-				if (typeof time === "number") {
-					return time
-				} else {
-					time = time.replace(/-/g, '/')
-					if (this.type === 'date') {
-						time = time + ' ' + '00:00:00'
-					}
-					return Date.parse(time)
-				}
-			},
-
-			/**
-			 * 生成日期或时间的字符串
-			 */
-			createDomSting() {
-				const yymmdd = this.year +
-					'-' +
-					this.lessThanTen(this.month) +
-					'-' +
-					this.lessThanTen(this.day)
-
-				let hhmmss = this.lessThanTen(this.hour) +
-					':' +
-					this.lessThanTen(this.minute)
-
-				if (!this.hideSecond) {
-					hhmmss = hhmmss + ':' + this.lessThanTen(this.second)
-				}
-
-				if (this.type === 'date') {
-					return yymmdd
-				} else if (this.type === 'time') {
-					return hhmmss
-				} else {
-					return yymmdd + ' ' + hhmmss
-				}
-			},
-
-			/**
-			 * 初始化返回值,并抛出 change 事件
-			 */
-			initTime(emit = true) {
-				this.time = this.createDomSting()
-				if (!emit) return
-				if (this.returnType === 'timestamp' && this.type !== 'time') {
-					this.$emit('change', this.createTimeStamp(this.time))
-					this.$emit('input', this.createTimeStamp(this.time))
-					this.$emit('update:modelValue', this.createTimeStamp(this.time))
-				} else {
-					this.$emit('change', this.time)
-					this.$emit('input', this.time)
-					this.$emit('update:modelValue', this.time)
-				}
-			},
-
-			/**
-			 * 用户选择日期或时间更新 data
-			 * @param {Object} e
-			 */
-			bindDateChange(e) {
-				const val = e.detail.value
-				this.year = this.years[val[0]]
-				this.month = this.months[val[1]]
-				this.day = this.days[val[2]]
-			},
-			bindTimeChange(e) {
-				const val = e.detail.value
-				this.hour = this.hours[val[0]]
-				this.minute = this.minutes[val[1]]
-				this.second = this.seconds[val[2]]
-			},
-
-			/**
-			 * 初始化弹出层
-			 */
-			initTimePicker() {
-				if (this.disabled) return
-				const value = this.fixIosDateFormat(this.value)
-				this.initPickerValue(value)
-				this.visible = !this.visible
-			},
-
-			/**
-			 * 触发或关闭弹框
-			 */
-			tiggerTimePicker(e) {
-				this.visible = !this.visible
-			},
-
-			/**
-			 * 用户点击“清空”按钮,清空当前值
-			 */
-			clearTime() {
-				this.time = ''
-				this.$emit('change', this.time)
-				this.$emit('input', this.time)
-				this.$emit('update:modelValue', this.time)
-				this.tiggerTimePicker()
-			},
-
-			/**
-			 * 用户点击“确定”按钮
-			 */
-			setTime() {
-				this.initTime()
-				this.tiggerTimePicker()
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-
-	.uni-datetime-picker {
-		/* #ifndef APP-NVUE */
-		/* width: 100%; */
-		/* #endif */
-	}
-
-	.uni-datetime-picker-view {
-		height: 130px;
-		width: 270px;
-		/* #ifndef APP-NVUE */
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-item {
-		height: 50px;
-		line-height: 50px;
-		text-align: center;
-		font-size: 14px;
-	}
-
-	.uni-datetime-picker-btn {
-		margin-top: 60px;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		flex-direction: row;
-		justify-content: space-between;
-	}
-
-	.uni-datetime-picker-btn-text {
-		font-size: 14px;
-		color: $uni-primary;
-	}
-
-	.uni-datetime-picker-btn-group {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-datetime-picker-cancel {
-		margin-right: 30px;
-	}
-
-	.uni-datetime-picker-mask {
-		position: fixed;
-		bottom: 0px;
-		top: 0px;
-		left: 0px;
-		right: 0px;
-		background-color: rgba(0, 0, 0, 0.4);
-		transition-duration: 0.3s;
-		z-index: 998;
-	}
-
-	.uni-datetime-picker-popup {
-		border-radius: 8px;
-		padding: 30px;
-		width: 270px;
-		/* #ifdef APP-NVUE */
-		height: 500px;
-		/* #endif */
-		/* #ifdef APP-NVUE */
-		width: 330px;
-		/* #endif */
-		background-color: #fff;
-		position: fixed;
-		top: 50%;
-		left: 50%;
-		transform: translate(-50%, -50%);
-		transition-duration: 0.3s;
-		z-index: 999;
-	}
-
-	.fix-nvue-height {
-		/* #ifdef APP-NVUE */
-		height: 330px;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-time {
-		color: grey;
-	}
-
-	.uni-datetime-picker-column {
-		height: 50px;
-	}
-
-	.uni-datetime-picker-timebox {
-
-		border: 1px solid #E5E5E5;
-		border-radius: 5px;
-		padding: 7px 10px;
-		/* #ifndef APP-NVUE */
-		box-sizing: border-box;
-		cursor: pointer;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-timebox-pointer {
-		/* #ifndef APP-NVUE */
-		cursor: pointer;
-		/* #endif */
-	}
-
-
-	.uni-datetime-picker-disabled {
-		opacity: 0.4;
-		/* #ifdef H5 */
-		cursor: not-allowed !important;
-		/* #endif */
-	}
-
-	.uni-datetime-picker-text {
-		font-size: 14px;
-		line-height: 50px
-	}
-
-	.uni-datetime-picker-sign {
-		position: absolute;
-		top: 53px;
-		/* 减掉 10px 的元素高度,兼容nvue */
-		color: #999;
-		/* #ifdef APP-NVUE */
-		font-size: 16px;
-		/* #endif */
-	}
-
-	.sign-left {
-		left: 86px;
-	}
-
-	.sign-right {
-		right: 86px;
-	}
-
-	.sign-center {
-		left: 135px;
-	}
-
-	.uni-datetime-picker__container-box {
-		position: relative;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		margin-top: 40px;
-	}
-
-	.time-hide-second {
-		width: 180px;
-	}
-</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1010
uni_modules/uni-datetime-picker/components/uni-datetime-picker/uni-datetime-picker.vue


+ 0 - 415
uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js

@@ -1,415 +0,0 @@
-class Calendar {
-	constructor({
-		date,
-		selected,
-		startDate,
-		endDate,
-		range,
-		// multipleStatus
-	} = {}) {
-		// 当前日期
-		this.date = this.getDate(new Date()) // 当前初入日期
-		// 打点信息
-		this.selected = selected || [];
-		// 范围开始
-		this.startDate = startDate
-		// 范围结束
-		this.endDate = endDate
-		this.range = range
-		// 多选状态
-		this.cleanMultipleStatus()
-		// 每周日期
-		this.weeks = {}
-		// this._getWeek(this.date.fullDate)
-		// this.multipleStatus = multipleStatus
-		this.lastHover = false
-	}
-	/**
-	 * 设置日期
-	 * @param {Object} date
-	 */
-	setDate(date) {
-		this.selectDate = this.getDate(date)
-		this._getWeek(this.selectDate.fullDate)
-	}
-
-	/**
-	 * 清理多选状态
-	 */
-	cleanMultipleStatus() {
-		this.multipleStatus = {
-			before: '',
-			after: '',
-			data: []
-		}
-	}
-
-	/**
-	 * 重置开始日期
-	 */
-	resetSatrtDate(startDate) {
-		// 范围开始
-		this.startDate = startDate
-
-	}
-
-	/**
-	 * 重置结束日期
-	 */
-	resetEndDate(endDate) {
-		// 范围结束
-		this.endDate = endDate
-	}
-
-	/**
-	 * 获取任意时间
-	 */
-	getDate(date, AddDayCount = 0, str = 'day') {
-		if (!date) {
-			date = new Date()
-		}
-		if (typeof date !== 'object') {
-			date = date.replace(/-/g, '/')
-		}
-		const dd = new Date(date)
-		switch (str) {
-			case 'day':
-				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
-				break
-			case 'month':
-				if (dd.getDate() === 31) {
-					dd.setDate(dd.getDate() + AddDayCount)
-				} else {
-					const preMonth = dd.getMonth()
-					dd.setMonth(preMonth + AddDayCount) // 获取AddDayCount天后的日期
-					const nextMonth = dd.getMonth()
-					if(nextMonth-preMonth>AddDayCount){
-						dd.setMonth(nextMonth-(nextMonth-preMonth-AddDayCount))
-					}
-				}
-				break
-			case 'year':
-				dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
-				break
-		}
-		const y = dd.getFullYear()
-		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
-		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
-		return {
-			fullDate: y + '-' + m + '-' + d,
-			year: y,
-			month: m,
-			date: d,
-			day: dd.getDay()
-		}
-	}
-
-
-	/**
-	 * 获取上月剩余天数
-	 */
-	_getLastMonthDays(firstDay, full) {
-		let dateArr = []
-		for (let i = firstDay; i > 0; i--) {
-			const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
-			dateArr.push({
-				date: beforeDate,
-				month: full.month - 1,
-				disable: true
-			})
-		}
-		return dateArr
-	}
-	/**
-	 * 获取本月天数
-	 */
-	_currentMonthDys(dateData, full) {
-		let dateArr = []
-		let fullDate = this.date.fullDate
-		for (let i = 1; i <= dateData; i++) {
-			let isinfo = false
-			let nowDate = full.year + '-' + (full.month < 10 ?
-				full.month : full.month) + '-' + (i < 10 ?
-				'0' + i : i)
-			// 是否今天
-			let isDay = fullDate === nowDate
-			// 获取打点信息
-			let info = this.selected && this.selected.find((item) => {
-				if (this.dateEqual(nowDate, item.date)) {
-					return item
-				}
-			})
-
-			// 日期禁用
-			let disableBefore = true
-			let disableAfter = true
-			if (this.startDate) {
-				// let dateCompBefore = this.dateCompare(this.startDate, fullDate)
-				// disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
-				disableBefore = this.dateCompare(this.startDate, nowDate)
-			}
-
-			if (this.endDate) {
-				// let dateCompAfter = this.dateCompare(fullDate, this.endDate)
-				// disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
-				disableAfter = this.dateCompare(nowDate, this.endDate)
-			}
-			let multiples = this.multipleStatus.data
-			let checked = false
-			let multiplesStatus = -1
-			if (this.range) {
-				if (multiples) {
-					multiplesStatus = multiples.findIndex((item) => {
-						return this.dateEqual(item, nowDate)
-					})
-				}
-				if (multiplesStatus !== -1) {
-					checked = true
-				}
-			}
-			let data = {
-				fullDate: nowDate,
-				year: full.year,
-				date: i,
-				multiple: this.range ? checked : false,
-				beforeMultiple: this.isLogicBefore(nowDate, this.multipleStatus.before, this.multipleStatus.after),
-				afterMultiple: this.isLogicAfter(nowDate, this.multipleStatus.before, this.multipleStatus.after),
-				month: full.month,
-				disable: !(disableBefore && disableAfter),
-				isDay,
-				userChecked: false
-			}
-			if (info) {
-				data.extraInfo = info
-			}
-
-			dateArr.push(data)
-		}
-		return dateArr
-	}
-	/**
-	 * 获取下月天数
-	 */
-	_getNextMonthDays(surplus, full) {
-		let dateArr = []
-		for (let i = 1; i < surplus + 1; i++) {
-			dateArr.push({
-				date: i,
-				month: Number(full.month) + 1,
-				disable: true
-			})
-		}
-		return dateArr
-	}
-
-	/**
-	 * 获取当前日期详情
-	 * @param {Object} date
-	 */
-	getInfo(date) {
-		if (!date) {
-			date = new Date()
-		}
-		const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
-		return dateInfo
-	}
-
-	/**
-	 * 比较时间大小
-	 */
-	dateCompare(startDate, endDate) {
-		// 计算截止时间
-		startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
-		// 计算详细项的截止时间
-		endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
-		if (startDate <= endDate) {
-			return true
-		} else {
-			return false
-		}
-	}
-
-	/**
-	 * 比较时间是否相等
-	 */
-	dateEqual(before, after) {
-		// 计算截止时间
-		before = new Date(before.replace('-', '/').replace('-', '/'))
-		// 计算详细项的截止时间
-		after = new Date(after.replace('-', '/').replace('-', '/'))
-		if (before.getTime() - after.getTime() === 0) {
-			return true
-		} else {
-			return false
-		}
-	}
-
-	/**
-	 *  比较真实起始日期
-	 */
-
-	isLogicBefore(currentDay, before, after) {
-		let logicBefore = before
-		if (before && after) {
-			logicBefore = this.dateCompare(before, after) ? before : after
-		}
-		return this.dateEqual(logicBefore, currentDay)
-	}
-
-	isLogicAfter(currentDay, before, after) {
-		let logicAfter = after
-		if (before && after) {
-			logicAfter = this.dateCompare(before, after) ? after : before
-		}
-		return this.dateEqual(logicAfter, currentDay)
-	}
-
-	/**
-	 * 获取日期范围内所有日期
-	 * @param {Object} begin
-	 * @param {Object} end
-	 */
-	geDateAll(begin, end) {
-		var arr = []
-		var ab = begin.split('-')
-		var ae = end.split('-')
-		var db = new Date()
-		db.setFullYear(ab[0], ab[1] - 1, ab[2])
-		var de = new Date()
-		de.setFullYear(ae[0], ae[1] - 1, ae[2])
-		var unixDb = db.getTime() - 24 * 60 * 60 * 1000
-		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
-		for (var k = unixDb; k <= unixDe;) {
-			k = k + 24 * 60 * 60 * 1000
-			arr.push(this.getDate(new Date(parseInt(k))).fullDate)
-		}
-		return arr
-	}
-
-	/**
-	 *  获取多选状态
-	 */
-	setMultiple(fullDate) {
-		let {
-			before,
-			after
-		} = this.multipleStatus
-		if (!this.range) return
-		if (before && after) {
-			if (!this.lastHover) {
-				this.lastHover = true
-				return
-			}
-			this.multipleStatus.before = fullDate
-			this.multipleStatus.after = ''
-			this.multipleStatus.data = []
-			this.multipleStatus.fulldate = ''
-			this.lastHover = false
-		} else {
-			if (!before) {
-				this.multipleStatus.before = fullDate
-				this.lastHover = false
-			} else {
-				this.multipleStatus.after = fullDate
-				if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus
-						.after);
-				} else {
-					this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus
-						.before);
-				}
-				this.lastHover = true
-			}
-		}
-		this._getWeek(fullDate)
-	}
-
-	/**
-	 *  鼠标 hover 更新多选状态
-	 */
-	setHoverMultiple(fullDate) {
-		let {
-			before,
-			after
-		} = this.multipleStatus
-
-		if (!this.range) return
-		if (this.lastHover) return
-
-		if (!before) {
-			this.multipleStatus.before = fullDate
-		} else {
-			this.multipleStatus.after = fullDate
-			if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
-				this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
-			} else {
-				this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
-			}
-		}
-		this._getWeek(fullDate)
-	}
-
-	/**
-	 * 更新默认值多选状态
-	 */
-	setDefaultMultiple(before, after) {
-		this.multipleStatus.before = before
-		this.multipleStatus.after = after
-		if (before && after) {
-			if (this.dateCompare(before, after)) {
-				this.multipleStatus.data = this.geDateAll(before, after);
-				this._getWeek(after)
-			} else {
-				this.multipleStatus.data = this.geDateAll(after, before);
-				this._getWeek(before)
-			}
-		}
-	}
-
-	/**
-	 * 获取每周数据
-	 * @param {Object} dateData
-	 */
-	_getWeek(dateData) {
-		const {
-			fullDate,
-			year,
-			month,
-			date,
-			day
-		} = this.getDate(dateData)
-		let firstDay = new Date(year, month - 1, 1).getDay()
-		let currentDay = new Date(year, month, 0).getDate()
-		let dates = {
-			lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
-			currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
-			nextMonthDays: [], // 下个月开始几天
-			weeks: []
-		}
-		let canlender = []
-		const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
-		dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
-		canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
-		let weeks = {}
-		// 拼接数组  上个月开始几天 + 本月天数+ 下个月开始几天
-		for (let i = 0; i < canlender.length; i++) {
-			if (i % 7 === 0) {
-				weeks[parseInt(i / 7)] = new Array(7)
-			}
-			weeks[parseInt(i / 7)][i % 7] = canlender[i]
-		}
-		this.canlender = canlender
-		this.weeks = weeks
-	}
-
-	//静态方法
-	// static init(date) {
-	// 	if (!this.instance) {
-	// 		this.instance = new Calendar(date);
-	// 	}
-	// 	return this.instance;
-	// }
-}
-
-
-export default Calendar

+ 0 - 87
uni_modules/uni-datetime-picker/package.json

@@ -1,87 +0,0 @@
-{
-  "id": "uni-datetime-picker",
-  "displayName": "uni-datetime-picker 日期选择器",
-  "version": "2.2.14",
-  "description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
-  "keywords": [
-    "uni-datetime-picker",
-    "uni-ui",
-    "uniui",
-    "日期时间选择器",
-    "日期时间"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-"dcloudext": {
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
-    "type": "component-vue"
-  },
-  "uni_modules": {
-    "dependencies": [
-			"uni-scss",
-			"uni-icons"
-		],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "n"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 21
uni_modules/uni-datetime-picker/readme.md

@@ -1,21 +0,0 @@
-
-
-> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护`
-
-## DatetimePicker 时间选择器
-
-> **组件名:uni-datetime-picker**
-> 代码块: `uDatetimePicker`
-
-
-该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。
-
-若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。
-
-**_点击 picker 默认值规则:_**
-
-- 若设置初始值 value, 会显示在 picker 显示框中
-- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 22
uni_modules/uni-icons/changelog.md

@@ -1,22 +0,0 @@
-## 1.3.5(2022-01-24)
-- 优化 size 属性可以传入不带单位的字符串数值
-## 1.3.4(2022-01-24)
-- 优化 size 支持其他单位
-## 1.3.3(2022-01-17)
-- 修复 nvue 有些图标不显示的bug,兼容老版本图标
-## 1.3.2(2021-12-01)
-- 优化 示例可复制图标名称
-## 1.3.1(2021-11-23)
-- 优化 兼容旧组件 type 值
-## 1.3.0(2021-11-19)
-- 新增 更多图标
-- 优化 自定义图标使用方式
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-icons](https://uniapp.dcloud.io/component/uniui/uni-icons)
-## 1.1.7(2021-11-08)
-## 1.2.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.1.5(2021-05-12)
-- 新增 组件示例地址
-## 1.1.4(2021-02-05)
-- 调整为uni_modules目录规范

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1169
uni_modules/uni-icons/components/uni-icons/icons.js


+ 0 - 96
uni_modules/uni-icons/components/uni-icons/uni-icons.vue

@@ -1,96 +0,0 @@
-<template>
-	<!-- #ifdef APP-NVUE -->
-	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" @click="_onClick">{{unicode}}</text>
-	<!-- #endif -->
-	<!-- #ifndef APP-NVUE -->
-	<text :style="{ color: color, 'font-size': iconSize }" class="uni-icons" :class="['uniui-'+type,customPrefix,customPrefix?type:'']" @click="_onClick"></text>
-	<!-- #endif -->
-</template>
-
-<script>
-	import icons from './icons.js';
-	const getVal = (val) => {
-		const reg = /^[0-9]*$/g
-		return (typeof val === 'number' || reg.test(val) )? val + 'px' : val;
-	} 
-	// #ifdef APP-NVUE
-	var domModule = weex.requireModule('dom');
-	import iconUrl from './uniicons.ttf'
-	domModule.addRule('fontFace', {
-		'fontFamily': "uniicons",
-		'src': "url('"+iconUrl+"')"
-	});
-	// #endif
-
-	/**
-	 * Icons 图标
-	 * @description 用于展示 icons 图标
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=28
-	 * @property {Number} size 图标大小
-	 * @property {String} type 图标图案,参考示例
-	 * @property {String} color 图标颜色
-	 * @property {String} customPrefix 自定义图标
-	 * @event {Function} click 点击 Icon 触发事件
-	 */
-	export default {
-		name: 'UniIcons',
-		emits:['click'],
-		props: {
-			type: {
-				type: String,
-				default: ''
-			},
-			color: {
-				type: String,
-				default: '#333333'
-			},
-			size: {
-				type: [Number, String],
-				default: 16
-			},
-			customPrefix:{
-				type: String,
-				default: ''
-			}
-		},
-		data() {
-			return {
-				icons: icons.glyphs
-			}
-		},
-		computed:{
-			unicode(){
-				let code = this.icons.find(v=>v.font_class === this.type)
-				if(code){
-					return unescape(`%u${code.unicode}`)
-				}
-				return ''
-			},
-			iconSize(){
-				return getVal(this.size)
-			}
-		},
-		methods: {
-			_onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	/* #ifndef APP-NVUE */
-	@import './uniicons.css';
-	@font-face {
-		font-family: uniicons;
-		src: url('./uniicons.ttf') format('truetype');
-	}
-
-	/* #endif */
-	.uni-icons {
-		font-family: uniicons;
-		text-decoration: none;
-		text-align: center;
-	}
-
-</style>

+ 0 - 663
uni_modules/uni-icons/components/uni-icons/uniicons.css

@@ -1,663 +0,0 @@
-.uniui-color:before {
-  content: "\e6cf";
-}
-
-.uniui-wallet:before {
-  content: "\e6b1";
-}
-
-.uniui-settings-filled:before {
-  content: "\e6ce";
-}
-
-.uniui-auth-filled:before {
-  content: "\e6cc";
-}
-
-.uniui-shop-filled:before {
-  content: "\e6cd";
-}
-
-.uniui-staff-filled:before {
-  content: "\e6cb";
-}
-
-.uniui-vip-filled:before {
-  content: "\e6c6";
-}
-
-.uniui-plus-filled:before {
-  content: "\e6c7";
-}
-
-.uniui-folder-add-filled:before {
-  content: "\e6c8";
-}
-
-.uniui-color-filled:before {
-  content: "\e6c9";
-}
-
-.uniui-tune-filled:before {
-  content: "\e6ca";
-}
-
-.uniui-calendar-filled:before {
-  content: "\e6c0";
-}
-
-.uniui-notification-filled:before {
-  content: "\e6c1";
-}
-
-.uniui-wallet-filled:before {
-  content: "\e6c2";
-}
-
-.uniui-medal-filled:before {
-  content: "\e6c3";
-}
-
-.uniui-gift-filled:before {
-  content: "\e6c4";
-}
-
-.uniui-fire-filled:before {
-  content: "\e6c5";
-}
-
-.uniui-refreshempty:before {
-  content: "\e6bf";
-}
-
-.uniui-location-filled:before {
-  content: "\e6af";
-}
-
-.uniui-person-filled:before {
-  content: "\e69d";
-}
-
-.uniui-personadd-filled:before {
-  content: "\e698";
-}
-
-.uniui-back:before {
-  content: "\e6b9";
-}
-
-.uniui-forward:before {
-  content: "\e6ba";
-}
-
-.uniui-arrow-right:before {
-  content: "\e6bb";
-}
-
-.uniui-arrowthinright:before {
-  content: "\e6bb";
-}
-
-.uniui-arrow-left:before {
-  content: "\e6bc";
-}
-
-.uniui-arrowthinleft:before {
-  content: "\e6bc";
-}
-
-.uniui-arrow-up:before {
-  content: "\e6bd";
-}
-
-.uniui-arrowthinup:before {
-  content: "\e6bd";
-}
-
-.uniui-arrow-down:before {
-  content: "\e6be";
-}
-
-.uniui-arrowthindown:before {
-  content: "\e6be";
-}
-
-.uniui-bottom:before {
-  content: "\e6b8";
-}
-
-.uniui-arrowdown:before {
-  content: "\e6b8";
-}
-
-.uniui-right:before {
-  content: "\e6b5";
-}
-
-.uniui-arrowright:before {
-  content: "\e6b5";
-}
-
-.uniui-top:before {
-  content: "\e6b6";
-}
-
-.uniui-arrowup:before {
-  content: "\e6b6";
-}
-
-.uniui-left:before {
-  content: "\e6b7";
-}
-
-.uniui-arrowleft:before {
-  content: "\e6b7";
-}
-
-.uniui-eye:before {
-  content: "\e651";
-}
-
-.uniui-eye-filled:before {
-  content: "\e66a";
-}
-
-.uniui-eye-slash:before {
-  content: "\e6b3";
-}
-
-.uniui-eye-slash-filled:before {
-  content: "\e6b4";
-}
-
-.uniui-info-filled:before {
-  content: "\e649";
-}
-
-.uniui-reload:before {
-  content: "\e6b2";
-}
-
-.uniui-micoff-filled:before {
-  content: "\e6b0";
-}
-
-.uniui-map-pin-ellipse:before {
-  content: "\e6ac";
-}
-
-.uniui-map-pin:before {
-  content: "\e6ad";
-}
-
-.uniui-location:before {
-  content: "\e6ae";
-}
-
-.uniui-starhalf:before {
-  content: "\e683";
-}
-
-.uniui-star:before {
-  content: "\e688";
-}
-
-.uniui-star-filled:before {
-  content: "\e68f";
-}
-
-.uniui-calendar:before {
-  content: "\e6a0";
-}
-
-.uniui-fire:before {
-  content: "\e6a1";
-}
-
-.uniui-medal:before {
-  content: "\e6a2";
-}
-
-.uniui-font:before {
-  content: "\e6a3";
-}
-
-.uniui-gift:before {
-  content: "\e6a4";
-}
-
-.uniui-link:before {
-  content: "\e6a5";
-}
-
-.uniui-notification:before {
-  content: "\e6a6";
-}
-
-.uniui-staff:before {
-  content: "\e6a7";
-}
-
-.uniui-vip:before {
-  content: "\e6a8";
-}
-
-.uniui-folder-add:before {
-  content: "\e6a9";
-}
-
-.uniui-tune:before {
-  content: "\e6aa";
-}
-
-.uniui-auth:before {
-  content: "\e6ab";
-}
-
-.uniui-person:before {
-  content: "\e699";
-}
-
-.uniui-email-filled:before {
-  content: "\e69a";
-}
-
-.uniui-phone-filled:before {
-  content: "\e69b";
-}
-
-.uniui-phone:before {
-  content: "\e69c";
-}
-
-.uniui-email:before {
-  content: "\e69e";
-}
-
-.uniui-personadd:before {
-  content: "\e69f";
-}
-
-.uniui-chatboxes-filled:before {
-  content: "\e692";
-}
-
-.uniui-contact:before {
-  content: "\e693";
-}
-
-.uniui-chatbubble-filled:before {
-  content: "\e694";
-}
-
-.uniui-contact-filled:before {
-  content: "\e695";
-}
-
-.uniui-chatboxes:before {
-  content: "\e696";
-}
-
-.uniui-chatbubble:before {
-  content: "\e697";
-}
-
-.uniui-upload-filled:before {
-  content: "\e68e";
-}
-
-.uniui-upload:before {
-  content: "\e690";
-}
-
-.uniui-weixin:before {
-  content: "\e691";
-}
-
-.uniui-compose:before {
-  content: "\e67f";
-}
-
-.uniui-qq:before {
-  content: "\e680";
-}
-
-.uniui-download-filled:before {
-  content: "\e681";
-}
-
-.uniui-pyq:before {
-  content: "\e682";
-}
-
-.uniui-sound:before {
-  content: "\e684";
-}
-
-.uniui-trash-filled:before {
-  content: "\e685";
-}
-
-.uniui-sound-filled:before {
-  content: "\e686";
-}
-
-.uniui-trash:before {
-  content: "\e687";
-}
-
-.uniui-videocam-filled:before {
-  content: "\e689";
-}
-
-.uniui-spinner-cycle:before {
-  content: "\e68a";
-}
-
-.uniui-weibo:before {
-  content: "\e68b";
-}
-
-.uniui-videocam:before {
-  content: "\e68c";
-}
-
-.uniui-download:before {
-  content: "\e68d";
-}
-
-.uniui-help:before {
-  content: "\e679";
-}
-
-.uniui-navigate-filled:before {
-  content: "\e67a";
-}
-
-.uniui-plusempty:before {
-  content: "\e67b";
-}
-
-.uniui-smallcircle:before {
-  content: "\e67c";
-}
-
-.uniui-minus-filled:before {
-  content: "\e67d";
-}
-
-.uniui-micoff:before {
-  content: "\e67e";
-}
-
-.uniui-closeempty:before {
-  content: "\e66c";
-}
-
-.uniui-clear:before {
-  content: "\e66d";
-}
-
-.uniui-navigate:before {
-  content: "\e66e";
-}
-
-.uniui-minus:before {
-  content: "\e66f";
-}
-
-.uniui-image:before {
-  content: "\e670";
-}
-
-.uniui-mic:before {
-  content: "\e671";
-}
-
-.uniui-paperplane:before {
-  content: "\e672";
-}
-
-.uniui-close:before {
-  content: "\e673";
-}
-
-.uniui-help-filled:before {
-  content: "\e674";
-}
-
-.uniui-paperplane-filled:before {
-  content: "\e675";
-}
-
-.uniui-plus:before {
-  content: "\e676";
-}
-
-.uniui-mic-filled:before {
-  content: "\e677";
-}
-
-.uniui-image-filled:before {
-  content: "\e678";
-}
-
-.uniui-locked-filled:before {
-  content: "\e668";
-}
-
-.uniui-info:before {
-  content: "\e669";
-}
-
-.uniui-locked:before {
-  content: "\e66b";
-}
-
-.uniui-camera-filled:before {
-  content: "\e658";
-}
-
-.uniui-chat-filled:before {
-  content: "\e659";
-}
-
-.uniui-camera:before {
-  content: "\e65a";
-}
-
-.uniui-circle:before {
-  content: "\e65b";
-}
-
-.uniui-checkmarkempty:before {
-  content: "\e65c";
-}
-
-.uniui-chat:before {
-  content: "\e65d";
-}
-
-.uniui-circle-filled:before {
-  content: "\e65e";
-}
-
-.uniui-flag:before {
-  content: "\e65f";
-}
-
-.uniui-flag-filled:before {
-  content: "\e660";
-}
-
-.uniui-gear-filled:before {
-  content: "\e661";
-}
-
-.uniui-home:before {
-  content: "\e662";
-}
-
-.uniui-home-filled:before {
-  content: "\e663";
-}
-
-.uniui-gear:before {
-  content: "\e664";
-}
-
-.uniui-smallcircle-filled:before {
-  content: "\e665";
-}
-
-.uniui-map-filled:before {
-  content: "\e666";
-}
-
-.uniui-map:before {
-  content: "\e667";
-}
-
-.uniui-refresh-filled:before {
-  content: "\e656";
-}
-
-.uniui-refresh:before {
-  content: "\e657";
-}
-
-.uniui-cloud-upload:before {
-  content: "\e645";
-}
-
-.uniui-cloud-download-filled:before {
-  content: "\e646";
-}
-
-.uniui-cloud-download:before {
-  content: "\e647";
-}
-
-.uniui-cloud-upload-filled:before {
-  content: "\e648";
-}
-
-.uniui-redo:before {
-  content: "\e64a";
-}
-
-.uniui-images-filled:before {
-  content: "\e64b";
-}
-
-.uniui-undo-filled:before {
-  content: "\e64c";
-}
-
-.uniui-more:before {
-  content: "\e64d";
-}
-
-.uniui-more-filled:before {
-  content: "\e64e";
-}
-
-.uniui-undo:before {
-  content: "\e64f";
-}
-
-.uniui-images:before {
-  content: "\e650";
-}
-
-.uniui-paperclip:before {
-  content: "\e652";
-}
-
-.uniui-settings:before {
-  content: "\e653";
-}
-
-.uniui-search:before {
-  content: "\e654";
-}
-
-.uniui-redo-filled:before {
-  content: "\e655";
-}
-
-.uniui-list:before {
-  content: "\e644";
-}
-
-.uniui-mail-open-filled:before {
-  content: "\e63a";
-}
-
-.uniui-hand-down-filled:before {
-  content: "\e63c";
-}
-
-.uniui-hand-down:before {
-  content: "\e63d";
-}
-
-.uniui-hand-up-filled:before {
-  content: "\e63e";
-}
-
-.uniui-hand-up:before {
-  content: "\e63f";
-}
-
-.uniui-heart-filled:before {
-  content: "\e641";
-}
-
-.uniui-mail-open:before {
-  content: "\e643";
-}
-
-.uniui-heart:before {
-  content: "\e639";
-}
-
-.uniui-loop:before {
-  content: "\e633";
-}
-
-.uniui-pulldown:before {
-  content: "\e632";
-}
-
-.uniui-scan:before {
-  content: "\e62a";
-}
-
-.uniui-bars:before {
-  content: "\e627";
-}
-
-.uniui-cart-filled:before {
-  content: "\e629";
-}
-
-.uniui-checkbox:before {
-  content: "\e62b";
-}
-
-.uniui-checkbox-filled:before {
-  content: "\e62c";
-}
-
-.uniui-shop:before {
-  content: "\e62f";
-}
-
-.uniui-headphones:before {
-  content: "\e630";
-}
-
-.uniui-cart:before {
-  content: "\e631";
-}

BIN
uni_modules/uni-icons/components/uni-icons/uniicons.ttf


+ 0 - 86
uni_modules/uni-icons/package.json

@@ -1,86 +0,0 @@
-{
-  "id": "uni-icons",
-  "displayName": "uni-icons 图标",
-  "version": "1.3.5",
-  "description": "图标组件,用于展示移动端常见的图标,可自定义颜色、大小。",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "icon",
-    "图标"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": "^3.2.14"
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 8
uni_modules/uni-icons/readme.md

@@ -1,8 +0,0 @@
-## Icons 图标
-> **组件名:uni-icons**
-> 代码块: `uIcons`
-
-用于展示 icons 图标 。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-icons)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 27
uni_modules/uni-pagination/changelog.md

@@ -1,27 +0,0 @@
-## 1.2.4(2022-09-19)
-- 修复,未对主题色设置默认色,导致未引入 uni-scss 变量文件报错。
-- 修复,未对移动端当前页文字做主题色适配。
-## 1.2.3(2022-09-15)
-- 修复未使用 uni-scss 主题色的 bug。
-## 1.2.2(2022-07-06)
-- 修复 es 语言 i18n 错误
-## 1.2.1(2021-11-22)
-- 修复 vue3中某些scss变量无法找到的问题
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-pagination](https://uniapp.dcloud.io/component/uniui/uni-pagination)
-## 1.1.2(2021-10-08)
-- 修复 current 、value 属性未监听,导致高亮样式失效的 bug
-## 1.1.1(2021-08-20)
-- 新增 支持国际化
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.7(2021-05-12)
-- 新增 组件示例地址
-## 1.0.6(2021-04-12)
-- 新增 PC 和 移动端适配不同的 ui 
-## 1.0.5(2021-02-05)
-- 优化 组件引用关系,通过uni_modules引用组件
-
-## 1.0.4(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 5
uni_modules/uni-pagination/components/uni-pagination/i18n/en.json

@@ -1,5 +0,0 @@
-{
-	"uni-pagination.prevText": "prev",
-	"uni-pagination.nextText": "next",
-	"uni-pagination.piecePerPage": "piece/page"
-}

+ 0 - 5
uni_modules/uni-pagination/components/uni-pagination/i18n/es.json

@@ -1,5 +0,0 @@
-{
-	"uni-pagination.prevText": "anterior",
-	"uni-pagination.nextText": "prxima",
-	"uni-pagination.piecePerPage": "Art¨ªculo/P¨¢gina"
-}

+ 0 - 5
uni_modules/uni-pagination/components/uni-pagination/i18n/fr.json

@@ -1,5 +0,0 @@
-{
-	"uni-pagination.prevText": "précédente",
-	"uni-pagination.nextText": "suivante",
-	"uni-pagination.piecePerPage": "Articles/Pages"
-}

+ 0 - 12
uni_modules/uni-pagination/components/uni-pagination/i18n/index.js

@@ -1,12 +0,0 @@
-import en from './en.json'
-import es from './es.json'
-import fr from './fr.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	es,
-	fr,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 5
uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hans.json

@@ -1,5 +0,0 @@
-{
-	"uni-pagination.prevText": "上一页",
-	"uni-pagination.nextText": "下一页",
-	"uni-pagination.piecePerPage": "条/页"
-}

+ 0 - 5
uni_modules/uni-pagination/components/uni-pagination/i18n/zh-Hant.json

@@ -1,5 +0,0 @@
-{
-	"uni-pagination.prevText": "上一頁",
-	"uni-pagination.nextText": "下一頁",
-	"uni-pagination.piecePerPage": "條/頁"
-}

+ 0 - 465
uni_modules/uni-pagination/components/uni-pagination/uni-pagination.vue

@@ -1,465 +0,0 @@
-<template>
-	<view class="uni-pagination">
-		<!-- #ifndef MP -->
-		<picker v-if="showPageSize === true || showPageSize === 'true'" class="select-picker" mode="selector"
-			:value="pageSizeIndex" :range="pageSizeRange" @change="pickerChange" @cancel="pickerClick"
-			@click.native="pickerClick">
-			<button type="default" size="mini" :plain="true">
-				<text>{{pageSizeRange[pageSizeIndex]}} {{piecePerPage}}</text>
-				<uni-icons class="select-picker-icon" type="arrowdown" size="12" color="#999"></uni-icons>
-			</button>
-		</picker>
-		<!-- #endif -->
-		<!-- #ifndef APP-NVUE -->
-		<view class="uni-pagination__total is-phone-hide">共 {{ total }} 条</view>
-		<!-- #endif -->
-		<view class="uni-pagination__btn"
-			:class="currentIndex === 1 ? 'uni-pagination--disabled' : 'uni-pagination--enabled'"
-			:hover-class="currentIndex === 1 ? '' : 'uni-pagination--hover'" :hover-start-time="20"
-			:hover-stay-time="70" @click="clickLeft">
-			<template v-if="showIcon === true || showIcon === 'true'">
-				<uni-icons color="#666" size="16" type="left" />
-			</template>
-			<template v-else>
-				<text class="uni-pagination__child-btn">{{ prevPageText }}</text>
-			</template>
-		</view>
-		<view class="uni-pagination__num uni-pagination__num-flex-none">
-			<view class="uni-pagination__num-current">
-				<text class="uni-pagination__num-current-text is-pc-hide current-index-text">{{ currentIndex }}</text>
-				<text class="uni-pagination__num-current-text is-pc-hide">/{{ maxPage || 0 }}</text>
-				<!-- #ifndef APP-NVUE -->
-				<view v-for="(item, index) in paper" :key="index" :class="{ 'page--active': item === currentIndex }"
-					class="uni-pagination__num-tag tag--active is-phone-hide" @click.top="selectPage(item, index)">
-					<text>{{ item }}</text>
-				</view>
-				<!-- #endif -->
-
-			</view>
-		</view>
-		<view class="uni-pagination__btn"
-			:class="currentIndex >= maxPage ? 'uni-pagination--disabled' : 'uni-pagination--enabled'"
-			:hover-class="currentIndex === maxPage ? '' : 'uni-pagination--hover'" :hover-start-time="20"
-			:hover-stay-time="70" @click="clickRight">
-			<template v-if="showIcon === true || showIcon === 'true'">
-				<uni-icons color="#666" size="16" type="right" />
-			</template>
-			<template v-else>
-				<text class="uni-pagination__child-btn">{{ nextPageText }}</text>
-			</template>
-		</view>
-	</view>
-</template>
-
-<script>
-	/**
-	 * Pagination 分页器
-	 * @description 分页器组件,用于展示页码、请求数据等
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=32
-	 * @property {String} prevText 左侧按钮文字
-	 * @property {String} nextText 右侧按钮文字
-	 * @property {String} piecePerPageText 条/页文字
-	 * @property {Number} current 当前页
-	 * @property {Number} total 数据总量
-	 * @property {Number} pageSize 每页数据量
-	 * @property {Boolean} showIcon = [true|false] 是否以 icon 形式展示按钮
-	 * @property {Boolean} showPageSize = [true|false] 是否展示每页条数
-	 * @property {Array} pageSizeRange = [20, 50, 100, 500] 每页条数选框
-	 * @event {Function} change 点击页码按钮时触发 ,e={type,current} current为当前页,type值为:next/prev,表示点击的是上一页还是下一个
-	 * * @event {Function} pageSizeChange 当前每页条数改变时触发 ,e={pageSize} pageSize 为当前所选的每页条数
-	 */
-
-	import {
-		initVueI18n
-	} from '@dcloudio/uni-i18n'
-	import messages from './i18n/index.js'
-	const {
-		t
-	} = initVueI18n(messages)
-	export default {
-		name: 'UniPagination',
-		emits: ['update:modelValue', 'input', 'change', 'pageSizeChange'],
-		props: {
-			value: {
-				type: [Number, String],
-				default: 1
-			},
-			modelValue: {
-				type: [Number, String],
-				default: 1
-			},
-			prevText: {
-				type: String,
-			},
-			nextText: {
-				type: String,
-			},
-			piecePerPageText: {
-				type: String
-			},
-			current: {
-				type: [Number, String],
-				default: 1
-			},
-			total: {
-				// 数据总量
-				type: [Number, String],
-				default: 0
-			},
-			pageSize: {
-				// 每页数据量
-				type: [Number, String],
-				default: 10
-			},
-			showIcon: {
-				// 是否以 icon 形式展示按钮
-				type: [Boolean, String],
-				default: false
-			},
-			showPageSize: {
-				// 是否以 icon 形式展示按钮
-				type: [Boolean, String],
-				default: false
-			},
-			pagerCount: {
-				type: Number,
-				default: 7
-			},
-			pageSizeRange: {
-				type: Array,
-				default: () => [20, 50, 100, 500]
-			}
-		},
-		data() {
-			return {
-				pageSizeIndex: 0,
-				currentIndex: 1,
-				paperData: [],
-				pickerShow: false
-			}
-		},
-		computed: {
-			piecePerPage() {
-				return this.piecePerPageText || t('uni-pagination.piecePerPage')
-			},
-			prevPageText() {
-				return this.prevText || t('uni-pagination.prevText')
-			},
-			nextPageText() {
-				return this.nextText || t('uni-pagination.nextText')
-			},
-			maxPage() {
-				let maxPage = 1
-				let total = Number(this.total)
-				let pageSize = Number(this.pageSize)
-				if (total && pageSize) {
-					maxPage = Math.ceil(total / pageSize)
-				}
-				return maxPage
-			},
-			paper() {
-				const num = this.currentIndex
-				// TODO 最大页数
-				const pagerCount = this.pagerCount
-				// const total = 181
-				const total = this.total
-				const pageSize = this.pageSize
-				let totalArr = []
-				let showPagerArr = []
-				let pagerNum = Math.ceil(total / pageSize)
-				for (let i = 0; i < pagerNum; i++) {
-					totalArr.push(i + 1)
-				}
-				showPagerArr.push(1)
-				const totalNum = totalArr[totalArr.length - (pagerCount + 1) / 2]
-				totalArr.forEach((item, index) => {
-					if ((pagerCount + 1) / 2 >= num) {
-						if (item < pagerCount + 1 && item > 1) {
-							showPagerArr.push(item)
-						}
-					} else if (num + 2 <= totalNum) {
-						if (item > num - (pagerCount + 1) / 2 && item < num + (pagerCount + 1) / 2) {
-							showPagerArr.push(item)
-						}
-					} else {
-						if ((item > num - (pagerCount + 1) / 2 || pagerNum - pagerCount < item) && item < totalArr[
-								totalArr.length - 1]) {
-							showPagerArr.push(item)
-						}
-					}
-				})
-				if (pagerNum > pagerCount) {
-					if ((pagerCount + 1) / 2 >= num) {
-						showPagerArr[showPagerArr.length - 1] = '...'
-					} else if (num + 2 <= totalNum) {
-						showPagerArr[1] = '...'
-						showPagerArr[showPagerArr.length - 1] = '...'
-					} else {
-						showPagerArr[1] = '...'
-					}
-					showPagerArr.push(totalArr[totalArr.length - 1])
-				} else {
-					if ((pagerCount + 1) / 2 >= num) {} else if (num + 2 <= totalNum) {} else {
-						showPagerArr.shift()
-						showPagerArr.push(totalArr[totalArr.length - 1])
-					}
-				}
-
-				return showPagerArr
-			}
-		},
-		watch: {
-			current: {
-				immediate: true,
-				handler(val, old) {
-					if (val < 1) {
-						this.currentIndex = 1
-					} else {
-						this.currentIndex = val
-					}
-				}
-			},
-			value: {
-				immediate: true,
-				handler(val) {
-					if (Number(this.current) !== 1) return
-					if (val < 1) {
-						this.currentIndex = 1
-					} else {
-						this.currentIndex = val
-					}
-				}
-			},
-			pageSizeIndex(val) {
-				this.$emit('pageSizeChange', this.pageSizeRange[val])
-			}
-		},
-		methods: {
-			pickerChange(e) {
-				this.pageSizeIndex = e.detail.value
-				this.pickerClick()
-			},
-			pickerClick() {
-				// #ifdef H5
-				const body = document.querySelector('body')
-				if (!body) return
-
-				const className = 'uni-pagination-picker-show'
-				this.pickerShow = !this.pickerShow
-
-				if (this.pickerShow) {
-					body.classList.add(className)
-				} else {
-					setTimeout(() => body.classList.remove(className), 300)
-				}
-				// #endif
-			},
-			// 选择标签
-			selectPage(e, index) {
-				if (parseInt(e)) {
-					this.currentIndex = e
-					this.change('current')
-				} else {
-					let pagerNum = Math.ceil(this.total / this.pageSize)
-					// let pagerNum = Math.ceil(181 / this.pageSize)
-					// 上一页
-					if (index <= 1) {
-						if (this.currentIndex - 5 > 1) {
-							this.currentIndex -= 5
-						} else {
-							this.currentIndex = 1
-						}
-						return
-					}
-					// 下一页
-					if (index >= 6) {
-						if (this.currentIndex + 5 > pagerNum) {
-							this.currentIndex = pagerNum
-						} else {
-							this.currentIndex += 5
-						}
-						return
-					}
-				}
-			},
-			clickLeft() {
-				if (Number(this.currentIndex) === 1) {
-					return
-				}
-				this.currentIndex -= 1
-				this.change('prev')
-			},
-			clickRight() {
-				if (Number(this.currentIndex) >= this.maxPage) {
-					return
-				}
-				this.currentIndex += 1
-				this.change('next')
-			},
-			change(e) {
-				this.$emit('input', this.currentIndex)
-				this.$emit('update:modelValue', this.currentIndex)
-				this.$emit('change', {
-					type: e,
-					current: this.currentIndex
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	$uni-primary: #2979ff !default;
-	.uni-pagination {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		position: relative;
-		overflow: hidden;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-	}
-
-	.uni-pagination__total {
-		font-size: 14px;
-		color: #999;
-		margin-right: 15px;
-	}
-
-	.uni-pagination__btn {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		cursor: pointer;
-		/* #endif */
-		padding: 0 8px;
-		line-height: 30px;
-		font-size: 12px;
-		position: relative;
-		background-color: #F0F0F0;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		text-align: center;
-		border-radius: 5px;
-		// border-width: 1px;
-		// border-style: solid;
-		// border-color: $uni-border-color;
-	}
-
-	.uni-pagination__child-btn {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		font-size: 12px;
-		position: relative;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		text-align: center;
-		color: #666;
-		font-size: 12px;
-	}
-
-	.uni-pagination__num {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex: 1;
-		flex-direction: row;
-		justify-content: center;
-		align-items: center;
-		height: 30px;
-		line-height: 30px;
-		font-size: 12px;
-		color: #666;
-		margin: 0 5px;
-	}
-
-	.uni-pagination__num-tag {
-		/* #ifdef H5 */
-		cursor: pointer;
-		min-width: 30px;
-		/* #endif */
-		margin: 0 5px;
-		height: 30px;
-		text-align: center;
-		line-height: 30px;
-		// border: 1px red solid;
-		color: #999;
-		border-radius: 4px;
-		// border-width: 1px;
-		// border-style: solid;
-		// border-color: $uni-border-color;
-	}
-
-	.uni-pagination__num-current {
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: row;
-	}
-
-	.uni-pagination__num-current-text {
-		font-size: 15px;
-	}
-
-	.current-index-text{
-		color: $uni-primary;
-	}
-
-	.uni-pagination--enabled {
-		color: #333333;
-		opacity: 1;
-	}
-
-	.uni-pagination--disabled {
-		opacity: 0.5;
-		/* #ifdef H5 */
-		cursor: default;
-		/* #endif */
-	}
-
-	.uni-pagination--hover {
-		color: rgba(0, 0, 0, 0.6);
-		background-color: #eee;
-	}
-
-	.tag--active:hover {
-		color: $uni-primary;
-	}
-
-	.page--active {
-		color: #fff;
-		background-color: $uni-primary;
-	}
-
-	.page--active:hover {
-		color: #fff;
-	}
-
-	/* #ifndef APP-NVUE */
-	.is-pc-hide {
-		display: block;
-	}
-
-	.is-phone-hide {
-		display: none;
-	}
-
-	@media screen and (min-width: 450px) {
-		.is-pc-hide {
-			display: none;
-		}
-
-		.is-phone-hide {
-			display: block;
-		}
-
-		.uni-pagination__num-flex-none {
-			flex: none;
-		}
-	}
-
-	/* #endif */
-</style>

+ 0 - 83
uni_modules/uni-pagination/package.json

@@ -1,83 +0,0 @@
-{
-  "id": "uni-pagination",
-  "displayName": "uni-pagination 分页器",
-  "version": "1.2.4",
-  "description": "Pagination 分页器组件,用于展示页码、请求数据等。",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "分页器",
-    "页码"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-"dcloudext": {
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
-    "type": "component-vue"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss","uni-icons"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 11
uni_modules/uni-pagination/readme.md

@@ -1,11 +0,0 @@
-
-
-## Pagination 分页器
-> **组件名:uni-pagination**
-> 代码块: `uPagination`
-
-
-分页器组件,用于展示页码、请求数据等。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-pagination)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 8
uni_modules/uni-scss/changelog.md

@@ -1,8 +0,0 @@
-## 1.0.3(2022-01-21)
-- 优化 组件示例
-## 1.0.2(2021-11-22)
-- 修复 / 符号在 vue 不同版本兼容问题引起的报错问题
-## 1.0.1(2021-11-22)
-- 修复 vue3中scss语法兼容问题
-## 1.0.0(2021-11-18)
-- init

+ 0 - 1
uni_modules/uni-scss/index.scss

@@ -1 +0,0 @@
-@import './styles/index.scss';

+ 0 - 82
uni_modules/uni-scss/package.json

@@ -1,82 +0,0 @@
-{
-  "id": "uni-scss",
-  "displayName": "uni-scss 辅助样式",
-  "version": "1.0.3",
-  "description": "uni-sass是uni-ui提供的一套全局样式 ,通过一些简单的类名和sass变量,实现简单的页面布局操作,比如颜色、边距、圆角等。",
-  "keywords": [
-    "uni-scss",
-    "uni-ui",
-    "辅助样式"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": "^3.1.0"
-  },
-  "dcloudext": {
-    "category": [
-        "JS SDK",
-        "通用 SDK"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "u"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "n",
-          "联盟": "n"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 4
uni_modules/uni-scss/readme.md

@@ -1,4 +0,0 @@
-`uni-sass` 是 `uni-ui`提供的一套全局样式 ,通过一些简单的类名和`sass`变量,实现简单的页面布局操作,比如颜色、边距、圆角等。
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-sass)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 

+ 0 - 7
uni_modules/uni-scss/styles/index.scss

@@ -1,7 +0,0 @@
-@import './setting/_variables.scss';
-@import './setting/_border.scss';
-@import './setting/_color.scss';
-@import './setting/_space.scss';
-@import './setting/_radius.scss';
-@import './setting/_text.scss';
-@import './setting/_styles.scss';

+ 0 - 3
uni_modules/uni-scss/styles/setting/_border.scss

@@ -1,3 +0,0 @@
-.uni-border {
-	border: 1px $uni-border-1 solid;
-}

+ 0 - 66
uni_modules/uni-scss/styles/setting/_color.scss

@@ -1,66 +0,0 @@
-
-// TODO 暂时不需要 class ,需要用户使用变量实现 ,如果使用类名其实并不推荐
-// @mixin get-styles($k,$c) {
-// 	@if $k == size or $k == weight{
-// 		font-#{$k}:#{$c}
-// 	}@else{
-// 		#{$k}:#{$c}
-// 	}
-// }
-$uni-ui-color:(
-	// 主色
-	primary: $uni-primary,
-	primary-disable: $uni-primary-disable,
-	primary-light: $uni-primary-light,
-	// 辅助色
-	success: $uni-success,
-	success-disable: $uni-success-disable,
-	success-light: $uni-success-light,
-	warning: $uni-warning,
-	warning-disable: $uni-warning-disable,
-	warning-light: $uni-warning-light,
-	error: $uni-error,
-	error-disable: $uni-error-disable,
-	error-light: $uni-error-light,
-	info: $uni-info,
-	info-disable: $uni-info-disable,
-	info-light: $uni-info-light,
-	// 中性色
-	main-color: $uni-main-color,
-	base-color: $uni-base-color,
-	secondary-color: $uni-secondary-color,
-	extra-color: $uni-extra-color,
-	// 背景色
-	bg-color: $uni-bg-color,
-	// 边框颜色
-	border-1: $uni-border-1,
-	border-2: $uni-border-2,
-	border-3: $uni-border-3,
-	border-4: $uni-border-4,
-	// 黑色
-	black:$uni-black,
-	// 白色
-	white:$uni-white,
-	// 透明
-	transparent:$uni-transparent
-) !default;
-@each $key, $child in $uni-ui-color {
-	.uni-#{"" + $key} {
-		color: $child;
-	}
-	.uni-#{"" + $key}-bg {
-		background-color: $child;
-	}
-}
-.uni-shadow-sm {
-	box-shadow: $uni-shadow-sm;
-}
-.uni-shadow-base {
-	box-shadow: $uni-shadow-base;
-}
-.uni-shadow-lg {
-	box-shadow: $uni-shadow-lg;
-}
-.uni-mask {
-	background-color:$uni-mask;
-}

+ 0 - 55
uni_modules/uni-scss/styles/setting/_radius.scss

@@ -1,55 +0,0 @@
-@mixin radius($r,$d:null ,$important: false){
-  $radius-value:map-get($uni-radius, $r) if($important, !important, null);
-  // Key exists within the $uni-radius variable
-  @if (map-has-key($uni-radius, $r) and  $d){
-		@if $d == t {
-				border-top-left-radius:$radius-value;
-				border-top-right-radius:$radius-value;
-		}@else if $d == r {
-				border-top-right-radius:$radius-value;
-				border-bottom-right-radius:$radius-value;
-		}@else if $d == b {
-				border-bottom-left-radius:$radius-value;
-				border-bottom-right-radius:$radius-value;
-		}@else if $d == l {
-				border-top-left-radius:$radius-value;
-				border-bottom-left-radius:$radius-value;
-		}@else if $d == tl {
-				border-top-left-radius:$radius-value;
-		}@else if $d == tr {
-				border-top-right-radius:$radius-value;
-		}@else if $d == br {
-				border-bottom-right-radius:$radius-value;
-		}@else if $d == bl {
-				border-bottom-left-radius:$radius-value;
-		}
-  }@else{
-		border-radius:$radius-value;
-  }
-}
-
-@each $key, $child in $uni-radius {
-	@if($key){
-		.uni-radius-#{"" + $key} {
-				@include radius($key)
-		}
-	}@else{
-		.uni-radius {
-				@include radius($key)
-		}
-	}
-}
-
-@each $direction in t, r, b, l,tl, tr, br, bl {
-	@each $key, $child in $uni-radius {
-		@if($key){
-			.uni-radius-#{"" + $direction}-#{"" + $key} {
-				@include radius($key,$direction,false)
-			}
-		}@else{
-			.uni-radius-#{$direction} {
-				@include radius($key,$direction,false)
-			}
-		}
-	}
-}

+ 0 - 56
uni_modules/uni-scss/styles/setting/_space.scss

@@ -1,56 +0,0 @@
-
-@mixin fn($space,$direction,$size,$n) {
-	@if $n {
-		#{$space}-#{$direction}: #{$size*$uni-space-root}px
-	} @else {
-		 #{$space}-#{$direction}: #{-$size*$uni-space-root}px
-	}
-}
-@mixin get-styles($direction,$i,$space,$n){
-	@if $direction == t {
-		@include fn($space, top,$i,$n);
-	} 
-	@if $direction == r {
-		@include fn($space, right,$i,$n);
-	} 
-	@if $direction == b {
-		@include fn($space, bottom,$i,$n);
-	} 
-	@if $direction == l {
-	 @include fn($space, left,$i,$n);
-	} 
-	@if $direction == x {
-		@include fn($space, left,$i,$n);
-		@include fn($space, right,$i,$n);
-	} 
-	@if $direction == y {
-		@include fn($space, top,$i,$n);
-		@include fn($space, bottom,$i,$n);
-	} 
-	@if $direction == a {
-		@if $n {
-			#{$space}:#{$i*$uni-space-root}px;
-		} @else {
-			#{$space}:#{-$i*$uni-space-root}px;
-		}
-	} 
-}
-
-@each $orientation in m,p {
-	$space: margin;
-	@if $orientation == m {
-		$space: margin;
-	} @else {
-		$space: padding;
-	}
-	@for $i from 0 through 16 {
-		@each $direction in t, r, b, l, x, y, a {
-			.uni-#{$orientation}#{$direction}-#{$i} { 
-				@include  get-styles($direction,$i,$space,true);
-			} 
-			.uni-#{$orientation}#{$direction}-n#{$i} { 
-				@include  get-styles($direction,$i,$space,false);
-			}
-		}
-	}
-}

+ 0 - 167
uni_modules/uni-scss/styles/setting/_styles.scss

@@ -1,167 +0,0 @@
-/* #ifndef APP-NVUE */
-
-$-color-white:#fff;
-$-color-black:#000;
-@mixin base-style($color) {
-	color: #fff;
-	background-color: $color;
-	border-color: mix($-color-black, $color, 8%);
-	&:not([hover-class]):active {
-		background: mix($-color-black, $color, 10%);
-		border-color: mix($-color-black, $color, 20%);
-		color: $-color-white;
-		outline: none;
-	}
-}
-@mixin is-color($color) {
-	@include base-style($color);
-	&[loading] {
-		@include base-style($color);
-		&::before {
-			margin-right:5px;
-		}
-	}
-	&[disabled] {
-	  &,
-		&[loading],
-	  &:not([hover-class]):active {
-	    color: $-color-white;
-			border-color: mix(darken($color,10%), $-color-white);
-	    background-color: mix($color, $-color-white);
-	  }
-	}
-
-}
-@mixin base-plain-style($color) {
-	color:$color;
-	background-color: mix($-color-white, $color, 90%);
-	border-color: mix($-color-white, $color, 70%);
-	&:not([hover-class]):active {
-	  background: mix($-color-white, $color, 80%);
-	  color: $color;
-	  outline: none;
-		border-color: mix($-color-white, $color, 50%);
-	}
-}
-@mixin is-plain($color){
-	&[plain] {
-		@include base-plain-style($color);
-		&[loading] {
-			@include base-plain-style($color);
-			&::before {
-				margin-right:5px;
-			}
-		}
-		&[disabled] {
-		  &,
-		  &:active {
-		    color: mix($-color-white, $color, 40%);
-		    background-color: mix($-color-white, $color, 90%);
-				border-color: mix($-color-white, $color, 80%);
-		  }
-		}
-	}
-}
-
-
-.uni-btn {
-	margin: 5px;
-	color: #393939;
-	border:1px solid #ccc;
-	font-size: 16px;
-	font-weight: 200;
-	background-color: #F9F9F9;
-	// TODO 暂时处理边框隐藏一边的问题
-	overflow: visible;
-	&::after{
-		border: none;
-	}
-
-	&:not([type]),&[type=default] {
-		color: #999;
-		&[loading] {
-			background: none;
-			&::before {
-				margin-right:5px;
-			}
-		}
-
-
-
-		&[disabled]{
-			color: mix($-color-white, #999, 60%);
-		  &,
-			&[loading],
-		  &:active {
-				color: mix($-color-white, #999, 60%);
-		    background-color: mix($-color-white,$-color-black , 98%);
-				border-color: mix($-color-white,  #999, 85%);
-		  }
-		}
-
-		&[plain] {
-			color: #999;
-			background: none;
-			border-color: $uni-border-1;
-			&:not([hover-class]):active {
-				background: none;
-			  color: mix($-color-white, $-color-black, 80%);
-				border-color: mix($-color-white, $-color-black, 90%);
-			  outline: none;
-			}
-			&[disabled]{
-			  &,
-				&[loading],
-			  &:active {
-			    background: none;
-					color: mix($-color-white, #999, 60%);
-					border-color: mix($-color-white,  #999, 85%);
-			  }
-			}
-		}
-	}
-
-	&:not([hover-class]):active {
-	  color: mix($-color-white, $-color-black, 50%);
-	}
-
-	&[size=mini] {
-		font-size: 16px;
-		font-weight: 200;
-		border-radius: 8px;
-	}
-
-
-
-	&.uni-btn-small {
-		font-size: 14px;
-	}
-	&.uni-btn-mini {
-		font-size: 12px;
-	}
-
-	&.uni-btn-radius {
-		border-radius: 999px;
-	}
-	&[type=primary] {
-		@include is-color($uni-primary);
-		@include is-plain($uni-primary)
-	}
-	&[type=success] {
-		@include is-color($uni-success);
-		@include is-plain($uni-success)
-	}
-	&[type=error] {
-		@include is-color($uni-error);
-		@include is-plain($uni-error)
-	}
-	&[type=warning] {
-		@include is-color($uni-warning);
-		@include is-plain($uni-warning)
-	}
-	&[type=info] {
-		@include is-color($uni-info);
-		@include is-plain($uni-info)
-	}
-}
-/* #endif */

+ 0 - 24
uni_modules/uni-scss/styles/setting/_text.scss

@@ -1,24 +0,0 @@
-@mixin get-styles($k,$c) {
-	@if $k == size or $k == weight{
-		font-#{$k}:#{$c}
-	}@else{
-		#{$k}:#{$c}
-	}
-}
-
-@each $key, $child in $uni-headings {
-	/* #ifndef APP-NVUE */
-	.uni-#{$key} {
-		@each $k, $c in $child {
-			@include get-styles($k,$c)
-		}
-	}
-	/* #endif */
-	/* #ifdef APP-NVUE */
-	.container .uni-#{$key} {
-		@each $k, $c in $child {
-			@include get-styles($k,$c)
-		}
-	}
-	/* #endif */
-}

+ 0 - 146
uni_modules/uni-scss/styles/setting/_variables.scss

@@ -1,146 +0,0 @@
-// @use "sass:math";
-@import  '../tools/functions.scss';
-// 间距基础倍数
-$uni-space-root: 2 !default;
-// 边框半径默认值
-$uni-radius-root:5px !default;
-$uni-radius: () !default;
-// 边框半径断点
-$uni-radius: map-deep-merge(
-  (
-    0: 0,
-		// TODO 当前版本暂时不支持 sm 属性
-    // 'sm': math.div($uni-radius-root, 2),
-    null: $uni-radius-root,
-    'lg': $uni-radius-root * 2,
-    'xl': $uni-radius-root * 6,
-    'pill': 9999px,
-    'circle': 50%
-  ),
-  $uni-radius
-);
-// 字体家族
-$body-font-family: 'Roboto', sans-serif !default;
-// 文本
-$heading-font-family: $body-font-family !default;
-$uni-headings: () !default;
-$letterSpacing: -0.01562em;
-$uni-headings: map-deep-merge(
-  (
-    'h1': (
-      size: 32px,
-			weight: 300,
-			line-height: 50px,
-			// letter-spacing:-0.01562em
-    ),
-    'h2': (
-      size: 28px,
-      weight: 300,
-      line-height: 40px,
-      // letter-spacing: -0.00833em
-    ),
-    'h3': (
-      size: 24px,
-      weight: 400,
-      line-height: 32px,
-      // letter-spacing: normal
-    ),
-    'h4': (
-      size: 20px,
-      weight: 400,
-      line-height: 30px,
-      // letter-spacing: 0.00735em
-    ),
-    'h5': (
-      size: 16px,
-      weight: 400,
-      line-height: 24px,
-      // letter-spacing: normal
-    ),
-    'h6': (
-      size: 14px,
-      weight: 500,
-      line-height: 18px,
-      // letter-spacing: 0.0125em
-    ),
-    'subtitle': (
-      size: 12px,
-      weight: 400,
-      line-height: 20px,
-      // letter-spacing: 0.00937em
-    ),
-    'body': (
-      font-size: 14px,
-			font-weight: 400,
-			line-height: 22px,
-			// letter-spacing: 0.03125em
-    ),
-    'caption': (
-      'size': 12px,
-      'weight': 400,
-      'line-height': 20px,
-      // 'letter-spacing': 0.03333em,
-      // 'text-transform': false
-    )
-  ),
-  $uni-headings
-);
-
-
-
-// 主色
-$uni-primary: #2979ff !default;
-$uni-primary-disable:lighten($uni-primary,20%) !default;
-$uni-primary-light: lighten($uni-primary,25%) !default;
-
-// 辅助色
-// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
-$uni-success: #18bc37 !default;
-$uni-success-disable:lighten($uni-success,20%) !default;
-$uni-success-light: lighten($uni-success,25%) !default;
-
-$uni-warning: #f3a73f !default;
-$uni-warning-disable:lighten($uni-warning,20%) !default;
-$uni-warning-light: lighten($uni-warning,25%) !default;
-
-$uni-error: #e43d33 !default;
-$uni-error-disable:lighten($uni-error,20%) !default;
-$uni-error-light: lighten($uni-error,25%) !default;
-
-$uni-info: #8f939c !default;
-$uni-info-disable:lighten($uni-info,20%) !default;
-$uni-info-light: lighten($uni-info,25%) !default;
-
-// 中性色
-// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
-$uni-main-color: #3a3a3a !default; 			// 主要文字
-$uni-base-color: #6a6a6a !default;			// 常规文字
-$uni-secondary-color: #909399 !default;	// 次要文字
-$uni-extra-color: #c7c7c7 !default;			// 辅助说明
-
-// 边框颜色
-$uni-border-1: #F0F0F0 !default;
-$uni-border-2: #EDEDED !default;
-$uni-border-3: #DCDCDC !default;
-$uni-border-4: #B9B9B9 !default;
-
-// 常规色
-$uni-black: #000000 !default;
-$uni-white: #ffffff !default;
-$uni-transparent: rgba($color: #000000, $alpha: 0) !default;
-
-// 背景色
-$uni-bg-color: #f7f7f7 !default;
-
-/* 水平间距 */
-$uni-spacing-sm: 8px !default;
-$uni-spacing-base: 15px !default;
-$uni-spacing-lg: 30px !default;
-
-// 阴影
-$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5) !default;
-$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2) !default;
-$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5) !default;
-
-// 蒙版
-$uni-mask: rgba($color: #000000, $alpha: 0.4) !default;

+ 0 - 19
uni_modules/uni-scss/styles/tools/functions.scss

@@ -1,19 +0,0 @@
-// 合并 map
-@function map-deep-merge($parent-map, $child-map){
-	$result: $parent-map;
-	@each $key, $child in $child-map {
-		$parent-has-key: map-has-key($result, $key);
-		$parent-value: map-get($result, $key);
-		$parent-type: type-of($parent-value);
-		$child-type: type-of($child);
-		$parent-is-map: $parent-type == map;
-		$child-is-map: $child-type == map;
-			
-		@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
-			$result: map-merge($result, ( $key: $child ));
-		}@else {
-			$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
-		}
-	}
-	@return $result;
-};

+ 0 - 31
uni_modules/uni-scss/theme.scss

@@ -1,31 +0,0 @@
-// 间距基础倍数
-$uni-space-root: 2;
-// 边框半径默认值
-$uni-radius-root:5px;
-// 主色
-$uni-primary: #2979ff;
-// 辅助色
-$uni-success: #4cd964;
-// 警告色
-$uni-warning: #f0ad4e;
-// 错误色
-$uni-error: #dd524d;
-// 描述色
-$uni-info: #909399;
-// 中性色
-$uni-main-color: #303133;
-$uni-base-color: #606266;
-$uni-secondary-color: #909399;
-$uni-extra-color: #C0C4CC;
-// 背景色
-$uni-bg-color: #f5f5f5;
-// 边框颜色
-$uni-border-1: #DCDFE6;
-$uni-border-2: #E4E7ED;
-$uni-border-3: #EBEEF5;
-$uni-border-4: #F2F6FC;
-
-// 常规色
-$uni-black: #000000;
-$uni-white: #ffffff;
-$uni-transparent: rgba($color: #000000, $alpha: 0);

+ 0 - 62
uni_modules/uni-scss/variables.scss

@@ -1,62 +0,0 @@
-@import './styles/setting/_variables.scss';
-// 间距基础倍数
-$uni-space-root: 2;
-// 边框半径默认值
-$uni-radius-root:5px;
-
-// 主色
-$uni-primary: #2979ff;
-$uni-primary-disable:mix(#fff,$uni-primary,50%);
-$uni-primary-light: mix(#fff,$uni-primary,80%);
-
-// 辅助色
-// 除了主色外的场景色,需要在不同的场景中使用(例如危险色表示危险的操作)。
-$uni-success: #18bc37;
-$uni-success-disable:mix(#fff,$uni-success,50%);
-$uni-success-light: mix(#fff,$uni-success,80%);
-
-$uni-warning: #f3a73f;
-$uni-warning-disable:mix(#fff,$uni-warning,50%);
-$uni-warning-light: mix(#fff,$uni-warning,80%);
-
-$uni-error: #e43d33;
-$uni-error-disable:mix(#fff,$uni-error,50%);
-$uni-error-light: mix(#fff,$uni-error,80%);
-
-$uni-info: #8f939c;
-$uni-info-disable:mix(#fff,$uni-info,50%);
-$uni-info-light: mix(#fff,$uni-info,80%);
-
-// 中性色
-// 中性色用于文本、背景和边框颜色。通过运用不同的中性色,来表现层次结构。
-$uni-main-color: #3a3a3a; 			// 主要文字
-$uni-base-color: #6a6a6a;			// 常规文字
-$uni-secondary-color: #909399;	// 次要文字
-$uni-extra-color: #c7c7c7;			// 辅助说明
-
-// 边框颜色
-$uni-border-1: #F0F0F0;
-$uni-border-2: #EDEDED;
-$uni-border-3: #DCDCDC;
-$uni-border-4: #B9B9B9;
-
-// 常规色
-$uni-black: #000000;
-$uni-white: #ffffff;
-$uni-transparent: rgba($color: #000000, $alpha: 0);
-
-// 背景色
-$uni-bg-color: #f7f7f7;
-
-/* 水平间距 */
-$uni-spacing-sm: 8px;
-$uni-spacing-base: 15px;
-$uni-spacing-lg: 30px;
-
-// 阴影
-$uni-shadow-sm:0 0 5px rgba($color: #d8d8d8, $alpha: 0.5);
-$uni-shadow-base:0 1px 8px 1px rgba($color: #a5a5a5, $alpha: 0.2);
-$uni-shadow-lg:0px 1px 10px 2px rgba($color: #a5a4a4, $alpha: 0.5);
-
-// 蒙版
-$uni-mask: rgba($color: #000000, $alpha: 0.4);

+ 0 - 2
uni_modules/uni-section/changelog.md

@@ -1,2 +0,0 @@
-## 0.0.1(2022-07-22)
-- 初始化

+ 0 - 167
uni_modules/uni-section/components/uni-section/uni-section.vue

@@ -1,167 +0,0 @@
-<template>
-	<view class="uni-section">
-		<view class="uni-section-header" @click="onClick">
-				<view class="uni-section-header__decoration" v-if="type" :class="type" />
-        <slot v-else name="decoration"></slot>
-
-        <view class="uni-section-header__content">
-          <text :style="{'font-size':titleFontSize,'color':titleColor}" class="uni-section__content-title" :class="{'distraction':!subTitle}">{{ title }}</text>
-          <text v-if="subTitle" :style="{'font-size':subTitleFontSize,'color':subTitleColor}" class="uni-section-header__content-sub">{{ subTitle }}</text>
-        </view>
-
-        <view class="uni-section-header__slot-right">
-          <slot name="right"></slot>
-        </view>
-		</view>
-
-		<view class="uni-section-content" :style="{padding: _padding}">
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-
-	/**
-	 * Section 标题栏
-	 * @description 标题栏
-	 * @property {String} type = [line|circle|square] 标题装饰类型
-	 * 	@value line 竖线
-	 * 	@value circle 圆形
-	 * 	@value square 正方形
-	 * @property {String} title 主标题
-	 * @property {String} titleFontSize 主标题字体大小
-	 * @property {String} titleColor 主标题字体颜色
-	 * @property {String} subTitle 副标题
-	 * @property {String} subTitleFontSize 副标题字体大小
-	 * @property {String} subTitleColor 副标题字体颜色
-	 * @property {String} padding 默认插槽 padding
-	 */
-
-	export default {
-		name: 'UniSection',
-    emits:['click'],
-		props: {
-			type: {
-				type: String,
-				default: ''
-			},
-			title: {
-				type: String,
-				required: true,
-				default: ''
-			},
-      titleFontSize: {
-        type: String,
-        default: '14px'
-      },
-			titleColor:{
-				type: String,
-				default: '#333'
-			},
-			subTitle: {
-				type: String,
-				default: ''
-			},
-      subTitleFontSize: {
-        type: String,
-        default: '12px'
-      },
-      subTitleColor: {
-        type: String,
-        default: '#999'
-      },
-			padding: {
-				type: [Boolean, String],
-				default: false
-			}
-		},
-    computed:{
-      _padding(){
-        if(typeof this.padding === 'string'){
-          return this.padding
-        }
-
-        return this.padding?'10px':''
-      }
-    },
-		watch: {
-			title(newVal) {
-				if (uni.report && newVal !== '') {
-					uni.report('title', newVal)
-				}
-			}
-		},
-    methods: {
-			onClick() {
-				this.$emit('click')
-			}
-		}
-	}
-</script>
-<style lang="scss" >
-	$uni-primary: #2979ff !default;
-
-	.uni-section {
-		background-color: #fff;
-    .uni-section-header {
-      position: relative;
-      /* #ifndef APP-NVUE */
-      display: flex;
-      /* #endif */
-      flex-direction: row;
-      align-items: center;
-      padding: 12px 10px;
-      font-weight: normal;
-
-      &__decoration{
-        margin-right: 6px;
-        background-color: $uni-primary;
-        &.line {
-          width: 4px;
-          height: 12px;
-          border-radius: 10px;
-        }
-
-        &.circle {
-          width: 8px;
-          height: 8px;
-          border-top-right-radius: 50px;
-          border-top-left-radius: 50px;
-          border-bottom-left-radius: 50px;
-          border-bottom-right-radius: 50px;
-        }
-
-        &.square {
-          width: 8px;
-          height: 8px;
-        }
-      }
-
-      &__content {
-        /* #ifndef APP-NVUE */
-        display: flex;
-        /* #endif */
-        flex-direction: column;
-        flex: 1;
-        color: #333;
-
-        .distraction {
-          flex-direction: row;
-          align-items: center;
-        }
-        &-sub {
-          margin-top: 2px;
-        }
-      }
-
-      &__slot-right{
-        font-size: 14px;
-      }
-    }
-
-    .uni-section-content{
-      font-size: 14px;
-    }
-	}
-</style>

+ 0 - 87
uni_modules/uni-section/package.json

@@ -1,87 +0,0 @@
-{
-  "id": "uni-section",
-  "displayName": "uni-section 标题栏",
-  "version": "0.0.1",
-  "description": "标题栏组件",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "标题栏"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-  "dcloudext": {
-    "category": [
-      "前端组件",
-      "通用组件"
-    ],
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui"
-  },
-  "uni_modules": {
-    "dependencies": [
-      "uni-scss"
-    ],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "y"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "y",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "u",
-          "联盟": "u"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 8
uni_modules/uni-section/readme.md

@@ -1,8 +0,0 @@
-## Section 标题栏
-> **组件名:uni-section**
-> 代码块: `uSection`
-
-uni-section 组件主要用于文章、列表详情等标题展示
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-section)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839

+ 0 - 27
uni_modules/uni-table/changelog.md

@@ -1,27 +0,0 @@
-## 1.2.3(2023-03-28)
-- 修复 在vue3模式下可能会出现错误的问题
-## 1.2.2(2022-11-29)
-- 优化 主题样式
-## 1.2.1(2022-06-06)
-- 修复 微信小程序存在无使用组件的问题
-## 1.2.0(2021-11-19)
-- 优化 组件UI,并提供设计资源,详见:[https://uniapp.dcloud.io/component/uniui/resource](https://uniapp.dcloud.io/component/uniui/resource)
-- 文档迁移,详见:[https://uniapp.dcloud.io/component/uniui/uni-table](https://uniapp.dcloud.io/component/uniui/uni-table)
-## 1.1.0(2021-07-30)
-- 组件兼容 vue3,如何创建vue3项目,详见 [uni-app 项目支持 vue3 介绍](https://ask.dcloud.net.cn/article/37834)
-## 1.0.7(2021-07-08)
-- 新增 uni-th 支持 date 日期筛选范围
-## 1.0.6(2021-07-05)
-- 新增 uni-th 支持 range 筛选范围
-## 1.0.5(2021-06-28)
-- 新增 uni-th 筛选功能
-## 1.0.4(2021-05-12)
-- 新增 示例地址
-- 修复 示例项目缺少组件的Bug
-## 1.0.3(2021-04-16)
-- 新增 sortable 属性,是否开启单列排序
-- 优化 表格多选逻辑
-## 1.0.2(2021-03-22)
-- uni-tr 添加 disabled 属性,用于 type=selection 时,设置某行是否可由全选按钮控制
-## 1.0.1(2021-02-05)
-- 调整为uni_modules目录规范

+ 0 - 455
uni_modules/uni-table/components/uni-table/uni-table.vue

@@ -1,455 +0,0 @@
-<template>
-	<view class="uni-table-scroll" :class="{ 'table--border': border, 'border-none': !noData }">
-		<!-- #ifdef H5 -->
-		<table class="uni-table" border="0" cellpadding="0" cellspacing="0" :class="{ 'table--stripe': stripe }" :style="{ 'min-width': minWidth + 'px' }">
-			<slot></slot>
-			<tr v-if="noData" class="uni-table-loading">
-				<td class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</td>
-			</tr>
-			<view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }"><div class="uni-table--loader"></div></view>
-		</table>
-		<!-- #endif -->
-		<!-- #ifndef H5 -->
-		<view class="uni-table" :style="{ 'min-width': minWidth + 'px' }" :class="{ 'table--stripe': stripe }">
-			<slot></slot>
-			<view v-if="noData" class="uni-table-loading">
-				<view class="uni-table-text" :class="{ 'empty-border': border }">{{ emptyText }}</view>
-			</view>
-			<view v-if="loading" class="uni-table-mask" :class="{ 'empty-border': border }"><div class="uni-table--loader"></div></view>
-		</view>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-/**
- * Table 表格
- * @description 用于展示多条结构类似的数据
- * @tutorial https://ext.dcloud.net.cn/plugin?id=3270
- * @property {Boolean} 	border 				是否带有纵向边框
- * @property {Boolean} 	stripe 				是否显示斑马线
- * @property {Boolean} 	type 					是否开启多选
- * @property {String} 	emptyText 			空数据时显示的文本内容
- * @property {Boolean} 	loading 			显示加载中
- * @event {Function} 	selection-change 	开启多选时,当选择项发生变化时会触发该事件
- */
-export default {
-	name: 'uniTable',
-	options: {
-		virtualHost: true
-	},
-	emits:['selection-change'],
-	props: {
-		data: {
-			type: Array,
-			default() {
-				return []
-			}
-		},
-		// 是否有竖线
-		border: {
-			type: Boolean,
-			default: false
-		},
-		// 是否显示斑马线
-		stripe: {
-			type: Boolean,
-			default: false
-		},
-		// 多选
-		type: {
-			type: String,
-			default: ''
-		},
-		// 没有更多数据
-		emptyText: {
-			type: String,
-			default: '没有更多数据'
-		},
-		loading: {
-			type: Boolean,
-			default: false
-		},
-		rowKey: {
-			type: String,
-			default: ''
-		}
-	},
-	data() {
-		return {
-			noData: true,
-			minWidth: 0,
-			multiTableHeads: []
-		}
-	},
-	watch: {
-		loading(val) {},
-		data(newVal) {
-			let theadChildren = this.theadChildren
-			let rowspan = 1
-			if (this.theadChildren) {
-				rowspan = this.theadChildren.rowspan
-			}
-			
-			// this.trChildren.length - rowspan
-			this.noData = false
-			// this.noData = newVal.length === 0 
-		}
-	},
-	created() {
-		// 定义tr的实例数组
-		this.trChildren = []
-		this.thChildren = []
-		this.theadChildren = null
-		this.backData = []
-		this.backIndexData = []
-	},
-
-	methods: {
-		isNodata() {
-			let theadChildren = this.theadChildren
-			let rowspan = 1
-			if (this.theadChildren) {
-				rowspan = this.theadChildren.rowspan
-			}
-			this.noData = this.trChildren.length - rowspan <= 0
-		},
-		/**
-		 * 选中所有
-		 */
-		selectionAll() {
-			let startIndex = 1
-			let theadChildren = this.theadChildren
-			if (!this.theadChildren) {
-				theadChildren = this.trChildren[0]
-			} else {
-				startIndex = theadChildren.rowspan - 1
-			}
-			let isHaveData = this.data && this.data.length > 0
-			theadChildren.checked = true
-			theadChildren.indeterminate = false
-			this.trChildren.forEach((item, index) => {
-				if (!item.disabled) {
-					item.checked = true
-					if (isHaveData && item.keyValue) {
-						const row = this.data.find(v => v[this.rowKey] === item.keyValue)
-						if (!this.backData.find(v => v[this.rowKey] === row[this.rowKey])) {
-							this.backData.push(row)
-						}
-					}
-					if (index > (startIndex - 1) && this.backIndexData.indexOf(index - startIndex) === -1) {
-						this.backIndexData.push(index - startIndex)
-					}
-				}
-			})
-			// this.backData = JSON.parse(JSON.stringify(this.data))
-			this.$emit('selection-change', {
-				detail: {
-					value: this.backData,
-					index: this.backIndexData
-				}
-			})
-		},
-		/**
-		 * 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
-		 */
-		toggleRowSelection(row, selected) {
-			// if (!this.theadChildren) return
-			row = [].concat(row)
-
-			this.trChildren.forEach((item, index) => {
-				// if (item.keyValue) {
-
-				const select = row.findIndex(v => {
-					//
-					if (typeof v === 'number') {
-						return v === index - 1
-					} else {
-						return v[this.rowKey] === item.keyValue
-					}
-				})
-				let ischeck = item.checked
-				if (select !== -1) {
-					if (typeof selected === 'boolean') {
-						item.checked = selected
-					} else {
-						item.checked = !item.checked
-					}
-					if (ischeck !== item.checked) {
-						this.check(item.rowData||item, item.checked, item.rowData?item.keyValue:null, true)
-					}
-				}
-				// }
-			})
-			this.$emit('selection-change', {
-				detail: {
-					value: this.backData,
-					index:this.backIndexData
-				}
-			})
-		},
-
-		/**
-		 * 用于多选表格,清空用户的选择
-		 */
-		clearSelection() {
-			let theadChildren = this.theadChildren
-			if (!this.theadChildren) {
-				theadChildren = this.trChildren[0]
-			}
-			// if (!this.theadChildren) return
-			theadChildren.checked = false
-			theadChildren.indeterminate = false
-			this.trChildren.forEach(item => {
-				// if (item.keyValue) {
-					item.checked = false
-				// }
-			})
-			this.backData = []
-			this.backIndexData = []
-			this.$emit('selection-change', {
-				detail: {
-					value: [],
-					index: []
-				}
-			})
-		},
-		/**
-		 * 用于多选表格,切换所有行的选中状态
-		 */
-		toggleAllSelection() {
-			let list = []
-			let startIndex = 1
-			let theadChildren = this.theadChildren
-			if (!this.theadChildren) {
-				theadChildren = this.trChildren[0]
-			} else {
-				startIndex = theadChildren.rowspan - 1
-			}
-			this.trChildren.forEach((item, index) => {
-				if (!item.disabled) {
-					if (index > (startIndex - 1) ) {
-						list.push(index-startIndex)
-					}
-				}
-			})
-			this.toggleRowSelection(list)
-		},
-
-		/**
-		 * 选中\取消选中
-		 * @param {Object} child
-		 * @param {Object} check
-		 * @param {Object} rowValue
-		 */
-		check(child, check, keyValue, emit) {
-			let theadChildren = this.theadChildren
-			if (!this.theadChildren) {
-				theadChildren = this.trChildren[0]
-			}
-			
-			
-			
-			let childDomIndex = this.trChildren.findIndex((item, index) => child === item)
-			if(childDomIndex < 0){
-				childDomIndex = this.data.findIndex(v=>v[this.rowKey] === keyValue) + 1
-			}
-			const dataLen = this.trChildren.filter(v => !v.disabled && v.keyValue).length
-			if (childDomIndex === 0) {
-				check ? this.selectionAll() : this.clearSelection()
-				return
-			}
-
-			if (check) {
-				if (keyValue) {
-					this.backData.push(child)
-				}
-				this.backIndexData.push(childDomIndex - 1)
-			} else {
-				const index = this.backData.findIndex(v => v[this.rowKey] === keyValue)
-				const idx = this.backIndexData.findIndex(item => item === childDomIndex - 1)
-				if (keyValue) {
-					this.backData.splice(index, 1)
-				}
-				this.backIndexData.splice(idx, 1)
-			}
-
-			const domCheckAll = this.trChildren.find((item, index) => index > 0 && !item.checked && !item.disabled)
-			if (!domCheckAll) {
-				theadChildren.indeterminate = false
-				theadChildren.checked = true
-			} else {
-				theadChildren.indeterminate = true
-				theadChildren.checked = false
-			}
-
-			if (this.backIndexData.length === 0) {
-				theadChildren.indeterminate = false
-			}
-
-			if (!emit) {
-				this.$emit('selection-change', {
-					detail: {
-						value: this.backData,
-						index: this.backIndexData
-					}
-				})
-			}
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-$border-color: #ebeef5;
-
-.uni-table-scroll {
-	width: 100%;
-	/* #ifndef APP-NVUE */
-	overflow-x: auto;
-	/* #endif */
-}
-
-.uni-table {
-	position: relative;
-	width: 100%;
-	border-radius: 5px;
-	// box-shadow: 0px 0px 3px 1px rgba(0, 0, 0, 0.1);
-	background-color: #fff;
-	/* #ifndef APP-NVUE */
-	box-sizing: border-box;
-	display: table;
-	overflow-x: auto;
-	::v-deep .uni-table-tr:nth-child(n + 2) {
-		&:hover {
-			background-color: #f5f7fa;
-		}
-	}
-	::v-deep .uni-table-thead {
-		.uni-table-tr {
-			// background-color: #f5f7fa;
-			&:hover {
-				background-color:#fafafa;
-			}
-		}
-	}
-	/* #endif */
-}
-
-.table--border {
-	border: 1px $border-color solid;
-	border-right: none;
-}
-
-.border-none {
-	/* #ifndef APP-NVUE */
-	border-bottom: none;
-	/* #endif */
-}
-
-.table--stripe {
-	/* #ifndef APP-NVUE */
-	::v-deep .uni-table-tr:nth-child(2n + 3) {
-		background-color: #fafafa;
-	}
-	/* #endif */
-}
-
-/* 表格加载、无数据样式 */
-.uni-table-loading {
-	position: relative;
-	/* #ifndef APP-NVUE */
-	display: table-row;
-	/* #endif */
-	height: 50px;
-	line-height: 50px;
-	overflow: hidden;
-	box-sizing: border-box;
-}
-.empty-border {
-	border-right: 1px $border-color solid;
-}
-.uni-table-text {
-	position: absolute;
-	right: 0;
-	left: 0;
-	text-align: center;
-	font-size: 14px;
-	color: #999;
-}
-
-.uni-table-mask {
-	position: absolute;
-	top: 0;
-	bottom: 0;
-	left: 0;
-	right: 0;
-	background-color: rgba(255, 255, 255, 0.8);
-	z-index: 99;
-	/* #ifndef APP-NVUE */
-	display: flex;
-	margin: auto;
-	transition: all 0.5s;
-	/* #endif */
-	justify-content: center;
-	align-items: center;
-}
-
-.uni-table--loader {
-	width: 30px;
-	height: 30px;
-	border: 2px solid #aaa;
-	// border-bottom-color: transparent;
-	border-radius: 50%;
-	/* #ifndef APP-NVUE */
-	animation: 2s uni-table--loader linear infinite;
-	/* #endif */
-	position: relative;
-}
-
-@keyframes uni-table--loader {
-	0% {
-		transform: rotate(360deg);
-	}
-
-	10% {
-		border-left-color: transparent;
-	}
-
-	20% {
-		border-bottom-color: transparent;
-	}
-
-	30% {
-		border-right-color: transparent;
-	}
-
-	40% {
-		border-top-color: transparent;
-	}
-
-	50% {
-		transform: rotate(0deg);
-	}
-
-	60% {
-		border-top-color: transparent;
-	}
-
-	70% {
-		border-left-color: transparent;
-	}
-
-	80% {
-		border-bottom-color: transparent;
-	}
-
-	90% {
-		border-right-color: transparent;
-	}
-
-	100% {
-		transform: rotate(-360deg);
-	}
-}
-</style>

+ 0 - 29
uni_modules/uni-table/components/uni-tbody/uni-tbody.vue

@@ -1,29 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<tbody>
-		<slot></slot>
-	</tbody>
-	<!-- #endif -->
-	<!-- #ifndef H5 -->
-	<view><slot></slot></view>
-	<!-- #endif -->
-</template>
-
-<script>
-export default {
-	name: 'uniBody',
-	options: {
-		virtualHost: true
-	},
-	data() {
-		return {
-			
-		}
-	},
-	created() {},
-	methods: {}
-}
-</script>
-
-<style>
-</style>

+ 0 - 90
uni_modules/uni-table/components/uni-td/uni-td.vue

@@ -1,90 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<td class="uni-table-td" :rowspan="rowspan" :colspan="colspan" :class="{'table--border':border}" :style="{width:width + 'px','text-align':align}">
-		<slot></slot>
-	</td>
-	<!-- #endif -->
-	<!-- #ifndef H5 -->
-	<!-- :class="{'table--border':border}"  -->
-	<view class="uni-table-td" :class="{'table--border':border}" :style="{width:width + 'px','text-align':align}">
-		<slot></slot>
-	</view>
-	<!-- #endif -->
-	
-</template>
-
-<script>
-	/**
-	 * Td 单元格
-	 * @description 表格中的标准单元格组件
-	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3270
-	 * @property {Number} 	align = [left|center|right]	单元格对齐方式
-	 */
-	export default {
-		name: 'uniTd',
-		options: {
-			virtualHost: true
-		},
-		props: {
-			width: {
-				type: [String, Number],
-				default: ''
-			},
-			align: {
-				type: String,
-				default: 'left'
-			},
-			rowspan: {
-				type: [Number,String],
-				default: 1
-			},
-			colspan: {
-					type: [Number,String],
-				default: 1
-			}
-		},
-		data() {
-			return {
-				border: false
-			};
-		},
-		created() {
-			this.root = this.getTable()
-			this.border = this.root.border
-		},
-		methods: {
-			/**
-			 * 获取父元素实例
-			 */
-			getTable() {
-				let parent = this.$parent;
-				let parentName = parent.$options.name;
-				while (parentName !== 'uniTable') {
-					parent = parent.$parent;
-					if (!parent) return false;
-					parentName = parent.$options.name;
-				}
-				return parent;
-			},
-		}
-	}
-</script>
-
-<style lang="scss">
-	$border-color:#EBEEF5;
-
-	.uni-table-td {
-		display: table-cell;
-		padding: 8px 10px;
-		font-size: 14px;
-		border-bottom: 1px $border-color solid;
-		font-weight: 400;
-		color: #606266;
-		line-height: 23px;
-		box-sizing: border-box;
-	}
-
-	.table--border {
-		border-right: 1px $border-color solid;
-	}
-</style>

+ 0 - 511
uni_modules/uni-table/components/uni-th/filter-dropdown.vue

@@ -1,511 +0,0 @@
-<template>
-	<view class="uni-filter-dropdown">
-		<view class="dropdown-btn" @click="onDropdown">
-			<view class="icon-select" :class="{active: canReset}" v-if="isSelect || isRange"></view>
-			<view class="icon-search" :class="{active: canReset}" v-if="isSearch">
-				<view class="icon-search-0"></view>
-				<view class="icon-search-1"></view>
-			</view>
-			<view class="icon-calendar" :class="{active: canReset}" v-if="isDate">
-				<view class="icon-calendar-0"></view>
-				<view class="icon-calendar-1"></view>
-			</view>
-		</view>
-		<view class="uni-dropdown-cover" v-if="isOpened" @click="handleClose"></view>
-		<view class="dropdown-popup dropdown-popup-right" v-if="isOpened" @click.stop>
-			<!-- select-->
-			<view v-if="isSelect" class="list">
-				<label class="flex-r a-i-c list-item" v-for="(item,index) in dataList" :key="index"
-					@click="onItemClick($event, index)">
-					<check-box class="check" :checked="item.checked" />
-					<view class="checklist-content">
-						<text class="checklist-text" :style="item.styleIconText">{{item[map.text]}}</text>
-					</view>
-				</label>
-			</view>
-			<view v-if="isSelect" class="flex-r opera-area">
-				<view class="flex-f btn btn-default" :class="{disable: !canReset}" @click="handleSelectReset">
-					{{resource.reset}}</view>
-				<view class="flex-f btn btn-submit" @click="handleSelectSubmit">{{resource.submit}}</view>
-			</view>
-			<!-- search -->
-			<view v-if="isSearch" class="search-area">
-				<input class="search-input" v-model="filterValue" />
-			</view>
-			<view v-if="isSearch" class="flex-r opera-area">
-				<view class="flex-f btn btn-submit" @click="handleSearchSubmit">{{resource.search}}</view>
-				<view class="flex-f btn btn-default" :class="{disable: !canReset}" @click="handleSearchReset">
-					{{resource.reset}}</view>
-			</view>
-			<!-- range -->
-			<view v-if="isRange">
-				<view class="input-label">{{resource.gt}}</view>
-				<input class="input" v-model="gtValue" />
-				<view class="input-label">{{resource.lt}}</view>
-				<input class="input" v-model="ltValue" />
-			</view>
-			<view v-if="isRange" class="flex-r opera-area">
-				<view class="flex-f btn btn-default" :class="{disable: !canReset}" @click="handleRangeReset">
-					{{resource.reset}}</view>
-				<view class="flex-f btn btn-submit" @click="handleRangeSubmit">{{resource.submit}}</view>
-			</view>
-			<!-- date -->
-			<view v-if="isDate">
-				<uni-datetime-picker ref="datetimepicker" :value="dateRange" type="datetimerange" return-type="timestamp" @change="datetimechange" @maskClick="timepickerclose">
-					<view></view>
-				</uni-datetime-picker>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import checkBox from '../uni-tr/table-checkbox.vue'
-
-	const resource = {
-		"reset": "重置",
-		"search": "搜索",
-		"submit": "确定",
-		"filter": "筛选",
-		"gt": "大于等于",
-		"lt": "小于等于",
-		"date": "日期范围"
-	}
-
-	const DropdownType = {
-		Select: "select",
-		Search: "search",
-		Range: "range",
-		Date: "date",
-		Timestamp: "timestamp"
-	}
-
-	export default {
-		name: 'FilterDropdown',
-		emits:['change'],
-		components: {
-			checkBox
-		},
-		options: {
-			virtualHost: true
-		},
-		props: {
-			filterType: {
-				type: String,
-				default: DropdownType.Select
-			},
-			filterData: {
-				type: Array,
-				default () {
-					return []
-				}
-			},
-			mode: {
-				type: String,
-				default: 'default'
-			},
-			map: {
-				type: Object,
-				default () {
-					return {
-						text: 'text',
-						value: 'value'
-					}
-				}
-			},
-			filterDefaultValue: {
-				type: [Array,String],
-				default () {
-					return ""
-				}
-			}
-		},
-		computed: {
-			canReset() {
-				if (this.isSearch) {
-					return this.filterValue.length > 0
-				}
-				if (this.isSelect) {
-					return this.checkedValues.length > 0
-				}
-				if (this.isRange) {
-					return (this.gtValue.length > 0 && this.ltValue.length > 0)
-				}
-				if (this.isDate) {
-					return this.dateSelect.length > 0
-				}
-				return false
-			},
-			isSelect() {
-				return this.filterType === DropdownType.Select
-			},
-			isSearch() {
-				return this.filterType === DropdownType.Search
-			},
-			isRange() {
-				return this.filterType === DropdownType.Range
-			},
-			isDate() {
-				return (this.filterType === DropdownType.Date || this.filterType === DropdownType.Timestamp)
-			}
-		},
-		watch: {
-			filterData(newVal) {
-				this._copyFilters()
-			},
-			indeterminate(newVal) {
-				this.isIndeterminate = newVal
-			}
-		},
-		data() {
-			return {
-				resource,
-				enabled: true,
-				isOpened: false,
-				dataList: [],
-				filterValue: this.filterDefaultValue,
-				checkedValues: [],
-				gtValue: '',
-				ltValue: '',
-				dateRange: [],
-				dateSelect: []
-			};
-		},
-		created() {
-			this._copyFilters()
-		},
-		methods: {
-			_copyFilters() {
-				let dl = JSON.parse(JSON.stringify(this.filterData))
-				for (let i = 0; i < dl.length; i++) {
-					if (dl[i].checked === undefined) {
-						dl[i].checked = false
-					}
-				}
-				this.dataList = dl
-			},
-			openPopup() {
-				this.isOpened = true
-				if (this.isDate) {
-					this.$nextTick(() => {
-						if (!this.dateRange.length) {
-							this.resetDate()
-						}
-						this.$refs.datetimepicker.show()
-					})
-				}
-			},
-			closePopup() {
-				this.isOpened = false
-			},
-			handleClose(e) {
-				this.closePopup()
-			},
-			resetDate() {
-				let date = new Date()
-				let dateText = date.toISOString().split('T')[0]
-				this.dateRange = [dateText + ' 0:00:00', dateText + ' 23:59:59']
-			},
-			onDropdown(e) {
-				this.openPopup()
-			},
-			onItemClick(e, index) {
-				let items = this.dataList
-				let listItem = items[index]
-				if (listItem.checked === undefined) {
-					items[index].checked = true
-				} else {
-					items[index].checked = !listItem.checked
-				}
-
-				let checkvalues = []
-				for (let i = 0; i < items.length; i++) {
-					const item = items[i]
-					if (item.checked) {
-						checkvalues.push(item.value)
-					}
-				}
-				this.checkedValues = checkvalues
-			},
-			datetimechange(e) {
-				this.closePopup()
-				this.dateRange = e
-				this.dateSelect = e
-				this.$emit('change', {
-					filterType: this.filterType,
-					filter: e
-				})
-			},
-			timepickerclose(e) {
-				this.closePopup()
-			},
-			handleSelectSubmit() {
-				this.closePopup()
-				this.$emit('change', {
-					filterType: this.filterType,
-					filter: this.checkedValues
-				})
-			},
-			handleSelectReset() {
-				if (!this.canReset) {
-					return;
-				}
-				var items = this.dataList
-				for (let i = 0; i < items.length; i++) {
-					let item = items[i]
-					this.$set(item, 'checked', false)
-				}
-				this.checkedValues = []
-				this.handleSelectSubmit()
-			},
-			handleSearchSubmit() {
-				this.closePopup()
-				this.$emit('change', {
-					filterType: this.filterType,
-					filter: this.filterValue
-				})
-			},
-			handleSearchReset() {
-				if (!this.canReset) {
-					return;
-				}
-				this.filterValue = ''
-				this.handleSearchSubmit()
-			},
-			handleRangeSubmit(isReset) {
-				this.closePopup()
-				this.$emit('change', {
-					filterType: this.filterType,
-					filter: isReset === true ? [] : [parseInt(this.gtValue), parseInt(this.ltValue)]
-				})
-			},
-			handleRangeReset() {
-				if (!this.canReset) {
-					return;
-				}
-				this.gtValue = ''
-				this.ltValue = ''
-				this.handleRangeSubmit(true)
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #1890ff !default;
-	
-	.flex-r {
-		display: flex;
-		flex-direction: row;
-	}
-
-	.flex-f {
-		flex: 1;
-	}
-
-	.a-i-c {
-		align-items: center;
-	}
-
-	.j-c-c {
-		justify-content: center;
-	}
-
-	.icon-select {
-		width: 14px;
-		height: 16px;
-		border: solid 6px transparent;
-		border-top: solid 6px #ddd;
-		border-bottom: none;
-		background-color: #ddd;
-		background-clip: content-box;
-		box-sizing: border-box;
-	}
-
-	.icon-select.active {
-		background-color: $uni-primary;
-		border-top-color: $uni-primary;
-	}
-
-	.icon-search {
-		width: 12px;
-		height: 16px;
-		position: relative;
-	}
-
-	.icon-search-0 {
-		border: 2px solid #ddd;
-		border-radius: 8px;
-		width: 7px;
-		height: 7px;
-	}
-
-	.icon-search-1 {
-		position: absolute;
-		top: 8px;
-		right: 0;
-		width: 1px;
-		height: 7px;
-		background-color: #ddd;
-		transform: rotate(-45deg);
-	}
-
-	.icon-search.active .icon-search-0 {
-		border-color: $uni-primary;
-	}
-
-	.icon-search.active .icon-search-1 {
-		background-color: $uni-primary;
-	}
-
-	.icon-calendar {
-		color: #ddd;
-		width: 14px;
-		height: 16px;
-	}
-
-	.icon-calendar-0 {
-		height: 4px;
-		margin-top: 3px;
-		margin-bottom: 1px;
-		background-color: #ddd;
-		border-radius: 2px 2px 1px 1px;
-		position: relative;
-	}
-	.icon-calendar-0:before, .icon-calendar-0:after {
-		content: '';
-		position: absolute;
-		top: -3px;
-		width: 4px;
-		height: 3px;
-		border-radius: 1px;
-		background-color: #ddd;
-	}
-	.icon-calendar-0:before {
-		left: 2px;
-	}
-	.icon-calendar-0:after {
-		right: 2px;
-	}
-
-	.icon-calendar-1 {
-		height: 9px;
-		background-color: #ddd;
-		border-radius: 1px 1px 2px 2px;
-	}
-
-	.icon-calendar.active {
-		color: $uni-primary;
-	}
-
-	.icon-calendar.active .icon-calendar-0,
-	.icon-calendar.active .icon-calendar-1,
-	.icon-calendar.active .icon-calendar-0:before,
-	.icon-calendar.active .icon-calendar-0:after {
-		background-color: $uni-primary;
-	}
-
-	.uni-filter-dropdown {
-		position: relative;
-		font-weight: normal;
-	}
-
-	.dropdown-popup {
-		position: absolute;
-		top: 100%;
-		background-color: #fff;
-		box-shadow: 0 3px 6px -4px #0000001f, 0 6px 16px #00000014, 0 9px 28px 8px #0000000d;
-		min-width: 150px;
-		z-index: 1000;
-	}
-
-	.dropdown-popup-left {
-		left: 0;
-	}
-
-	.dropdown-popup-right {
-		right: 0;
-	}
-
-	.uni-dropdown-cover {
-		position: fixed;
-		left: 0;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		background-color: transparent;
-		z-index: 100;
-	}
-
-	.list {
-		margin-top: 5px;
-		margin-bottom: 5px;
-	}
-
-	.list-item {
-		padding: 5px 10px;
-		text-align: left;
-	}
-
-	.list-item:hover {
-		background-color: #f0f0f0;
-	}
-
-	.check {
-		margin-right: 5px;
-	}
-
-	.search-area {
-		padding: 10px;
-	}
-
-	.search-input {
-		font-size: 12px;
-		border: 1px solid #f0f0f0;
-		border-radius: 3px;
-		padding: 2px 5px;
-		min-width: 150px;
-		text-align: left;
-	}
-
-	.input-label {
-		margin: 10px 10px 5px 10px;
-		text-align: left;
-	}
-
-	.input {
-		font-size: 12px;
-		border: 1px solid #f0f0f0;
-		border-radius: 3px;
-		margin: 10px;
-		padding: 2px 5px;
-		min-width: 150px;
-		text-align: left;
-	}
-
-	.opera-area {
-		cursor: default;
-		border-top: 1px solid #ddd;
-		padding: 5px;
-	}
-
-	.opera-area .btn {
-		font-size: 12px;
-		border-radius: 3px;
-		margin: 5px;
-		padding: 4px 4px;
-	}
-
-	.btn-default {
-		border: 1px solid #ddd;
-	}
-
-	.btn-default.disable {
-		border-color: transparent;
-	}
-
-	.btn-submit {
-		background-color: $uni-primary;
-		color: #ffffff;
-	}
-</style>

+ 0 - 285
uni_modules/uni-table/components/uni-th/uni-th.vue

@@ -1,285 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<th :rowspan="rowspan" :colspan="colspan" class="uni-table-th" :class="{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align }">
-		<view class="uni-table-th-row">
-			<view class="uni-table-th-content" :style="{ 'justify-content': contentAlign }" @click="sort">
-				<slot></slot>
-				<view v-if="sortable" class="arrow-box">
-					<text class="arrow up" :class="{ active: ascending }" @click.stop="ascendingFn"></text>
-					<text class="arrow down" :class="{ active: descending }" @click.stop="descendingFn"></text>
-				</view>
-			</view>
-			<dropdown v-if="filterType || filterData.length" :filterDefaultValue="filterDefaultValue" :filterData="filterData" :filterType="filterType" @change="ondropdown"></dropdown>
-		</view>
-	</th>
-	<!-- #endif -->
-	<!-- #ifndef H5 -->
-	<view class="uni-table-th" :class="{ 'table--border': border }" :style="{ width: customWidth + 'px', 'text-align': align }"><slot></slot></view>
-	<!-- #endif -->
-</template>
-
-<script>
-	// #ifdef H5
-	import dropdown from './filter-dropdown.vue'
-	// #endif
-/**
- * Th 表头
- * @description 表格内的表头单元格组件
- * @tutorial https://ext.dcloud.net.cn/plugin?id=3270
- * @property {Number | String} 	width 	单元格宽度(支持纯数字、携带单位px或rpx)
- * @property {Boolean} 	sortable 					是否启用排序
- * @property {Number} 	align = [left|center|right]	单元格对齐方式
- * @value left   	单元格文字左侧对齐
- * @value center	单元格文字居中
- * @value right		单元格文字右侧对齐
- * @property {Array}	filterData 筛选数据
- * @property {String}	filterType	[search|select] 筛选类型
- * @value search	关键字搜素
- * @value select	条件选择
- * @event {Function} sort-change 排序触发事件
- */
-export default {
-	name: 'uniTh',
-	options: {
-		virtualHost: true
-	},
-	components: {
-		// #ifdef H5
-		dropdown
-		// #endif
-	},
-	emits:['sort-change','filter-change'],
-	props: {
-		width: {
-			type: [String, Number],
-			default: ''
-		},
-		align: {
-			type: String,
-			default: 'left'
-		},
-		rowspan: {
-			type: [Number, String],
-			default: 1
-		},
-		colspan: {
-			type: [Number, String],
-			default: 1
-		},
-		sortable: {
-			type: Boolean,
-			default: false
-		},
-		filterType: {
-			type: String,
-			default: ""
-		},
-		filterData: {
-			type: Array,
-			default () {
-				return []
-			}
-		},
-		filterDefaultValue: {
-			type: [Array,String],
-			default () {
-				return ""
-			}
-		}
-	},
-	data() {
-		return {
-			border: false,
-			ascending: false,
-			descending: false
-		}
-	},
-	computed: {
-		// 根据props中的width属性 自动匹配当前th的宽度(px)
-		customWidth(){
-			if(typeof this.width === 'number'){
-				return this.width
-			} else if(typeof this.width === 'string') {
-				let regexHaveUnitPx = new RegExp(/^[1-9][0-9]*px$/g)
-				let regexHaveUnitRpx = new RegExp(/^[1-9][0-9]*rpx$/g)
-				let regexHaveNotUnit = new RegExp(/^[1-9][0-9]*$/g)
-				if (this.width.match(regexHaveUnitPx) !== null) { // 携带了 px
-					return this.width.replace('px', '')
-				} else if (this.width.match(regexHaveUnitRpx) !== null) { // 携带了 rpx
-					let numberRpx = Number(this.width.replace('rpx', ''))
-					let widthCoe = uni.getSystemInfoSync().screenWidth / 750
-					return Math.round(numberRpx * widthCoe)
-				} else if (this.width.match(regexHaveNotUnit) !== null) { // 未携带 rpx或px 的纯数字 String
-					return this.width
-				} else { // 不符合格式
-					return ''
-				}
-			} else {
-				return ''
-			}
-		},
-		contentAlign() {
-			let align = 'left'
-			switch (this.align) {
-				case 'left':
-					align = 'flex-start'
-					break
-				case 'center':
-					align = 'center'
-					break
-				case 'right':
-					align = 'flex-end'
-					break
-			}
-			return align
-		}
-	},
-	created() {
-		this.root = this.getTable('uniTable')
-		this.rootTr = this.getTable('uniTr')
-		this.rootTr.minWidthUpdate(this.customWidth ? this.customWidth : 140)
-		this.border = this.root.border
-		this.root.thChildren.push(this)
-	},
-	methods: {
-		sort() {
-			if (!this.sortable) return
-			this.clearOther()
-			if (!this.ascending && !this.descending) {
-				this.ascending = true
-				this.$emit('sort-change', { order: 'ascending' })
-				return
-			}
-			if (this.ascending && !this.descending) {
-				this.ascending = false
-				this.descending = true
-				this.$emit('sort-change', { order: 'descending' })
-				return
-			}
-
-			if (!this.ascending && this.descending) {
-				this.ascending = false
-				this.descending = false
-				this.$emit('sort-change', { order: null })
-			}
-		},
-		ascendingFn() {
-			this.clearOther()
-			this.ascending = !this.ascending
-			this.descending = false
-			this.$emit('sort-change', { order: this.ascending ? 'ascending' : null })
-		},
-		descendingFn() {
-			this.clearOther()
-			this.descending = !this.descending
-			this.ascending = false
-			this.$emit('sort-change', { order: this.descending ? 'descending' : null })
-		},
-		clearOther() {
-			this.root.thChildren.map(item => {
-				if (item !== this) {
-					item.ascending = false
-					item.descending = false
-				}
-				return item
-			})
-		},
-		ondropdown(e) {
-			this.$emit("filter-change", e)
-		},
-		/**
-		 * 获取父元素实例
-		 */
-		getTable(name) {
-			let parent = this.$parent
-			let parentName = parent.$options.name
-			while (parentName !== name) {
-				parent = parent.$parent
-				if (!parent) return false
-				parentName = parent.$options.name
-			}
-			return parent
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-$border-color: #ebeef5;
-$uni-primary: #007aff !default;
-
-.uni-table-th {
-	padding: 12px 10px;
-	/* #ifndef APP-NVUE */
-	display: table-cell;
-	box-sizing: border-box;
-	/* #endif */
-	font-size: 14px;
-	font-weight: bold;
-	color: #909399;
-	border-bottom: 1px $border-color solid;
-}
-
-.uni-table-th-row {
-	/* #ifndef APP-NVUE */
-	display: flex;
-	/* #endif */
-	flex-direction: row;
-}
-
-.table--border {
-	border-right: 1px $border-color solid;
-}
-.uni-table-th-content {
-	display: flex;
-	align-items: center;
-	flex: 1;
-}
-.arrow-box {
-}
-.arrow {
-	display: block;
-	position: relative;
-	width: 10px;
-	height: 8px;
-	// border: 1px red solid;
-	left: 5px;
-	overflow: hidden;
-	cursor: pointer;
-}
-.down {
-	top: 3px;
-	::after {
-		content: '';
-		width: 8px;
-		height: 8px;
-		position: absolute;
-		left: 2px;
-		top: -5px;
-		transform: rotate(45deg);
-		background-color: #ccc;
-	}
-	&.active {
-		::after {
-			background-color: $uni-primary;
-		}
-	}
-}
-.up {
-	::after {
-		content: '';
-		width: 8px;
-		height: 8px;
-		position: absolute;
-		left: 2px;
-		top: 5px;
-		transform: rotate(45deg);
-		background-color: #ccc;
-	}
-	&.active {
-		::after {
-			background-color: $uni-primary;
-		}
-	}
-}
-</style>

+ 0 - 129
uni_modules/uni-table/components/uni-thead/uni-thead.vue

@@ -1,129 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<thead class="uni-table-thead">
-		<tr class="uni-table-tr">
-			<th :rowspan="rowspan" colspan="1" class="checkbox" :class="{ 'tr-table--border': border }">
-				<table-checkbox :indeterminate="indeterminate" :checked="checked" @checkboxSelected="checkboxSelected"></table-checkbox>
-			</th>
-		</tr>
-		<slot></slot>
-	</thead>
-	<!-- #endif -->
-	<!-- #ifndef H5 -->
-	<view class="uni-table-thead"><slot></slot></view>
-	<!-- #endif -->
-</template>
-
-<script>
-import tableCheckbox from '../uni-tr/table-checkbox.vue'
-export default {
-	name: 'uniThead',
-	components: {
-		tableCheckbox
-	},
-	options: {
-		virtualHost: true
-	},
-	data() {
-		return {
-			border: false,
-			selection: false,
-			rowspan: 1,
-			indeterminate: false,
-			checked: false
-		}
-	},
-	created() {
-		this.root = this.getTable()
-		// #ifdef H5
-		this.root.theadChildren = this
-		// #endif
-		this.border = this.root.border
-		this.selection = this.root.type
-	},
-	methods: {
-		init(self) {
-			this.rowspan++
-		},
-		checkboxSelected(e) {
-			this.indeterminate = false
-			const backIndexData = this.root.backIndexData
-			const data = this.root.trChildren.filter(v => !v.disabled && v.keyValue)
-			if (backIndexData.length === data.length) {
-				this.checked = false
-				this.root.clearSelection()
-			} else {
-				this.checked = true
-				this.root.selectionAll()
-			}
-		},
-		/**
-		 * 获取父元素实例
-		 */
-		getTable(name = 'uniTable') {
-			let parent = this.$parent
-			let parentName = parent.$options.name
-			while (parentName !== name) {
-				parent = parent.$parent
-				if (!parent) return false
-				parentName = parent.$options.name
-			}
-			return parent
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-$border-color: #ebeef5;
-
-.uni-table-thead {
-	display: table-header-group;
-}
-
-.uni-table-tr {
-	/* #ifndef APP-NVUE */
-	display: table-row;
-	transition: all 0.3s;
-	box-sizing: border-box;
-	/* #endif */
-	border: 1px red solid;
-	background-color: #fafafa;
-}
-
-.checkbox {
-	padding: 0 8px;
-	width: 26px;
-	padding-left: 12px;
-	/* #ifndef APP-NVUE */
-	display: table-cell;
-	vertical-align: middle;
-	/* #endif */
-	color: #333;
-	font-weight: 500;
-	border-bottom: 1px $border-color solid;
-	font-size: 14px;
-	// text-align: center;
-}
-
-.tr-table--border {
-	border-right: 1px $border-color solid;
-}
-
-/* #ifndef APP-NVUE */
-.uni-table-tr {
-	::v-deep .uni-table-th {
-		&.table--border:last-child {
-			// border-right: none;
-		}
-	}
-
-	::v-deep .uni-table-td {
-		&.table--border:last-child {
-			// border-right: none;
-		}
-	}
-}
-
-/* #endif */
-</style>

+ 0 - 179
uni_modules/uni-table/components/uni-tr/table-checkbox.vue

@@ -1,179 +0,0 @@
-<template>
-	<view class="uni-table-checkbox" @click="selected">
-		<view v-if="!indeterminate" class="checkbox__inner" :class="{'is-checked':isChecked,'is-disable':isDisabled}">
-			<view class="checkbox__inner-icon"></view>
-		</view>
-		<view v-else class="checkbox__inner checkbox--indeterminate">
-			<view class="checkbox__inner-icon"></view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name: 'TableCheckbox',
-		emits:['checkboxSelected'],
-		props: {
-			indeterminate: {
-				type: Boolean,
-				default: false
-			},
-			checked: {
-				type: [Boolean,String],
-				default: false
-			},
-			disabled: {
-				type: Boolean,
-				default: false
-			},
-			index: {
-				type: Number,
-				default: -1
-			},
-			cellData: {
-				type: Object,
-				default () {
-					return {}
-				}
-			}
-		},
-		watch:{
-			checked(newVal){
-				if(typeof this.checked === 'boolean'){
-					this.isChecked = newVal
-				}else{
-					this.isChecked = true
-				}
-			},
-			indeterminate(newVal){
-				this.isIndeterminate = newVal
-			}
-		},
-		data() {
-			return {
-				isChecked: false,
-				isDisabled: false,
-				isIndeterminate:false
-			}
-		},
-		created() {
-			if(typeof this.checked === 'boolean'){
-				this.isChecked = this.checked
-			}
-			this.isDisabled = this.disabled
-		},
-		methods: {
-			selected() {
-				if (this.isDisabled) return
-				this.isIndeterminate = false
-				this.isChecked = !this.isChecked
-				this.$emit('checkboxSelected', {
-					checked: this.isChecked,
-					data: this.cellData
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-	$border-color: #DCDFE6;
-	$disable:0.4;
-
-	.uni-table-checkbox {
-		display: flex;
-		flex-direction: row;
-		align-items: center;
-		justify-content: center;
-		position: relative;
-		margin: 5px 0;
-		cursor: pointer;
-
-		// 多选样式
-		.checkbox__inner {
-			/* #ifndef APP-NVUE */
-			flex-shrink: 0;
-			box-sizing: border-box;
-			/* #endif */
-			position: relative;
-			width: 16px;
-			height: 16px;
-			border: 1px solid $border-color;
-			border-radius: 2px;
-			background-color: #fff;
-			z-index: 1;
-
-			.checkbox__inner-icon {
-				position: absolute;
-				/* #ifdef APP-NVUE */
-				top: 2px;
-				/* #endif */
-				/* #ifndef APP-NVUE */
-				top: 2px;
-				/* #endif */
-				left: 5px;
-				height: 7px;
-				width: 3px;
-				border: 1px solid #fff;
-				border-left: 0;
-				border-top: 0;
-				opacity: 0;
-				transform-origin: center;
-				transform: rotate(45deg);
-				box-sizing: content-box;
-			}
-
-			&.checkbox--indeterminate {
-				border-color: $uni-primary;
-				background-color: $uni-primary;
-
-				.checkbox__inner-icon {
-					position: absolute;
-					opacity: 1;
-					transform: rotate(0deg);
-					height: 2px;
-					top: 0;
-					bottom: 0;
-					margin: auto;
-					left: 0px;
-					right: 0px;
-					bottom: 0;
-					width: auto;
-					border: none;
-					border-radius: 2px;
-					transform: scale(0.5);
-					background-color: #fff;
-				}
-			}
-			&:hover{
-				border-color: $uni-primary;
-			}
-			// 禁用
-			&.is-disable {
-				/* #ifdef H5 */
-				cursor: not-allowed;
-				/* #endif */
-				background-color: #F2F6FC;
-				border-color: $border-color;
-			}
-
-			// 选中
-			&.is-checked {
-				border-color: $uni-primary;
-				background-color: $uni-primary;
-
-				.checkbox__inner-icon {
-					opacity: 1;
-					transform: rotate(45deg);
-				}
-
-				// 选中禁用
-				&.is-disable {
-					opacity: $disable;
-				}
-			}
-			
-		}
-	}
-</style>

+ 0 - 171
uni_modules/uni-table/components/uni-tr/uni-tr.vue

@@ -1,171 +0,0 @@
-<template>
-	<!-- #ifdef H5 -->
-	<tr class="uni-table-tr">
-		<th v-if="selection === 'selection' && ishead" class="checkbox" :class="{ 'tr-table--border': border }">
-			<table-checkbox :checked="checked" :indeterminate="indeterminate" :disabled="disabled" @checkboxSelected="checkboxSelected"></table-checkbox>
-		</th>
-		<slot></slot>
-		<!-- <uni-th class="th-fixed">123</uni-th> -->
-	</tr>
-	<!-- #endif -->
-	<!-- #ifndef H5 -->
-	<view class="uni-table-tr">
-		<view v-if="selection === 'selection' " class="checkbox" :class="{ 'tr-table--border': border }">
-			<table-checkbox :checked="checked" :indeterminate="indeterminate" :disabled="disabled" @checkboxSelected="checkboxSelected"></table-checkbox>
-		</view>
-		<slot></slot>
-	</view>
-	<!-- #endif -->
-</template>
-
-<script>
-	import tableCheckbox from './table-checkbox.vue'
-/**
- * Tr 表格行组件
- * @description 表格行组件 仅包含 th,td 组件
- * @tutorial https://ext.dcloud.net.cn/plugin?id=
- */
-export default {
-	name: 'uniTr',
-	components: { tableCheckbox },
-	props: {
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		keyValue: {
-			type: [String, Number],
-			default: ''
-		}
-	},
-	options: {
-		virtualHost: true
-	},
-	data() {
-		return {
-			value: false,
-			border: false,
-			selection: false,
-			widthThArr: [],
-			ishead: true,
-			checked: false,
-			indeterminate:false
-		}
-	},
-	created() {
-		this.root = this.getTable()
-		this.head = this.getTable('uniThead')
-		if (this.head) {
-			this.ishead = false
-			this.head.init(this)
-		}
-		this.border = this.root.border
-		this.selection = this.root.type
-		this.root.trChildren.push(this)
-		const rowData = this.root.data.find(v => v[this.root.rowKey] === this.keyValue)
-		if(rowData){
-			this.rowData = rowData
-		}
-		this.root.isNodata()
-	},
-	mounted() {
-		if (this.widthThArr.length > 0) {
-			const selectionWidth = this.selection === 'selection' ? 50 : 0
-			this.root.minWidth = this.widthThArr.reduce((a, b) => Number(a) + Number(b)) + selectionWidth
-		}
-	},
-	// #ifndef VUE3
-	destroyed() {
-		const index = this.root.trChildren.findIndex(i => i === this)
-		this.root.trChildren.splice(index, 1)
-		this.root.isNodata()
-	},
-	// #endif
-	// #ifdef VUE3
-	unmounted() {
-		const index = this.root.trChildren.findIndex(i => i === this)
-		this.root.trChildren.splice(index, 1)
-		this.root.isNodata()
-	},
-	// #endif
-	methods: {
-		minWidthUpdate(width) {
-			this.widthThArr.push(width)
-		},
-		// 选中
-		checkboxSelected(e) {
-			let rootData = this.root.data.find(v => v[this.root.rowKey] === this.keyValue)
-			this.checked = e.checked
-			this.root.check(rootData||this, e.checked,rootData? this.keyValue:null)
-		},
-		change(e) {
-			this.root.trChildren.forEach(item => {
-				if (item === this) {
-					this.root.check(this, e.detail.value.length > 0 ? true : false)
-				}
-			})
-		},
-		/**
-		 * 获取父元素实例
-		 */
-		getTable(name = 'uniTable') {
-			let parent = this.$parent
-			let parentName = parent.$options.name
-			while (parentName !== name) {
-				parent = parent.$parent
-				if (!parent) return false
-				parentName = parent.$options.name
-			}
-			return parent
-		}
-	}
-}
-</script>
-
-<style lang="scss">
-$border-color: #ebeef5;
-
-.uni-table-tr {
-	/* #ifndef APP-NVUE */
-	display: table-row;
-	transition: all 0.3s;
-	box-sizing: border-box;
-	/* #endif */
-}
-
-.checkbox {
-	padding: 0 8px;
-	width: 26px;
-	padding-left: 12px;
-	/* #ifndef APP-NVUE */
-	display: table-cell;
-	vertical-align: middle;
-	/* #endif */
-	color: #333;
-	font-weight: 500;
-	border-bottom: 1px $border-color solid;
-	font-size: 14px;
-	// text-align: center;
-}
-
-.tr-table--border {
-	border-right: 1px $border-color solid;
-}
-
-/* #ifndef APP-NVUE */
-.uni-table-tr {
-	::v-deep .uni-table-th {
-		&.table--border:last-child {
-			// border-right: none;
-		}
-	}
-
-	::v-deep .uni-table-td {
-		&.table--border:last-child {
-			// border-right: none;
-		}
-	}
-}
-
-/* #endif */
-</style>

+ 0 - 9
uni_modules/uni-table/i18n/en.json

@@ -1,9 +0,0 @@
-{
-	"filter-dropdown.reset": "Reset",
-	"filter-dropdown.search": "Search",
-	"filter-dropdown.submit": "Submit",
-	"filter-dropdown.filter": "Filter",
-	"filter-dropdown.gt": "Greater or equal to",
-	"filter-dropdown.lt": "Less than or equal to",
-	"filter-dropdown.date": "Date"
-}

+ 0 - 9
uni_modules/uni-table/i18n/es.json

@@ -1,9 +0,0 @@
-{
-	"filter-dropdown.reset": "Reiniciar",
-	"filter-dropdown.search": "Búsqueda",
-	"filter-dropdown.submit": "Entregar",
-	"filter-dropdown.filter": "Filtrar",
-	"filter-dropdown.gt": "Mayor o igual a",
-	"filter-dropdown.lt": "Menos que o igual a",
-	"filter-dropdown.date": "Fecha"
-}

+ 0 - 9
uni_modules/uni-table/i18n/fr.json

@@ -1,9 +0,0 @@
-{
-	"filter-dropdown.reset": "Réinitialiser",
-	"filter-dropdown.search": "Chercher",
-	"filter-dropdown.submit": "Soumettre",
-	"filter-dropdown.filter": "Filtre",
-	"filter-dropdown.gt": "Supérieur ou égal à",
-	"filter-dropdown.lt": "Inférieur ou égal à",
-	"filter-dropdown.date": "Date"
-}

+ 0 - 12
uni_modules/uni-table/i18n/index.js

@@ -1,12 +0,0 @@
-import en from './en.json'
-import es from './es.json'
-import fr from './fr.json'
-import zhHans from './zh-Hans.json'
-import zhHant from './zh-Hant.json'
-export default {
-	en,
-	es,
-	fr,
-	'zh-Hans': zhHans,
-	'zh-Hant': zhHant
-}

+ 0 - 9
uni_modules/uni-table/i18n/zh-Hans.json

@@ -1,9 +0,0 @@
-{
-	"filter-dropdown.reset": "重置",
-	"filter-dropdown.search": "搜索",
-	"filter-dropdown.submit": "确定",
-	"filter-dropdown.filter": "筛选",
-	"filter-dropdown.gt": "大于等于",
-	"filter-dropdown.lt": "小于等于",
-	"filter-dropdown.date": "日期范围"
-}

+ 0 - 9
uni_modules/uni-table/i18n/zh-Hant.json

@@ -1,9 +0,0 @@
-{
-	"filter-dropdown.reset": "重置",
-	"filter-dropdown.search": "搜索",
-	"filter-dropdown.submit": "確定",
-	"filter-dropdown.filter": "篩選",
-	"filter-dropdown.gt": "大於等於",
-	"filter-dropdown.lt": "小於等於",
-	"filter-dropdown.date": "日期範圍"
-}

+ 0 - 83
uni_modules/uni-table/package.json

@@ -1,83 +0,0 @@
-{
-  "id": "uni-table",
-  "displayName": "uni-table 表格",
-  "version": "1.2.3",
-  "description": "表格组件,多用于展示多条结构类似的数据,如",
-  "keywords": [
-    "uni-ui",
-    "uniui",
-    "table",
-    "表格"
-],
-  "repository": "https://github.com/dcloudio/uni-ui",
-  "engines": {
-    "HBuilderX": ""
-  },
-  "directories": {
-    "example": "../../temps/example_temps"
-  },
-"dcloudext": {
-    "sale": {
-      "regular": {
-        "price": "0.00"
-      },
-      "sourcecode": {
-        "price": "0.00"
-      }
-    },
-    "contact": {
-      "qq": ""
-    },
-    "declaration": {
-      "ads": "无",
-      "data": "无",
-      "permissions": "无"
-    },
-    "npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
-    "type": "component-vue"
-  },
-  "uni_modules": {
-    "dependencies": ["uni-scss","uni-datetime-picker"],
-    "encrypt": [],
-    "platforms": {
-      "cloud": {
-        "tcb": "y",
-        "aliyun": "y"
-      },
-      "client": {
-        "App": {
-          "app-vue": "y",
-          "app-nvue": "n"
-        },
-        "H5-mobile": {
-          "Safari": "y",
-          "Android Browser": "y",
-          "微信浏览器(Android)": "y",
-          "QQ浏览器(Android)": "y"
-        },
-        "H5-pc": {
-          "Chrome": "y",
-          "IE": "y",
-          "Edge": "y",
-          "Firefox": "y",
-          "Safari": "y"
-        },
-        "小程序": {
-          "微信": "y",
-          "阿里": "y",
-          "百度": "y",
-          "字节跳动": "n",
-          "QQ": "y"
-        },
-        "快应用": {
-          "华为": "n",
-          "联盟": "n"
-        },
-        "Vue": {
-            "vue2": "y",
-            "vue3": "y"
-        }
-      }
-    }
-  }
-}

+ 0 - 13
uni_modules/uni-table/readme.md

@@ -1,13 +0,0 @@
-
-
-## Table 表单
-> 组件名:``uni-table``,代码块: `uTable`。
-
-用于展示多条结构类似的数据
-
-### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-table)
-#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839 
-
-
-
-