Browse Source

维修配件优化2

guarantee-lsq 2 years ago
parent
commit
b3deb41a38

+ 12 - 0
src/api/sqarepartmanage/sparepartused.js

@@ -35,6 +35,18 @@ export function addSparePartUsed (parameter) {
   })
 }
 
+export function addInitialized (parameter) {
+  return axios({
+    url: '/sqarepartmanage/spare-part-used',
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
+
 /**
  * update func
  * parameter: { }

+ 40 - 23
src/views/repair/application-form/modules/DetailRepair.vue

@@ -112,12 +112,17 @@
           <div class="table-operator" v-if="$auth('repair-application-forms-finish')">
             <a-button type="primary" @click="handleSpareStoreSelect(1)">
               <a-icon type="plus"/>
-              专用备件
+              更换专用备件
             </a-button>
             <a-divider type="vertical" />
             <a-button type="primary" @click="handleSpareStoreSelect(0)">
               <a-icon type="plus"/>
-              常用备件
+              更换常用备件
+            </a-button>
+            <a-divider type="vertical" />
+            <a-button type="primary" @click="handleAddSpare()">
+              <a-icon type="plus"/>
+              添加专用备件
             </a-button>
           </div>
           <a-table
@@ -128,14 +133,14 @@
             rowKey="id">
             <span slot="actionSpare" slot-scope="record">
               <template>
-<!--                <a v-if="$auth('repair-application-forms-finish')" @click="handleEditSpare(record)">修改</a>-->
-                <a-popconfirm v-if="$auth('repair-application-forms-finish')" title="是否替换该备件?" @confirm="updateSpare(record)">
+                <a v-if="$auth('repair-application-forms-finish') && record.isSpecial === 0" @click="handleEditSpare(record)">修改</a>
+<!--                <a-popconfirm v-if="$auth('repair-application-forms-finish')" title="是否替换该备件?" @confirm="updateSpare(record)">
                   <a>更换备件</a>
-                </a-popconfirm>
-<!--                <a-divider type="vertical" />
+                </a-popconfirm>-->
+                <a-divider type="vertical" />
                 <a-popconfirm v-if="$auth('repair-application-forms-finish')" title="是否要删除该条数据?" @confirm="batchDeleteSpare(record.id)">
                   <a>删除</a>
-                </a-popconfirm>-->
+                </a-popconfirm>
               </template>
             </span>
           </a-table>
@@ -246,7 +251,7 @@ import RepairProjectSelectModal from '@/views/repair/repairproject/modules/Repai
 import { queryRepairProject, fetchRepairProject, deleteRepairProjects } from '@/api/repair/repairproject'
 import SparePartInfoSelectModal from '@/views/sqarepartmanage/sparepartinfo/modules/SparePartInfoSelectModal'
 import BaseFormForRepair from '@/views/sqarepartmanage/sparepartused/modules/BaseFormForRepair'
-import { selectSparePartUsedListBySbId, addSparePartUsedBatch, deleteSparePartUseds, updateSpare } from '@/api/sqarepartmanage/sparepartused'
+import { selectSparePartUsedListBySbId, addSparePartUsedBatch, deleteSparePartUseds, updateSpare, selectSparePartUsedListByRepairId } from '@/api/sqarepartmanage/sparepartused'
 import SpareStoreSelectModal from '@/views/store/sparestore/modules/SpareStoreSelectModal'
 import BaseTool from '@/utils/tool'
 import FeeBaseForm from '@/views/repair/fee/modules/BaseForm'
@@ -532,12 +537,12 @@ export default {
       queryRepairProject({ repairId: this.model.id }).then(res => {
         this.data = res.data
       })
-      /*selectSparePartUsedListByRepairId({ id: this.model.id }).then(res => {
-        this.dataSpare = res.data
-      })*/
-      selectSparePartUsedListBySbId({ id: this.model.sbId }).then(res => {
+      selectSparePartUsedListByRepairId({ id: this.model.id }).then(res => {
         this.dataSpare = res.data
       })
+      /*selectSparePartUsedListBySbId({ id: this.model.sbId }).then(res => {
+        this.dataSpare = res.data
+      })*/
       queryRepairFee({ repairId: this.model.id }).then(res => {
         this.dataFee = res.data
       })
@@ -560,6 +565,11 @@ export default {
       this.confirmLoading = false
       this.$emit('ok')
     },
+    handleAddSpare () {
+      const id = this.model.sbId
+      const routeUrl = this.$router.resolve({ path: '/spare/used/record', query: { id: id } })
+      window.open(routeUrl.href, '_blank')
+    },
     receive () {
       this.model.status = this.DictCache.VALUE.REPAIR_APPLICATION_FORM_STATUS.PROCESSING
       receive(this.model).then(() => {
@@ -782,23 +792,30 @@ export default {
     },
     handleSpareStoreSelect (isSpecial) {
       //this.$refs.spareStoreSelectModal.base({}, { storeId: this.storeId, isSpecial: isSpecial, sbId: this.model.sbId })
-      this.$refs.spareStoreSelectModal.base({}, { storeId: this.storeId, isSpecial: isSpecial })
+      this.$refs.spareStoreSelectModal.base({}, { repairFlag: 1, storeId: this.storeId, isSpecial: isSpecial, sbId: this.model.sbId })
     },
     handleSpareStoreSelected (record, keys, rows) {
       const data = []
       for (let i = 0; i < rows.length; i++) {
         data.push({ isSpecial: record.isSpecial, sbId: this.model.sbId, spareId: rows[i].spareId, repairId: this.model.id, num: 1, price: rows[i].price, totalPrice: rows[i].price, startDate: BaseTool.Date.formatter(new Date(), BaseTool.Date.PICKER_NORM_DATE_PATTERN) })
       }
-      addSparePartUsedBatch(data)
-        .then((response) => {
-          this.$message.info('成功添加个数:' + response.data[0] + ',添加失败个数:' + response.data[1])
-          if (response.data[1] > 0) {
-            this.$message.error('失败原因:该备件已存在更换列表,请点击更换备件')
-          }
-          this.handleOk()
-        }).catch(() => {
-          this.confirmLoading = false
-        })
+      if (record.isSpecial === 1) {
+        updateSpare(data)
+          .then((response) => {
+            this.$message.info('更换成功')
+            this.handleOk()
+          }).catch(() => {
+            this.confirmLoading = false
+          })
+      } else {
+        addSparePartUsedBatch(data)
+          .then((response) => {
+            this.$message.info('更换成功')
+            this.handleOk()
+          }).catch(() => {
+            this.confirmLoading = false
+          })
+      }
     },
     onSelectChange (selectedRowKeys) {
       console.log('selectedRowKeys changed: ', selectedRowKeys)

+ 37 - 18
src/views/sqarepartmanage/sparepartused/modules/SparePartUsedSelectTable.vue

@@ -1,5 +1,5 @@
 <template>
-    <a-card :bordered="false">
+    <a-card :bordered="false" >
       <div class="table-page-search-wrapper">
         <a-form layout="inline">
           <a-row :gutter="48">
@@ -19,9 +19,7 @@
       </div>
 
       <div class="table-operator" >
-        <a-button type="primary" icon="plus" @click="handleSpareStoreSelect(1)">专用备件</a-button>
-        <a-divider type="vertical" />
-        <a-button type="primary" icon="plus" @click="handleSpareStoreSelect(0)">常用备件</a-button>
+        <a-button type="primary" icon="plus" @click="handleAddSpecial()">新增专用备件</a-button>
         <a-button v-if="type == 2" type="primary" icon="plus" @click="handleAdd()">新增</a-button>
         <a-dropdown v-action:edit v-if=" type == 2 && selectedRowKeys.length > 0">
           <a-menu slot="overlay">
@@ -65,6 +63,7 @@
       </s-table>
       <base-form ref="baseModal" @ok="handleOk"/>
       <spare-store-select-modal ref="spareStoreSelectModal" @selected="handleSpareStoreSelected"/>
+      <special-spare-base-form ref='specialSpareBaseForm' @ok='handleOk'/>
       <detail ref="detailModal"/>
       <template slot="footer">
         <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">取消</a-button>
@@ -77,13 +76,13 @@
 import { STable, Ellipsis } from '@/components'
 import BaseForm from './BaseForm'
 import Detail from './Detail'
+import SpecialSpareBaseForm from './SpecialSpareBaseForm'
 import SpareStoreSelectModal from '@/views/store/sparestore/modules/SpareStoreSelectModal'
 import {
   getSparePartUsedPage,
   deleteSparePartUseds,
   updateSparePartUsed,
   fetchSparePartUsed,
-  exportSparePartUsed,
   addSparePartUsedBatch
 } from '@/api/sqarepartmanage/sparepartused'
 import BaseTool from '@/utils/tool'
@@ -95,7 +94,8 @@ export default {
     Ellipsis,
     BaseForm,
     Detail,
-    SpareStoreSelectModal
+    SpareStoreSelectModal,
+    SpecialSpareBaseForm
   },
   props: {
     type: {
@@ -126,7 +126,7 @@ export default {
       confirmLoading: false,
       mdl: {},
       modalTitle: null,
-      visible: false,
+      visible: true,
       record: null,
       storeId: null,
       sbId: null,
@@ -143,50 +143,64 @@ export default {
             return `${(this.$refs.table.localPagination.current - 1) * this.$refs.table.localPagination.pageSize + index + 1}`
           }
         },
+        {
+          title: '备件名称',
+          dataIndex: 'spareId',
+          checked: true,
+          customRender: (text, record, index) => {
+            return record.spareName
+          }
+        },
         {
           title: '设备名称',
           dataIndex: 'sbId',
+          checked: true,
           customRender: (text, record, index) => {
             return record.sbName
           }
         },
-        //{
-         // title: '部件名称',
-          //dataIndex: 'partId',
-          //customRender: (text, record, index) => {
-          //  return record.partName
-         // }
-        //},
         {
-          title: '备件名称',
-          dataIndex: 'spareId',
+          title: '设备部位',
+          dataIndex: 'partId',
+          checked: true,
           customRender: (text, record, index) => {
-            return record.spareName
+            return record.partName
           }
         },
+        {
+          title: '备注',
+          checked: true,
+          dataIndex: 'remark'
+        },
         {
           title: '投用日期',
+          checked: true,
           dataIndex: 'startDate'
         },
         {
           title: '预计报废日期',
+          checked: true,
           dataIndex: 'changeDate'
         },
         {
           title: '实际更换日期',
+          checked: true,
           dataIndex: 'realChangeDate'
         },
         {
           title: '使用状态',
           dataIndex: 'status',
+          checked: true,
+          fixed: 'right',
           scopedSlots: { customRender: 'status' }
-
         },
         {
           title: '操作',
           key: 'action',
           width: '200px',
           align: 'center',
+          checked: true,
+          fixed: 'right',
           scopedSlots: { customRender: 'action' }
         }
       ],
@@ -335,6 +349,11 @@ export default {
           this.confirmLoading = false
         })
     },
+    handleAddSpecial () {
+      const params = { sbId: this.sbId }
+      this.visible = false
+      this.$refs.specialSpareBaseForm.base(params)
+    },
     handleAdd () {
       this.$refs.baseModal.base(null,{sbId:this.tableParams.id, modelId:this.tableParams.modelId, repairId:this.tableParams.repairId})
     },

+ 230 - 0
src/views/sqarepartmanage/sparepartused/modules/SpecialSpareBaseForm.vue

@@ -0,0 +1,230 @@
+<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="['sbId']" type='hidden' />
+        <a-input v-decorator="['spareId']" type='hidden' />
+        <a-input v-decorator="['partId']" type='hidden' />
+        <a-input v-decorator="['isSpecial']" type='hidden' />
+        <a-input v-decorator="['num']" type='hidden' />
+        <a-input v-decorator="['price']" type='hidden' />
+        <a-input v-decorator="['totalPrice']" type='hidden' />
+        <a-input v-decorator="['startDate']" type='hidden' />
+      </a-form-item>
+<!--      <a-form-item
+        label="备件"
+        :labelCol="BaseTool.Constant.labelCol"
+        :wrapperCol="BaseTool.Constant.wrapperCol"
+        disable
+      >
+        <a-input
+          style='width: 70%'
+          disabled
+          v-decorator="['spareInfoName', {rules: [{required: true, message: '备件不能为空'}]}]" />
+        <a-button style='width: 30%' type='primary' @click='handleSpareStoreSelect'>选择备件</a-button>
+      </a-form-item>-->
+      <row-list :col='1'>
+        <row-item>
+          <a-form-item
+            label='选择备件'
+            :labelCol='BaseTool.Constant.labelCol'
+            :wrapperCol='BaseTool.Constant.wrapperCol'
+          >
+            <a-input
+              style='width: 70%'
+              disabled
+              v-decorator="['spareInfoName', {rules: [{required: true, message: '备件不能为空'}]}]" />
+            <a-button style='width: 30%' type='primary' @click='handleSpareStoreSelect'>选择</a-button>
+          </a-form-item>
+        </row-item>
+        <row-item>
+          <a-form-item
+            label='设备位置'
+            :labelCol='BaseTool.Constant.labelCol'
+            :wrapperCol='BaseTool.Constant.wrapperCol'
+          >
+            <a-input
+              style='width: 70%'
+              disabled
+              v-decorator="['partName']" />
+            <a-button style='width: 30%' type='primary' @click='partInfoHandleSelect'>选择</a-button>
+          </a-form-item>
+        </row-item>
+        <row-item>
+          <a-form-item
+            label="预计报废日期"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-date-picker
+              style="width: 100%"
+              :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
+              v-decorator="['changeDate', {rules: [{required: true, message: '预计报废日期不能为空'}]}]" />
+          </a-form-item>
+        </row-item>
+        <row-item>
+          <a-form-item
+            label='备注'
+            :labelCol='BaseTool.Constant.labelCol'
+            :wrapperCol='BaseTool.Constant.wrapperCol'
+          >
+            <a-input
+              v-decorator="['remark']" />
+          </a-form-item>
+        </row-item>
+      </row-list>
+    </a-form>
+    <part-info-select-modal ref='partInfoSelectModal' @selected='partInfoHandleSelected' />
+    <spare-store-select-modal ref="spareStoreSelectModal" @selected="handleSpareStoreSelected"/>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+    </template>
+  </a-modal>
+</template>
+
+<script>
+import pick from 'lodash.pick'
+import { stringify } from 'qs'
+import { addInitialized } from '@/api/sqarepartmanage/sparepartused'
+import PartInfoSelectModal from '@/views/part/info/modules/PartInfoSelectModal'
+import SpareStoreSelectModal from '@/views/store/sparestore/modules/SpareStoreSelectModal'
+import BaseTool from '@/utils/tool'
+export default {
+  name: 'SpecialSpareBaseForm',
+  components: {
+    PartInfoSelectModal,
+    SpareStoreSelectModal
+  },
+  data () {
+    return {
+      confirmLoading: false,
+      modalTitle: null,
+      form: this.$form.createForm(this),
+      visible: false,
+      // 下拉框map
+      statusMap: {},
+      data: {}
+    }
+  },
+  props: {},
+  created () {
+    // 下拉框map
+    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.PURCHASE_STORE_FORM_STATUS)
+  },
+  methods: {
+    base (record) {
+      this.visible = true
+      this.sbId = record.sbId
+      this.modalTitle = '添加'
+      // 如果是空标识添加
+      /*if (this.BaseTool.Object.isBlank(record)) {
+        this.modalTitle = '添加'
+        return
+      }
+      this.modalTitle = '编辑'
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign(pick(record, [
+          'id',
+          'sbId',
+          'changeDate',
+          'isSpecial',
+          'spareId',
+          'num',
+          'partName',
+          'partId',
+          'spareInfoName',
+          'price',
+          'totalPrice',
+          'startDate'
+        ])))
+      })*/
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      const then = this
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        // 日期处理
+        values.changeDate = this.BaseTool.Date.formatter(values.changeDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+        if (this.BaseTool.String.isBlank(values.id)) {
+          addInitialized(values)
+            .then(() => {
+              this.confirmLoading = false
+              this.visible = false
+              then.$emit('ok')
+            }).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)
+      } else {
+        this.$emit('ok')
+      }
+    },
+    // 部位选择
+    partInfoHandleSelect () {
+      const params = { sbId: this.sbId }
+      this.$refs.partInfoSelectModal.base(params)
+    },
+    partInfoHandleSelected (keys, rows) {
+      const [key] = keys
+      const [row] = rows
+      const { form: { setFieldsValue } } = this
+      // 日期处理
+      this.$nextTick(() => {
+        setFieldsValue(Object.assign({
+          'partId': key,
+          'partName': row.name
+        }))
+      })
+    },
+    // 备件选择
+    handleSpareStoreSelect () {
+      this.$refs.spareStoreSelectModal.base({}, { repairFlag: 2, isSpecial: 1 })
+    },
+    handleSpareStoreSelected (record, keys, rows) {
+      const data = {}
+      for (let i = 0; i < rows.length; i++) {
+        data.isSpecial = 1
+        data.sbId = this.sbId
+        data.spareId = rows[i].spareId
+        data.num = 1
+        data.price = rows[i].price
+        data.totalPrice = data.price
+        data.startDate = BaseTool.Date.formatter(new Date(), BaseTool.Date.PICKER_NORM_DATE_PATTERN)
+        data.spareInfoName = rows[i].spareName
+      }
+      this.form.setFieldsValue({
+        'spareInfoName': data.spareInfoName,
+        'sbId': this.sbId,
+        'isSpecial': 1,
+        'spareId': data.spareId,
+        'num': 1,
+        'price': data.price,
+        'totalPrice': data.totalPrice,
+        'startDate': data.startDate
+      })
+    }
+  }
+}
+</script>