n20-common-lib 2.6.3 → 2.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.6.3",
3
+ "version": "2.6.5",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,7 +1,12 @@
1
1
  <template>
2
2
  <div class="n20-date-select">
3
3
  <el-select v-model="type" placeholder="请选择" style="width: 65px" @change="dateTypeSelectChange">
4
- <el-option v-for="(item, index) in timing" :key="index" :label="item.label" :value="item.value" />
4
+ <el-option
5
+ v-for="(item, index) in timing.filter((item) => selectList.includes(item.label))"
6
+ :key="index"
7
+ :label="item.label"
8
+ :value="item.value"
9
+ />
5
10
  </el-select>
6
11
  <el-date-picker
7
12
  v-if="type === 'day'"
@@ -117,12 +122,14 @@ export default {
117
122
  this.$emit('update:selectType', this.timing.find((item) => item.value === v).label)
118
123
  },
119
124
  get() {
120
- return this.timing.find((item) => item.label === this.selectType).value
125
+ return this.timing
126
+ .filter((item) => this.selectList.includes(item.label))
127
+ .find((item) => item.label === this.selectType).value
121
128
  }
122
129
  }
123
130
  },
124
131
  mounted() {
125
- switch (this.selectType) {
132
+ switch (this.type) {
126
133
  case 'day':
127
134
  this.day = [this.value.startDate, this.value.endDate]
128
135
  break
@@ -141,6 +148,24 @@ export default {
141
148
  }
142
149
  },
143
150
  methods: {
151
+ matchArrays(arrayA, arrayB) {
152
+ const hashTable = new Map()
153
+ for (const element of arrayA) {
154
+ if (hashTable.has(element)) {
155
+ hashTable.set(element, hashTable.get(element) + 1)
156
+ } else {
157
+ hashTable.set(element, 1)
158
+ }
159
+ }
160
+ const result = []
161
+ for (const element of arrayB) {
162
+ if (hashTable.has(element.label) && hashTable.get(element.label) > 0) {
163
+ result.push(element)
164
+ hashTable.set(element.label, hashTable.get(element.label) - 1)
165
+ }
166
+ }
167
+ return result
168
+ },
144
169
  dateTypeSelectChange(value) {
145
170
  this.$emit('update:selectType', this.timing.find((item) => item.value === value).label)
146
171
  this.day = ''
@@ -0,0 +1,69 @@
1
+ const addWaterMarker = (str, parentNode, font, textColor) => {
2
+ const args = arguments[0]
3
+ let can = document.createElement('canvas')
4
+ const __wm = document.querySelector('.n20_v_watermark')
5
+ let div = __wm || document.createElement('div')
6
+
7
+ can.width = 220
8
+ can.height = 180
9
+ can.style.display = 'none'
10
+ let cans = can.getContext('2d')
11
+ cans.rotate((-20 * Math.PI) / 180)
12
+ cans.font = font || '16px Microsoft JhengHei'
13
+ cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'
14
+ cans.textAlign = 'left'
15
+ cans.textBaseline = 'Middle'
16
+ cans.fillText(str, can.width / 10, can.height / 2)
17
+ const styleStr = `
18
+ position:absolute;
19
+ top:0;
20
+ left:0;
21
+ width:100%;
22
+ height:100%;
23
+ inset:0;
24
+ z-index:99999;
25
+ pointer-events:none;
26
+ background-repeat:repeat;
27
+ background-image:url('${can.toDataURL('image/png')}')`
28
+ div.setAttribute('style', styleStr)
29
+ div.classList.add('n20_v_watermark')
30
+ if (!__wm) {
31
+ parentNode.style.position = 'relative'
32
+ parentNode.insertBefore(div, parentNode.firstChild)
33
+ }
34
+ const MutationObserver = window.MutationObserver || window.WebKitMutationObserver
35
+ if (MutationObserver) {
36
+ let mo = new MutationObserver(function () {
37
+ const __wm = document.querySelector('.n20_v_watermark')
38
+ // 只在__wm元素变动才重新调用 __canvasWM
39
+ if ((__wm && __wm.getAttribute('style') !== styleStr) || !__wm) {
40
+ // 避免一直触发
41
+ mo.disconnect()
42
+ mo = null
43
+ addWaterMarker(str, parentNode, font, textColor)
44
+ }
45
+ })
46
+
47
+ mo.observe(parentNode, {
48
+ attributes: true,
49
+ subtree: true,
50
+ childList: true
51
+ })
52
+ }
53
+
54
+ parentNode.style.position = 'relative'
55
+ parentNode.insertBefore(div, parentNode.firstChild)
56
+ }
57
+
58
+ const watermark = {
59
+ install: function (Vue) {
60
+ Vue.directive('watermark', {
61
+ inserted: function (el, binding) {
62
+ console.log(el, binding)
63
+ addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)
64
+ }
65
+ })
66
+ }
67
+ }
68
+
69
+ export default watermark
package/src/index.js CHANGED
@@ -1,132 +1,133 @@
1
- import './utils/storagePro.js'; // 扩展Storage
1
+ import './utils/storagePro.js' // 扩展Storage
2
2
  /** 提供组件给外部使用的入口 */
3
- import AnchorItem from './components/Anchor/AnchorItem.vue';
4
- import Anchor from './components/Anchor/index.vue';
3
+ import AnchorItem from './components/Anchor/AnchorItem.vue'
4
+ import Anchor from './components/Anchor/index.vue'
5
5
 
6
- import ApprovalButtons from './components/ApprovalButtons/index.vue';
7
- import ApproveCard from './components/ApprovalCard/ApproveCard.vue';
8
- import ApprovalCard from './components/ApprovalCard/index.vue';
9
- import ApprovalImg from './components/ApprovalRecord/approvalImg.vue';
10
- import FlowDialog from './components/ApprovalRecord/flowDialog.vue';
11
- import ApprovalRecord from './components/ApprovalRecord/index.vue';
12
- import ButtonGroup from './components/Button/button-group.vue';
13
- import IconGroupButton from './components/Button/icon-group-button.vue';
14
- import Button from './components/Button/index.vue';
15
- import CascaderArea from './components/CascaderArea/index.vue';
16
- import ChildRange from './components/ChildRange/index.vue';
17
- import ContentLoading from './components/ContentLoading/index.vue';
18
- import ContentNull from './components/ContentNull/index.vue';
19
- import DatePicker from './components/DatePicker/index.vue';
20
- import DatePickerPor from './components/DatePicker/por.vue';
21
- import SelectDatePicker from './components/DateSelect/index.vue';
22
- import Descriptions from './components/Descriptions/index.vue';
23
- import Dialog from './components/Dialog/index.vue';
24
- import DragList from './components/DragList/index.vue';
25
- import Empty from './components/Empty/index.vue';
26
- import EventBubble from './components/EventBubble/index.vue';
27
- import Expandable from './components/Expandable/index.vue';
28
- import ExpandablePane from './components/Expandable/main.vue';
29
- import FileExportAsync from './components/FileExportAsync/index.vue';
30
- import FileImport from './components/FileImport/index.vue';
31
- import FileUploadTable from './components/FileUploadTable/index.vue';
32
- import Filters from './components/Filters/index.vue';
33
- import FlowStep from './components/FlowStep/index.vue';
34
- import FooterBox from './components/FooterBox/index.vue';
35
- import InputNumber from './components/InputNumber/index.vue';
36
- import InputNumberRange from './components/InputNumber/numberRange.vue';
37
- import InputSearch from './components/InputSearch/index.vue';
38
- import NavMenu from './components/NavMenu/index.vue';
39
- import PageHeader from './components/PageHeader/index.vue';
40
- import Page from './components/PageLayout/page.vue';
41
- import Pagination from './components/Pagination/index.vue';
42
- import SecondaryTab from './components/SecondaryTab/index.vue';
43
- import SelectLazy from './components/SelectLazy/index.vue';
44
- import SelectTreeLazy from './components/SelectTree/SelectTreeLazy.vue';
45
- import SelectTree from './components/SelectTree/index.vue';
46
- import ShowColumn from './components/ShowColumn/index.vue';
47
- import Sifting from './components/Sifting/index.vue';
48
- import Statis from './components/Statis/index.vue';
49
- import StatisItem from './components/Statis/statisItem.vue';
50
- import StatisPopover from './components/Statis/statisPopover.vue';
51
- import Step from './components/Step/index.vue';
52
- import Suspend from './components/Suspend/index.vue';
53
- import Table from './components/Table/index.vue';
54
- import TableOperate from './components/TableOperateColumn/OperateBtns.vue';
55
- import TableOperateColumn from './components/TableOperateColumn/index.vue';
56
- import TablePro from './components/TablePro/index.vue';
57
- import TableProOperateColumn from './components/TableProOperateColumn/index.vue';
58
- import TableSetSize from './components/TableSetSize';
59
- import Task from './components/Task/index.vue';
60
- import TertiaryTab from './components/TertiaryTab/index.vue';
61
- import TimePicker from './components/TimePicker/index.vue';
62
- import Upload from './components/Upload/index.vue';
63
- import WornPagination from './components/WornPagination/index.vue';
6
+ import ApprovalButtons from './components/ApprovalButtons/index.vue'
7
+ import ApproveCard from './components/ApprovalCard/ApproveCard.vue'
8
+ import ApprovalCard from './components/ApprovalCard/index.vue'
9
+ import ApprovalImg from './components/ApprovalRecord/approvalImg.vue'
10
+ import FlowDialog from './components/ApprovalRecord/flowDialog.vue'
11
+ import ApprovalRecord from './components/ApprovalRecord/index.vue'
12
+ import ButtonGroup from './components/Button/button-group.vue'
13
+ import IconGroupButton from './components/Button/icon-group-button.vue'
14
+ import Button from './components/Button/index.vue'
15
+ import CascaderArea from './components/CascaderArea/index.vue'
16
+ import ChildRange from './components/ChildRange/index.vue'
17
+ import ContentLoading from './components/ContentLoading/index.vue'
18
+ import ContentNull from './components/ContentNull/index.vue'
19
+ import DatePicker from './components/DatePicker/index.vue'
20
+ import DatePickerPor from './components/DatePicker/por.vue'
21
+ import SelectDatePicker from './components/DateSelect/index.vue'
22
+ import Descriptions from './components/Descriptions/index.vue'
23
+ import Dialog from './components/Dialog/index.vue'
24
+ import DragList from './components/DragList/index.vue'
25
+ import Empty from './components/Empty/index.vue'
26
+ import EventBubble from './components/EventBubble/index.vue'
27
+ import Expandable from './components/Expandable/index.vue'
28
+ import ExpandablePane from './components/Expandable/main.vue'
29
+ import FileExportAsync from './components/FileExportAsync/index.vue'
30
+ import FileImport from './components/FileImport/index.vue'
31
+ import FileUploadTable from './components/FileUploadTable/index.vue'
32
+ import Filters from './components/Filters/index.vue'
33
+ import FlowStep from './components/FlowStep/index.vue'
34
+ import FooterBox from './components/FooterBox/index.vue'
35
+ import InputNumber from './components/InputNumber/index.vue'
36
+ import InputNumberRange from './components/InputNumber/numberRange.vue'
37
+ import InputSearch from './components/InputSearch/index.vue'
38
+ import NavMenu from './components/NavMenu/index.vue'
39
+ import PageHeader from './components/PageHeader/index.vue'
40
+ import Page from './components/PageLayout/page.vue'
41
+ import Pagination from './components/Pagination/index.vue'
42
+ import SecondaryTab from './components/SecondaryTab/index.vue'
43
+ import SelectLazy from './components/SelectLazy/index.vue'
44
+ import SelectTreeLazy from './components/SelectTree/SelectTreeLazy.vue'
45
+ import SelectTree from './components/SelectTree/index.vue'
46
+ import ShowColumn from './components/ShowColumn/index.vue'
47
+ import Sifting from './components/Sifting/index.vue'
48
+ import Statis from './components/Statis/index.vue'
49
+ import StatisItem from './components/Statis/statisItem.vue'
50
+ import StatisPopover from './components/Statis/statisPopover.vue'
51
+ import Step from './components/Step/index.vue'
52
+ import Suspend from './components/Suspend/index.vue'
53
+ import Table from './components/Table/index.vue'
54
+ import TableOperate from './components/TableOperateColumn/OperateBtns.vue'
55
+ import TableOperateColumn from './components/TableOperateColumn/index.vue'
56
+ import TablePro from './components/TablePro/index.vue'
57
+ import TableProOperateColumn from './components/TableProOperateColumn/index.vue'
58
+ import TableSetSize from './components/TableSetSize'
59
+ import Task from './components/Task/index.vue'
60
+ import TertiaryTab from './components/TertiaryTab/index.vue'
61
+ import TimePicker from './components/TimePicker/index.vue'
62
+ import Upload from './components/Upload/index.vue'
63
+ import WornPagination from './components/WornPagination/index.vue'
64
64
 
65
- import AdvancedFilter from './components/AdvancedFilter/index.vue';
66
- import SelectTreePro from './components/SelectTree/pro.vue';
67
- import Tree from './components/Tree/index.vue';
65
+ import AdvancedFilter from './components/AdvancedFilter/index.vue'
66
+ import SelectTreePro from './components/SelectTree/pro.vue'
67
+ import Tree from './components/Tree/index.vue'
68
68
 
69
69
  // 新版日期选择框
70
- import BusiDatePicker from './components/DateSelect/busiDate.vue';
71
- import QuarterDatePicker from './components/DateSelect/quarterDatePicker.vue';
72
- import SelectDatePickerPro from './components/SelectDatePickerPro/index.vue';
73
- import TableTransfer from './components/TableTransfer/index.vue';
74
- import UploadMsg from './components/Upload/uploadMsg.vue';
75
- import WorkCard from './components/WorkCard/index.vue';
76
- import operatingStatus from './components/operatingStatus/index.vue';
70
+ import BusiDatePicker from './components/DateSelect/busiDate.vue'
71
+ import QuarterDatePicker from './components/DateSelect/quarterDatePicker.vue'
72
+ import SelectDatePickerPro from './components/SelectDatePickerPro/index.vue'
73
+ import TableTransfer from './components/TableTransfer/index.vue'
74
+ import UploadMsg from './components/Upload/uploadMsg.vue'
75
+ import WorkCard from './components/WorkCard/index.vue'
76
+ import operatingStatus from './components/operatingStatus/index.vue'
77
77
 
78
78
  // ECharts 不要打包进来
79
- import Diff from './components/Diff/index.vue';
80
- import Stamp from './components/Stamp/index.vue';
79
+ import Diff from './components/Diff/index.vue'
80
+ import Stamp from './components/Stamp/index.vue'
81
81
  /* old */
82
- import DialogO from './components/Dialog/indexO.vue';
83
- import FiltersO from './components/Filters/indexO.vue';
84
- import TableO from './components/Table/indexO.vue';
82
+ import DialogO from './components/Dialog/indexO.vue'
83
+ import FiltersO from './components/Filters/indexO.vue'
84
+ import TableO from './components/Table/indexO.vue'
85
85
  /* 中建科 */
86
- import ApproveCardZjk from './components/ApprovalCard/ApproveCard-zjk.vue';
87
- import ApprovalCardZjk from './components/ApprovalCard/index-zjk.vue';
88
- import ApprovalRecordZjk from './components/ApprovalRecord/index-zjk.vue';
86
+ import ApproveCardZjk from './components/ApprovalCard/ApproveCard-zjk.vue'
87
+ import ApprovalCardZjk from './components/ApprovalCard/index-zjk.vue'
88
+ import ApprovalRecordZjk from './components/ApprovalRecord/index-zjk.vue'
89
89
 
90
90
  /** 第三方组件 */
91
91
 
92
92
  /** 注入指令 */
93
- import VClickOutside from './directives/VClickOutside/index.js';
94
- import VDrag from './directives/VDrag/index.js';
95
- import VErrorMessage from './directives/VErrorMessage/index.js';
96
- import VHas from './directives/VHas/index.js';
97
- import VMove from './directives/VMove/index.js';
98
- import VRuleKey from './directives/VRuleKey/index.js';
99
- import { HoverTooltip, TitleDirective } from './directives/VTitle/index.js';
100
- import VTableLoading from './directives/loading/index.js';
93
+ import VClickOutside from './directives/VClickOutside/index.js'
94
+ import VDrag from './directives/VDrag/index.js'
95
+ import VErrorMessage from './directives/VErrorMessage/index.js'
96
+ import VHas from './directives/VHas/index.js'
97
+ import VMove from './directives/VMove/index.js'
98
+ import VRuleKey from './directives/VRuleKey/index.js'
99
+ import { HoverTooltip, TitleDirective } from './directives/VTitle/index.js'
100
+ import VTableLoading from './directives/loading/index.js'
101
+ import watermark from './directives/watermark/index.js'
101
102
 
102
103
  /** 注入方法 */
103
- import dayjs from 'dayjs';
104
- import _numerify from 'numerify';
105
- import getJsonc from './assets/getJsonc.js';
106
- import { has as isHas, hasG as isHasG } from './directives/VHas/index.js';
107
- import asyncGetRelaNos from './utils/asyncGetRelaNos.js';
108
- import auth from './utils/auth.js';
109
- import axios from './utils/axios.js';
110
- import downloadBlob from './utils/downloadBlob.js';
111
- import forEachs from './utils/forEachs';
112
- import { refreshTab, setTabs } from './utils/handleTab.js';
113
- import imgLoad from './utils/imgLoad.js';
114
- import importG from './utils/importGlobal.js'; // 联合加载组件保存位置
115
- import list2tree from './utils/list2tree';
116
- import { msgPor, msgboxPor } from './utils/msgboxPor.js';
117
- import N from './utils/numberPor.js'; // 扩展Number
118
- import { closeTab, linkGo, linkPush } from './utils/urlToGo';
104
+ import dayjs from 'dayjs'
105
+ import _numerify from 'numerify'
106
+ import getJsonc from './assets/getJsonc.js'
107
+ import { has as isHas, hasG as isHasG } from './directives/VHas/index.js'
108
+ import asyncGetRelaNos from './utils/asyncGetRelaNos.js'
109
+ import auth from './utils/auth.js'
110
+ import axios from './utils/axios.js'
111
+ import downloadBlob from './utils/downloadBlob.js'
112
+ import forEachs from './utils/forEachs'
113
+ import { refreshTab, setTabs } from './utils/handleTab.js'
114
+ import imgLoad from './utils/imgLoad.js'
115
+ import importG from './utils/importGlobal.js' // 联合加载组件保存位置
116
+ import list2tree from './utils/list2tree'
117
+ import { msgPor, msgboxPor } from './utils/msgboxPor.js'
118
+ import N from './utils/numberPor.js' // 扩展Number
119
+ import { closeTab, linkGo, linkPush } from './utils/urlToGo'
119
120
  function numerify(input, formatType, roundingFunction) {
120
121
  return _numerify(input, formatType, roundingFunction)
121
122
  }
122
123
 
123
- import { convert } from './utils/amountInWords.js';
124
+ import { convert } from './utils/amountInWords.js'
124
125
 
125
126
  /** 国际化 */
126
- import i18n, { $l } from './utils/i18n';
127
+ import i18n, { $l } from './utils/i18n'
127
128
 
128
129
  /** 修正ElementUI的问题 */
129
- import repairEl from './utils/repairElementUI';
130
+ import repairEl from './utils/repairElementUI'
130
131
 
131
132
  const components = [
132
133
  ContentLoading,
@@ -229,6 +230,7 @@ const install = function (Vue, opts = { prefix: 'Cl', i18nConfig: {} }) {
229
230
  Vue.use(VHas)
230
231
  Vue.use(VTableLoading)
231
232
  Vue.use(VErrorMessage)
233
+ Vue.use(watermark)
232
234
 
233
235
  Vue.use(i18n, opts.i18nConfig)
234
236
  Vue.prototype.$axios = axios
@@ -354,5 +356,4 @@ export {
354
356
  // 页签/路由
355
357
  setTabs,
356
358
  version
357
- };
358
-
359
+ }
@@ -191,7 +191,11 @@ export function evaluate(evalStr = '', decimal = 10, proceDecimal) {
191
191
  * @return {string}
192
192
  */
193
193
  export const subFixed = function (n, decimal = 6) {
194
- return XEUtils.toFixed(n, decimal)
194
+ if (n === undefined || n === null || n === '') {
195
+ return ''
196
+ } else {
197
+ return XEUtils.toFixed(n, decimal)
198
+ }
195
199
  }
196
200
  /**
197
201
  * 将数字或字符串格式的数字转换为千位分隔符格式的字符串