whj 1 місяць тому
батько
коміт
4dee34290b

+ 288 - 0
src/views/custom/form/modules/component/modules/PositionSelectModal.vue

@@ -0,0 +1,288 @@
+<template>
+  <a-modal :title="modalTitle" :width="1000" :visible="visible" :confirmLoading="confirmLoading" class="ant-modal2" @cancel="handleCancel">
+    <a-card :bordered="false">
+      <div class="table-page-search-wrapper">
+        <a-form layout="inline">
+          <a-row :gutter="48">
+            <a-col :md="8" :sm="24">
+              <a-form-item label="关键字">
+                <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/编码" />
+              </a-form-item>
+            </a-col>
+            <a-col :md="8" :sm="24">
+              <a-form-item label="上层位置类型">
+                <a-tree-select style="width: 100%" :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }" :treeData="treeData" :treeNodeFilterProp="'title'" :showSearch="true" v-model="queryParam.parentId" placeholder="请选择">
+                </a-tree-select>
+              </a-form-item>
+            </a-col>
+            <a-col :md="8 || 24" :sm="24">
+              <span class="table-page-search-submitButtons">
+                <a-button type="primary" @click="$refs.table.refresh(true)">查询</a-button>
+                <a-button style="margin-left: 8px" @click="resetSearchForm">重置</a-button>
+              </span>
+            </a-col>
+          </a-row>
+        </a-form>
+      </div>
+
+      <div class="table-operator" style="margin-bottom: 8px;">
+      </div>
+
+      <s-table ref="table" size="default" rowKey="id" :columns="columns" :data="loadData" :alert="options.alert" :customRow="options.customRow" :rowSelection="options.rowSelection" showPagination="auto">
+        <span slot="delFlag" slot-scope="text">
+          <badge :status="DictCache.COLOR.DELFLAG[text]" :text="delFlagMap[text]" />
+        </span>
+      </s-table>
+    </a-card>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
+      <a-button :loading="confirmLoading" type="primary" @click="handleSelect()">选择</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import { getSbPositionPage, getSbPositionTree } from '@/api/sb/position'
+
+export default {
+  name: 'PositionSelectModal',
+  components: {
+    STable,
+    Ellipsis,
+  },
+  props: {
+    type: {
+      type: String,
+      default: 'radio',
+    },
+    selectedRowKey: {
+      type: Array,
+      default: () => {
+        return []
+      },
+    },
+    selectedRow: {
+      type: Array,
+      default: () => {
+        return []
+      },
+    },
+  },
+  data() {
+    return {
+      confirmLoading: false,
+      mdl: {},
+      modalTitle: null,
+      visible: false,
+      record: null,
+      // 查询参数
+      queryParam: {},
+      extraQueryParam: {},
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${
+              (this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1
+            }`
+          },
+        },
+        {
+          title: '编码',
+          dataIndex: 'no',
+        },
+        {
+          title: '名称',
+          dataIndex: 'name',
+        },
+        {
+          title: '类型',
+          dataIndex: 'type',
+          customRender: (text, record, index) => {
+            return this.BaseTool.Object.getField(this.positionTypeMap, text)
+          },
+        },
+        /*      {
+          title: '父子关联编码',
+          dataIndex: 'code'
+        }, */
+        {
+          title: '排序',
+          dataIndex: 'sort',
+        },
+        {
+          title: '上层位置',
+          dataIndex: 'parentId',
+          customRender: (text, record, index) => {
+            return record.parentName
+          },
+        },
+        {
+          title: '备注',
+          dataIndex: 'remark',
+        },
+        {
+          title: '创建日期',
+          dataIndex: 'createdTime',
+        },
+        {
+          title: '是否删除',
+          dataIndex: 'delFlag',
+          scopedSlots: { customRender: 'delFlag' },
+        },
+      ],
+      // 下拉框map
+      positionTypeMap: {},
+      delFlagMap: {},
+      yesNoMap: {},
+      // 加载数据方法 必须为 Promise 对象
+      loadData: (parameter) => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          dataScope: {
+            sortBy: 'asc',
+            sortName: 'sort',
+          },
+        }
+        return getSbPositionPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: {
+          show: true,
+          clear: () => {
+            this.selectedRowKeys = []
+          },
+        },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange,
+        },
+      },
+      optionAlertShow: false,
+      isCreated: false,
+      treeData: [],
+    }
+  },
+  created() {
+    // 下拉框map
+    this.delFlagMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.DELFLAG)
+    this.yesNoMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
+    this.positionTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBPOSITION_TYPE)
+    this.setTree()
+  },
+  methods: {
+    setTree() {
+      getSbPositionTree({}).then((res) => {
+        console.log(res.data)
+        this.treeData = res.data
+      })
+    },
+    tableOption() {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: {
+            show: true,
+            clear: () => {
+              this.selectedRowKeys = []
+            },
+          },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            type: this.type,
+            getCheckboxProps: (record) => ({
+              props: {
+                disabled: false,
+                name: record.id,
+              },
+            }),
+          },
+          customRow: (record) => {
+            return {
+              on: {
+                // 事件
+                click: (event) => {
+                  // 点击行
+                  // 选择对象
+                  this.mySelect([record.id], [record])
+                },
+                dblclick: (event) => {
+                  this.mySelect([record.id], [record])
+                  this.handleSelect()
+                },
+              },
+            }
+          },
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null,
+        }
+        this.optionAlertShow = false
+      }
+    },
+    handleView(record) {
+      fetchStore({ id: record.id }).then((res) => {
+        const modal = this.$refs.detailModal
+        modal.base(res.data)
+      })
+    },
+    handleOk() {
+      this.$refs.table.refresh()
+    },
+    onSelectChange(selectedRowKeys, selectedRows) {
+      this.selectedRowKeys = selectedRowKeys
+      this.selectedRows = selectedRows
+    },
+    resetSearchForm() {
+      this.queryParam = {}
+      this.$refs.table.refresh(true)
+    },
+    base(record, queryParam = {}, extraQueryParam = {}) {
+      this.visible = true
+      this.modalTitle = '选择信息'
+      this.queryParam = queryParam
+      this.extraQueryParam = extraQueryParam
+      this.record = record
+      if (this.isCreated) {
+        this.$refs.table.clearSelected()
+        console.log(this.options.rowSelection, 9999)
+        this.options.rowSelection.type = this.type
+        this.handleOk()
+      } else {
+        this.tableOption()
+        this.isCreated = true
+      }
+    },
+    handleCancel() {
+      this.visible = false
+      this.confirmLoading = false
+    },
+    handleSelect() {
+      if (this.selectedRowKeys.length === 0) {
+        this.$message.warn('请至少选择一项信息')
+      } else {
+        this.confirmLoading = true
+        this.$emit('selected', this.selectedRowKeys, this.selectedRows)
+        this.confirmLoading = false
+        this.visible = false
+      }
+    },
+    mySelect(selectedRowKeys, selectedRows) {
+      this.$refs.table.updateSelect(selectedRowKeys, selectedRows)
+      this.$refs.table.rowSelection.onChange(selectedRowKeys, selectedRows)
+    },
+  },
+}
+</script>

+ 3 - 0
src/views/custom/form/modules/component/modules/SelectInfo.vue

@@ -3,6 +3,7 @@
     <StoreSelectModal :type="detail.attrs.selectType" v-if="active === 't_store'" ref="select" @selected="selected" />
     <SpareStoreSelectModal :type="detail.attrs.selectType" v-else-if="active === 't_spare_part_info'" ref="select" @selected="selected" />
     <SbInfoSelectModal :type="detail.attrs.selectType" v-else-if="active === 't_sb_info'" ref="select" @selected="selected" />
+    <PositionSelectModal :type="detail.attrs.selectType" v-else-if="active === 't_sb_position'" ref="select" @selected="selected" />
   </div>
 </template>
 
@@ -10,11 +11,13 @@
 import SbInfoSelectModal from './SbInfoSelectModal.vue'
 import SpareStoreSelectModal from './SpareStoreSelectModal.vue'
 import StoreSelectModal from './StoreSelectModal.vue'
+import PositionSelectModal from './PositionSelectModal.vue'
 export default {
   components: {
     SbInfoSelectModal,
     SpareStoreSelectModal,
     StoreSelectModal,
+    PositionSelectModal,
   },
   data() {
     return {

+ 85 - 87
src/views/sb/position/SbPosition.vue

@@ -5,10 +5,10 @@
         <a-row :gutter="48">
           <a-col :md="8" :sm="24">
             <a-form-item label="关键字">
-              <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/编码"/>
+              <a-input v-model.trim="queryParam.keyword" placeholder="请输入名称/编码" />
             </a-form-item>
           </a-col>
-<!--          <a-col :md="8" :sm="24">
+          <!--          <a-col :md="8" :sm="24">
             <a-form-item label="是否防雷车间">
               <a-select v-model="queryParam.lightFlag" placeholder="请选择">
                 <a-select-option
@@ -22,15 +22,7 @@
           </a-col>-->
           <a-col :md="8" :sm="24">
             <a-form-item label="上层位置类型">
-              <a-tree-select
-                style="width: 100%"
-                :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
-                :treeData="treeData"
-                :treeNodeFilterProp="'title'"
-                :showSearch="true"
-                v-model="queryParam.parentId"
-                placeholder="请选择"
-              >
+              <a-tree-select style="width: 100%" :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }" :treeData="treeData" :treeNodeFilterProp="'title'" :showSearch="true" v-model="queryParam.parentId" placeholder="请选择">
               </a-tree-select>
             </a-form-item>
           </a-col>
@@ -59,16 +51,7 @@
       </a-dropdown>
     </div>
 
-    <s-table
-      ref="table"
-      size="default"
-      rowKey="id"
-      :columns="columns"
-      :data="loadData"
-      :alert="options.alert"
-      :rowSelection="options.rowSelection"
-      showPagination="auto"
-    >
+    <s-table ref="table" size="default" rowKey="id" :columns="columns" :data="loadData" :alert="options.alert" :rowSelection="options.rowSelection" showPagination="auto">
       <span slot="action" slot-scope="record">
         <template>
           <a @click="handleView(record)">查看</a>
@@ -80,18 +63,16 @@
           </a-popconfirm>-->
           <a-divider type="vertical" />
           <a @click="handleCopy(record)">复制</a>
-<!--          <a-divider type="vertical" />
+          <!--          <a-divider type="vertical" />
           <a v-if="record.opcFlag==1" @click="handleSetting(record)">点位配置</a>-->
         </template>
       </span>
       <span slot="delFlag" slot-scope="text">
-        <badge
-          :status="DictCache.COLOR.DELFLAG[text]"
-          :text="delFlagMap[text]" />
+        <badge :status="DictCache.COLOR.DELFLAG[text]" :text="delFlagMap[text]" />
       </span>
     </s-table>
-    <base-form ref="baseModal" @ok="handleOk"/>
-    <detail ref="detailModal"/>
+    <base-form ref="baseModal" @ok="handleOk" />
+    <detail ref="detailModal" />
   </a-card>
 </template>
 
@@ -99,7 +80,13 @@
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './modules/BaseForm'
 import Detail from './modules/Detail'
-import { getSbPositionPage, deleteSbPositions, fetchSbPosition, exportSbPosition, getSbPositionTree } from '@/api/sb/position'
+import {
+  getSbPositionPage,
+  deleteSbPositions,
+  fetchSbPosition,
+  exportSbPosition,
+  getSbPositionTree,
+} from '@/api/sb/position'
 
 export default {
   name: 'SbPositionList',
@@ -107,25 +94,25 @@ export default {
     STable,
     Ellipsis,
     BaseForm,
-    Detail
+    Detail,
   },
   props: {
     opcFlag: {
       type: Number,
-      default: null
+      default: null,
     },
     lightFlag: {
       type: Number,
-      default: null
-    }
+      default: null,
+    },
   },
-  data () {
+  data() {
     return {
       // 查询参数
       yesNoMap: {},
       queryParam: {
         opcFlag: this.opcFlag,
-        lightFlag: this.lightFlag
+        lightFlag: this.lightFlag,
       },
       positionTypeMap: {},
       delFlagMap: {},
@@ -136,23 +123,25 @@ export default {
           title: '序号',
           dataIndex: 'index',
           customRender: (text, record, index) => {
-            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
-          }
+            return `${
+              (this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1
+            }`
+          },
         },
         {
           title: '编码',
-          dataIndex: 'no'
+          dataIndex: 'no',
         },
         {
           title: '名称',
-          dataIndex: 'name'
+          dataIndex: 'name',
         },
         {
           title: '类型',
           dataIndex: 'type',
           customRender: (text, record, index) => {
             return this.BaseTool.Object.getField(this.positionTypeMap, text)
-          }
+          },
         },
         /*      {
           title: '父子关联编码',
@@ -160,97 +149,106 @@ export default {
         }, */
         {
           title: '排序',
-          dataIndex: 'sort'
+          dataIndex: 'sort',
         },
         {
           title: '上层位置',
           dataIndex: 'parentId',
           customRender: (text, record, index) => {
             return record.parentName
-          }
+          },
         },
         {
           title: '备注',
-          dataIndex: 'remark'
+          dataIndex: 'remark',
         },
         {
           title: '创建日期',
-          dataIndex: 'createdTime'
+          dataIndex: 'createdTime',
         },
         {
           title: '是否删除',
           dataIndex: 'delFlag',
-          scopedSlots: { customRender: 'delFlag' }
+          scopedSlots: { customRender: 'delFlag' },
         },
         {
           title: '操作',
           key: 'action',
           width: '200px',
           align: 'center',
-          scopedSlots: { customRender: 'action' }
-        }
+          scopedSlots: { customRender: 'action' },
+        },
       ],
       // 加载数据方法 必须为 Promise 对象
-      loadData: parameter => {
+      loadData: (parameter) => {
         parameter = {
           ...parameter,
           ...this.queryParam,
           dataScope: {
             sortBy: 'asc',
-            sortName: 'sort'
-          }
+            sortName: 'sort',
+          },
         }
-        return getSbPositionPage(Object.assign(parameter, this.queryParam))
-          .then(res => {
-            return res.data
-          })
+        return getSbPositionPage(Object.assign(parameter, this.queryParam)).then((res) => {
+          return res.data
+        })
       },
       selectedRowKeys: [],
       selectedRows: [],
 
       options: {
-        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        alert: {
+          show: true,
+          clear: () => {
+            this.selectedRowKeys = []
+          },
+        },
         rowSelection: {
           selectedRowKeys: this.selectedRowKeys,
-          onChange: this.onSelectChange
-        }
+          onChange: this.onSelectChange,
+        },
       },
-      optionAlertShow: false
+      optionAlertShow: false,
     }
   },
-  created () {
+  created() {
     this.tableOption()
     this.delFlagMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.DELFLAG)
     this.yesNoMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.YES_NO)
     this.positionTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBPOSITION_TYPE)
   },
   methods: {
-    tableOption () {
+    tableOption() {
       this.setTree()
       if (!this.optionAlertShow) {
         this.options = {
-          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          alert: {
+            show: true,
+            clear: () => {
+              this.selectedRowKeys = []
+            },
+          },
           rowSelection: {
             selectedRowKeys: this.selectedRowKeys,
             onChange: this.onSelectChange,
-            getCheckboxProps: record => ({
+            getCheckboxProps: (record) => ({
               props: {
                 disabled: false,
-                name: record.id
-              }
-            })
-          }
+                name: record.id,
+              },
+            }),
+          },
         }
         this.optionAlertShow = true
       } else {
         this.options = {
           alert: false,
-          rowSelection: null
+          rowSelection: null,
         }
         this.optionAlertShow = false
       }
     },
-    batchDelete (id) {
+    batchDelete(id) {
       let ids = []
       if (this.BaseTool.String.isBlank(id)) {
         const length = this.selectedRows.length
@@ -258,59 +256,59 @@ export default {
           this.$message.info('请选择要删除的记录')
           return
         }
-        ids = this.selectedRows.map(item => item.id)
+        ids = this.selectedRows.map((item) => item.id)
       } else {
         ids = [id]
       }
-      deleteSbPositions(ids).then(res => {
+      deleteSbPositions(ids).then((res) => {
         this.$message.info('删除成功')
         this.handleOk()
         this.$refs.table.clearSelected()
       })
     },
-    handleEdit (record) {
-      fetchSbPosition({ id: record.id }).then(res => {
+    handleEdit(record) {
+      fetchSbPosition({ id: record.id }).then((res) => {
         const modal = this.$refs.baseModal
         modal.base(res.data)
       })
     },
-    handleView (record) {
-      fetchSbPosition({ id: record.id }).then(res => {
+    handleView(record) {
+      fetchSbPosition({ id: record.id }).then((res) => {
         const modal = this.$refs.detailModal
         modal.base(res.data)
       })
     },
-    handleOk () {
+    handleOk() {
       this.setTree()
       this.$refs.table.refresh()
     },
-    onSelectChange (selectedRowKeys, selectedRows) {
+    onSelectChange(selectedRowKeys, selectedRows) {
       this.selectedRowKeys = selectedRowKeys
       this.selectedRows = selectedRows
     },
-    resetSearchForm () {
+    resetSearchForm() {
       this.queryParam = {
         opcFlag: this.opcFlag,
-        lightFlag: this.lightFlag
+        lightFlag: this.lightFlag,
       }
       this.$refs.table.refresh(true)
     },
-    doExport () {
+    doExport() {
       const parameter = {
-        ...this.queryParam
+        ...this.queryParam,
       }
-      exportSbPosition(parameter).then(file => {
+      exportSbPosition(parameter).then((file) => {
         this.BaseTool.UPLOAD.downLoadExportExcel(file)
       })
     },
-    handleCopy (record) {
-      fetchSbPosition({ id: record.id }).then(res => {
+    handleCopy(record) {
+      fetchSbPosition({ id: record.id }).then((res) => {
         const modal = this.$refs.baseModal
         res.data.id = null
         modal.base(res.data)
       })
     },
-    handleSetting (position) {
+    handleSetting(position) {
       const a = document.createElement('a')
       a.href = '/opc?line=' + position.id
       a.target = '_blank'
@@ -319,12 +317,12 @@ export default {
     /**
      * 设置位置树
      */
-    setTree () {
-      getSbPositionTree({}).then(res => {
+    setTree() {
+      getSbPositionTree({}).then((res) => {
         console.log(res.data)
         this.treeData = res.data
       })
-    }
-  }
+    },
+  },
 }
 </script>