Przeglądaj źródła

建筑物优化

guarantee-lsq 1 rok temu
rodzic
commit
e7f5cb4f60

+ 110 - 0
src/api/preparation/building.js

@@ -0,0 +1,110 @@
+import { axios } from '@/utils/request'
+import { stringify } from 'qs'
+
+/**
+ * page func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function getBuildingPage (parameter) {
+  return axios({
+    url: '/preparation/building/page?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * add func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function addBuilding (parameter) {
+  return axios({
+    url: '/preparation/building',
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
+
+/**
+ * update func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function updateBuilding (parameter) {
+  return axios({
+    url: '/preparation/building/' + parameter.id,
+    method: 'PUT',
+    data: parameter
+  })
+}
+
+/**
+ * fetch single func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function fetchBuilding (parameter) {
+  return axios({
+    url: '/preparation/building/' + parameter.id,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function queryBuilding (parameter) {
+  return axios({
+    url: '/preparation/building/longYan?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * delete batch func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function deleteBuildings (parameter) {
+  return axios({
+    url: '/preparation/building',
+    method: 'DELETE',
+    data: parameter
+  })
+}
+
+/**
+ * delete single func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function deleteBuilding (parameter) {
+  return axios({
+    url: '/preparation/building/' + parameter.id,
+    method: 'DELETE',
+    data: parameter
+  })
+}

+ 44 - 23
src/views/preparation/preparation/Building.vue

@@ -5,7 +5,7 @@
         <a-row :gutter="48">
           <a-col :md="8" :sm="24">
             <a-form-item label="关键字">
-              <a-input v-model.trim="queryParam.name" placeholder="请输建筑物名称"/>
+              <a-input v-model.trim="queryParam.name" placeholder="请输建筑物"/>
             </a-form-item>
           </a-col>
           <a-col :md="8 || 24" :sm="24">
@@ -19,9 +19,9 @@
     </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-button  type="primary" icon="plus" @click="addBaseForm()">建筑物</a-button>
+<!--      <a-button style="margin-left: 8px"  type="primary" icon="download" @click="doExport">导出</a-button>
+      <a-dropdown v-action:edit v-if="selectedRowKeys.length > 0 && $auth('sb-positions-del')">
         <a-menu slot="overlay">
           <a-popconfirm title="是否要删除所选数据?" @confirm="batchDelete()">
             <a-menu-item key="1"><a-icon type="delete" /><a>删除</a></a-menu-item>
@@ -47,11 +47,15 @@
         <template>
 <!--          <a @click="handleView(record)">查看</a>
           <a-divider type="vertical" />-->
-          <a @click="handleEdit(record)">修改</a>
+          <a v-if="$auth('sb-positions-edit')" @click="handleEdit(record)">修改</a>
           <a-divider type="vertical" />
           <a-popconfirm title="是否要删除该条数据?" @confirm="batchDelete(record.id)">
             <a>删除</a>
           </a-popconfirm>
+<!--          <a-divider type="vertical" />
+          <a @click="handleCopy(record)">复制</a>
+          <a-divider type="vertical" />
+          <a @click="handleSetting(record)">删除</a>-->
         </template>
       </span>
     </s-table>
@@ -62,7 +66,7 @@
 <script>
 import { STable, Ellipsis } from '@/components'
 import BuildingBaseForm from './modules/BuildingBaseForm'
-import { getFirmProducerPage, deleteFirmProducers, fetchFirmProducer, exportFirmProducer } from '@/api/firm/producer'
+import { getBuildingPage, queryBuilding, deleteBuildings, fetchBuilding } from '@/api/preparation/building'
 
 export default {
   name: 'Building',
@@ -74,9 +78,10 @@ export default {
   data () {
     return {
       // 查询参数
+      companyMap: [],
       queryParam: {
-        parentType: 2
       },
+      treeData: [],
       // 表头
       columns: [
         {
@@ -91,13 +96,24 @@ export default {
           dataIndex: 'name'
         },
         {
-          title: '添加人',
+          title: '上层建筑物',
+          dataIndex: 'parentId',
+          customRender: (text, record, index) => {
+            return record.parentName
+          }
+        },
+        {
+          title: '创建人',
           dataIndex: 'createdUserName'
         },
         {
-          title: '添加时间',
+          title: '创建日期',
           dataIndex: 'createdTime'
         },
+        {
+          title: '排序',
+          dataIndex: 'sort'
+        },
         {
           title: '备注',
           dataIndex: 'remark'
@@ -116,11 +132,11 @@ export default {
           ...parameter,
           ...this.queryParam,
           dataScope: {
-            sortBy: 'desc',
-            sortName: 'created_time'
+            sortBy: 'asc',
+            sortName: 'sort'
           }
         }
-        return getFirmProducerPage(Object.assign(parameter, this.queryParam))
+        return getBuildingPage(Object.assign(parameter, this.queryParam))
           .then(res => {
             return res.data
           })
@@ -140,8 +156,19 @@ export default {
   },
   created () {
     this.tableOption()
+    this.getData('')
   },
   methods: {
+    getData (parentId) {
+      const params = { parentId: parentId }
+      queryBuilding(params).then(res => {
+        this.companyMap = res.data
+      })
+    },
+    addBaseForm () {
+      const modal = this.$refs.buildingBaseModal
+      modal.base(null, this.companyMap)
+    },
     tableOption () {
       if (!this.optionAlertShow) {
         this.options = {
@@ -178,16 +205,16 @@ export default {
       } else {
         ids = [id]
       }
-      deleteFirmProducers(ids).then(res => {
+      deleteBuildings(ids).then(res => {
         this.$message.info('删除成功')
         this.handleOk()
         this.$refs.table.clearSelected()
       })
     },
     handleEdit (record) {
-      fetchFirmProducer({ id: record.id }).then(res => {
+      fetchBuilding({ id: record.id }).then(res => {
         const modal = this.$refs.buildingBaseModal
-        modal.base(res.data)
+        modal.base(res.data, this.companyMap)
       })
     },
     handleOk () {
@@ -199,16 +226,10 @@ export default {
     },
     resetSearchForm () {
       this.queryParam = {
+        opcFlag: this.opcFlag,
+        lightFlag: this.lightFlag
       }
       this.$refs.table.refresh(true)
-    },
-    doExport () {
-      const parameter = {
-        ...this.queryParam
-      }
-      exportFirmProducer(parameter).then(file => {
-        this.BaseTool.UPLOAD.downLoadExportExcel(file)
-      })
     }
   }
 }

+ 12 - 6
src/views/preparation/preparation/Preparation.vue

@@ -94,6 +94,7 @@ import BaseForm from './modules/BaseForm'
 import Detail from './modules/Detail'
 import { getPreparationPage, deletePreparations, fetchPreparation, exportPreparation } from '@/api/preparation/preparation'
 import TicketForm from './modules/TicketForm'
+import { queryBuilding } from '@/api/preparation/building'
 
 export default {
   name: 'PreparationList',
@@ -116,6 +117,7 @@ export default {
       visible: true,
       statusMap: {},
       preparationMap: {},
+      companyList: [],
       // 查询参数
       queryParam: {
         searchType: this.searchType
@@ -141,10 +143,7 @@ export default {
           title: '公司',
           checked: true,
           width: '200',
-          dataIndex: 'parentPositionId',
-          customRender: (text, record, index) => {
-            return this.BaseTool.Object.getField(this.preparationMap, text)
-          }
+          dataIndex: 'parentPositionName'
         },
         {
           title: '建筑物',
@@ -227,8 +226,15 @@ export default {
     this.tableOption()
     this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.REPAIR_PREPARATION_STATUS)
     this.preparationMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PREPARATION_PARENT)
+    this.getData('')
   },
   methods: {
+    getData (parentId) {
+      const params = { parentId: parentId }
+      queryBuilding(params).then(res => {
+        this.companyList = res.data
+      })
+    },
     tableOption () {
       if (!this.optionAlertShow) {
         this.options = {
@@ -273,13 +279,13 @@ export default {
     },
     handleAdd () {
       const modal = this.$refs.baseModal
-      modal.base()
+      modal.base(null, this.companyList)
     },
     handleEdit (record) {
       this.visible = false
       fetchPreparation({ id: record.id }).then(res => {
         const modal = this.$refs.baseModal
-        modal.base(res.data)
+        modal.base(res.data, this.companyList)
       })
     },
     handleView (record) {

+ 29 - 26
src/views/preparation/preparation/modules/BaseForm.vue

@@ -30,12 +30,12 @@
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-select v-decorator="['parentPositionId', {rules: [{required: true, message: '公司不能为空'}]}]" placeholder="请选择">
+            <a-select @change="handleCompanyList"  v-decorator="['parentPositionId']" placeholder="请选择">
               <a-select-option
-                v-for="(label,value) in preparationMap"
-                :key="value"
-                :label="label"
-                :value="value">{{ label }}
+                v-for="({id, name}) in companyList"
+                :key="id"
+                :label="name"
+                :value="id">{{ name }}
               </a-select-option>
             </a-select>
           </a-form-item>
@@ -46,17 +46,14 @@
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-tree-select
-              style="width: 100%"
-              :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
-              :treeData="sbPositionList"
-              :treeNodeFilterProp="'title'"
-              :replaceFields="{title:'name',value:'id'}"
-              :showSearch="true"
-              v-decorator="['positionId', {rules: [{required: true, message: '建筑物不能为空'}]}]"
-              placeholder="请选择"
-            >
-            </a-tree-select>
+            <a-select v-decorator="['positionId']" placeholder="请选择">
+              <a-select-option
+                v-for="({id, name}) in sbPositionList"
+                :key="id"
+                :label="name"
+                :value="id">{{ name }}
+              </a-select-option>
+            </a-select>
           </a-form-item>
         </row-item>
         <row-item>
@@ -170,9 +167,9 @@
 <script>
 import pick from 'lodash.pick'
 import { addPreparation, updatePreparation } from '@/api/preparation/preparation'
-import { getSbPositions2 } from '@/api/repair/application-form'
 import { queryUserByRoleSelfDeptName } from '@/api/upms/user'
 import { getDeptTreePreparation } from '@/api/upms/dept'
+import { queryBuilding } from '@/api/preparation/building'
 
 export default {
   name: 'BasePreparation',
@@ -185,18 +182,24 @@ export default {
       sbPositionList: [],
       verifyUserList: [],
       executeDeptList: {},
-      saveTitle: null
+      saveTitle: null,
+      companyList: []
       // 下拉框map
     }
   },
   props: {},
   created () {
     // 下拉框map
-    this.getSbPositions()
     this.getUserAndDept()
     this.preparationMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PREPARATION_PARENT)
   },
   methods: {
+    getData (parentId) {
+      const params = { parentId: parentId }
+      queryBuilding(params).then(res => {
+        this.sbPositionList = res.data
+      })
+    },
     getUserAndDept () {
       // 获取部门主管
       queryUserByRoleSelfDeptName({ roleName: 'DEPT_MANAGER' }).then(res => {
@@ -209,14 +212,17 @@ export default {
         this.executeDeptList = res.data
       })
     },
-    base (record) {
+    base (record, companyList) {
       this.visible = true
+      this.companyList = companyList
       // 如果是空标识添加
       if (this.BaseTool.Object.isBlank(record)) {
         this.modalTitle = '添加工单'
         this.saveTitle = '保存'
         return
       }
+      // 获取工单下的建筑物
+      this.getData(record.parentPositionId)
       this.modalTitle = '编辑工单'
       this.saveTitle = '提交审核'
       const { form: { setFieldsValue } } = this
@@ -251,12 +257,6 @@ export default {
         ])))
       })
     },
-    getSbPositions (parentId) {
-      getSbPositions2({ parentId }).then(res => {
-        console.log(res)
-        this.sbPositionList = res.data
-      })
-    },
     loadData (selectedOptions) {
       console.log(selectedOptions)
       const targetOption = selectedOptions[selectedOptions.length - 1]
@@ -300,6 +300,9 @@ export default {
       } else {
         this.$emit('ok')
       }
+    },
+    handleCompanyList (val) {
+      this.getData(val)
     }
   }
 }

+ 26 - 16
src/views/preparation/preparation/modules/BuildingBaseForm.vue

@@ -7,19 +7,30 @@
     @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: '名称不能为空'}]}]" />
+          v-decorator="['name', {rules: [{required: true, message: '建筑物名称不能为空'}]}]" />
+      </a-form-item>
+      <a-form-item
+        label="公司"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+      >
+        <a-select v-decorator="['parentId']" placeholder="请选择">
+          <a-select-option
+            v-for="({id, name}) in companyList"
+            :key="id"
+            :label="name"
+            :value="id">{{ name }}
+          </a-select-option>
+        </a-select>
       </a-form-item>
       <a-form-item
         label="排序"
@@ -29,7 +40,7 @@
         <a-input-number
           style="width: 100%"
           :min="1"
-          v-decorator="['sort']" />
+          v-decorator="['sort', {initialValue:1,rules: [{required: true, message: '排序不能为空'}]}]" />
       </a-form-item>
       <a-form-item
         label="备注"
@@ -48,16 +59,16 @@
 
 <script>
 import pick from 'lodash.pick'
-import { addFirmProducer, updateFirmProducer } from '@/api/firm/producer'
-
+import { addBuilding, updateBuilding } from '@/api/preparation/building'
 export default {
-  name: 'BaseSbProducer',
+  name: 'BaseSbPosition',
   data () {
     return {
       confirmLoading: false,
       modalTitle: null,
       form: this.$form.createForm(this),
-      visible: false
+      visible: false,
+      companyList: {}
     }
   },
   props: {
@@ -65,8 +76,9 @@ export default {
   created () {
   },
   methods: {
-    base (record) {
+    base (record, companyList) {
       this.visible = true
+      this.companyList = companyList
       // 如果是空标识添加
       if (this.BaseTool.Object.isBlank(record)) {
         this.modalTitle = '添加建筑物'
@@ -79,8 +91,8 @@ export default {
           'id',
           'name',
           'sort',
-          'remark',
-          'parentType'
+          'parentId',
+          'remark'
         ])))
       })
     },
@@ -93,15 +105,14 @@ export default {
           return
         }
         if (this.BaseTool.String.isBlank(values.id)) {
-          values.parentType = 2
-          addFirmProducer(values)
+          addBuilding(values)
             .then(() => {
               this.handleCancel(values)
             }).catch(() => {
               this.confirmLoading = false
             })
         } else {
-          updateFirmProducer(values)
+          updateBuilding(values)
             .then(() => {
               this.handleCancel(values)
             }).catch(() => {
@@ -118,7 +129,6 @@ export default {
         this.$emit('ok', values)
       }
     }
-
   }
 }
 </script>

+ 1 - 1
src/views/preparation/preparation/modules/Detail.vue

@@ -5,7 +5,7 @@
     <a-descriptions :column="3" bordered>
       <a-descriptions-item label="任务名称">{{ model.name }}</a-descriptions-item>
       <a-descriptions-item label="单据号">{{ model.no }}</a-descriptions-item>
-      <a-descriptions-item label="公司">{{ BaseTool.Object.getField(preparationMap,model.parentPositionId) }}</a-descriptions-item>
+      <a-descriptions-item label="公司">{{ model.companyName }}</a-descriptions-item>
       <a-descriptions-item label="申请人">{{ model.createdUserName }}</a-descriptions-item>
       <a-descriptions-item label="申请部门">{{ model.deptName }}</a-descriptions-item>
       <a-descriptions-item label="申请建筑物">{{ model.positionName }}</a-descriptions-item>