ocpview-pro 0.0.3 → 0.0.4

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": "ocpview-pro",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "title": "ocpviewPlus",
5
5
  "description": "A high quality Service UI components Library with Vue.js",
6
6
  "homepage": "",
@@ -74,6 +74,22 @@
74
74
  :dictData="dictData"
75
75
  @doAction="doAction"
76
76
  />
77
+ <BillInfoPanelSlotPanel
78
+ v-if="temp2.type === 'SlotPanelCard'"
79
+ :ref="temp2.name"
80
+ :config="temp2"
81
+ :dictData="dictData"
82
+ @doAction="doAction"
83
+ >
84
+ <!-- 组件原始slot透传 -->
85
+ <template
86
+ v-for="(_, name) in $slots"
87
+ #[name]="slotData"
88
+ >
89
+ <slot :name="name" v-bind="slotData || {}"></slot>
90
+ </template>
91
+ <!-- ============================ -->
92
+ </BillInfoPanelSlotPanel>
77
93
  <DetailsBoxs
78
94
  v-if="temp2.type === 'DetailsBox'"
79
95
  :ref="temp2.name"
@@ -102,11 +118,12 @@
102
118
  <script>
103
119
  import billdetailform from "../billdetailform.vue";
104
120
  import BillInfoPanelEditTable from "./BillInfoPanelEditTable.vue";
121
+ import BillInfoPanelSlotPanel from "./BillInfoPanelSlotPanel.vue";
105
122
 
106
123
  export default {
107
124
  name: "BillInfoPanel",
108
125
  extends: billdetailform,
109
- components: { BillInfoPanelEditTable },
126
+ components: { BillInfoPanelEditTable, BillInfoPanelSlotPanel },
110
127
  data() {
111
128
  return {};
112
129
  },
@@ -174,6 +191,122 @@ export default {
174
191
  }
175
192
  return flag;
176
193
  },
194
+ /**
195
+ * 覆写设置明细数据
196
+ */
197
+ setData(data) {
198
+ this.myConfig.formsConfig.items.forEach((el) => {
199
+ if (this.$refs[el.name] && this.$refs[el.name][0]) {
200
+ this.$refs[el.name][0].setData(data);
201
+ }
202
+ });
203
+ if (this.detailConfig.items) {
204
+ this.detailConfig.items.forEach((el) => {
205
+ if (data[el.name]) {
206
+ if (this.$refs[el.name] && this.$refs[el.name][0]) {
207
+ if (el.type === "DetailsBox") {
208
+ let tempDetailData = this.setDetailsBox(
209
+ el,
210
+ data
211
+ );
212
+ this.$refs[el.name][0].setData(tempDetailData);
213
+ } else {
214
+ if (
215
+ el.type === "FormCardBox" ||
216
+ el.type === "FormCardBox2"
217
+ ) {
218
+ if (data[el.name].length > 0) {
219
+ this.$refs[el.name][0].setData(
220
+ data[el.name][0]
221
+ );
222
+ } else {
223
+ this.$refs[el.name][0].clearData();
224
+ }
225
+ } else {
226
+ this.$refs[el.name][0].setData(
227
+ data[el.name]
228
+ );
229
+ }
230
+ }
231
+ }
232
+ } else {
233
+ if (this.config.response === el.name) {
234
+ if (
235
+ el.type === "FormCardBox" ||
236
+ el.type === "FormCardBox2"
237
+ ) {
238
+ let temp = {};
239
+ if (el.items) {
240
+ el.items.forEach((el2) => {
241
+ if (el2.name) {
242
+ temp[el2.name] = data[el2.name];
243
+ }
244
+ if (el2.sname) {
245
+ temp[el2.sname] = data[el2.sname];
246
+ }
247
+ if (el2.ename) {
248
+ temp[el2.ename] = data[el2.ename];
249
+ }
250
+ if (el2.textName) {
251
+ temp[el2.textName] =
252
+ data[el2.textName];
253
+ }
254
+ });
255
+ }
256
+ this.$refs[el.name][0].setData(temp);
257
+ }
258
+ // ==============================================
259
+ // SlotPanelCard 插槽数据赋值 覆写
260
+ if (el.type === "SlotPanelCard") {
261
+ this.$refs[el.name][0].setData(data);
262
+ }
263
+ // ==============================================
264
+ } else {
265
+ if (
266
+ el.type !== "AppendixBox" ||
267
+ el.type !== "AppendixBox2"
268
+ ) {
269
+ if (
270
+ this.$refs[el.name] &&
271
+ this.$refs[el.name][0]
272
+ ) {
273
+ this.$refs[el.name][0].setData([]);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ });
279
+ }
280
+ if (this.billAppendixConfig.showAppendix) {
281
+ if (
282
+ this.$refs.detail_appenndix &&
283
+ this.$refs.detail_appenndix[0]
284
+ ) {
285
+ let billno = data[this.billAppendixConfig.appendixKey];
286
+ let billmoduleid = data.billmoduleid;
287
+ this.$refs.detail_appenndix[0].setData(
288
+ billno,
289
+ billmoduleid
290
+ );
291
+ }
292
+ } else if (this.billAppendixConfig.showAppendix2) {
293
+ if (
294
+ this.$refs.detail_appenndix2 &&
295
+ this.$refs.detail_appenndix2[0]
296
+ ) {
297
+ let billno = data[this.billAppendixConfig.appendixKey];
298
+ let billmoduleid = data.billmoduleid;
299
+ this.$refs.detail_appenndix2[0].setData(
300
+ billno,
301
+ billmoduleid
302
+ );
303
+ }
304
+ }
305
+ this.$nextTick(() => {
306
+ this.resetAnchor();
307
+ this.curlEditObject = "";
308
+ });
309
+ },
177
310
  },
178
311
  mounted() {
179
312
  // console.log("我继承覆写了8888");
@@ -0,0 +1,139 @@
1
+ <template>
2
+ <Card ref="card" :bordered="false" :padding="0" dis-hover>
3
+ <!-- 如果myConfig.modetype为1,则显示 -->
4
+ <template v-if="myConfig.modetype === '1'">
5
+ <!-- 如果showTitle为true,则显示 -->
6
+ <p v-if="showTitle" @click="toggle" style="cursor: pointer">
7
+ <Row
8
+ type="flex"
9
+ justify="start"
10
+ align="middle"
11
+ style="margin-top: 14px; margin-bottom: 14px"
12
+ >
13
+ <!-- 如果showGrid为true,则显示icon-custom-pack,否则显示icon-custom-spread -->
14
+ <Icon
15
+ custom="iconfont icon-custom-pack"
16
+ color="#f3b352"
17
+ v-show="showGrid"
18
+ size="14"
19
+ />
20
+ <Icon
21
+ v-show="!showGrid"
22
+ color="#f3b352"
23
+ custom="iconfont icon-custom-spread"
24
+ size="14"
25
+ />
26
+ <!-- 显示myConfig.title -->
27
+ <span
28
+ style="
29
+ margin-left: 10px;
30
+ font-size: 14px;
31
+ font-weight: bold;
32
+ "
33
+ v-text="myConfig.title"
34
+ />
35
+ </Row>
36
+ </p>
37
+ <!-- 显示分割线 -->
38
+ <Divider
39
+ style="margin-left: 24px; margin-top: 0px; margin-bottom: 10px"
40
+ />
41
+ </template>
42
+
43
+ <!-- 如果myConfig.modetype为2,则显示 -->
44
+ <template v-if="myConfig.modetype === '2'">
45
+ <div v-if="showTitle" style="margin-bottom: 10px">
46
+ <span class="efuture-title-verticalline" /><span
47
+ style="font-size: 14px; font-weight: bold"
48
+ v-text="myConfig.title"
49
+ />
50
+ </div>
51
+ </template>
52
+
53
+ <!-- 插槽相关面板 -->
54
+ <div v-show="showGrid">
55
+ <slot
56
+ v-if="$slots[myConfig.slot]"
57
+ :name="myConfig.slot"
58
+ :formData="formData"
59
+ :config="config"
60
+ :dictData="dictData"
61
+ :doAction="doAction"
62
+ :dataInfo="dataInfo"
63
+ ></slot>
64
+ </div>
65
+ </Card>
66
+ </template>
67
+ <script>
68
+ export default {
69
+ name: "BillInfoPanelSlotPanel",
70
+ components: {},
71
+ props: {
72
+ config: {
73
+ type: Object,
74
+ default: () => {
75
+ return {};
76
+ },
77
+ },
78
+ dictData: {
79
+ type: Object,
80
+ default: null,
81
+ },
82
+ },
83
+ data() {
84
+ return {
85
+ myConfig: {
86
+ modetype: "1",
87
+ },
88
+ showGrid: true,
89
+ showTitle: true,
90
+ dataInfo: {},
91
+ };
92
+ },
93
+ computed: {},
94
+ methods: {
95
+ init() {
96
+ this.myConfig = Object.assign({}, this.config);
97
+ },
98
+ toggle() {
99
+ this.showGrid = !this.showGrid;
100
+ },
101
+
102
+ /**
103
+ * 设置数据
104
+ */
105
+ setData(data = [], flag = "set") {
106
+ console.log("🚀 ~ setData ~ data:", data);
107
+ this.dataInfo = data;
108
+ // switch (flag) {
109
+ // case "set":
110
+ // // console.log("初始化表格数据触发");
111
+ // // this.dataList = [...data];
112
+ // break;
113
+
114
+ // case "I":
115
+ // // console.log("手工全量编辑触发");
116
+ // break;
117
+
118
+ // default:
119
+ // break;
120
+ // }
121
+ },
122
+ clearData() {},
123
+ setReadOnly(value) {
124
+ console.log("🚀 ~ setReadOnly ~ value:", value);
125
+ },
126
+ doAction(params) {
127
+ this.$emit("doAction", params);
128
+ },
129
+ },
130
+ mounted() {
131
+ // console.log("我继承覆写了999999");
132
+ },
133
+ created() {
134
+ this.init();
135
+ },
136
+ };
137
+ </script>
138
+
139
+ <style lang="scss" scoped></style>
@@ -4,7 +4,7 @@
4
4
  :padding="0"
5
5
  dis-hover
6
6
  :bordered="false"
7
- style="background: #fff; padding: 14px 16px 14px 16px"
7
+ style="background: #fafcff; padding: 14px 16px 14px 16px"
8
8
  >
9
9
  <div ref="toolbar" style="padding-bottom: 14px">
10
10
  <BillListPanelQueryBar
@@ -68,7 +68,13 @@
68
68
  :config="changeGridConfig"
69
69
  :dictData="dictData"
70
70
  @dbclick="dbclick"
71
- />
71
+ >
72
+ <!-- 组件原始slot透传 -->
73
+ <template v-for="(_, name) in $slots" #[name]="slotData">
74
+ <slot :name="name" v-bind="slotData || {}"></slot>
75
+ </template>
76
+ <!-- ============================ -->
77
+ </BillListPanelTable>
72
78
  </Card>
73
79
  </Card>
74
80
  </div>
@@ -76,7 +82,8 @@
76
82
  <script>
77
83
  import billquerygrid from "../billquerygrid.vue";
78
84
  import BillListPanelTable from "./BillListPanelTable.vue";
79
- import BillListPanelQueryBar from "./BillListPanelQueryBar.vue";
85
+ // import BillListPanelQueryBar from "./BillListPanelQueryBar.vue";
86
+ import BillListPanelQueryBar from "../RewriteListdetails/BillListPanelV3QueryBar.vue";
80
87
 
81
88
  export default {
82
89
  name: "BillListPanel",
@@ -32,6 +32,11 @@
32
32
  <template #loading>
33
33
  <Spin size="large" style="display: inline-block"></Spin>
34
34
  </template>
35
+ <!-- 组件原始slot透传 -->
36
+ <template v-for="(_, name) in $slots" #[name]="slotData">
37
+ <slot :name="name" v-bind="slotData || {}"></slot>
38
+ </template>
39
+ <!-- ============================ -->
35
40
  </vxe-grid>
36
41
  <!-- 表格覆写点结束 -->
37
42
  </Card>
@@ -263,6 +268,12 @@ export default {
263
268
  ...(item.resizable && {
264
269
  resizable: item.resizable,
265
270
  }),
271
+ ...(item.fixed && {
272
+ fixed: item.fixed,
273
+ }),
274
+ ...(item.slots && {
275
+ slots: item.slots,
276
+ }),
266
277
  sortable: true,
267
278
  ...(columnsItemType && {
268
279
  type: columnsItemType,
@@ -8,7 +8,13 @@
8
8
  :dictData="dictData"
9
9
  :moduleMethod="moduleMethod"
10
10
  @doAction="doAction"
11
- />
11
+ >
12
+ <!-- 组件原始slot透传 -->
13
+ <template v-for="(_, name) in $slots" #[name]="slotData">
14
+ <slot :name="name" v-bind="slotData || {}"></slot>
15
+ </template>
16
+ <!-- ============================ -->
17
+ </BillListPanel>
12
18
  <!-- 列表覆写结束 -->
13
19
 
14
20
  <!-- 详情覆写开始 -->
@@ -37,6 +43,11 @@
37
43
  <Divider style="margin-top: 16px; margin-bottom: 0px" />
38
44
  </Card>
39
45
  </template>
46
+ <!-- 组件原始slot透传 -->
47
+ <template v-for="(_, name) in $slots" #[name]="slotData">
48
+ <slot :name="name" v-bind="slotData || {}"></slot>
49
+ </template>
50
+ <!-- ============================ -->
40
51
  </BillInfoPanel>
41
52
  <!-- 详情覆写结束 -->
42
53
 
@@ -317,7 +328,10 @@ export default {
317
328
  },
318
329
  onSubmitBefore() {
319
330
  let flag = true;
320
- if (this.$parent && typeof this.$parent.onSubmitBefore === 'function') {
331
+ if (
332
+ this.$parent &&
333
+ typeof this.$parent.onSubmitBefore === "function"
334
+ ) {
321
335
  flag = this.$parent.onSubmitBefore();
322
336
  }
323
337
  return flag;
@@ -94,6 +94,16 @@
94
94
  @click="addData"
95
95
  >新增</Button
96
96
  >
97
+ <Button
98
+ v-if="
99
+ !addDataBtnFlag &&
100
+ btnData.length > 0
101
+ "
102
+ :icon="btnData[0].icon"
103
+ :customIcon="btnData[0].customIcon"
104
+ @click="action(btnData[0].name)"
105
+ >{{ btnData[0].text }}</Button
106
+ >
97
107
  <Button
98
108
  v-if="!btnFlag && moreBtnFlag"
99
109
  icon="ios-arrow-down"
@@ -1,4 +1,4 @@
1
- <template>
1
+ <template>
2
2
  <div style="display: flex; align-items: center;">
3
3
  <Icon custom="iconfont icon-custom-delcond" @click.stop="doDel" size="20" color="#515a6e" style="cursor:pointer;margin-bottom:10px;padding-right:8px"/>
4
4
  <FormBox ref="form" :config="form" @inputValue="formChanged" style="flex:1"/>
@@ -78,7 +78,7 @@
78
78
  default:null
79
79
  }
80
80
  } ,
81
- mounted () {
81
+ mounted () {
82
82
  this.$nextTick(() => {
83
83
  if (this.valueData) {
84
84
  if (this.valueData.field){
@@ -97,7 +97,7 @@
97
97
  let obj = {};
98
98
  obj.index = this.curIndex;
99
99
  obj.form = this.$refs.form.getData();
100
- this.$emit('inputValue', obj);
100
+ this.$emit('inputValue', obj);
101
101
  },
102
102
  init() {
103
103
  this.initField();
@@ -106,7 +106,7 @@
106
106
  let fieldData = [];
107
107
  if (this.config.items && this.config.items.length > 0) {
108
108
  this.config.items.forEach(el => {
109
- if (el.name && el.label) {
109
+ if (el.name && el.label && el.condition) {
110
110
  fieldData.push({code:el.name,name:el.label});
111
111
  this.dataType[el.name] = Object.assign({},el, {name:'value'});
112
112
  this.dataType[el.name].operData = this.getOperData(el);
@@ -142,7 +142,7 @@
142
142
  name: '不等于',
143
143
  code: '<>'
144
144
  });
145
- }
145
+ }
146
146
  if (el.type === 'TextBox') {
147
147
  tempData.push({
148
148
  name: '不等于',
@@ -152,11 +152,11 @@
152
152
  name: '包含',
153
153
  code: 'LIKE'
154
154
  });
155
- }
155
+ }
156
156
  if (el.setOperData) {
157
157
  tempData = el.setOperData(el,tempData);
158
158
  }
159
- return tempData;
159
+ return tempData;
160
160
  },
161
161
  fieldChanged(e) {
162
162
  let self = this;
@@ -169,7 +169,7 @@
169
169
  oper.data = this.$Method.copy(config.operData);
170
170
  oper.readOnly = false;
171
171
  obj.push(oper);
172
- config.name ='value';
172
+ config.name ='value';
173
173
  config.label = '';
174
174
  config.readOnly = false;
175
175
  config.visible = true;
@@ -200,8 +200,8 @@
200
200
  }
201
201
  self.$refs.form.updateItemsConfig(obj);
202
202
  self.$nextTick(() => {
203
- self.$refs.form.setValue('oper',operValue);
204
- self.$refs.form.setValue('value','');
203
+ self.$refs.form.setValue('oper',operValue);
204
+ self.$refs.form.setValue('value','');
205
205
  });
206
206
  return true;
207
207
  },
@@ -221,4 +221,4 @@
221
221
  }
222
222
  }
223
223
  };
224
- </script>
224
+ </script>
@@ -1,51 +1,116 @@
1
1
  <template>
2
- <div>
3
- <component ref="layout" :is="uiLayoutType" :config="uiconfig" :dictData="globalConfig.dictData" :moduleMethod="globalConfig.userModuleMethod" @handleSuccessAfter="handleSuccessAfter" @onSubmitBefore="onSubmitBefore" @doAction="doAction" />
4
- <Modal title="附件" v-model="showDetailAppendix" :width="appendixCurrentWidth" :footer-hide="true">
5
- <AppendixBoxs v-if="detalAppendixFlag" ref="detailappendix" :config="billDetailAppendixConfig" @doAction="doAction"/>
6
- </Modal>
7
- <Modal title="模版打印" v-model="showPrintMode" :width="appendixCurrentWidth" :footer-hide="true" :fullscreen="true" class-name="print-bill-panel-modal">
8
- <iframe ref="iframetemplate" v-if="printModeReset" :src="printModeUrl" width="100%" height="100%" allowtransparency="true" frameborder="0" ></iframe>
9
- </Modal>
10
- <BillAsyncImport v-if="importReset" ref="billAsyncImport" :config="billAsyncImportConfig" />
11
- <BillImport v-if="importReset" ref="billImport" :config="billImportConfig"> </BillImport>
12
- <Modal title="合同模版" v-model="ContractModalShowType" :width="ContractModalWidth" :mask-closable="false" :footer-hide="true" class-name="contract-print-panel-modal" @on-cancel="HideContractPrintModal">
13
- <iframe ref="iframetemplate" v-if="ContractModalContentShowType" :src="ContractModalIframeUrl" width="100%" height="100%" allowtransparency="true" frameborder="0" ></iframe>
14
- </Modal>
15
- </div>
2
+ <div>
3
+ <component
4
+ ref="layout"
5
+ :is="uiLayoutType"
6
+ :config="uiconfig"
7
+ :dictData="globalConfig.dictData"
8
+ :moduleMethod="globalConfig.userModuleMethod"
9
+ @handleSuccessAfter="handleSuccessAfter"
10
+ @onSubmitBefore="onSubmitBefore"
11
+ @doAction="doAction"
12
+ >
13
+ <!-- 组件原始slot透传 -->
14
+ <template v-for="(_, name) in $slots" #[name]="slotData">
15
+ <slot :name="name" v-bind="slotData || {}"></slot>
16
+ </template>
17
+ <!-- ============================ -->
18
+ </component>
19
+ <Modal
20
+ title="附件"
21
+ v-model="showDetailAppendix"
22
+ :width="appendixCurrentWidth"
23
+ :footer-hide="true"
24
+ >
25
+ <AppendixBoxs
26
+ v-if="detalAppendixFlag"
27
+ ref="detailappendix"
28
+ :config="billDetailAppendixConfig"
29
+ @doAction="doAction"
30
+ />
31
+ </Modal>
32
+ <Modal
33
+ title="模版打印"
34
+ v-model="showPrintMode"
35
+ :width="appendixCurrentWidth"
36
+ :footer-hide="true"
37
+ :fullscreen="true"
38
+ class-name="print-bill-panel-modal"
39
+ >
40
+ <iframe
41
+ ref="iframetemplate"
42
+ v-if="printModeReset"
43
+ :src="printModeUrl"
44
+ width="100%"
45
+ height="100%"
46
+ allowtransparency="true"
47
+ frameborder="0"
48
+ ></iframe>
49
+ </Modal>
50
+ <BillAsyncImport
51
+ v-if="importReset"
52
+ ref="billAsyncImport"
53
+ :config="billAsyncImportConfig"
54
+ />
55
+ <BillImport
56
+ v-if="importReset"
57
+ ref="billImport"
58
+ :config="billImportConfig"
59
+ >
60
+ </BillImport>
61
+ <Modal
62
+ title="合同模版"
63
+ v-model="ContractModalShowType"
64
+ :width="ContractModalWidth"
65
+ :mask-closable="false"
66
+ :footer-hide="true"
67
+ class-name="contract-print-panel-modal"
68
+ @on-cancel="HideContractPrintModal"
69
+ >
70
+ <iframe
71
+ ref="iframetemplate"
72
+ v-if="ContractModalContentShowType"
73
+ :src="ContractModalIframeUrl"
74
+ width="100%"
75
+ height="100%"
76
+ allowtransparency="true"
77
+ frameborder="0"
78
+ ></iframe>
79
+ </Modal>
80
+ </div>
16
81
  </template>
17
82
 
18
83
  <script>
19
- import Base from './base.vue';
20
- import AppendixBoxs from './appendix.vue';
21
- import BillAsyncImport from './billasyncimport.vue';
22
- import BillImport from './billimport.vue';
23
- import ContractPrintMixins from '@/components/base/ContractPrintMixins';
84
+ import Base from "./base.vue";
85
+ import AppendixBoxs from "./appendix.vue";
86
+ import BillAsyncImport from "./billasyncimport.vue";
87
+ import BillImport from "./billimport.vue";
88
+ import ContractPrintMixins from "@/components/base/ContractPrintMixins";
24
89
  export default {
25
- name:'BillTemplate',
90
+ name: "BillTemplate",
26
91
  extends: Base,
27
92
  mixins: [ContractPrintMixins],
28
- components:{AppendixBoxs,BillAsyncImport,BillImport},
93
+ components: { AppendixBoxs, BillAsyncImport, BillImport },
29
94
  computed: {
30
- uiLayoutType () {
31
- return 'm' + this.uiconfig.layoutType;
95
+ uiLayoutType() {
96
+ return "m" + this.uiconfig.layoutType;
32
97
  },
33
- appendixCurrentWidth () {
98
+ appendixCurrentWidth() {
34
99
  return this.$Store.state.app.clientWidth * 0.8;
35
100
  },
36
101
  },
37
102
  };
38
103
  </script>
39
104
  <style lang="less">
40
- .print-bill-panel-modal{
41
- .ivu-modal-body{
42
- padding: 0px!important;
43
- overflow: hidden!important;
105
+ .print-bill-panel-modal {
106
+ .ivu-modal-body {
107
+ padding: 0px !important;
108
+ overflow: hidden !important;
44
109
  }
45
110
  }
46
- .contract-print-panel-modal{
47
- .ivu-modal-body{
48
- height:300px!important;
111
+ .contract-print-panel-modal {
112
+ .ivu-modal-body {
113
+ height: 300px !important;
49
114
  }
50
115
  }
51
116
  </style>
@@ -90,7 +90,7 @@ html:root {
90
90
  }
91
91
 
92
92
  .vxe-table--render-default .vxe-table--border-line {
93
- border: 0;
93
+ /* border: 0; */
94
94
  }
95
95
 
96
96
  /* .col--valid-error .ivu-input {