p-pc-ui 1.3.1 → 1.3.2

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
 
@@ -257,8 +257,8 @@ const initFormState = (renderData: FormDataItem[], initFromData = {}) => {
257
257
 
258
258
  const handlePicPreview = (file: any) => {
259
259
  const url = URL.createObjectURL(file.originFileObj);
260
-
261
- viewerApi({ images: [url ||file.url || file.key || file.thumbUrl] });
260
+
261
+ viewerApi({ images: [url || file.url || file.key || file.thumbUrl] });
262
262
  };
263
263
 
264
264
  const replaceUrl = (str, urlToReplace, replacement) => {
@@ -494,180 +494,188 @@ defineExpose({
494
494
  :tooltip="renderItem.tooltip"
495
495
  :label-align="renderItem.labelAlign || 'right'"
496
496
  >
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',
497
+ <div
498
+ :style="{
499
+ pointerEvents: renderItem.disabled ? 'none' : 'auto',
500
+ opacity: renderItem.disabled ? 0.6 : 1,
501
+ cursor: renderItem.disabled ? 'not-allowed' : 'auto',
622
502
  }"
623
- :list-type="renderItem.uploadType == 'pic' ? 'picture-card' : undefined"
624
503
  >
625
- <div v-if="renderItem.uploadType == 'pic'">
626
- <plus-outlined />
627
- <div style="margin-top: 8px">{{ renderItem.label }}</div>
628
- </div>
504
+ <a-input
505
+ v-model:value="formState[renderItem.key]"
506
+ v-if="renderItem.type == 'input' && [undefined, 'string'].includes(renderItem.fieldType)"
507
+ type="text"
508
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
509
+ >
510
+ <template v-if="renderItem.prefix" v-slot:prefix>
511
+ <component :is="renderItem.prefix" />
512
+ </template>
513
+ <template v-if="renderItem.suffix" v-slot:suffix>
514
+ <component :is="renderItem.suffix" />
515
+ </template>
516
+ </a-input>
517
+
518
+ <a-input
519
+ v-model:value.number="formState[renderItem.key]"
520
+ v-if="renderItem.type == 'input' && renderItem.fieldType == 'number'"
521
+ type="number"
522
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
523
+ >
524
+ <template v-if="renderItem.prefix" v-slot:prefix>
525
+ <component :is="renderItem.prefix" />
526
+ </template>
527
+ <template v-if="renderItem.suffix" v-slot:suffix>
528
+ <component :is="renderItem.suffix" />
529
+ </template>
530
+ </a-input>
531
+
532
+ <a-input-password
533
+ v-model:value="formState[renderItem.key]"
534
+ v-if="renderItem.type == 'password'"
535
+ type="password"
536
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
537
+ >
538
+ <template v-if="renderItem.prefix" v-slot:prefix>
539
+ <component :is="renderItem.prefix" />
540
+ </template>
541
+ </a-input-password>
542
+
543
+ <a-input
544
+ v-model:value="formState[renderItem.key]"
545
+ v-if="renderItem.type == 'code' && [undefined, 'string'].includes(renderItem.fieldType)"
546
+ type="text"
547
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
548
+ >
549
+ <template v-if="renderItem.prefix" v-slot:prefix>
550
+ <component :is="renderItem.prefix" />
551
+ </template>
552
+ <template v-slot:suffix>
553
+ <span
554
+ v-if="
555
+ (!renderItem.activityFunc || (renderItem.activityFunc && renderItem.activityFunc(formState))) &&
556
+ renderItem.sendStatus != 'sending'
557
+ "
558
+ class="send-notice send-notice-activity"
559
+ @click="sendNoticeClick(renderItem)"
560
+ >
561
+ {{ renderItem.codeName }}
562
+ </span>
563
+ <span v-else class="send-notice">
564
+ {{ renderItem.codeName }}
565
+ </span>
566
+ </template>
567
+ </a-input>
568
+
569
+ <a-textarea
570
+ v-model:value="formState[renderItem.key]"
571
+ v-if="renderItem.type == 'textarea'"
572
+ :placeholder="renderItem.placeholder || `请输入${renderItem.label}`"
573
+ :auto-size="{ minRows: 2, maxRows: 10 }"
574
+ />
629
575
 
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"
576
+ <a-select
577
+ style="min-width: 170px; margin-right: 15px"
578
+ v-model:value="formState[renderItem.key]"
579
+ :placeholder="renderItem.placeholder || `请选择`"
580
+ v-if="renderItem.type == 'select'"
581
+ :fieldNames="renderItem.fieldNames || { label: 'label', value: 'value' }"
582
+ :options="renderItem.optionList"
583
+ :mode="renderItem.isMultiple ? 'multiple' : undefined"
584
+ ></a-select>
585
+
586
+ <a-radio-group v-if="renderItem.type == 'radio'" v-model:value="formState[renderItem.key]">
587
+ <a-radio v-for="item in renderItem.optionList" :value="item[renderItem.fieldNames?.value || 'value']">
588
+ {{ item[renderItem.fieldNames?.label || "label"] }}
589
+ </a-radio>
590
+ </a-radio-group>
591
+
592
+ <a-date-picker
593
+ v-model:value="formState[renderItem.key]"
594
+ v-if="renderItem.type === 'datePicker'"
595
+ show-time
596
+ :placeholder="`请选择${renderItem.label}`"
597
+ class="ant-input"
598
+ format="YYYY-MM-DD HH:mm:ss"
599
+ value-format="YYYY-MM-DD HH:mm:ss"
646
600
  />
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);
601
+
602
+ <a-tree-select
603
+ style="min-width: 170px; margin-right: 15px"
604
+ v-model:value="formState[renderItem.key]"
605
+ :tree-data="renderItem.optionList"
606
+ v-if="renderItem.type == 'treeSelect'"
607
+ :fieldNames="renderItem.fieldNames || { children: 'children', label: 'name', value: 'id' }"
608
+ :placeholder="renderItem.placeholder || `请选择`"
609
+ ></a-tree-select>
610
+
611
+ <a-upload
612
+ v-if="renderItem.type == 'uploadOss' || renderItem.type == 'uploadTos' || renderItem.type == 'upload'"
613
+ :file-list="formState[renderItem.key]"
614
+ :multiple="true"
615
+ :max-count="renderItem?.maxCount || 1"
616
+ @preview="handlePicPreview"
617
+ :customRequest="
618
+ (e) => {
619
+ uploadRequest(e, renderItem);
620
+ }
621
+ "
622
+ @change="
623
+ (e) => {
624
+ uploadChange(e, renderItem);
625
+ }
626
+ "
627
+ :headers="{
628
+ 'Cache-Control': 'max-age=15552000',
629
+ }"
630
+ :list-type="renderItem.uploadType == 'pic' ? 'picture-card' : undefined"
631
+ >
632
+ <div v-if="renderItem.uploadType == 'pic'">
633
+ <plus-outlined />
634
+ <div style="margin-top: 8px">{{ renderItem.label }}</div>
635
+ </div>
636
+
637
+ <div v-else>
638
+ <a-button style="display: flex; align-items: center">
639
+ <upload-outlined></upload-outlined>
640
+ 上传
641
+ </a-button>
642
+ </div>
643
+ </a-upload>
644
+
645
+ <div style="border: 1px solid #ccc" v-if="renderItem.type == 'editor'">
646
+ <Toolbar
647
+ style="border-bottom: 1px solid #ccc"
648
+ :editor="editorRef"
649
+ :defaultConfig="{
650
+ excludeKeys: ['insertVideo', 'insertImage', 'codeBlock'],
651
+ }"
652
+ mode="default"
653
+ />
654
+ <Editor
655
+ style="height: 500px; overflow-y: hidden"
656
+ v-model="formState[renderItem.key]"
657
+ :defaultConfig="{
658
+ placeholder: '请输入内容...',
659
+ MENU_CONF: {
660
+ uploadImage: {
661
+ customUpload: async (file, insertFn) => {
662
+ await editorUpload(renderItem, file, insertFn);
663
+ },
656
664
  },
657
- },
658
- uploadVideo: {
659
- customUpload: async (file, insertFn) => {
660
- await editorUpload(renderItem, file, insertFn);
665
+ uploadVideo: {
666
+ customUpload: async (file, insertFn) => {
667
+ await editorUpload(renderItem, file, insertFn);
668
+ },
661
669
  },
662
670
  },
663
- },
664
- }"
665
- mode="default"
666
- @onCreated="handleRichEditorCreated"
667
- />
668
- </div>
671
+ }"
672
+ mode="default"
673
+ @onCreated="handleRichEditorCreated"
674
+ />
675
+ </div>
669
676
 
670
- <component v-if="renderItem.type == 'component'" :is="renderItem.component"></component>
677
+ <component v-if="renderItem.type == 'component'" :is="renderItem.component"></component>
678
+ </div>
671
679
  </a-form-item>
672
680
  </div>
673
681
 
@@ -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"
@@ -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.2",
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
+ }