xiongchao %!s(int64=3) %!d(string=hai) anos
pai
achega
cff5d5115d

+ 1 - 1
src/api/check/checkjob.js

@@ -87,7 +87,7 @@ export function queryCheckJob (parameter) {
  * @param parameter
  * @returns {*}
  */
-export function queryNum (parameter) {
+export function queryNumCheckjob (parameter) {
   return axios({
     url: '/check/jobs/num?' + stringify(parameter),
     method: 'get',

+ 32 - 0
src/api/check/checkstandard.js

@@ -65,6 +65,38 @@ export function fetchCheckStandard (parameter) {
   })
 }
 
+/**
+ * fetch single func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function generateJobByCheckStandard (parameter) {
+  return axios({
+    url: '/check/standards/generate' + parameter.id,
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function queryNumCheckStandard (parameter) {
+  return axios({
+    url: '/check/standards/num?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
 /**
  * fetch list func
  * parameter: { }

+ 16 - 0
src/api/part/info.js

@@ -1,6 +1,22 @@
 import { axios } from '@/utils/request'
 import { stringify } from 'qs'
 
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function queryNumPartInfo (parameter) {
+  return axios({
+    url: '/part/infos/num?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
+
 /**
  * page func
  * parameter: { }

+ 15 - 0
src/api/sb/modelbom.js

@@ -1,5 +1,20 @@
 import { axios } from '@/utils/request'
 import { stringify } from 'qs'
+/**
+ * query list func
+ * parameter: { }
+ * @param parameter
+ * @returns {*}
+ */
+export function queryNumModelbom (parameter) {
+  return axios({
+    url: '/sb/model-spare-boms/num?' + stringify(parameter),
+    method: 'get',
+    headers: {
+      'Content-Type': 'application/json;charset=UTF-8'
+    }
+  })
+}
 
 /**
  * page func

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

@@ -279,7 +279,8 @@ const constantRouterComponents = {
 
   // 设备盘点
   'SbStoreCheckPlan': () => import('@/views/sb/storecheckplan/StoreCheckPlan'),
-  'SbStoreCheckJob': () => import('@/views/sb/storecheckjob/StoreCheckJob')
+  'SbStoreCheckJob': () => import('@/views/sb/storecheckjob/StoreCheckJob'),
+
 }
 
 // 前端未找到页面路由(固定不用改)

+ 11 - 1
src/views/check/checkstandard/modules/DetailSbCheck.vue

@@ -36,6 +36,10 @@
           </a-popconfirm>
           <a-divider type="vertical" />
           <a @click="handleCopy(record)">复制</a>
+          <a-divider type="vertical" />
+          <a-popconfirm v-if="$auth('sb-infos-del')" title="是否要插入任务?" @confirm="handleGenerate(record.id)">
+            <a>插入任务</a>
+          </a-popconfirm>
         </template>
       </span>
     </a-table>
@@ -50,7 +54,8 @@ import {
   queryCheckStandard,
   deleteCheckStandards,
   exportCheckStandard,
-  fetchCheckStandard
+  fetchCheckStandard,
+  generateJobByCheckStandard
 } from '@/api/check/checkstandard'
 import BaseForm from './BaseForm'
 import Detail from './Detail'
@@ -169,6 +174,11 @@ export default {
       data.id = null
       modal.base(data)
     },
+    handleGenerate (id) {
+      generateJobByCheckStandard({ id: this.model.id }).then(res => {
+        this.$message.info('任务已经创建,请及时处理')
+      })
+    },
     handleCancel () {
       this.visible = false
       this.confirmLoading = false

+ 19 - 14
src/views/sb/info/modules/BaseForm.vue

@@ -279,7 +279,8 @@
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
             <a-input
-              v-decorator="['zjm']" placeholder="请输入水平位置,如300"/>
+              v-decorator="['zjm']"
+              placeholder="请输入水平位置,如300"/>
           </a-form-item>
         </a-col>
         <a-col :lg="12" :md="24" :sm="24">
@@ -289,7 +290,8 @@
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
             <a-input
-              v-decorator="['jbdh']" placeholder="请输入垂直位置,如200"/>
+              v-decorator="['jbdh']"
+              placeholder="请输入垂直位置,如200"/>
           </a-form-item>
         </a-col>
       </a-row>
@@ -306,7 +308,7 @@
         </a-col>
       </a-row>
       <title-divider title="使用信息" width="90px"></title-divider>
-<!--      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
+      <!--      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
         <a-col :lg="12" :md="24" :sm="24">
           <a-form-item
             label="所属区域"
@@ -376,7 +378,7 @@
         </a-col>
       </a-row>-->
       <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
-<!--        <a-col :lg="12" :md="24" :sm="24">
+        <!--        <a-col :lg="12" :md="24" :sm="24">
           <a-form-item
             label="所属班组"
             :labelCol="BaseTool.Constant.labelCol"
@@ -642,25 +644,28 @@ export default {
       // record.no = null
       // this.clearFileList()
       // }
-      if(record.isChild == 1){
-        record.isChild = "1"
+      if (record.isChild === 1) {
+        record.isChild = '1'
       }
-      if(record.isChild == 2){
-        record.isChild = "2"
+      if (record.isChild === 2) {
+        record.isChild = '2'
       }
-      if(record.isChild == 3){
-        record.isChild = "3"
+      if (record.isChild === 3) {
+        record.isChild = '3'
       }
 
-      if(record.isShow == 0){
-        record.isShow = "0"
+      if (record.isShow === 0) {
+        record.isShow = '0'
       }
-      if(record.isShow == 1){
-        record.isShow = "1"
+      if (record.isShow === 1) {
+        record.isShow = '1'
       }
 
       const { form: { setFieldsValue } } = this
       // 日期处理
+      if (this.BaseTool.Object.isBlank(record.buyDate)) {
+        record.buyDate = '2017-04-19'
+      }
       record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
       record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
       record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

+ 33 - 14
src/views/sb/info/modules/Detail.vue

@@ -4,22 +4,26 @@
       <a-row :gutter="48" slot="extra">
         <a-col :md="48" :sm="48">
           <span class="table-page-search-submitButtons" style="float: right">
-            <a-button style="margin-left: 8px" type="primary" @click="handleViewBom()">备件BOM</a-button>
-            <a-button style="margin-left: 8px" type="primary" @click="handleViewCheck()">保养项目</a-button>
-            <a-button style="margin-left: 8px" type="primary" @click="partInfoListView()">设备部位</a-button>
-            <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
+            <a-badge :count="numPartInfo" title="设备部位总数" :number-style="{ backgroundColor: '#52c41a' }">
+              <a-button style="margin-left: 16px" type="default" @click="partInfoListView()">设备部位</a-button>
+            </a-badge>
+            <a-badge :count="numModelbom" title="备件总数" :number-style="{ backgroundColor: '#52c41a' }">
+              <a-button style="margin-left: 16px" type="default" @click="handleViewBom()">备件BOM</a-button>
+            </a-badge>
+            <a-badge :count="numCheckStandard" title="保养项目总数" :number-style="{ backgroundColor: '#52c41a' }">
+              <a-button style="margin-left: 16px" type="default" @click="handleViewCheck()">保养项目</a-button>
+            </a-badge>
+            <a-badge :count="numNumCheckjob" title="待保养任务总数" :number-style="{ backgroundColor: '#52c41a' }">
+              <a-button style="margin-left: 16px" type="default" @click="partInfoListView()">待保养任务</a-button>
+            </a-badge>
+            <a-button style="margin-left: 8px" type="primary" @click="handleCancel()">返回</a-button>
           </span>
         </a-col>
       </a-row>
       <title-divider title="图片信息" width="90px"></title-divider>
       <detail-list title="" :col="3">
-        <detail-list-item v-show="model.sbFileList!=null && model.sbFileList.length>0">
-          <a-upload
-            list-type="picture-card"
-            :multiple="true"
-            :fileList="BaseTool.UPLOAD.transImg(model.sbFileList)"
-          >
-          </a-upload>
+        <detail-list-item v-for="item in model.sbFileList" term="">
+          <img :src="BaseTool.Constant.FILE_URL + item.url" width="200px" height="200px"/>
         </detail-list-item>
         <detail-list-item>
           <img-code :src="model.qrCode" :code-id="model.id" :width="200"></img-code>
@@ -88,7 +92,7 @@
           >
           </a-upload>
         </detail-list-item>
-       </detail-list>
+      </detail-list>
       <title-divider title="相关数据" width="90px"></title-divider>
       <q-tabs :activeKey="activeKey" @change="changeTab">
         <q-tab-pane key="1" tab="报修记录">
@@ -113,6 +117,10 @@ import DetailList from '@/components/tools/DetailList'
 import RepairApplicationFormTable from '@/views/repair/application-form/modules/RepairApplicationFormTable'
 import CheckJobTable from '@/views/check/checkjob/modules/CheckJobTable'
 import { fetchFirmProducer } from '@/api/firm/producer'
+import { queryNumCheckStandard } from '@/api/check/checkstandard'
+import { queryNumCheckjob } from '@/api/check/checkjob'
+import { queryNumPartInfo } from '@/api/part/info'
+import { queryNumModelbom } from '@/api/sb/modelbom'
 import SparePartUsedSelectTable from '@/views/sqarepartmanage/sparepartused/modules/SparePartUsedSelectTable'
 import SbOilPageTable from '@/views/sb/oil/modules/SbOilPageTable'
 import SbRunFillPageTable from '@/views/sb/run-fill/modules/SbRunFillPageTable'
@@ -120,6 +128,7 @@ import SbInspectionFillPageTable from '@/views/sb/inspection-fill/modules/SbInsp
 import DetailSbBom from '@/views/sb/modelbom/modules/DetailSbBom'
 import DetailSbCheck from '@/views/check/checkstandard/modules/DetailSbCheck'
 import PartInfoList from '@/views/part/info/modules/PartInfoList'
+import { axios } from '@/utils/request'
 const DetailListItem = DetailList.Item
 
 export default {
@@ -195,6 +204,7 @@ export default {
         'useFile': null,
         'checkFile': null,
         'sbImage': null,
+        'sbFileList': null,
         'qrCode': null,
         'status': null,
         'remark': null,
@@ -218,8 +228,10 @@ export default {
         'sbdh': null,
         'bxgs': null
       },
-      depreciationTypeMap: {},
-
+      numCheckStandard: 0,
+      numNumCheckjob: 0,
+      numModelbom: 0,
+      numPartInfo: 0,
       firmProducerLevelMap: {},
       firmSupplier: {},
       firmProducer: {},
@@ -263,6 +275,13 @@ export default {
       this.model = record
       this.activeKey = '1'
       this.collapseActiveKey = '0'
+      Promise.all([queryNumPartInfo({ sbId: this.model.id }), queryNumModelbom({ sbId: this.model.id }), queryNumCheckStandard({ sbId: this.model.id }), queryNumCheckjob({ sbId: this.model.id })])
+        .then((values) => {
+          this.numPartInfo = values[0].data
+          this.numModelbom = values[1].data
+          this.numCheckStandard = values[2].data
+          this.numNumCheckjob = values[3].data
+        })
       fetchFirmProducer({ id: this.model.producerId }).then(res => {
         this.firmProducer = res.data
       })

+ 29 - 6
src/views/sb/modelbom/modules/DetailSbBom.vue

@@ -23,6 +23,10 @@
         <a-icon type="plus"/>
         批量添加
       </a-button>
+      <a-button style="margin-left:8px;" type="primary" @click="handleSpareAdd">
+        <a-icon type="plus"/>
+        添加备件
+      </a-button>
       <a-button style="margin-left: 8px" type="primary" icon="download" @click="downTemplate">下载模板</a-button>
       <a-button style="margin-left: 8px" type="primary" icon="download" @click="doExport">导出</a-button>
       <a-button style="margin-left:8px;" type="primary" @click="doImport">
@@ -37,15 +41,18 @@
       rowKey="id">
       <span slot="action" slot-scope="record">
         <template>
-          <a v-if="$auth('sb-infos-edit')" @click="handleEdit(record)">修改</a>
+          <a @click="handleEdit(record)">修改备件</a>
+          <a-divider type="vertical" />
+          <a @click="handleEditRelation(record)">修改bom</a>
           <a-divider type="vertical" />
           <a-popconfirm v-if="$auth('sb-infos-del')" title="是否要删除该条数据?" @confirm="batchDelete(record.id)">
-            <a>删除</a>
+            <a>取消bom</a>
           </a-popconfirm>
         </template>
       </span>
     </a-table>
     <base-form-sb ref="baseModalSb" @ok="handleOk"/>
+    <base-form ref="baseModal" @ok="handleOk"/>
     <import-form-add ref="importModal" @ok="handleOk"></import-form-add>
     <spare-part-info-select-modal :type="'checkbox'" ref="spareSelectModal" @selected="handleSpareSelected"/>
   </div>
@@ -57,6 +64,8 @@ import { addSbModelBomBatch, selectSpareInfoListBySbId, deleteSbModelBoms, expor
 import SparePartInfoSelectModal from '@/views/sqarepartmanage/sparepartinfo/modules/SparePartInfoSelectModal'
 import BaseFormSb from './BaseFormSb'
 import ImportFormAdd from './ImportFormAdd'
+import BaseForm from '@/views/sqarepartmanage/sparepartinfo/modules/BaseForm'
+import { fetchSparePartInfo } from '@/api/sqarepartmanage/sparepartinfo'
 const DetailListItem = DetailList.Item
 
 export default {
@@ -66,7 +75,8 @@ export default {
     DetailListItem,
     BaseFormSb,
     SparePartInfoSelectModal,
-    ImportFormAdd
+    ImportFormAdd,
+    BaseForm
   },
   data () {
     return {
@@ -91,8 +101,11 @@ export default {
       // 表头
       columns: [
         {
-          title: '备件编号',
-          dataIndex: 'spareId'
+          title: '序号',
+          dataIndex: 'index',
+          customRender: (text, record, index) => {
+            return `${index + 1}`
+          }
         },
         {
           title: '名称',
@@ -182,8 +195,18 @@ export default {
       const modal = this.$refs.baseModalSb
       modal.base({ sbId: this.model.id })
     },
-    handleEdit (record) {
+    handleSpareAdd () {
       const modal = this.$refs.baseModal
+      modal.base(null, this.model.id)
+    },
+    handleEdit (record) {
+      fetchSparePartInfo({ id: record.spareId }).then(res => {
+        const modal = this.$refs.baseModal
+        modal.base(res.data)
+      })
+    },
+    handleEditRelation (record) {
+      const modal = this.$refs.baseModalSb
       modal.base(record)
     },
     handleCancel () {

+ 0 - 3
src/views/sqarepartmanage/sparepartinfo/SparePartInfo.vue

@@ -357,7 +357,6 @@ export default {
       })
     },
     handleEdit (record) {
-      this.visible = false
       fetchSparePartInfo({ id: record.id }).then(res => {
         const modal = this.$refs.baseModal
         modal.base(res.data)
@@ -369,7 +368,6 @@ export default {
       modal.base(record)
     },
     handleCopy (record) {
-      this.visible = false
       fetchSparePartInfo({ id: record.id }).then(res => {
         const modal = this.$refs.baseModal
         res.data.id = null
@@ -398,7 +396,6 @@ export default {
       })
     },
     handleAdd (record) {
-      this.visible = false
       this.$refs.baseModal.base()
     },
     handleView (record) {

+ 0 - 1
src/views/sqarepartmanage/sparepartinfo/SparePartInfoSbModel.vue

@@ -115,7 +115,6 @@ import StoreList from './modules/StoreList'
 import InStoreList from './modules/InStoreList'
 import OutStoreList from './modules/OutStoreList'
 import SparePartUsedSelectModal from '@/views/sqarepartmanage/sparepartused/modules/SparePartUsedSelectModal'
-
 import { fetchSpareTypeAndSbModelTree } from '@/api/sqarepartmanage/sparetype'
 import { addSbModelBomBatch, selectSpareInfoListByModelId, deleteSbModelBoms} from '@/api/sb/modelbom'
 

+ 88 - 212
src/views/sqarepartmanage/sparepartinfo/modules/BaseForm.vue

@@ -1,17 +1,23 @@
 <template>
-  <a-card :bordered="false" :title="modalTitle" v-show="visible">
-    <a-row :gutter="48" slot="extra">
+  <a-modal
+    :title="modalTitle"
+    :width="900"
+    :visible="visible"
+    :confirmLoading="confirmLoading"
+    @cancel="handleCancel">
+<!--    <a-row :gutter="48" slot="extra">
       <a-col :md="48" :sm="48">
         <span class="table-page-search-submitButtons" style="float: right" >
           <a-button style="margin-left: 8px" type="primary" @click="save()">保存</a-button>
           <a-button style="margin-left: 8px" @click="handleCancel()">返回列表</a-button>
         </span>
       </a-col>
-    </a-row>
+    </a-row>-->
     <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="['typeId']" type="hidden"/>
       </a-form-item>
       <a-form-item v-show="false" >
@@ -20,116 +26,27 @@
       <a-form-item v-show="false" >
         <a-input v-decorator="['unitBz']" type="hidden"/>
       </a-form-item>
-      <a-form-item v-show="false" >
-        <a-input v-decorator="['ggxh']" type="hidden"/>
-      </a-form-item>
       <a-form-item v-show="false">
         <a-input v-decorator="['producerId']" />
       </a-form-item>
-<!--      <title-divider title="集团统一编码" width="150px"></title-divider>
-      <row-list :col="2">
-        <row-item>
-          <a-form-item
-            label="集团统一编码"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-input
-              disabled
-              v-decorator="['uniteNo']" />
-          </a-form-item>
-        </row-item>
-      </row-list>-->
-      <title-divider title="编码设置" width="150px"></title-divider>
+      <title-divider title="类型设置" width="150px"></title-divider>
       <row-list :col="2">
         <row-item>
           <a-form-item
-            label="一级类别"
+            label="类别"
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-select
-              @select="parentChange"
+            <a-tree-select
+              style="width: 100%"
+              :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }"
+              :treeData="spareTypeData"
+              :treeNodeFilterProp="'title'"
+              :showSearch="true"
               v-decorator="['parentTypeId', {rules: [{required: true, message: '类别不能为空'}]}]"
-              placeholder="请选择">
-              <a-select-option
-                v-for="({id,name,no}) in spareTypeData"
-                :key="no"
-                :label="no"
-                :value="id">{{ name + '(' + no + ')' }}
-              </a-select-option>
-            </a-select>
-          </a-form-item>
-        </row-item>
-        <row-item>
-          <a-form-item
-            label="一级编码"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-input
-              disabled
-              v-decorator="['parentNo']" />
-          </a-form-item>
-        </row-item>
-        <row-item>
-          <a-form-item
-            label="二级类别"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-select
-              @select="middleChange"
-              v-decorator="['middleTypeId']"
-              placeholder="请选择">
-              <a-select-option
-                v-for="({id,name,no}) in spareTypeDataMiddle"
-                :key="no"
-                :label="no"
-                :value="id">{{ name + '(' + no + ')' }}
-              </a-select-option>
-            </a-select>
-          </a-form-item>
-        </row-item>
-        <row-item>
-          <a-form-item
-            label="二级编码"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-input
-              disabled
-              v-decorator="['middleNo']" />
-          </a-form-item>
-        </row-item>
-        <row-item>
-          <a-form-item
-            label="三级类别"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-select
-              @select="childChange"
-              v-decorator="['childTypeId']"
-              placeholder="请选择">
-              <a-select-option
-                v-for="({id,name,no}) in spareTypeDataChild"
-                :key="no"
-                :label="name"
-                :value="id">{{ name + '(' + no + ')' }}
-              </a-select-option>
-            </a-select>
-          </a-form-item>
-        </row-item>
-        <row-item>
-          <a-form-item
-            label="三级编码"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-input
-              disabled
-              v-decorator="['childNo']" />
+              placeholder="请选择"
+            >
+            </a-tree-select>
           </a-form-item>
         </row-item>
         <row-item>
@@ -142,18 +59,6 @@
               v-decorator="['name', {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
-              style="width: 70%"
-              v-decorator="['nameNo']" />
-            <a-button style="width: 30%" type="default" @click="checkSpareNo">查询编码</a-button>
-          </a-form-item>
-        </row-item>-->
         <row-item>
           <a-form-item
             label="规格型号"
@@ -162,44 +67,9 @@
           >
             <a-input
               v-decorator="['ggxh']" />
-            <!--<a-select
-              show-search
-              :value="gg"
-              :default-active-first-option="false"
-              :show-arrow="true"
-              :filter-option="true"
-              :not-found-content="null"
-              @search="handleSearchG"
-              @blur="handleBlurG"
-              @change="handleChangeG">
-              <a-select-option
-                v-for="({value, label}) in ggList"
-                :key="value"
-                :label="label"
-                :value="value">{{ label }}
-              </a-select-option>
-            </a-select>-->
           </a-form-item>
         </row-item>
-<!--        <row-item>
-          <a-form-item
-            label="规格型号编码"
-            :labelCol="BaseTool.Constant.labelCol"
-            :wrapperCol="BaseTool.Constant.wrapperCol"
-          >
-            <a-input
-              v-decorator="['ggNo']" />
-          </a-form-item>
-        </row-item>-->
       </row-list>
-<!--      <title-divider title="备件编号查询列表" width="150px"></title-divider>
-      <a-table
-        :data-source="data"
-        :columns="columns"
-        tableLayout="auto"
-        rowKey="id">
-      </a-table>-->
-      <title-divider title="基础信息设置" width="150px"></title-divider>
       <row-list :col="2">
         <row-item>
           <a-form-item
@@ -338,15 +208,15 @@
           </a-form-item>
         </row-item>
         <row-item>
-        <a-form-item
-          label="折算系数"
-          :labelCol="BaseTool.Constant.labelCol"
-          :wrapperCol="BaseTool.Constant.wrapperCol"
-        >
-          <a-input
-            placeholder="单位折算为包装单位,如24个单位包装为一箱"
-            v-decorator="['unitRate']" />
-        </a-form-item>
+          <a-form-item
+            label="折算系数"
+            :labelCol="BaseTool.Constant.labelCol"
+            :wrapperCol="BaseTool.Constant.wrapperCol"
+          >
+            <a-input
+              placeholder="单位折算为包装单位,如24个单位包装为一箱"
+              v-decorator="['unitRate']" />
+          </a-form-item>
         </row-item>
         <row-item>
           <a-form-item
@@ -400,32 +270,25 @@
           </a-form-item>
         </row-item>
         <row-item>
-        <a-form-item
-          label="备件图片"
-          :labelCol="BaseTool.Constant.labelCol"
-          :wrapperCol="BaseTool.Constant.wrapperCol"
-        >
-          <upload-spare-file
-            ref="imageUpload"
-            @catchImage="catchImage"
-          ></upload-spare-file>
-        </a-form-item>
-        </row-item>
-        <row-item>
-          <!--<a-form-item
-            label="类型用途"
+          <a-form-item
+            label="备件图片"
             :labelCol="BaseTool.Constant.labelCol"
             :wrapperCol="BaseTool.Constant.wrapperCol"
           >
-            <a-select v-decorator="['yt', {rules: [{required: true, message: '类型用途不能为空'}]}]" placeholder="请选择">
-              <a-select-option
-                v-for="(label,value) in ytMap"
-                :key="value"
-                :label="label"
-                :value="parseInt(value)">{{ label }}
-              </a-select-option>
-            </a-select>
-          </a-form-item>-->
+            <a-upload
+              :action="uploadUrl"
+              :multiple="true"
+              list-type="picture"
+              :file-list="this.defaultApplicationFileList"
+              @change="handleApplicationFileChange"
+              accept="image/*"
+              :headers="headers"
+            >
+              <a-button> <a-icon type="upload" /> 上传图片 </a-button>
+            </a-upload>
+          </a-form-item>
+        </row-item>
+        <row-item>
           <a-form-item
             label="备注"
             :labelCol="BaseTool.Constant.labelCol"
@@ -437,18 +300,23 @@
         </row-item>
       </row-list>
     </a-form>
-
+    <template slot="footer">
+      <a-button :loading="confirmLoading" type="primary" @click="save()">保存</a-button>
+    </template>
     <firm-producer-select-modal ref="producerSelectModal" @selected="handleProducerSelected"/>
-  </a-card>
+  </a-modal>
 </template>
 
 <script>
 import pick from 'lodash.pick'
 import { addSparePartInfo, querySparePartInfo, updateSparePartInfo } from '@/api/sqarepartmanage/sparepartinfo'
-import { querySpareType } from '@/api/sqarepartmanage/sparetype'
+import { querySpareType, fetchSpareTypeTree } from '@/api/sqarepartmanage/sparetype'
 import { fetchSbGuigeOptions } from '@/api/sb/guige'
 import FirmProducerSelectModal from '@/views/firm/producer/modules/FirmProducerSelectModal'
 import UploadSpareFile from '@/components/Upload/UploadSpareFile'
+import Vue from 'vue'
+import { uploadUrl } from '@/api/upms/file'
+import { ACCESS_TOKEN } from '@/store/mutation-types'
 
 export default {
   name: 'BaseSparePartInfo',
@@ -461,7 +329,9 @@ export default {
       unitName: null,
       unitNameBz: null,
       gg: null,
-      image: '',
+      uploadUrl: uploadUrl,
+      defaultApplicationFileList: [],
+      applicationFileList: [], // 备件图片
       confirmLoading: false,
       modalTitle: null,
       form: this.$form.createForm(this),
@@ -476,6 +346,9 @@ export default {
       spareTypeDataChild: [],
       producers: [],
       ggList: [],
+      headers: {
+        Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
+      },
       // 表头
       columns: [
         {
@@ -523,7 +396,8 @@ export default {
           dataIndex: 'ggNo'
         }
       ],
-      data: []
+      data: [],
+      sbId: null
     }
   },
   props: {
@@ -536,13 +410,14 @@ export default {
     this.ytMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SPARE_USE_TYPE)
   },
   methods: {
-    base (record) {
+    base (record, sbId) {
       this.setTree(record)
       this.visible = true
+      this.sbId = sbId
+      console.log('sbId: ', sbId)
       // 如果是空标识添加
       if (this.BaseTool.Object.isBlank(record)) {
         this.modalTitle = '添加'
-        this.$refs.imageUpload.base(1, [])
         return
       }
       this.modalTitle = '编辑'
@@ -550,6 +425,8 @@ export default {
         this.modalTitle = '复制'
       }
       const { form: { setFieldsValue } } = this
+      this.applicationFileList = record.applicationFileList
+      this.defaultApplicationFileList = this.BaseTool.UPLOAD.transImg(this.applicationFileList)
       this.unitName = record.unit
       this.unitNameBz = record.unitBz
       this.gg = record.ggxh
@@ -558,6 +435,7 @@ export default {
         setFieldsValue(Object.assign(pick(record, [
           'id',
           'no',
+          'sbId',
           'initNo',
           'uniteNo',
           'nameNo',
@@ -591,36 +469,23 @@ export default {
           'minStock',
           'remark'
         ])))
-        this.image = record.image
-        const fileList = []
-        if (record.image) {
-          fileList.push({
-            uid: '-1',
-            name: record.title,
-            status: 'done',
-            url: this.BaseTool.Constant.FILE_URL + record.image,
-            originUrl: record.image
-          })
-        }
-        this.$refs.imageUpload.base(1, fileList)
       })
     },
     save () {
       const { form: { validateFieldsAndScroll, setFieldsValue } } = this
       this.confirmLoading = true
+      console.log('sbId: ' + this.sbId)
       setFieldsValue({
         'unit': this.unitName,
-        'unitBz': this.unitNameBz
+        'unitBz': this.unitNameBz,
+        'sbId': this.sbId
       })
       validateFieldsAndScroll((errors, values) => {
         if (errors) {
           this.confirmLoading = false
           return
         }
-        values = {
-          ...values,
-          image: this.image
-        }
+        values.applicationFileList = this.applicationFileList
         // 日期处理
         if (this.BaseTool.String.isBlank(values.id)) {
           addSparePartInfo(values)
@@ -670,15 +535,15 @@ export default {
      * 设置备件类别树
      */
     setTree (record = {}) {
-      querySpareType({ filter: 1 }).then(res => {
+      fetchSpareTypeTree({ }).then(res => {
         this.spareTypeData = res.data
       })
-      querySpareType({ filter: 2, parentId: record.parentTypeId }).then(res => {
+      /*querySpareType({ filter: 2, parentId: record.parentTypeId }).then(res => {
         this.spareTypeDataMiddle = res.data
       })
       querySpareType({ filter: 2, parentId: record.middleTypeId }).then(res => {
         this.spareTypeDataChild = res.data
-      })
+      })*/
       fetchSbGuigeOptions().then(res => {
         this.ggList = res.data
       })
@@ -803,9 +668,20 @@ export default {
       const { form: { setFieldsValue } } = this
       setFieldsValue({ childNo: option.data.key, typeId: val, childTypeId: val })
     },
-    catchImage (fileList) {
-      if (fileList.length !== 0) {
-        this.image = fileList[0].url
+    handleApplicationFileChange (info) {
+      this.defaultApplicationFileList = info.fileList
+      this.applicationFileList = this.setFileList(info, 14)
+    },
+    setFileList (info, type) {
+      const file = info.file
+      const fileList = info.fileList
+      if (file.status === 'done') {
+        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
+      } else if (file.status === 'removed') {
+        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
+      } else if (file.status === 'error') {
+        this.$message.error('上传失败')
+        return []
       }
     }
   }

+ 6 - 3
src/views/sqarepartmanage/sparepartinfo/modules/Detail.vue

@@ -9,7 +9,9 @@
     </a-row>
     <title-divider title="备件信息" width="90px"></title-divider>
     <detail-list title="" :col="3">
-      <detail-list-item term=""><img :src="BaseTool.Constant.FILE_URL + model.image" width="200px" height="200px"/></detail-list-item>
+      <detail-list-item v-for="item in model.applicationFileList" term="">
+        <img :src="BaseTool.Constant.FILE_URL + item.url" width="200px" height="200px"/>
+      </detail-list-item>
       <detail-list-item term=""><img-code :src="model.qrCode" :type="2" :code-id="model.id" :width="200"></img-code></detail-list-item>
     </detail-list>
     <title-divider title="基础信息" width="90px"></title-divider>
@@ -35,13 +37,13 @@
       <detail-list-item term="最低库存">{{ model.minStock }}</detail-list-item>
       <detail-list-item term="英文名称">{{ model.englishName }}</detail-list-item>
       <detail-list-item term="助记码">{{ model.zjm }}</detail-list-item>
-      <detail-list-item term="产地">{{ BaseTool.Object.getField(cdMap,model.cd)}}</detail-list-item>
+      <detail-list-item term="产地">{{ BaseTool.Object.getField(cdMap,model.cd) }}</detail-list-item>
       <!--<detail-list-item term="用途">{{ BaseTool.Object.getField(ytMap,model.yt) }}</detail-list-item>-->
       <detail-list-item term="备注">{{ model.remark }}</detail-list-item>
       <detail-list-item term="创建人">{{ model.createdUserName }}</detail-list-item>
       <detail-list-item term="更新人">{{ model.updateUserName }}</detail-list-item>
       <detail-list-item term="更新日期">{{ model.updateTime }}</detail-list-item>
-     </detail-list>
+    </detail-list>
 
     <template slot="footer">
       <a-button :loading="confirmLoading" type="primary" @click="handleCancel()">返回</a-button>
@@ -84,6 +86,7 @@ export default {
         'currentStock': null,
         'maxStock': null,
         'qrCode': null,
+        'applicationFileList': [],
         'minStock': null,
         'remark': null,
         'createdUserId': null,