guarantee-lsq 2 vuotta sitten
vanhempi
commit
75fe679fd9

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

@@ -79,6 +79,18 @@ export function addSparePartUsedBatch (parameter) {
   })
 }
 
+export function addLongYanSparePartUsedBatch (parameter) {
+  return axios({
+    url: '/sqarepartmanage/spare-part-used/longyan/batch',
+    method: 'POST',
+    headers: {
+      'Accept': 'application/json',
+      'Content-Type': 'application/json;charset=UTF-8'
+    },
+    data: parameter
+  })
+}
+
 /**
  * fetch single func
  * parameter: { }
@@ -141,6 +153,16 @@ export function selectSparePartUsedListByRepairId (parameter) {
   })
 }
 
+export function selectLongYanListByRepairId (parameter) {
+  return axios({
+    url: '/sqarepartmanage/spare-part-used/repair/longyan/' + parameter.id,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
 /**
  * page func
  * parameter: { }

+ 10 - 0
src/api/store/sparestore.js

@@ -17,6 +17,16 @@ export function getSpareStorePage (parameter) {
   })
 }
 
+export function getSpareLongYanPage (parameter) {
+  return axios({
+    url: '/store/spare-stores/longyan/page?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
 /**
  * page func
  * parameter: { }

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

@@ -144,20 +144,20 @@
         <div class="main gutter-color" v-show="current == 4">
           <div class="title">备件清单</div>
           <div style="margin:20px;margin-left: 33%;" class="table-operator" v-if="$auth('repair-application-forms-finish')">
-            <a-button type="primary" @click="handleSpareStoreSelect(1)">
+            <a-button type="primary" @click="updateLongYanSpare(1)">
               <a-icon type="plus"/>
-              更换专用备件
+              更换关联备件
             </a-button>
             <a-divider type="vertical" />
-            <a-button type="primary" @click="handleSpareStoreSelect(0)">
+            <a-button type="primary" @click="updateLongYanSpare(0)">
               <a-icon type="plus"/>
               更换常用备件
             </a-button>
-            <a-divider type="vertical" />
+<!--            <a-divider type="vertical" />
             <a-button type="primary" @click="handleAddSpare()">
               <a-icon type="plus"/>
               添加专用备件
-            </a-button>
+            </a-button>-->
           </div>
           <a-table
             :data-source="dataSpare"
@@ -300,6 +300,7 @@
     <repair-record-form ref='repairRecordForm' @ok='handleRepairRecordOk' />
     <report-up-form ref='reportUpForm' @ok='handleOk' @okk='handleCancel' />
     <ticket-form ref='ticketForm' @ok='handleOk' />
+    <longYanSelectSpareForm ref='longYanSelectSpareForm' @ok="handleOk"/>
   </div>
 </template>
 
@@ -320,7 +321,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, selectSparePartUsedListByRepairId } from '@/api/sqarepartmanage/sparepartused'
+import { selectSparePartUsedListBySbId, addSparePartUsedBatch, deleteSparePartUseds, updateSpare, selectLongYanListByRepairId } 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'
@@ -345,6 +346,7 @@ import DetailCheckNew from './DetailCheckNew'
 import RepairRecordForm from './RepairRecordForm'
 import ReportUpForm from './ReportUpForm'
 import TicketForm from './TicketForm'
+import LongYanSelectSpareForm from './LongYanSelectSpareForm'
 const DetailListItem = DetailList.Item
 
 export default {
@@ -380,7 +382,8 @@ export default {
     DetailCheckNew,
     RepairRecordForm,
     ReportUpForm,
-    TicketForm
+    TicketForm,
+    LongYanSelectSpareForm
   },
   data () {
     return {
@@ -443,29 +446,26 @@ export default {
         },
         {
           title: '备件名称',
-          dataIndex: 'spareId',
-          customRender: (text, record, index) => {
-            return record.spareName
-          }
+          dataIndex: 'spareName'
         },
         {
-          title: '数量',
-          dataIndex: 'num'
+          title: '规格型号',
+          dataIndex: 'ggxh'
         },
         {
-          title: '价格',
-          dataIndex: 'price'
+          title: '本次更换日期',
+          dataIndex: 'startDate'
         },
         {
-          title: '总价',
-          dataIndex: 'totalPrice'
+          title: '下次更换日期',
+          dataIndex: 'startDate'
         },
         {
-          title: '更换日期',
-          dataIndex: 'startDate'
+          title: '更换备注',
+          dataIndex: 'remark'
         },
         {
-          title: '是否专用',
+          title: '是否关联设备',
           dataIndex: 'isSpecial',
           checked: true,
           customRender: (text, record, index) => {
@@ -475,14 +475,15 @@ export default {
               return '否'
             }
           }
-        },
+        }
+        /*
         {
           title: '操作',
           key: 'action',
           width: '200px',
           align: 'center',
           scopedSlots: { customRender: 'actionSpare' }
-        }
+        }*/
       ],
       columnsFee: [
         {
@@ -793,7 +794,7 @@ export default {
       queryRepairProject({ repairId: this.model.id }).then(res => {
         this.data = res.data
       })
-      selectSparePartUsedListByRepairId({ id: this.model.id }).then(res => {
+      selectLongYanListByRepairId({ id: this.model.id }).then(res => {
         this.dataSpare = res.data
       })
       queryRepairFee({ repairId: this.model.id }).then(res => {
@@ -1143,6 +1144,25 @@ export default {
     handleSpareSelect () {
       this.$refs.spareSelectModal.base({}, { yt: 1 })
     },
+    updateLongYanSpare (num) {
+      this.$refs.longYanSelectSpareForm.base({ isSpecial: num }, this.model)
+    },
+    /* handleSpareLongYanSelect (num) {
+      this.$refs.spareLongYanSelectModal.base({ isSpecial: num }, { isSpecial: num })
+    },
+    handleSpareLongYanSelected (record, keys, rows) {
+      const data = []
+      for (let i = 0; i < rows.length; i++) {
+        data.push({ sparePeriod: rows[i].sparePeriod, isSpecial: record.isSpecial, sbId: this.model.sbId, spareId: rows[i].id, repairId: this.model.id, num: 1, spareName: rows[i].spareName, ggxh: rows[i].ggxh })
+      }
+      addLongYanSparePartUsedBatch(data)
+        .then((response) => {
+          this.$message.info('更换成功')
+          this.handleOk()
+        }).catch(() => {
+          this.confirmLoading = false
+        })
+    }, */
     handleSpareSelected (record, keys, rows) {
       const data = []
       for (let i = 0; i < rows.length; i++) {

+ 129 - 0
src/views/repair/application-form/modules/LongYanSelectSpareForm.vue

@@ -0,0 +1,129 @@
+<template>
+  <a-modal
+    :title="modalTitle"
+    :width="600"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    class="ant-modal2"
+    @cancel="handleCancel"
+  >
+    <a-form :form="form">
+      <row-list :col="1">
+        <row-item>
+          <a-form-item
+            label="备件"
+            :labelCol="BaseTool.Constant.labelCol2"
+            :wrapperCol="BaseTool.Constant.wrapperCol2"
+          >
+            <a-input
+              style="width: 70%"
+              disabled
+              v-model="spareName" />
+            <a-button style="width: 30%" type="primary" @click="handleSpareLongYanSelect">选择备件</a-button>
+          </a-form-item>
+        </row-item>
+
+        <row-item>
+          <a-form-item
+            label="备件寿命"
+            :labelCol="BaseTool.Constant.labelCol2"
+            :wrapperCol="BaseTool.Constant.wrapperCol2"
+          >
+            <a-input
+              style="width: 100%"
+              suffix="天"
+              v-decorator="['sparePeriod']" />
+          </a-form-item>
+        </row-item>
+        <row-item>
+          <a-form-item
+            label="更换备注"
+            :labelCol="BaseTool.Constant.labelCol2"
+            :wrapperCol="BaseTool.Constant.wrapperCol2"
+          >
+            <a-textarea
+              :rows="4"
+              v-decorator="['remark']"/>
+          </a-form-item>
+        </row-item>
+      </row-list>
+    </a-form>
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+    </template>
+    <spare-long-yan-select-modal ref='spareLongYanSelectModal' @selected="handleSpareLongYanSelected"/>
+  </a-modal>
+</template>
+
+<script>
+import { addLongYanSparePartUsedBatch } from '@/api/sqarepartmanage/sparepartused'
+import SpareLongYanSelectModal from '@/views/store/sparestore/modules/SpareLongYanSelectModal'
+export default {
+  name: 'LongYanSelectSpareForm',
+  data () {
+    return {
+      model: null,
+      confirmLoading: false,
+      modalTitle: null,
+      form: this.$form.createForm(this),
+      visible: false,
+      spareRows: [],
+      // 下拉框map
+      isSpecial: 0,
+      spareName: null
+    }
+  },
+  components: {
+    SpareLongYanSelectModal
+  },
+  props: {
+  },
+  created () {
+    // 下拉框map
+  },
+  methods: {
+    base (queryParam, model) {
+      this.visible = true
+      this.spareRows = []
+      this.isSpecial = queryParam.isSpecial
+      this.model = model
+    },
+    save () {
+      const { form: { validateFieldsAndScroll } } = this
+      this.confirmLoading = true
+      validateFieldsAndScroll((errors, values) => {
+        if (errors) {
+          this.confirmLoading = false
+          return
+        }
+        const data = []
+        for (let i = 0; i < this.spareRows.length; i++) {
+          data.push({ remark: values.remark, sparePeriod: values.sparePeriod, isSpecial: this.isSpecial, sbId: this.model.sbId, spareId: this.spareRows[i].id, repairId: this.model.id, num: 1, spareName: this.spareRows[i].name, ggxh: this.spareRows[i].ggxh })
+        }
+        addLongYanSparePartUsedBatch(data)
+          .then((response) => {
+            this.$message.info('更换成功')
+            this.handleCancel()
+          }).catch(() => {
+            this.confirmLoading = false
+          })
+      })
+    },
+    handleCancel () {
+      this.visible = false
+      this.confirmLoading = false
+      this.form.resetFields()
+      this.$emit('ok')
+    },
+    handleSpareLongYanSelect () {
+      this.$refs.spareLongYanSelectModal.base({ isSpecial: this.isSpecial }, { isSpecial: this.isSpecial, sbId: this.model.sbId })
+    },
+    handleSpareLongYanSelected (record, keys, rows) {
+      this.spareRows = rows
+      for (let i = 0; i < rows.length; i++) {
+        this.spareName = this.spareName + ',' + rows[i].name
+      }
+    }
+  }
+}
+</script>

+ 304 - 0
src/views/store/sparestore/modules/SpareLongYanSelectModal.vue

@@ -0,0 +1,304 @@
+<template>
+  <a-modal
+    :title="modalTitle"
+    :width="1050"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    class="ant-modal2"
+    @cancel="handleCancel"
+  >
+    <a-card :bordered="false">
+      <a-row :gutter="8">
+        <a-col :span="24">
+          <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-input v-model="queryParam.ggxh" placeholder="模糊查询"/>
+                  </a-form-item>
+                </a-col>
+<!--                <a-col :md="8" :sm="24">
+                  <a-form-item label="原厂编号">
+                    <a-input v-model="queryParam.initNo" placeholder="模糊查询"/>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item label="关联设备">
+                    <a-input v-model="queryParam.model" placeholder="新号/旧号/名称/规格"/>
+                  </a-form-item>
+                </a-col>
+                <a-col :md="8" :sm="24">
+                  <a-form-item
+                    label="仓库"
+                    :labelCol="BaseTool.Constant.labelCol"
+                    :wrapperCol="BaseTool.Constant.wrapperCol"
+                  >
+                    <a-tree-select
+                      style="width: 100%"
+                      :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
+                      :treeData="storeTreeDate"
+                      :treeNodeFilterProp="'title'"
+                      :showSearch="true"
+                      v-model="queryParam.storeId"
+                      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="action" slot-scope="record1">
+              <template>
+                <a @click="handleView(record1)">查看</a>
+              </template>
+            </span>
+          </s-table>
+        </a-col>
+      </a-row>
+    </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 { stringify } from 'qs'
+import Detail from './Detail'
+import { getSpareLongYanPage, fetchSpareStore } from '@/api/store/sparestore'
+
+export default {
+  name: 'SpareLongYanSelectModal',
+  components: {
+    STable,
+    Ellipsis,
+    Detail
+  },
+  props: {
+    type: {
+      type: String,
+      default: 'checkbox'
+    },
+    selectedRowKey: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    },
+    selectedRow: {
+      type: Array,
+      default: () => {
+        return []
+      }
+    }
+  },
+  data () {
+    return {
+      confirmLoading: false,
+      mdl: {},
+      modalTitle: null,
+      visible: false,
+      record: null,
+      expandedKeys: [],
+      selectedKeys: [],
+      isSpecial: null,
+      // 查询参数
+      queryParam: {
+      },
+      // 表头
+      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: 'ggxh'
+        }
+      ],
+      // 下拉框map
+      delFlagMap: {},
+      // 加载数据方法 必须为 Promise 对象
+      loadData: parameter => {
+        parameter = {
+          ...parameter,
+          ...this.queryParam,
+          dataScope: {
+            sortBy: 'desc',
+            sortName: 'update_time'
+          }
+        }
+        return getSpareLongYanPage(Object.assign(parameter, this.queryParam)).then(res => {
+          if (res.data.rows === null) {
+            const data = { total: 0, rows: [], pageNum: 1, pageSize: 10, pages: 1 }
+            return data
+          } else {
+            return res.data
+          }
+        })
+      },
+      selectedRowKeys: [],
+      selectedRows: [],
+
+      options: {
+        alert: { show: true, clear: () => { this.selectedRowKeys = [] } },
+        rowSelection: {
+          selectedRowKeys: this.selectedRowKeys,
+          onChange: this.onSelectChange
+        }
+      },
+      optionAlertShow: false,
+      isCreated: false
+    }
+  },
+  created () {
+    // 下拉框map
+    this.delFlagMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.DELFLAG)
+  },
+  methods: {
+    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) {
+      fetchSpareStore({ 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.keyword = null
+      this.queryParam.typeId = null
+      this.queryParam.model = null
+      this.queryParam.storeId = null
+      this.$refs.table.refresh(true)
+    },
+    base (record, queryParam = {}) {
+      this.visible = true
+      this.modalTitle = '选择信息'
+      this.queryParam = queryParam
+      if (queryParam.isSpecial !== undefined) {
+        this.isSpecial = queryParam.isSpecial
+        this.record = record
+      }
+      if (this.isCreated) {
+        this.$refs.table.clearSelected()
+        // 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
+        if (this.record !== null) {
+          this.record.isSpecial = this.isSpecial
+        }
+        this.$emit('selected', this.record, 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)
+    },
+    onSelect: function (selectedKeys, info) {
+      this.selectedKeys = selectedKeys
+      this.queryParam.typeId = selectedKeys.length > 0 ? selectedKeys[0] : ''
+      this.$refs.table.refresh(true)
+    },
+    onExpand (expandedKeys) {
+      this.expandedKeys = expandedKeys
+      this.autoExpandParent = false
+    }
+  }
+}
+</script>