Browse Source

建筑物

guarantee-lsq 1 year ago
parent
commit
68cff8728c

+ 1 - 0
src/router/generator-platform-routers.js

@@ -408,6 +408,7 @@ const constantRouterComponents = {
   'PreparationReport': () => import('@/views/preparation/report/PreparationReport'),
   'PreparationReportPie': () => import('@/views/preparation/report/PreparationReportPie'),
   'PreparationsPosition': () => import('@/views/preparation/report/PreparationsPosition'),
+  'Building': () => import('@/views/preparation/preparation/Building'),
   // 防雷检测
   'Light': () => import('@/views/light/light/Light'),
   'LightWaitCheck': () => import('@/views/light/light/LightWaitCheck'),

+ 1 - 0
src/views/firm/producer/FirmProducer.vue

@@ -78,6 +78,7 @@ export default {
     return {
       // 查询参数
       queryParam: {
+        parentType: 1
       },
       levelMap: {},
       typeMap: {},

+ 4 - 1
src/views/firm/producer/modules/BaseForm.vue

@@ -10,6 +10,7 @@
 
       <a-form-item v-show="false" >
         <a-input v-decorator="['id']" type="hidden"/>
+        <a-input v-decorator="['parentType']" type="hidden"/>
       </a-form-item>
 
       <a-form-item
@@ -175,7 +176,8 @@ export default {
           'address',
           'sort',
           'delFlag',
-          'remark'
+          'remark',
+          'parentType'
         ])))
       })
     },
@@ -188,6 +190,7 @@ export default {
           return
         }
         if (this.BaseTool.String.isBlank(values.id)) {
+          values.parentType = 1
           addFirmProducer(values)
             .then(() => {
               this.handleCancel(values)

+ 215 - 0
src/views/preparation/preparation/Building.vue

@@ -0,0 +1,215 @@
+<template>
+  <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.name" placeholder="请输建筑物名称"/>
+            </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;">
+      <a-button type="primary" icon="plus" @click="$refs.buildingBaseModal.base()">建筑物</a-button>
+<!--      <a-button style="margin-left: 8px" v-if="$auth('firm-producers-export')" type="primary" icon="download" @click="doExport">导出</a-button>-->
+<!--      <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('firm-producers-del')">
+        <a-menu slot="overlay">
+          <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
+            <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
+          </a-popconfirm>
+        </a-menu>
+        <a-button style="margin-left: 8px">
+          批量操作 <a-icon type="down" />
+        </a-button>
+      </a-dropdown>-->
+    </div>
+
+    <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>-->
+          <a-divider type="vertical" />
+          <a @click="handleEdit(record)">修改</a>
+          <a-divider type="vertical" />
+          <a-popconfirm title="是否要删除该条数据?" @confirm="batchDelete(record.id)">
+            <a>删除</a>
+          </a-popconfirm>
+        </template>
+      </span>
+    </s-table>
+    <building-base-form ref="buildingBaseModal" @ok="handleOk"/>
+  </a-card>
+</template>
+
+<script>
+import { STable, Ellipsis } from '@/components'
+import BuildingBaseForm from './modules/BuildingBaseForm'
+import { getFirmProducerPage, deleteFirmProducers, fetchFirmProducer, exportFirmProducer } from '@/api/firm/producer'
+
+export default {
+  name: 'Building',
+  components: {
+    STable,
+    Ellipsis,
+    BuildingBaseForm
+  },
+  data () {
+    return {
+      // 查询参数
+      queryParam: {
+        parentType: 2
+      },
+      // 表头
+      columns: [
+        {
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
+          }
+        },
+        {
+          title: '建筑物',
+          dataIndex: 'name'
+        },
+        {
+          title: '添加人',
+          dataIndex: 'createdUserName'
+        },
+        {
+          title: '添加时间',
+          dataIndex: 'createdTime'
+        },
+        {
+          title: '备注',
+          dataIndex: 'remark'
+        },
+        {
+          title: '操作',
+          key: 'action',
+          width: '200px',
+          align: 'center',
+          scopedSlots: { customRender: 'action' }
+        }
+      ],
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          dataScope: {
+            sortBy: 'desc',
+            sortName: 'created_time'
+          }
+        }
+        return getFirmProducerPage(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
+    }
+  },
+  created () {
+    this.tableOption()
+  },
+  methods: {
+    tableOption () {
+      if (!this.optionAlertShow) {
+        this.options = {
+          alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+          rowSelection: {
+            selectedRowKeys: this.selectedRowKeys,
+            onChange: this.onSelectChange,
+            getCheckboxProps: record => ({
+              props: {
+                disabled: false,
+                name: record.id
+              }
+            })
+          }
+        }
+        this.optionAlertShow = true
+      } else {
+        this.options = {
+          alert: false,
+          rowSelection: null
+        }
+        this.optionAlertShow = false
+      }
+    },
+    batchDelete (id) {
+      let ids = []
+      if (this.BaseTool.String.isBlank(id)) {
+        const length = this.selectedRows.length
+        if (length === 0) {
+          this.$message.info('请选择要删除的记录')
+          return
+        }
+        ids = this.selectedRows.map(item => item.id)
+      } else {
+        ids = [id]
+      }
+      deleteFirmProducers(ids).then(res => {
+        this.$message.info('删除成功')
+        this.handleOk()
+        this.$refs.table.clearSelected()
+      })
+    },
+    handleEdit (record) {
+      fetchFirmProducer({ id: record.id }).then(res => {
+        const modal = this.$refs.buildingBaseModal
+        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)
+    },
+    doExport () {
+      const parameter = {
+        ...this.queryParam
+      }
+      exportFirmProducer(parameter).then(file => {
+        this.BaseTool.UPLOAD.downLoadExportExcel(file)
+      })
+    }
+  }
+}
+</script>

+ 124 - 0
src/views/preparation/preparation/modules/BuildingBaseForm.vue

@@ -0,0 +1,124 @@
+<template>
+  <a-modal
+    :title="modalTitle"
+    :width="800"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+
+      <a-form-item v-show="false" >
+        <a-input v-decorator="['id']" type="hidden"/>
+        <a-input v-decorator="['parentType']" type="hidden"/>
+      </a-form-item>
+
+      <a-form-item
+        label="建筑物名称"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input
+          v-decorator="['name', {rules: [{required: true, message: '名称不能为空'}]}]" />
+      </a-form-item>
+      <a-form-item
+        label="排序"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input-number
+          style="width: 100%"
+          :min="1"
+          v-decorator="['sort']" />
+      </a-form-item>
+      <a-form-item
+        label="备注"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-input
+          v-decorator="['remark']" />
+      </a-form-item>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { addFirmProducer, updateFirmProducer } from '@/api/firm/producer'
+
+export default {
+  name: 'BaseSbProducer',
+  data () {
+    return {
+      confirmLoading: false,
+      modalTitle: null,
+      form: this.$form.createForm(this),
+      visible: false
+    }
+  },
+  props: {
+  },
+  created () {
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      // 如果是空标识添加
+      if (this.BaseTool.Object.isBlank(record)) {
+        this.modalTitle = '添加建筑物'
+        return
+      }
+      this.modalTitle = '编辑建筑物'
+      const { form: { setFieldsValue } } = this
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id',
+          'name',
+          'sort',
+          'remark',
+          'parentType'
+        ])))
+      })
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        if (this.BaseTool.String.isBlank(values.id)) {
+          values.parentType = 2
+          addFirmProducer(values)
+            .then(() => {
+              this.handleCancel(values)
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        } else {
+          updateFirmProducer(values)
+            .then(() => {
+              this.handleCancel(values)
+            }).catch(() => {
+              this.confirmLoading = false
+            })
+        }
+      })
+    },
+    handleCancel (values) {
+      this.visible = false
+      this.confirmLoading = false
+      this.form.resetFields()
+      if (this.BaseTool.Object.isNotBlank(values)) {
+        this.$emit('ok', values)
+      }
+    }
+
+  }
+}
+</script>