p-pc-ui 1.3.1 → 1.3.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.
@@ -14,7 +14,8 @@ interface Base<K extends string = string> {
14
14
  colon?: boolean,
15
15
  labelSpan?: number,
16
16
  valueSpan?: number,
17
- labelAlign?: 'left' | 'right'
17
+ labelAlign?: 'left' | 'right',
18
+ disabled: ?boolean
18
19
  }
19
20
 
20
21
 
@@ -75,13 +76,13 @@ interface UploadBase<K extends string = string> extends Base<K> {
75
76
 
76
77
  export interface UploadOss<K extends string = string> extends UploadBase<K> {
77
78
  type: 'uploadOss',
78
- getOssToken: ({file_name}) => Promise<any>,
79
+ getOssToken: ({ file_name }) => Promise<any>,
79
80
  baseOssUrl: string,
80
81
  }
81
82
 
82
83
  export interface UploadTos<K extends string = string> extends UploadBase<K> {
83
84
  type: 'uploadTos',
84
- getTosToken: ({file_name}) => Promise<any>,
85
+ getTosToken: ({ file_name }) => Promise<any>,
85
86
  baseTosUrl: string,
86
87
  }
87
88
 
@@ -105,12 +106,6 @@ export interface Component<K extends string = string> extends Base<K> {
105
106
  component: any
106
107
  }
107
108
 
108
- export interface Editor<K extends string = string> extends Base<K> {
109
- type: 'editor',
110
- getOssToken: ({ file_name: string }) => Promise<any>,
111
- baseOssUrl?: string,
112
- }
113
-
114
109
 
115
110
  export type FormDataItem<K extends string = string> =
116
111
  | Input<K>
@@ -124,4 +119,3 @@ export type FormDataItem<K extends string = string> =
124
119
  | Textarea<K>
125
120
  | DatePicker<K>
126
121
  | Component<K>
127
- | Editor<K>
@@ -23,8 +23,6 @@ import * as _ from "../../utils/dataUtils";
23
23
  import { api as viewerApi } from "v-viewer";
24
24
  import dayjs from "dayjs";
25
25
  import { UploadOutlined, PlusOutlined } from "@ant-design/icons-vue";
26
- import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
27
- import "@wangeditor/editor/dist/css/style.css"; // 引入 css
28
26
 
29
27
  const uSlots = useSlots();
30
28
 
@@ -63,8 +61,6 @@ const emits = defineEmits(["confirm"]);
63
61
  /**
64
62
  * 富文本相关配置
65
63
  */
66
- const editorRef = shallowRef();
67
-
68
64
  onBeforeMount(async () => {
69
65
  renderData.value = await disposeRenderData(props.renderData);
70
66
  const _formState = initFormState(renderData.value, props.initForm);
@@ -245,8 +241,6 @@ const initFormState = (renderData: FormDataItem[], initFromData = {}) => {
245
241
  url: renderItem.baseTosUrl + val,
246
242
  };
247
243
  });
248
- } else if (renderItem.type == "editor") {
249
- initValue = initValue.replace(/\<\<图片替换地址\>\>/g, renderItem.baseOssUrl);
250
244
  }
251
245
 
252
246
  _formState[renderItem["key"]] = initValue;
@@ -257,8 +251,8 @@ const initFormState = (renderData: FormDataItem[], initFromData = {}) => {
257
251
 
258
252
  const handlePicPreview = (file: any) => {
259
253
  const url = URL.createObjectURL(file.originFileObj);
260
-
261
- viewerApi({ images: [url ||file.url || file.key || file.thumbUrl] });
254
+
255
+ viewerApi({ images: [url || file.url || file.key || file.thumbUrl] });
262
256
  };
263
257
 
264
258
  const replaceUrl = (str, urlToReplace, replacement) => {
@@ -304,20 +298,6 @@ const getFormData = async (options: { no_check?: Boolean } = {}) => {
304
298
  returnFormData[key] = formatData;
305
299
  }
306
300
 
307
- // 处理富文本字段
308
- else if (renderItem.type == "editor") {
309
- const richText = formData[key];
310
- const dom = new DOMParser().parseFromString(richText, "text/html");
311
- // 将视频居中展示
312
- const videos = dom.querySelectorAll('[data-w-e-type="video"]') || [];
313
- //@ts-ignore
314
- for (const video of videos) {
315
- //@ts-ignore
316
- video.style.textAlign = "center";
317
- }
318
- returnFormData[key] = replaceUrl(dom.body.innerHTML, renderItem.baseOssUrl, "<<图片替换地址>>");
319
- }
320
-
321
301
  // 转换成上传对象
322
302
  else if (key.includes("__")) {
323
303
  _.set(returnFormData, key.split("__"), formData[key]);
@@ -421,15 +401,6 @@ const uploadRequest = async (options, renderItem: FormDataItem) => {
421
401
  }
422
402
  };
423
403
 
424
- /**
425
- * 富文本上传
426
- */
427
- const editorUpload = async (renderItem, file, insertFn) => {
428
- const config: any = await renderItem.getOssToken({ type: renderItem.ossKey, file_name: file.name });
429
- const key = await uploadOss(file, config);
430
- insertFn(renderItem.baseOssUrl + key);
431
- };
432
-
433
404
  /**
434
405
  * 发送验证码
435
406
  */
@@ -455,10 +426,6 @@ const sendNoticeClick = async (renderItem) => {
455
426
  renderItem.interval = copyInterval;
456
427
  };
457
428
 
458
- const handleRichEditorCreated = (editor) => {
459
- editorRef.value = editor;
460
- };
461
-
462
429
  defineExpose({
463
430
  getFormData,
464
431
  resetForm,
@@ -494,180 +461,156 @@ defineExpose({
494
461
  :tooltip="renderItem.tooltip"
495
462
  :label-align="renderItem.labelAlign || 'right'"
496
463
  >
497
- <a-input
498
- v-model:value="formState[renderItem.key]"
499
- v-if="renderItem.type == 'input' && [undefined, 'string'].includes(renderItem.fieldType)"
500
- type="text"
501
- :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
502
- >
503
- <template v-if="renderItem.prefix" v-slot:prefix>
504
- <component :is="renderItem.prefix" />
505
- </template>
506
- <template v-if="renderItem.suffix" v-slot:suffix>
507
- <component :is="renderItem.suffix" />
508
- </template>
509
- </a-input>
510
-
511
- <a-input
512
- v-model:value.number="formState[renderItem.key]"
513
- v-if="renderItem.type == 'input' && renderItem.fieldType == 'number'"
514
- type="number"
515
- :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
516
- >
517
- <template v-if="renderItem.prefix" v-slot:prefix>
518
- <component :is="renderItem.prefix" />
519
- </template>
520
- <template v-if="renderItem.suffix" v-slot:suffix>
521
- <component :is="renderItem.suffix" />
522
- </template>
523
- </a-input>
524
-
525
- <a-input-password
526
- v-model:value="formState[renderItem.key]"
527
- v-if="renderItem.type == 'password'"
528
- type="password"
529
- :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
530
- >
531
- <template v-if="renderItem.prefix" v-slot:prefix>
532
- <component :is="renderItem.prefix" />
533
- </template>
534
- </a-input-password>
535
-
536
- <a-input
537
- v-model:value="formState[renderItem.key]"
538
- v-if="renderItem.type == 'code' && [undefined, 'string'].includes(renderItem.fieldType)"
539
- type="text"
540
- :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
541
- >
542
- <template v-if="renderItem.prefix" v-slot:prefix>
543
- <component :is="renderItem.prefix" />
544
- </template>
545
- <template v-slot:suffix>
546
- <span
547
- v-if="
548
- (!renderItem.activityFunc || (renderItem.activityFunc && renderItem.activityFunc(formState))) &&
549
- renderItem.sendStatus != 'sending'
550
- "
551
- class="send-notice send-notice-activity"
552
- @click="sendNoticeClick(renderItem)"
553
- >
554
- {{ renderItem.codeName }}
555
- </span>
556
- <span v-else class="send-notice">
557
- {{ renderItem.codeName }}
558
- </span>
559
- </template>
560
- </a-input>
561
-
562
- <a-textarea
563
- v-model:value="formState[renderItem.key]"
564
- v-if="renderItem.type == 'textarea'"
565
- :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
566
- :auto-size="{ minRows: 2, maxRows: 10 }"
567
- />
568
-
569
- <a-select
570
- style="min-width: 170px; margin-right: 15px"
571
- v-model:value="formState[renderItem.key]"
572
- :placeholder="renderItem.placeholder || `请选择`"
573
- v-if="renderItem.type == 'select'"
574
- :fieldNames="renderItem.fieldNames || { label: 'label', value: 'value' }"
575
- :options="renderItem.optionList"
576
- :mode="renderItem.isMultiple ? 'multiple' : undefined"
577
- ></a-select>
578
-
579
- <a-radio-group v-if="renderItem.type == 'radio'" v-model:value="formState[renderItem.key]">
580
- <a-radio v-for="item in renderItem.optionList" :value="item[renderItem.fieldNames?.value || 'value']">
581
- {{ item[renderItem.fieldNames?.label || "label"] }}
582
- </a-radio>
583
- </a-radio-group>
584
-
585
- <a-date-picker
586
- v-model:value="formState[renderItem.key]"
587
- v-if="renderItem.type === 'datePicker'"
588
- show-time
589
- :placeholder="`请选择${renderItem.label}`"
590
- class="ant-input"
591
- format="YYYY-MM-DD HH:mm:ss"
592
- value-format="YYYY-MM-DD HH:mm:ss"
593
- />
594
-
595
- <a-tree-select
596
- style="min-width: 170px; margin-right: 15px"
597
- v-model:value="formState[renderItem.key]"
598
- :tree-data="renderItem.optionList"
599
- v-if="renderItem.type == 'treeSelect'"
600
- :fieldNames="renderItem.fieldNames || { children: 'children', label: 'name', value: 'id' }"
601
- :placeholder="renderItem.placeholder || `请选择`"
602
- ></a-tree-select>
603
-
604
- <a-upload
605
- v-if="renderItem.type == 'uploadOss' || renderItem.type == 'uploadTos' || renderItem.type == 'upload'"
606
- :file-list="formState[renderItem.key]"
607
- :multiple="true"
608
- :max-count="renderItem?.maxCount || 1"
609
- @preview="handlePicPreview"
610
- :customRequest="
611
- (e) => {
612
- uploadRequest(e, renderItem);
613
- }
614
- "
615
- @change="
616
- (e) => {
617
- uploadChange(e, renderItem);
618
- }
619
- "
620
- :headers="{
621
- 'Cache-Control': 'max-age=15552000',
464
+ <div
465
+ :style="{
466
+ pointerEvents: renderItem.disabled ? 'none' : 'auto',
467
+ opacity: renderItem.disabled ? 0.6 : 1,
468
+ cursor: renderItem.disabled ? 'not-allowed' : 'auto',
622
469
  }"
623
- :list-type="renderItem.uploadType == 'pic' ? 'picture-card' : undefined"
624
470
  >
625
- <div v-if="renderItem.uploadType == 'pic'">
626
- <plus-outlined />
627
- <div style="margin-top: 8px">{{ renderItem.label }}</div>
628
- </div>
629
-
630
- <div v-else>
631
- <a-button style="display: flex; align-items: center">
632
- <upload-outlined></upload-outlined>
633
- 上传
634
- </a-button>
635
- </div>
636
- </a-upload>
637
-
638
- <div style="border: 1px solid #ccc" v-if="renderItem.type == 'editor'">
639
- <Toolbar
640
- style="border-bottom: 1px solid #ccc"
641
- :editor="editorRef"
642
- :defaultConfig="{
643
- excludeKeys: ['insertVideo', 'insertImage', 'codeBlock'],
644
- }"
645
- mode="default"
471
+ <a-input
472
+ v-model:value="formState[renderItem.key]"
473
+ v-if="renderItem.type == 'input' && [undefined, 'string'].includes(renderItem.fieldType)"
474
+ type="text"
475
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
476
+ >
477
+ <template v-if="renderItem.prefix" v-slot:prefix>
478
+ <component :is="renderItem.prefix" />
479
+ </template>
480
+ <template v-if="renderItem.suffix" v-slot:suffix>
481
+ <component :is="renderItem.suffix" />
482
+ </template>
483
+ </a-input>
484
+
485
+ <a-input
486
+ v-model:value.number="formState[renderItem.key]"
487
+ v-if="renderItem.type == 'input' && renderItem.fieldType == 'number'"
488
+ type="number"
489
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
490
+ >
491
+ <template v-if="renderItem.prefix" v-slot:prefix>
492
+ <component :is="renderItem.prefix" />
493
+ </template>
494
+ <template v-if="renderItem.suffix" v-slot:suffix>
495
+ <component :is="renderItem.suffix" />
496
+ </template>
497
+ </a-input>
498
+
499
+ <a-input-password
500
+ v-model:value="formState[renderItem.key]"
501
+ v-if="renderItem.type == 'password'"
502
+ type="password"
503
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
504
+ >
505
+ <template v-if="renderItem.prefix" v-slot:prefix>
506
+ <component :is="renderItem.prefix" />
507
+ </template>
508
+ </a-input-password>
509
+
510
+ <a-input
511
+ v-model:value="formState[renderItem.key]"
512
+ v-if="renderItem.type == 'code' && [undefined, 'string'].includes(renderItem.fieldType)"
513
+ type="text"
514
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
515
+ >
516
+ <template v-if="renderItem.prefix" v-slot:prefix>
517
+ <component :is="renderItem.prefix" />
518
+ </template>
519
+ <template v-slot:suffix>
520
+ <span
521
+ v-if="
522
+ (!renderItem.activityFunc || (renderItem.activityFunc && renderItem.activityFunc(formState))) &&
523
+ renderItem.sendStatus != 'sending'
524
+ "
525
+ class="send-notice send-notice-activity"
526
+ @click="sendNoticeClick(renderItem)"
527
+ >
528
+ {{ renderItem.codeName }}
529
+ </span>
530
+ <span v-else class="send-notice">
531
+ {{ renderItem.codeName }}
532
+ </span>
533
+ </template>
534
+ </a-input>
535
+
536
+ <a-textarea
537
+ v-model:value="formState[renderItem.key]"
538
+ v-if="renderItem.type == 'textarea'"
539
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
540
+ :auto-size="{ minRows: 2, maxRows: 10 }"
646
541
  />
647
- <Editor
648
- style="height: 500px; overflow-y: hidden"
649
- v-model="formState[renderItem.key]"
650
- :defaultConfig="{
651
- placeholder: '请输入内容...',
652
- MENU_CONF: {
653
- uploadImage: {
654
- customUpload: async (file, insertFn) => {
655
- await editorUpload(renderItem, file, insertFn);
656
- },
657
- },
658
- uploadVideo: {
659
- customUpload: async (file, insertFn) => {
660
- await editorUpload(renderItem, file, insertFn);
661
- },
662
- },
663
- },
664
- }"
665
- mode="default"
666
- @onCreated="handleRichEditorCreated"
542
+
543
+ <a-select
544
+ style="min-width: 170px; margin-right: 15px"
545
+ v-model:value="formState[renderItem.key]"
546
+ :placeholder="renderItem.placeholder || `请选择`"
547
+ v-if="renderItem.type == 'select'"
548
+ :fieldNames="renderItem.fieldNames || { label: 'label', value: 'value' }"
549
+ :options="renderItem.optionList"
550
+ :mode="renderItem.isMultiple ? 'multiple' : undefined"
551
+ ></a-select>
552
+
553
+ <a-radio-group v-if="renderItem.type == 'radio'" v-model:value="formState[renderItem.key]">
554
+ <a-radio v-for="item in renderItem.optionList" :value="item[renderItem.fieldNames?.value || 'value']">
555
+ {{ item[renderItem.fieldNames?.label || "label"] }}
556
+ </a-radio>
557
+ </a-radio-group>
558
+
559
+ <a-date-picker
560
+ v-model:value="formState[renderItem.key]"
561
+ v-if="renderItem.type === 'datePicker'"
562
+ show-time
563
+ :placeholder="`请选择${renderItem.label}`"
564
+ class="ant-input"
565
+ format="YYYY-MM-DD HH:mm:ss"
566
+ value-format="YYYY-MM-DD HH:mm:ss"
667
567
  />
668
- </div>
669
568
 
670
- <component v-if="renderItem.type == 'component'" :is="renderItem.component"></component>
569
+ <a-tree-select
570
+ style="min-width: 170px; margin-right: 15px"
571
+ v-model:value="formState[renderItem.key]"
572
+ :tree-data="renderItem.optionList"
573
+ v-if="renderItem.type == 'treeSelect'"
574
+ :fieldNames="renderItem.fieldNames || { children: 'children', label: 'name', value: 'id' }"
575
+ :placeholder="renderItem.placeholder || `请选择`"
576
+ ></a-tree-select>
577
+
578
+ <a-upload
579
+ v-if="renderItem.type == 'uploadOss' || renderItem.type == 'uploadTos' || renderItem.type == 'upload'"
580
+ :file-list="formState[renderItem.key]"
581
+ :multiple="true"
582
+ :max-count="renderItem?.maxCount || 1"
583
+ @preview="handlePicPreview"
584
+ :customRequest="
585
+ (e) => {
586
+ uploadRequest(e, renderItem);
587
+ }
588
+ "
589
+ @change="
590
+ (e) => {
591
+ uploadChange(e, renderItem);
592
+ }
593
+ "
594
+ :headers="{
595
+ 'Cache-Control': 'max-age=15552000',
596
+ }"
597
+ :list-type="renderItem.uploadType == 'pic' ? 'picture-card' : undefined"
598
+ >
599
+ <div v-if="renderItem.uploadType == 'pic'">
600
+ <plus-outlined />
601
+ <div style="margin-top: 8px">{{ renderItem.label }}</div>
602
+ </div>
603
+
604
+ <div v-else>
605
+ <a-button style="display: flex; align-items: center">
606
+ <upload-outlined></upload-outlined>
607
+ 上传
608
+ </a-button>
609
+ </div>
610
+ </a-upload>
611
+
612
+ <component v-if="renderItem.type == 'component'" :is="renderItem.component"></component>
613
+ </div>
671
614
  </a-form-item>
672
615
  </div>
673
616
 
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { ref, reactive, onMounted, computed, withDefaults, useSlots } from 'vue'
2
+ import { ref, reactive, onMounted, computed, useSlots } from 'vue'
3
3
  import PButtonRounded from '../p-button-rounded/p-button-rounded.vue'
4
4
  import { Modal as AModal } from 'ant-design-vue'
5
5
  const {
@@ -69,7 +69,7 @@ const confirmClick = async () => {
69
69
  :closable="closable"
70
70
  >
71
71
  <template #title v-if="title">
72
- <div class="p-[20px] text-[18px] font-bold leading-[27px] text-[#272727]">
72
+ <div style="padding: 20px; font-size: 18px; font-weight: bold; line-height: 27px; color: #272727;">
73
73
  {{ title }}
74
74
  </div>
75
75
  </template>
@@ -81,8 +81,8 @@ const confirmClick = async () => {
81
81
  <slot name="footer"></slot>
82
82
  </div>
83
83
 
84
- <div v-else class="flex p-[24px]" v-if="showFooter">
85
- <div class="flex items-center justify-start gap-[4px]" v-if="footerTip">
84
+ <div v-else style="display: flex; padding: 24px;" v-if="showFooter">
85
+ <div style="display: flex; align-items: center; justify-content: flex-start; gap: 4px;" v-if="footerTip">
86
86
  <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
87
87
  <path
88
88
  fill-rule="evenodd"
@@ -91,12 +91,12 @@ const confirmClick = async () => {
91
91
  fill="#5A5A5A"
92
92
  />
93
93
  </svg>
94
- <div class="text-[12px] text-[#5A5A5A]">
94
+ <div style="font-size: 12px; color: #5A5A5A;">
95
95
  {{ footerTip }}
96
96
  </div>
97
97
  </div>
98
98
 
99
- <div class="ml-auto">
99
+ <div style="margin-left: auto;">
100
100
  <p-button-rounded
101
101
  :width="btnWidth"
102
102
  :height="btnHeight"
@@ -1,5 +1,5 @@
1
1
  <script setup lang="ts">
2
- import { ref, reactive, onMounted, computed, withDefaults } from 'vue'
2
+ import { ref, computed } from 'vue'
3
3
  import { Modal as AModal, Button as AButton } from 'ant-design-vue'
4
4
 
5
5
  const {
@@ -34,7 +34,6 @@ const confirmClick = async () => {
34
34
  loading.value = true
35
35
  try {
36
36
  confirm && (await confirm())
37
- // 同时兼容多种回调方式
38
37
  emits('confirm')
39
38
  } catch (err) {
40
39
  } finally {
@@ -47,48 +46,85 @@ const confirmClick = async () => {
47
46
  <template>
48
47
  <a-modal v-model:visible="show" :width="width" centered wrapClassName="p-modal">
49
48
  <template #title v-if="title">
50
- <div class="p-[20px] text-[18px] font-bold leading-[27px] text-[#272727]">
49
+ <div class="modal-title">
51
50
  {{ title }}
52
51
  </div>
53
52
  </template>
54
- <div class="border-t border-[#cecece] p-[20px] pb-[0px] text-[16px] text-[#272727]">
55
- <div v-html="content"></div>
56
53
 
54
+ <div class="modal-content">
55
+ <div v-html="content"></div>
57
56
  </div>
58
57
 
59
58
  <template #footer>
60
- <div class="flex justify-end p-[20px]">
59
+ <div class="modal-footer">
61
60
  <a-button
62
- class="h-[38px] w-[76px] rounded-[100px]"
63
- style="border: 1px solid #272727"
61
+ class="modal-btn modal-cancel-btn"
64
62
  @click="show = false"
65
- >取消</a-button
66
63
  >
64
+ 取消
65
+ </a-button>
67
66
 
68
67
  <a-button
69
- class="h-[38px] w-[76px] rounded-[100px] !text-white"
68
+ class="modal-btn modal-confirm-btn"
70
69
  :style="{
71
70
  border: 'none',
72
71
  backgroundColor: confrimBtnBgColor,
73
72
  }"
74
73
  @click="confirmClick"
75
74
  :loading="loading"
76
- >确定</a-button
77
75
  >
76
+ 确定
77
+ </a-button>
78
78
  </div>
79
79
  </template>
80
80
  </a-modal>
81
81
  </template>
82
82
 
83
- <style lang="scss">
84
- .p-modal {
85
- .ant-modal {
86
- border-radius: 16px !important;
87
- overflow: hidden;
88
- }
89
- .ant-modal-content {
90
- padding: 0px !important;
91
- border-radius: 16px !important;
92
- }
83
+ <style>
84
+ .p-modal .ant-modal {
85
+ border-radius: 16px !important;
86
+ overflow: hidden;
87
+ }
88
+
89
+ .p-modal .ant-modal-content {
90
+ padding: 0 !important;
91
+ border-radius: 16px !important;
92
+ }
93
+
94
+ .modal-title {
95
+ padding: 20px;
96
+ font-size: 18px;
97
+ font-weight: 700;
98
+ line-height: 27px;
99
+ color: #272727;
100
+ }
101
+
102
+ .modal-content {
103
+ border-top: 1px solid #cecece;
104
+ padding: 20px;
105
+ padding-bottom: 0;
106
+ font-size: 16px;
107
+ color: #272727;
108
+ }
109
+
110
+ .modal-footer {
111
+ display: flex;
112
+ justify-content: flex-end;
113
+ padding: 20px;
114
+ gap: 8px;
115
+ }
116
+
117
+ .modal-btn {
118
+ width: 76px;
119
+ height: 38px;
120
+ border-radius: 100px;
121
+ }
122
+
123
+ .modal-cancel-btn {
124
+ border: 1px solid #272727;
125
+ }
126
+
127
+ .modal-confirm-btn {
128
+ color: #fff !important;
93
129
  }
94
130
  </style>
@@ -83,8 +83,9 @@ const renderTableColumns = (tableColumns: TableColumn[]) => {
83
83
  // return h("div", { style: { display: "flex", justifyContent: "space-around" } }, buttons);
84
84
  // };
85
85
 
86
-
87
- renderItem.width = renderItem.operateButtons.length * 55;
86
+ if(!renderItem.width){
87
+ renderItem.width = renderItem.operateButtons.length * 60;
88
+ }
88
89
 
89
90
  if(editColumns.length > 0){
90
91
  renderItem.width +=110
@@ -299,11 +300,8 @@ defineExpose({
299
300
  rowKey="id"
300
301
  :row-selection="rowSelection"
301
302
  :columns="columns"
302
- :data-source="tableData?.data || []"
303
+ :data-source="data && data.length >0 ? data : (tableData.data || [])"
303
304
  :loading="loading"
304
- :scroll="{
305
- y: height,
306
- }"
307
305
  :pagination="data.length >0? false :{
308
306
  current: pageQuery.p,
309
307
  defaultPageSize: pageQuery.pc,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "p-pc-ui",
3
- "version": "1.3.1",
3
+ "version": "1.3.4",
4
4
  "type": "module",
5
5
  "module": "dist/index.ts",
6
6
  "main": "dist/index.ts",
@@ -21,7 +21,7 @@
21
21
  "vue": "3.5.13"
22
22
  },
23
23
  "devDependencies": {
24
- "typescript": "5.8.3",
25
- "@dcloudio/types": "^3.4.8"
24
+ "ts-node": "^10.9.2",
25
+ "typescript": "5.8.3"
26
26
  }
27
- }
27
+ }