@bytenew/bn-bus-ui 1.1.463 → 1.1.464

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.
Files changed (167) hide show
  1. package/dist/assocTableSearch-Bfe96864.js +349 -0
  2. package/dist/assocTableSearch.css +1 -0
  3. package/dist/bn-bus-ui.es.js +65 -0
  4. package/dist/bn-bus-ui.umd.js +49 -0
  5. package/dist/chooseIPaasData-COrrvQKZ.js +391 -0
  6. package/dist/chooseIPaasData.css +1 -0
  7. package/dist/defaultSet-CzN1ec_d.js +297 -0
  8. package/dist/defaultSet.css +1 -0
  9. package/dist/fileFormData-D_Q1vylE.js +53 -0
  10. package/dist/formItemFooter-BvptZj_u.js +108 -0
  11. package/dist/formItemFooter.css +1 -0
  12. package/dist/funcExprDialog-BguNs9fl.js +139 -0
  13. package/dist/funcExprDialog.css +1 -0
  14. package/dist/index-0oB7QocU.js +44 -0
  15. package/dist/index-69fRP0M8.js +89 -0
  16. package/dist/index-BdklTJtF.js +66 -0
  17. package/dist/index-Bu3jHlby.js +45 -0
  18. package/dist/index-BxWx5kpG.js +89 -0
  19. package/dist/index-C5LQ0OSs.js +183 -0
  20. package/dist/index-C8YhrrUN.js +51 -0
  21. package/dist/index-COuPCIzB.js +45 -0
  22. package/dist/index-CSvVyjxx.js +178 -0
  23. package/dist/index-DCv51EXX.js +109 -0
  24. package/dist/index-DUSI6MuC.js +135 -0
  25. package/dist/index-DVzxs2vR.js +58 -0
  26. package/dist/index-Dd4b8zNb.js +746 -0
  27. package/dist/index-Md-ZlkCW.js +66 -0
  28. package/dist/index-hsSIY2FP.js +221 -0
  29. package/dist/index-n13-H3_Y.js +118 -0
  30. package/dist/index-wUl5aPUD.js +64 -0
  31. package/dist/index.css +1 -0
  32. package/dist/index2.css +1 -0
  33. package/dist/index3.css +1 -0
  34. package/dist/index4.css +1 -0
  35. package/dist/index5.css +1 -0
  36. package/dist/index6.css +1 -0
  37. package/dist/index7.css +1 -0
  38. package/dist/install-CNjs0u5x.js +23299 -0
  39. package/dist/install.css +1 -0
  40. package/dist/setOption-CXOifQcx.js +329 -0
  41. package/dist/setOption.css +1 -0
  42. package/dist/setRelationOption-C7VDhej7.js +5217 -0
  43. package/dist/setRelationOption.css +1 -0
  44. package/package.json +4 -20
  45. package/install.js +0 -134
  46. package/packages/BnAddress/index.vue +0 -141
  47. package/packages/BnAddressParse/index.vue +0 -75
  48. package/packages/BnAdvancedFilter/BnFilterView.vue +0 -145
  49. package/packages/BnAdvancedFilter/index.vue +0 -345
  50. package/packages/BnAdvancedFilter/util.js +0 -171
  51. package/packages/BnCascader/BnCascader.vue +0 -543
  52. package/packages/BnCascader/BnCascaderPanel.vue +0 -1331
  53. package/packages/BnCascader/cascaderDisplay.js +0 -102
  54. package/packages/BnCheck/BnCheck.vue +0 -253
  55. package/packages/BnColumnConfig/columnConfigDialog.vue +0 -134
  56. package/packages/BnColumnConfig/component/childrenFormSetting/assocTable.vue +0 -143
  57. package/packages/BnColumnConfig/component/childrenFormSetting/assocTableSearch.vue +0 -314
  58. package/packages/BnColumnConfig/component/childrenFormSetting/index.vue +0 -243
  59. package/packages/BnColumnConfig/component/defaultSet/defaultSet.vue +0 -114
  60. package/packages/BnColumnConfig/component/defaultSet/stringDefault.vue +0 -210
  61. package/packages/BnColumnConfig/component/funcExprDialog/funcExprDialog.vue +0 -126
  62. package/packages/BnColumnConfig/component/packageFilter/index.vue +0 -141
  63. package/packages/BnColumnConfig/component/paraExplainSet/index.vue +0 -156
  64. package/packages/BnColumnConfig/component/setOption/setOption.vue +0 -321
  65. package/packages/BnColumnConfig/component/setRelationOption/ConditionList.vue +0 -277
  66. package/packages/BnColumnConfig/component/setRelationOption/LevelHeader.vue +0 -144
  67. package/packages/BnColumnConfig/component/setRelationOption/setRelationOption.vue +0 -642
  68. package/packages/BnColumnConfig/data.js +0 -129
  69. package/packages/BnColumnConfig/index.scss +0 -23
  70. package/packages/BnColumnConfig/index.vue +0 -309
  71. package/packages/BnCondVal/BnCondVal.vue +0 -112
  72. package/packages/BnCondVal/itemVal/dateRegVal.vue +0 -39
  73. package/packages/BnCondVal/itemVal/dateVal.vue +0 -39
  74. package/packages/BnCondVal/itemVal/numRegVal.vue +0 -67
  75. package/packages/BnCondVal/itemVal/numVal.vue +0 -44
  76. package/packages/BnCondVal/itemVal/relationVal.vue +0 -73
  77. package/packages/BnCondVal/itemVal/selectColumnVal.vue +0 -58
  78. package/packages/BnCondVal/itemVal/selectVal.vue +0 -59
  79. package/packages/BnCondVal/itemVal/stringVal.vue +0 -156
  80. package/packages/BnCondition/index.vue +0 -551
  81. package/packages/BnCondition/util.js +0 -232
  82. package/packages/BnDatePicker/BnDatePicker.vue +0 -194
  83. package/packages/BnDrop/BnDrop.vue +0 -917
  84. package/packages/BnEmptyTip/BnEmptyTip.vue +0 -107
  85. package/packages/BnExportOrder/BnExportOrder.vue +0 -241
  86. package/packages/BnExportOrder/validatorCode.vue +0 -94
  87. package/packages/BnFileView/BnFileView.vue +0 -271
  88. package/packages/BnFileView/FileDetail.vue +0 -125
  89. package/packages/BnFileView/videoPreview.vue +0 -70
  90. package/packages/BnFilterOption/BnFilterOption.vue +0 -160
  91. package/packages/BnFunExpr/BnFunExpr.vue +0 -608
  92. package/packages/BnImportOrder/BnImportOrder.vue +0 -323
  93. package/packages/BnImportTemplate/BnImportTemplate.vue +0 -866
  94. package/packages/BnImportTemplate/assets/merge_tip_img.png +0 -0
  95. package/packages/BnImportTemplate/assets/sheet_tip.png +0 -0
  96. package/packages/BnImportTemplate/assets/xls.png +0 -0
  97. package/packages/BnImportTemplate/components/ImportTemplateTrigger.vue +0 -198
  98. package/packages/BnImportTemplate/components/TemplateEditDialog.vue +0 -340
  99. package/packages/BnImportTemplate/components/TemplateFieldsConfig.vue +0 -401
  100. package/packages/BnImportTemplate/components/TemplateListDialog.vue +0 -297
  101. package/packages/BnInpNum/BnInpNum.vue +0 -165
  102. package/packages/BnMenus/BnMenus.vue +0 -502
  103. package/packages/BnMenus/MenuItem.vue +0 -321
  104. package/packages/BnOrderCard/BnOrderCard.vue +0 -389
  105. package/packages/BnOrderCard/orderRemark.vue +0 -178
  106. package/packages/BnOrderCard/util.js +0 -94
  107. package/packages/BnOrderDetail/BnOrderDetail.vue +0 -338
  108. package/packages/BnOrderDetail/filterLogByUser.vue +0 -108
  109. package/packages/BnOrderDetail/orderLogs.vue +0 -53
  110. package/packages/BnOrderDetail/showSubForm/index.vue +0 -41
  111. package/packages/BnOrderDetail/showSubForm/showChildTable.vue +0 -61
  112. package/packages/BnOrderDetail/showSubForm/showTimeLine.vue +0 -131
  113. package/packages/BnOrderDetail/showSubForm/tableCellCopy.vue +0 -84
  114. package/packages/BnOrderShare/index.vue +0 -378
  115. package/packages/BnOrderShare/shareUrlInp.vue +0 -54
  116. package/packages/BnRadio/BnRadio.vue +0 -181
  117. package/packages/BnRelation/BnRelation.vue +0 -120
  118. package/packages/BnSelect/BnSelect.vue +0 -485
  119. package/packages/BnSmartForm/BnBatchForm.vue +0 -334
  120. package/packages/BnSmartForm/BnBatchFormDialog.vue +0 -423
  121. package/packages/BnSmartForm/BnSmartElf/elfLog/index.vue +0 -57
  122. package/packages/BnSmartForm/BnSmartElf/index.vue +0 -95
  123. package/packages/BnSmartForm/BnSmartFormPsychic.js +0 -629
  124. package/packages/BnSmartForm/BnSmartFormUtil.js +0 -524
  125. package/packages/BnSmartForm/addressForm/index.vue +0 -73
  126. package/packages/BnSmartForm/checkboxForm/index.vue +0 -99
  127. package/packages/BnSmartForm/childrenForm/childFormFile.vue +0 -237
  128. package/packages/BnSmartForm/childrenForm/childrenFormBody.vue +0 -260
  129. package/packages/BnSmartForm/childrenForm/index.vue +0 -110
  130. package/packages/BnSmartForm/childrenForm/searchInventory.vue +0 -115
  131. package/packages/BnSmartForm/chooseAssocTable/chooseAssocTable.vue +0 -451
  132. package/packages/BnSmartForm/chooseAssocTable/chooseChildGood.vue +0 -229
  133. package/packages/BnSmartForm/chooseAssocTable/tableCellCopy.vue +0 -84
  134. package/packages/BnSmartForm/chooseChildOrder/chooseChildOrder.vue +0 -158
  135. package/packages/BnSmartForm/chooseIPaasData/chooseIPaasData.vue +0 -307
  136. package/packages/BnSmartForm/chooseIPaasData/tableCellCopy.vue +0 -84
  137. package/packages/BnSmartForm/choosePackage/choosePackage.vue +0 -361
  138. package/packages/BnSmartForm/dateDualForm/index.vue +0 -37
  139. package/packages/BnSmartForm/dateForm/index.vue +0 -38
  140. package/packages/BnSmartForm/fileForm/fileFormData.js +0 -50
  141. package/packages/BnSmartForm/fileForm/index.vue +0 -240
  142. package/packages/BnSmartForm/formItemFooter/formItemFooter.vue +0 -38
  143. package/packages/BnSmartForm/formItemTop/formItemTop.vue +0 -42
  144. package/packages/BnSmartForm/index.vue +0 -1201
  145. package/packages/BnSmartForm/numberForm/index.vue +0 -63
  146. package/packages/BnSmartForm/radioForm/index.vue +0 -72
  147. package/packages/BnSmartForm/receiveForm/index.vue +0 -112
  148. package/packages/BnSmartForm/relationForm/index.vue +0 -82
  149. package/packages/BnSmartForm/scoreForm/index.vue +0 -39
  150. package/packages/BnSmartForm/selectForm/index.vue +0 -55
  151. package/packages/BnSmartForm/showValForm/index.vue +0 -42
  152. package/packages/BnSmartForm/showValForm/showValFormTable.vue +0 -104
  153. package/packages/BnSmartForm/smartFormsCommon.scss +0 -43
  154. package/packages/BnSmartForm/stringForm/index.vue +0 -170
  155. package/packages/BnVirtPopover/index.vue +0 -319
  156. package/packages/BnWebLog/BnWebLog.vue +0 -140
  157. package/packages/BnWorkSettingDrop/advancedOptions.js +0 -112
  158. package/packages/BnWorkSettingDrop/benBenAIUtil.js +0 -89
  159. package/packages/BnWorkSettingDrop/index.vue +0 -292
  160. package/packages/font/iconfont.css +0 -243
  161. package/packages/font/iconfont.ttf +0 -0
  162. package/packages/font/iconfont.woff +0 -0
  163. package/packages/font/iconfont.woff2 +0 -0
  164. package/utils/addressParse-old.js +0 -645
  165. package/utils/addressParse.js +0 -735
  166. package/utils/config.js +0 -68
  167. package/utils/index.js +0 -1171
@@ -1,115 +0,0 @@
1
- <template>
2
- <div class="inventory" v-loading="loading">
3
- <vxe-table ref="assocTable" border size="small" :data="inventoryData"
4
- v-loading="loading"
5
- :row-config="{keyField: 'id',isCurrent: true, isHover: true}"
6
- :max-height="360" min-height="50"
7
- :expand-config="{expandAll: true}"
8
- :column-config="{resizable: true}"
9
- :scroll-x="{ enabled: true, gt: 8 }"
10
- :scroll-y="{ enabled: true, gt: 15 }" >
11
- <vxe-column :title="column" :field="column" min-width="100" v-for="(column,index) in headData" :key="index"
12
- show-header-overflow="title" show-overflow="title" show-footer-overflow></vxe-column>
13
- <template #empty>
14
- <span>未查到库存数据</span>
15
- </template>
16
- </vxe-table>
17
- </div>
18
- </template>
19
- <script>
20
- import {debounce} from "lodash";
21
-
22
- export default {
23
- name: "searchInventory",
24
- props: {
25
- row:{},
26
- column: {},
27
- postFunc: Function
28
- },
29
- data() {
30
- return {
31
- loading: false,
32
- // 关联查库存的字段的值
33
- stockSearch:'',
34
- headData:[],
35
- inventoryData:[]
36
- }
37
- },
38
- beforeCreate() {
39
- this.searchData = debounce(function (post) {
40
- if(this.loading){return}
41
- this.headData = []
42
- this.inventoryData = []
43
- this.loading = true;
44
- this.postFunc('/v2/elcStock/getStockInfoV2', post).then(res => {
45
- this.loading = false;
46
- if(!res.code && res.data){
47
- this.headData = res.data.arrayData[0];
48
- this.inventoryData = res.data.data;
49
- // let tableData = []
50
- // res.data.arrayData.map((item,index)=>{
51
- // if(index>0){
52
- // let d = {};
53
- // this.headData.forEach((o,i)=>{
54
- // d[o] = item[i]
55
- // })
56
- // tableData.push(d);
57
- // }
58
- // })
59
- // this.inventoryData = tableData;
60
- // // 计算总库存并广播给父组件
61
- const totalStock = this.calculateTotalStock(this.inventoryData);
62
- this.row[this.column.columnCode] = totalStock;
63
- }else{
64
- this.row[this.column.columnCode] = '';
65
- }
66
- })
67
- }, 500)
68
- },
69
- watch:{
70
- // 只监听用于查询的特定字段,避免被自己修改的总库存字段触发
71
- row:{
72
- handler(newVal,) {
73
- const searchColumnCode = this.column.extraInfo?.stockSearchColumnCode;
74
- if(!searchColumnCode) return;
75
- const newSearchValue = newVal[searchColumnCode];
76
- // 只有当查询字段发生变化时才触发
77
- if(this.stockSearch !== newSearchValue){
78
- this.stockSearch = newSearchValue;
79
- let post = {
80
- [searchColumnCode]: this.stockSearch
81
- }
82
- this.searchData(post);
83
- }
84
- },
85
- deep: true,
86
- immediate:true
87
- },
88
- },
89
- methods: {
90
- /**
91
- * 遍历数组并计算可发库存总和的方法
92
- * @param {Array} arr - 要遍历的数组,格式如:[{可发库存:10.0000}, {可发库存:10.00}]
93
- * @returns {Number} 总和
94
- */
95
- calculateTotalStock(arr) {
96
- if (!arr || !Array.isArray(arr) || arr.length === 0) {
97
- return 0;
98
- }
99
- return arr.reduce((sum, item) => {
100
- // 获取可发库存的值,转换为数字
101
- const stock = parseFloat(item['可发库存'] || 0);
102
- return sum + (isNaN(stock) ? 0 : stock);
103
- }, 0);
104
- },
105
- }
106
- }
107
- </script>
108
-
109
- <style scoped lang="scss">
110
- .inventory {
111
- min-height: 46px;
112
- padding: 10px;
113
- border: 1px solid #eee;
114
- }
115
- </style>
@@ -1,451 +0,0 @@
1
- <template>
2
- <el-dialog v-model="show" :title="`请选择${columnData.name}`" top="18px" width="70%" destroy-on-close
3
- style="margin-bottom: 0">
4
- <tableCellCopy ref="childTableCopy"></tableCellCopy>
5
- <chooseChildGood ref="chooseChildGood" @setChildGood="setChildGood"></chooseChildGood>
6
- <div class="chooseAssocTable">
7
- <div class="chooseAssocTable-search w-margin-bottom10">
8
- <template v-for="(item,index) in searchPost.conditions" :key="index">
9
- <div class="chooseAssocTable-search-item">
10
- <BnAdvancedFilter v-model="searchPost.conditions[index]" :column-data="item" @valueChange="search()"
11
- allowDel @del="searchPost.conditions.splice(index,1)"
12
- :postFunc="postFunc" :pathUrl="item.pathUrl" :postData="item.postData"/>
13
- </div>
14
- </template>
15
- </div>
16
- <div class="w-flex-between w-margin-bottom10">
17
- <div class="w-flex-center">
18
- <BnDrop v-model="searchPost.conditions" :options="searchColumns" multiple
19
- :optionProps="{value:'columnCode',label:'name'}">
20
- <el-button type="primary" link> + 添加筛选条件</el-button>
21
- </BnDrop>
22
- <el-tag v-for="(item,index) in searchList" closable type="success" @click="chooseSearch(item)"
23
- @close="delSearch(item,index)" class="w-margin-left8 w-cursor-pointer">
24
- {{ item.key }}
25
- </el-tag>
26
- </div>
27
- <div class="w-flex-center">
28
- <el-button @click="saveSearch">另存为常用查询</el-button>
29
- <el-button type="primary" @click="search">筛选</el-button>
30
- </div>
31
- </div>
32
- <vxe-table ref="assocTable" border size="small" :data="orderList" class="chooseAssocTable-out"
33
- v-loading="loading" :tooltip-config="{}"
34
- :row-config="{keyField: 'id',isCurrent: true, isHover: true}"
35
- :max-height="tableMaxHeight" min-height="50"
36
- :expand-config="{expandAll: true}"
37
- :column-config="{resizable: true}"
38
- :checkbox-config="{ checkRowKeys: selectData}"
39
- :scroll-x="{ enabled: true, gt: 8 }"
40
- :scroll-y="{ enabled: true, gt: 15 }"
41
- @checkbox-change="checkChange"
42
- @cell-mouseenter="onMouseEvent"
43
- @cell-mouseleave="onMouseEvent"
44
- @cell-click="rowClick"
45
- @checkbox-all="checkAllTask">
46
- <vxe-column type="checkbox" width="32" fixed="left"></vxe-column>
47
- <vxe-column width="30" fixed="left">
48
- <template #default="scope">
49
- <span class="w-flex-center">
50
- <el-tooltip v-if="scope.row.combine == '是'"
51
- content="当确定是组合装(combine),允许点击该行选择子商品(spec_list)" placement="top"
52
- effect="light">
53
- <span class="w-color-blue w-cursor-pointer">
54
- <span class="bnUIcon bnUIcon-childGood"></span>
55
- </span>
56
- </el-tooltip>
57
- <span v-else></span>
58
- </span>
59
- </template>
60
- </vxe-column>
61
- <vxe-column :visible="column.extraInfo.isAddable == 1" :title="column.name" :field="column.columnCode" min-width="160"
62
- v-for="(column,index) in headerColumns" :key="index"
63
- show-header-overflow="title" show-overflow="title" show-footer-overflow>
64
- <template #default="scope" v-if="column.behaviorType == 10 && column.extraInfo.isAddable == 1">
65
- <BnFileView v-if="scope.row.inside[column.columnCode]" :file-list="scope.row.inside[column.columnCode]"
66
- :is-mini="true" :no-warp="true"></BnFileView>
67
- </template>
68
- </vxe-column>
69
- <template #empty>
70
- <span>暂无数据</span>
71
- </template>
72
- </vxe-table>
73
- </div>
74
- <template #footer>
75
- <div class="w-flex-right w-flex-center">
76
- <span class="w-font13 w-color-gray w-margin-right8">已选择({{ selectData.length }}/{{
77
- orderList.length
78
- }})条</span>
79
- <el-pagination class="w-margin-right8"
80
- background
81
- v-model:current-page="searchPost.pageNum"
82
- v-model:page-size="searchPost.pageSize"
83
- layout="prev, pager, next" @current-change="search"
84
- :total="searchPost.total">
85
- </el-pagination>
86
- <el-button @click="show = false">取消</el-button>
87
- <el-popover placement="top-start" :width="298" trigger="hover">
88
- <div class="BnSmartForm-title-tip">在原有的子表单值的基础上追加选中的数据</div>
89
- <template #reference>
90
- <el-button type="primary" @click="sure('add')" :disabled="selectData.length == 0">确认追加</el-button>
91
- </template>
92
- </el-popover>
93
- <el-popover placement="top-start" :width="290" trigger="hover">
94
- <div class="BnSmartForm-title-tip">用选中的数据直接覆盖子表单的原有的值</div>
95
- <template #reference>
96
- <el-button type="primary" @click="sure('cover')" :disabled="selectData.length == 0">确认覆盖</el-button>
97
- </template>
98
- </el-popover>
99
- </div>
100
- </template>
101
- </el-dialog>
102
- </template>
103
- <script>
104
- import {cloneDeep} from "lodash";
105
- import chooseChildGood from './chooseChildGood.vue'
106
- import tableCellCopy from "./tableCellCopy.vue";
107
- import {getSearchComponents,searchValueToJson} from "../../../utils/index.js";
108
-
109
- export default {
110
- name: 'chooseAssocTable',
111
- components: {chooseChildGood, tableCellCopy},
112
- props: {
113
- // 接口请求外部转发
114
- postFunc: Function,
115
- // 扩展参数
116
- extendPost: Object,
117
- },
118
- data() {
119
- return {
120
- show: false,
121
- loading: false,
122
- // 子表单信息
123
- columnData: {},
124
- // 支持筛选的组件
125
- searchColumns: [],
126
- // 表头
127
- headerColumns: [],
128
- // 最大高度
129
- tableMaxHeight: 400,
130
- // 选中数据
131
- selectData: [],
132
- // 高级筛选
133
- searchPost: {
134
- tableCode: "",
135
- pageSize: 20,
136
- pageNum: 1,
137
- total: 0,
138
- // 排序 ASC 正序 DESC 倒序 {"columnCode":"sku_id","sort":"ASC"}
139
- sorts: [],
140
- conditions: []
141
- },
142
- // 表格数据
143
- orderList: [],
144
- // 表格全量数据
145
- allOrderList: [],
146
- // 快捷筛选项
147
- searchList: []
148
- }
149
- },
150
- methods: {
151
- /**
152
- * 打开选择弹框,处理数据回显
153
- * */
154
- open(column) {
155
- this.columnData = cloneDeep(column);
156
- this.orderList = []
157
- this.allOrderList = []
158
- this.selectData = []
159
- this.$refs.assocTable?.clearCheckboxRow()
160
- this.searchPost.tableCode = column.insideDataSourceInfo.tableCode;
161
- this.searchPost.pageNum = 1;
162
- // 处理高级筛选的筛选条件组件
163
- this.searchColumns = []
164
- try {
165
- let assocTableColumns = []
166
- column.moduleDefinition.forEach(i => {
167
- if (i.insideDataSourceInfo?.fieldCode) {
168
- assocTableColumns.push({...i, columnCode: i.insideDataSourceInfo?.fieldCode})
169
- }
170
- })
171
- this.searchColumns = getSearchComponents(assocTableColumns,this.extendPost.appId,this.extendPost.projectId)
172
- } catch (e) {
173
- console.log('格式化关联表筛选组件' + e)
174
- }
175
- // 为上面回填的时候不使用默认值,所以这里处理表头的时候,把默认值清空:有这三种情况 [] {} ''
176
- this.headerColumns = cloneDeep(column.moduleDefinition)
177
- this.tableMaxHeight = window.innerHeight - 360;
178
- this.querySearch();
179
- this.postFunc(`/v2/client/cache/get/${this.extendPost.projectId}_${this.columnData.id}_${this.extendPost.userId || ''}_assocTable`, {}, 'get')
180
- .then(res => {
181
- if (!res.code && res.data) {
182
- const c = JSON.parse(res.data)
183
- if (c.conditions) {
184
- this.searchPost.conditions = c.conditions;
185
- } else if (this.searchColumns.length > 0) {
186
- this.searchPost.conditions = [cloneDeep(this.searchColumns[0])]
187
- }
188
- }
189
- this.search();
190
- })
191
- this.show = true;
192
- },
193
- /**
194
- * 选中任务
195
- * */
196
- checkChange({checked, row}) {
197
- this.$refs.assocTable.setCheckboxRow(row, checked);
198
- if (checked) {
199
- if (!this.selectData.includes(row.id)) {
200
- this.selectData.push(row.id);
201
- }
202
- } else {
203
- if (this.selectData.includes(row.id)) {
204
- this.selectData.splice(this.selectData.indexOf(row.id), 1);
205
- }
206
- }
207
- },
208
- /**
209
- * 全选任务
210
- * */
211
- checkAllTask({records}) {
212
- if (records.length != 0) {
213
- records.map((task) => {
214
- if (!this.selectData.includes(task.id)) {
215
- this.selectData.push(task.id);
216
- }
217
- });
218
- } else {
219
- this.selectData = []
220
- }
221
- },
222
- /**
223
- * 另存为常用筛选
224
- * */
225
- saveSearch() {
226
- if (this.searchPost.conditions.length == 0) {
227
- this.$message.warning('没有可保存的筛选条件');
228
- return;
229
- }
230
- if (this.searchList.length >= 8) {
231
- this.$message.warning('最多保存8个筛选项');
232
- return;
233
- }
234
- this.$msgBox.prompt('设置你的常用筛选项名称(10个字以内)', '保存为常用筛选项', {
235
- confirmButtonText: '保存',
236
- cancelButtonText: '取消',
237
- inputPattern: /^.{1,10}$/,
238
- inputErrorMessage: '请输入1到10个字符',
239
- }).then(({value}) => {
240
- this.postFunc('/biztable/content/setUserQueryCondition', {
241
- name: value,
242
- isCommon: false,
243
- appId: this.extendPost.appId,
244
- tableId: this.extendPost.projectId,
245
- relationTableId: this.columnData.insideDataSourceInfo.table,
246
- value: JSON.stringify(this.searchPost)
247
- }).then(res => {
248
- if (!res.code) {
249
- this.querySearch()
250
- }
251
- })
252
- }).catch(() => {
253
- })
254
- },
255
- /**
256
- * 查询筛选项
257
- * */
258
- querySearch() {
259
- this.postFunc('/biztable/content/getUserQueryCondition', {
260
- isCommon: false,
261
- appId: this.extendPost.appId,
262
- tableId: this.extendPost.projectId,
263
- relationTableId: this.columnData.insideDataSourceInfo.table
264
- }).then(res => {
265
- if (!res.code) {
266
- this.searchList = cloneDeep(res.data)
267
- }
268
- })
269
- },
270
- /**
271
- * 选中筛选项
272
- * */
273
- chooseSearch(item) {
274
- let data = JSON.parse(item.value);
275
- this.searchPost.conditions = data.conditions;
276
- this.search();
277
- },
278
- /**
279
- * 删除筛选项
280
- * */
281
- delSearch(item, index) {
282
- this.$msgBox.confirm(
283
- '删除后将不再显示该筛选项?',
284
- '确定要删除么?',
285
- {
286
- confirmButtonText: '确定',
287
- cancelButtonText: '取消',
288
- type: 'warning',
289
- }
290
- ).then(() => {
291
- this.postFunc(`/biztable/content/delUserQueryCondition/${item.id}`, {}, 'post').then(res => {
292
- if (!res.code) {
293
- this.searchList.splice(index, 1)
294
- }
295
- })
296
- }).catch(() => {
297
- })
298
- },
299
- /**
300
- * 筛选数据
301
- * */
302
- search(postData) {
303
- this.searchPost = {...this.searchPost, ...postData}
304
- this.postFunc('/v2/client/cache/save', {
305
- key: `${this.extendPost.projectId}_${this.columnData.id}_${this.extendPost.userId || ''}_assocTable`,
306
- value: this.searchPost
307
- })
308
- let post = {
309
- ...this.searchPost,
310
- // 高级筛选要进行最后组装:tab也有筛选条件,带入一起搜索
311
- conditions: searchValueToJson([...this.searchPost.conditions])
312
- }
313
- this.loading = true;
314
- this.postFunc('/biztable/content/query', post).then(res => {
315
- this.loading = false;
316
- if (!res.code) {
317
- this.orderList = res.data.results.map(i => {
318
- // 根据 headerColumns 过滤和处理 inside 数据
319
- const filteredInside = {};
320
- const view = {}
321
- this.headerColumns.forEach(column => {
322
- // 当前表的组件 code
323
- const columnCode = column.columnCode;
324
- // 映射表的组件 code
325
- const insideFiled = column.insideDataSourceInfo?.fieldCode;
326
- if (i.inside && i.inside.hasOwnProperty(insideFiled)) {
327
- // 如果 inside 中有这个字段,使用原值
328
- filteredInside[columnCode] = i.inside[insideFiled];
329
- view[columnCode] = i.view[insideFiled];
330
- } else {
331
- // 如果 inside 中没有这个字段,使用 headerColumns 中的默认值
332
- filteredInside[columnCode] = column.value || '';
333
- }
334
- });
335
- return {...i.view, ...view, insideCopy: i.inside, inside: filteredInside, id: parseInt(i.view.id)};
336
- });
337
- this.searchPost.total = parseInt(res.data.total);
338
- this.searchPost.pageNum = res.data.pageNum;
339
- // 翻页后重新勾选选中的数据
340
- this.$nextTick(() => {
341
- this.orderList.forEach(row => {
342
- if (this.selectData.includes(row.id)) {
343
- this.$refs.assocTable?.setCheckboxRow(row, true);
344
- }
345
- });
346
- });
347
- // 合并数组并通过 id 去重
348
- const idSet = new Set(this.allOrderList.map(item => item.id));
349
- this.orderList.forEach(item => {
350
- if (!idSet.has(item.id)) {
351
- this.allOrderList.push(item);
352
- }
353
- });
354
- } else {
355
- this.orderList = [];
356
- this.searchPost.total = 0;
357
- this.searchPost.pageNum = 1;
358
- }
359
- })
360
- },
361
- /**
362
- * 鼠标移入移出单元格,展示隐藏复制按钮
363
- * @param {Event} e 事件对象
364
- */
365
- onMouseEvent(scope) {
366
- // 当鼠标悬浮到单元格时,再加复制按钮
367
- let e = scope.$event;
368
- // 鼠标离开
369
- if (e.type === "mouseleave") {
370
- this.$refs.childTableCopy?.onHide()
371
- } else {
372
- let data = {
373
- column: {columnCode: this.headerColumns[scope.columnIndex - 2]?.columnCode},
374
- row: scope.row
375
- }
376
- // 有值再显示
377
- if (data.row[data.column.columnCode]) {
378
- this.$refs.childTableCopy?.onShow(scope.cell, data)
379
- }
380
- }
381
- },
382
- /**
383
- * 点击行,判断是否可以选择子商品
384
- * @param {Object} row 当前行
385
- * @param {Object} column 当前列
386
- * @param {Boolean} triggerCheckbox 是否操作复选框
387
- */
388
- rowClick({row}) {
389
- if (row.combine == '是') {
390
- if (row.spec_list && row.spec_list.length > 0) {
391
- this.$refs.chooseChildGood.open(row, this.columnData)
392
- } else {
393
- this.$message.warning("该商品没有子商品,无法选择")
394
- }
395
- }
396
- },
397
- /**
398
- * 确认
399
- * */
400
- setChildGood(orders, type) {
401
- setTimeout(() => {
402
- this.$emit('setChildrenForm', orders, type, this.columnData.columnCode)
403
- }, 200)
404
- this.show = false;
405
- },
406
- /**
407
- * 确认
408
- * */
409
- sure(type) {
410
- let orders = this.allOrderList.reduce((acc, i) => {
411
- if (this.selectData.includes(i.id)) {
412
- acc.push(i.inside);
413
- }
414
- return acc
415
- }, []);
416
- setTimeout(() => {
417
- this.$emit('setChildrenForm', orders, type, this.columnData.columnCode)
418
- }, 200)
419
- this.show = false;
420
- },
421
- }
422
- }
423
- </script>
424
-
425
- <style scoped lang="scss">
426
- .chooseAssocTable {
427
- height: 100%;
428
- overflow: hidden;
429
-
430
- &-search {
431
- display: flex;
432
- flex-wrap: wrap;
433
- max-height: 142px;
434
- overflow-y: auto;
435
- gap: 10px 18px;
436
-
437
- &-item {
438
- width: calc(33.33% - 18px);
439
- flex-grow: 0;
440
- }
441
- }
442
-
443
- &-out {
444
- :deep(.vxe-table--header) {
445
- .vxe-header--row {
446
- background-color: #ecf5ff;
447
- }
448
- }
449
- }
450
- }
451
- </style>