From 08e52db54ce1e7563f1efe402a3f6c3931188013 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期五, 14 二月 2025 10:47:53 +0800
Subject: [PATCH] 产品结构树: 1、实现文档批量删除功能 2、实现文档列表的排序以及筛选功能 设备结构树: 1、新增权限配置弹窗,提交后由后端测试

---
 src/views/dnc/common/DocumentBatchDeleteModal.vue |  242 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 233 insertions(+), 9 deletions(-)

diff --git a/src/views/dnc/common/DocumentBatchDeleteModal.vue b/src/views/dnc/common/DocumentBatchDeleteModal.vue
index 6d307fe..36180b6 100644
--- a/src/views/dnc/common/DocumentBatchDeleteModal.vue
+++ b/src/views/dnc/common/DocumentBatchDeleteModal.vue
@@ -1,20 +1,244 @@
 <template>
-    <div>
+  <a-modal width="65%" :title="title" :visible="visible" @cancel="visible=false" :maskClosable="false" centered
+           @ok="confirmBatchDeleteDocument">
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :md="6" :sm="6">
+            <a-form-item label="鏂囦欢鍚嶇О">
+              <a-input placeholder="璇疯緭鍏ユ枃浠跺悕绉�" v-model="queryParam.docName" allow-clear></a-input>
+            </a-form-item>
+          </a-col>
 
+          <a-col :md="8" :sm="8">
+            <a-form-item label="鍒涘缓鏃堕棿">
+              <a-range-picker v-model="date" value-format="YYYY-MM-DD" @change="handleDateChange"
+                              allow-clear></a-range-picker>
+            </a-form-item>
+          </a-col>
+
+          <a-col :md="4" :sm="4">
+            <a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>
+          </a-col>
+        </a-row>
+      </a-form>
     </div>
+
+    <a-table :columns="columns" :data-source="dataSource" bordered :pagination="ipagination" :loading="loading"
+             :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}" @change="handleTableChange"
+             :scroll="{y:380}" :size="size" rowKey="docId" style="min-height: 480px">
+      <span slot="docName" slot-scope="text">{{text}}</span>
+    </a-table>
+  </a-modal>
 </template>
 
 <script>
+  import { getAction } from '@/api/manage'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import dncApi from '@/api/dnc'
+
   export default {
     name: 'DocumentBatchDeleteModal',
     components: {},
-    data() {
-      return {}
+    mixins: [JeecgListMixin],
+    props: {
+      currentDocumentInfo: {
+        type: Object
+      },
+      size: {
+        type: String
+      }
     },
-    methods: {}
+    data() {
+      return {
+        disableMixinCreated: true,
+        visible: false,
+        title: '',
+        date: [],
+        columns: [
+          {
+            title: '搴忓彿',
+            dataIndex: 'rowIndex',
+            key: 'rowIndex',
+            width: 65,
+            align: 'center',
+            customRender: function(t, r, index) {
+              return parseInt(index) + 1
+            }
+          },
+          {
+            title: '鏂囦欢鍚嶇О',
+            dataIndex: 'docName',
+            key: 'docName',
+            align: 'center',
+            width: 300,
+            sorter: true
+          },
+          { title: '璁惧缂栧彿', dataIndex: 'docCode', align: 'center' },
+          {
+            title: '鍑哄簱鐘舵��',
+            dataIndex: 'pullStatus_dictText',
+            key: 'pullStatus',
+            align: 'center',
+            filters: [
+              { text: '鏈嚭搴�', value: 1 },
+              { text: '宸插嚭搴�', value: 2 }
+            ],
+          },
+          {
+            title: '鐘�  鎬�',
+            dataIndex: 'docStatus_dictText',
+            key: 'docStatus',
+            align: 'center',
+            filters: [
+              { text: '璁捐', value: 1 },
+              { text: '鍙戝竷', value: 2 },
+              { text: '褰掓。', value: 3 }
+            ],
+          },
+          { title: '绯荤粺鎸囧畾鐗堟湰', dataIndex: 'publishVersion', align: 'center', width: 200 },
+          {
+            title: '鍒涘缓鏃堕棿',
+            dataIndex: 'createTime',
+            align: 'center',
+            width: 200,
+            sorter: true
+          }
+        ],
+        spinning: false,
+        url: {
+          list: '/nc/doc/find/page'
+        }
+      }
+    },
+    watch: {
+      visible: {
+        handler(value) {
+          if (value) {
+            this.resetData()
+            this.loadData()
+          }
+        }
+      }
+    },
+    methods: {
+      // 鑾峰彇褰撳墠宸ュ簭鎴栧伐姝ュ搴旀枃妗e垪琛�
+      loadData() {
+        this.dataSource = []
+        if (!this.url.list) {
+          this.$message.error('璇疯缃畊rl.list灞炴��!')
+          return
+        }
+
+        var params = this.getQueryParams()//鏌ヨ鏉′欢
+        if (!params) return false
+        const { attributionType, attributionId, param } = this.currentDocumentInfo
+        params.attributionType = attributionType
+        params.attributionId = attributionId
+        params.docClassCode = param
+        console.log('params', params)
+        this.loading = true
+        getAction(this.url.list + `/${this.ipagination.current}/${this.ipagination.pageSize}`, params).then((res) => {
+          if (res.success) {
+            this.dataSource = res.result.records
+            if (res.result.total) {
+              this.ipagination.total = res.result.total
+            } else {
+              this.ipagination.total = 0
+            }
+          }
+          else this.$message.warning(res.message)
+        }).finally(() => {
+          this.loading = false
+        })
+      },
+
+      /**
+       * 琛ㄦ牸鍒嗛〉銆佹帓搴忔敼鍙樸�佺瓫閫夋椂瑙﹀彂
+       * @param pagination 鍒嗛〉鍣ㄩ�夐」
+       * @param filters 绛涢�夐�夐」
+       * @param sorter 鎺掑簭閫夐」
+       */
+      handleTableChange(pagination, filters, sorter) {
+        if (sorter.order) {
+          this.isorter.column = sorter.field
+          this.isorter.order = sorter.order === 'ascend' ? 'asc' : 'desc'
+        } else {
+          this.isorter.column = 'createTime'
+          this.isorter.order = 'desc'
+        }
+        for (let key in filters) {
+          this.filters[key] = filters[key].join(',')
+        }
+        this.ipagination = pagination
+        this.loadData()
+      },
+
+      // 鏃堕棿閫夋嫨鍣ㄩ�夋嫨瀹屾垚鍚庤Е鍙�
+      handleDateChange(value) {
+        this.queryParam.startTime = value[0]
+        this.queryParam.endTime = value[1]
+      },
+
+      // 纭鎵归噺鍒犻櫎鏂囨。
+      confirmBatchDeleteDocument() {
+        const that = this
+        const { selectedRowKeys, $notification, $confirm, currentDocumentInfo: { param, attributionId } } = that
+
+        if (selectedRowKeys.length === 0) {
+          $notification.warning({
+            message: '娑堟伅',
+            description: '璇烽�夋嫨鏂囨。'
+          })
+          return
+        }
+
+        $confirm({
+          title: '鎻愮ず',
+          content: `鍒犻櫎鍚庝笉鍙彇娑堬紝纭鍒犻櫎鍚楋紵`,
+          okText: '纭',
+          cancelText: '鍙栨秷',
+          onOk: () => {
+            let hasRequestedSuccessCount = 0
+            let hasRequestedCount = 0
+            selectedRowKeys.forEach(key => {
+              dncApi.deleteDocumentApi(key)
+                .then(res => {
+                  if (res.success) {
+                    $notification.success({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                    hasRequestedSuccessCount++
+                  } else {
+                    $notification.error({
+                      message: '娑堟伅',
+                      description: res.message
+                    })
+                  }
+                })
+                .finally(() => {
+                  hasRequestedCount++
+                  if (hasRequestedCount === selectedRowKeys.length && hasRequestedSuccessCount > 0) {
+                    this.loadData()
+                    this.$emit('reloadDocumentListData', { docClassCode: param, attributionId })
+                  }
+                })
+            })
+            that.$destroyAll()
+          },
+          onCancel: () => {
+            that.$destroyAll()
+          }
+        })
+
+
+      },
+
+      resetData() {
+        this.queryParam = {}
+        this.selectedRowKeys = []
+      }
+    }
   }
-</script>
-
-<style scoped>
-
-</style>
\ No newline at end of file
+</script>
\ No newline at end of file

--
Gitblit v1.9.3