ysc 2 rokov pred
rodič
commit
480327ec0b

+ 21 - 0
src/api/material/transfer.js

@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+
+// 资产流转
+export function addTransfer(data) {
+  return request({
+    url: '/material/asset/transfer',
+    method: 'post',
+    data: data
+  })
+}
+
+
+// 查询资产流转列表
+export function getTransferList(assetId) {
+  return request({
+    url: '/material/asset/transfer/list/' + assetId,
+    method: 'get'
+  })
+}
+

+ 105 - 30
src/views/material/asset.vue

@@ -16,7 +16,7 @@
             <el-select
               v-model="queryParams.assetType"
               placeholder="资产类型"
-              style="width: 200px">
+              style="width: 170px">
               <el-option label="固定资产" value="0"/>
               <el-option label="耗材" value="1"/>
             </el-select>
@@ -25,10 +25,11 @@
             <el-select
               v-model="queryParams.status"
               placeholder="资产状态"
-              style="width: 200px">
-              <el-option label="在库" value="0"/>
-              <el-option label="出库" value="1"/>
-              <el-option label="报失" value="1"/>
+              style="width: 170px">
+              <el-option label="在库" value="1"/>
+              <el-option label="出库" value="2"/>
+              <el-option label="出库(不回库)" value="3"/>
+              <el-option label="报失" value="4"/>
             </el-select>
           </el-form-item>
           <el-form-item>
@@ -59,7 +60,7 @@
           <el-table-column label="部门编号" prop="deptAssetNumber"/>
           <el-table-column label="资产类型" width="80">
             <template slot-scope="scope">
-              <el-tag v-if="scope.row.assetType===1" size="mini" type="warning">耗材</el-tag>
+              <el-tag v-if="scope.row.assetType==='1'" size="mini" type="warning">耗材</el-tag>
               <el-tag v-else size="mini" type="success">固定资产</el-tag>
             </template>
           </el-table-column>
@@ -70,10 +71,10 @@
           <el-table-column label="购入日期" prop="buyDate"/>
           <el-table-column label="状态" width="80">
             <template slot-scope="scope">
-              <!--              <el-tag size="mini" :type="statusMap[scope.row.status].type">{{-->
-              <!--                  statusMap[scope.row.status].name-->
-              <!--                }}-->
-              <!--              </el-tag>-->
+              <el-tag v-if="scope.row.status==='1'" type="success" size="mini">在库</el-tag>
+              <el-tag v-else-if="scope.row.status==='2'" size="mini">出库</el-tag>
+              <el-tag v-else-if="scope.row.status==='3'" size="mini" type="info">出库(不回库)</el-tag>
+              <el-tag v-else size="mini" type="warning">报失</el-tag>
             </template>
           </el-table-column>
           <el-table-column label="操作" width="160">
@@ -164,12 +165,12 @@
               <el-input v-model="form.factoryName" placeholder="请输入生产厂家"></el-input>
             </el-form-item>
             <el-form-item label="入库来源" prop="source">
-              <el-radio-group v-model="form.source">
-                <el-radio label="1">采购</el-radio>
-                <el-radio label="2">租赁</el-radio>
-                <el-radio label="3">借用</el-radio>
-                <el-radio label="4">赠送</el-radio>
-              </el-radio-group>
+              <el-select v-model="form.source">
+                <el-option label="采购" value="1"></el-option>
+                <el-option label="租赁" value="2"></el-option>
+                <el-option label="借用" value="3"></el-option>
+                <el-option label="赠送" value="4"></el-option>
+              </el-select>
             </el-form-item>
             <el-form-item label="购入日期" prop="buyDate">
               <el-date-picker
@@ -232,10 +233,11 @@
       </el-row>
     </el-dialog>
 
+    <!-- 物品流转对话框 -->
     <el-dialog title="物品流转" :visible.sync="transferOpen" width="800px" append-to-body :close-on-click-modal="false">
       <el-row :gutter="20">
         <el-col :span="12">
-          <el-form ref="form" :model="transferForm" :rules="transferRules" size="mini" label-width="100px">
+          <el-form ref="transferForm" :model="transferForm" :rules="transferRules" size="mini" label-width="100px">
             <el-form-item label="物品名称" prop="assetName">
               <div>{{ transferForm.assetName }}</div>
             </el-form-item>
@@ -252,8 +254,8 @@
               <div>{{ transferForm.remark }}</div>
             </el-form-item>
 
-            <el-form-item label="选择配件" prop="source">
-              <el-select v-model="transferForm.projectId" multiple>
+            <el-form-item label="选择配件" prop="accessoriesId">
+              <el-select v-model="transferForm.accessoriesId" multiple>
                 <el-option v-for="(item,index) in accessoryList" :label="item.accessoryName" :key="index"
                            :value="item.id"></el-option>
               </el-select>
@@ -266,8 +268,11 @@
                 :props="{ expandTrigger: 'hover',value:'id',label:'name' }"
                 :show-all-levels="false"></el-cascader>
             </el-form-item>
-            <el-form-item label="流转类型" prop="location">
-
+            <el-form-item label="流转类型" prop="transferType">
+              <el-select v-model="transferForm.transferType">
+                <el-option v-for="item in transferTypeList" :label="item.dictLabel" :key="item.dictValue"
+                           :value="item.dictValue"></el-option>
+              </el-select>
             </el-form-item>
             <el-form-item label="流转备注" prop="remark">
               <el-input v-model="transferForm.transferRemark" type="textarea"></el-input>
@@ -278,14 +283,18 @@
           <div style="font-size: 18px;margin-top: -15px">
             流转记录
           </div>
-          <div style="height: 300px;">
+          <div style="height: 300px;margin-top: 10px">
             <el-timeline>
               <el-timeline-item
                 v-for="(transfer, index) in assetTransferList"
                 :key="index"
-                :timestamp="transfer.transferDate">
+                :timestamp="transfer.transferDate" placement="top">
                 <div>
-                  {{ transfer.content }}
+                  <span>{{ getTransferTypeLabel(transfer.transferType) }}</span>
+                  <span>({{ transfer.transferUserName }}</span>
+                  <span><i class="el-icon-right"/></span>
+                  <span>{{ transfer.receiveUserName }})</span>
+                  <span>{{ ':' + transfer.transferRemark }}</span>
                 </div>
               </el-timeline-item>
             </el-timeline>
@@ -293,11 +302,15 @@
         </el-col>
       </el-row>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" size="mini" @click="submitForm">确 定</el-button>
-        <el-button size="mini" @click="cancel">取 消</el-button>
+        <el-button type="primary" size="mini" @click="submitTransferForm">确 定</el-button>
+        <el-button size="mini" @click="cancelTransferForm">取 消</el-button>
       </div>
     </el-dialog>
 
+    <!-- 资产详情对话框 -->
+    <el-dialog title="资产详情" :visible.sync="detailOpen" width="800px" append-to-body :close-on-click-modal="false">
+      <asset-detail :form="form"></asset-detail>
+    </el-dialog>
 
   </div>
 </template>
@@ -305,16 +318,19 @@
 <script>
 import Category from "@/views/material/components/category";
 import DeptUserTree from "@/components/DeptUserTree"
+import AssetDetail from "./components/assetDetail"
 import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {getDeptAssetNumber, addAsset, listAsset, getAsset, updateAsset, delAsset} from "@/api/material/asset";
 import {categoryTree} from "@/api/material/category";
 import {getDeptUserTree} from "@/api/system/user";
+import {getDictData} from "@/api/system/dict";
+import {addTransfer, getTransferList} from "@/api/material/transfer";
 
 
 export default {
   name: "asset",
-  components: {Category, DeptUserTree, Treeselect},
+  components: {Category, DeptUserTree, AssetDetail, Treeselect},
   data() {
     return {
       queryParams: {
@@ -345,7 +361,18 @@ export default {
 
       transferOpen: false,
       transferForm: {},
-      userList: []
+      assetTransferList: [],
+      userList: [],
+      transferTypeList: [],
+      transferRules: {
+        receiveUserId: [
+          {required: true, message: "接收人不能为空", trigger: "change"}
+        ],
+        transferType: [
+          {required: true, message: "流转类型不能为空", trigger: "change"}
+        ]
+      },
+      detailOpen: false
     }
   },
   created() {
@@ -428,7 +455,6 @@ export default {
       getAsset(id).then(res => {
         this.form = res.data
         this.accessoryList = res.data.accessoryList || []
-        console.log(this.form);
         this.open = true;
         this.title = "修改资产";
       })
@@ -438,7 +464,14 @@ export default {
         this.categoryOptions = response.data;
       });
     },
-    rowClick() {
+    rowClick(row, column, event) {
+      if (column.label === '操作') {
+        return
+      }
+      getAsset(row.id).then(res => {
+        this.form = res.data
+        this.detailOpen = true;
+      })
     },
 
     accessoryAdd() {
@@ -492,11 +525,53 @@ export default {
       getDeptUserTree('').then(res => {
         this.userList = res.data
       })
+      getDictData('transfer_type').then(res => {
+        this.transferTypeList = res.data
+      })
+      getTransferList(row.id).then(res => {
+        this.assetTransferList = res.data
+      })
       getAsset(row.id).then(res => {
         this.transferForm = res.data
+        this.transferForm.assetId = row.id
         this.accessoryList = res.data.accessoryList
         this.transferOpen = true
       })
+    },
+    getTransferTypeLabel(transferType) {
+      if (this.transferTypeList.length === 0) {
+        getDictData('transfer_type').then(res => {
+          this.transferTypeList = res.data
+        })
+      }
+      let typeLabel = ''
+      this.transferTypeList.forEach(item => {
+        if (item.dictValue == transferType) {
+          typeLabel = item.dictLabel
+        }
+      })
+      return typeLabel
+    },
+    submitTransferForm() {
+      this.$refs["transferForm"].validate(valid => {
+        if (valid) {
+          console.log(this.transferForm);
+          this.transferForm.id = undefined
+          this.transferForm.accessoriesId = this.transferForm.accessoriesId.join()
+          this.transferForm.receiveUserId = this.transferForm.receiveUserId[this.transferForm.receiveUserId.length - 1]
+          addTransfer(this.transferForm).then(res => {
+            this.$message.success("流转成功");
+            this.transferOpen = false;
+            this.getList();
+          });
+        }
+
+      });
+    },
+    cancelTransferForm() {
+      this.transferOpen = false
+      this.transferForm = {}
+      this.resetForm("transferForm");
     }
 
   }

+ 80 - 0
src/views/material/components/assetDetail.vue

@@ -0,0 +1,80 @@
+<template>
+  <div class="head-container">
+    <el-row :gutter="20">
+      <el-col :span="12">
+        <el-form ref="form" :model="form" size="mini" label-width="100px">
+          <el-form-item label="物品名称" prop="assetName">
+            <div>{{ form.assetName }}</div>
+          </el-form-item>
+          <el-form-item label="资产编号" prop="assetNumber">
+            <div>{{ form.assetNumber }}</div>
+          </el-form-item>
+          <el-form-item label="部门编号" prop="deptAssetNumber">
+            <div>{{ form.deptAssetNumber }}</div>
+          </el-form-item>
+          <el-form-item label="资产类型" prop="assetType">
+            <el-tag v-if="form.assetType===1" size="mini" type="warning">耗材</el-tag>
+            <el-tag v-else size="mini" type="success">固定资产</el-tag>
+          </el-form-item>
+          <el-form-item label="设备设施名称" prop="equipmentName">
+            <div>{{ form.equipmentName }}</div>
+          </el-form-item>
+          <el-form-item label="设备型号" prop="equipmentType">
+            <div>{{ form.equipmentType }}</div>
+          </el-form-item>
+          <el-form-item label="设备编号" prop="equipmentNumber">
+            <div>{{ form.equipmentNumber }}</div>
+          </el-form-item>
+          <el-form-item label="原厂编号" prop="factoryNumber">
+            <div>{{ form.factoryNumber }}</div>
+          </el-form-item>
+          <el-form-item label="生产厂家" prop="factoryName">
+            <div>{{ form.factoryName }}</div>
+          </el-form-item>
+          <el-form-item label="入库来源" prop="source">
+            <el-tag v-if="form.source==='1'" size="mini">采购</el-tag>
+            <el-tag v-else-if="form.source==='2'" size="mini">租赁</el-tag>
+            <el-tag v-else-if="form.source==='3'" size="mini">借用</el-tag>
+            <el-tag v-else size="mini">赠送</el-tag>
+          </el-form-item>
+          <el-form-item label="购入日期" prop="buyDate">
+            <div>{{ form.buyDate }}</div>
+          </el-form-item>
+          <el-form-item label="定位位置" prop="location">
+            <div>{{ form.location }}</div>
+          </el-form-item>
+          <el-form-item label="备注" prop="remark">
+            <div>{{ form.remark }}</div>
+          </el-form-item>
+        </el-form>
+      </el-col>
+      <el-col :span="12">
+        <div style="font-size: 18px;margin-top:-10px;margin-bottom: 10px">
+          配件信息
+        </div>
+        <el-table :data="form.accessoryList" size="mini">
+          <el-table-column label="配件名称" prop="accessoryName"/>
+          <el-table-column label="配件编号" prop="accessoryNumber"/>
+        </el-table>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "assetDetail",
+  props: {
+    form: {
+      type: Object,
+      default: {}
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
+  margin-bottom: 10px;
+}
+</style>

+ 0 - 1
src/views/system/dict.vue

@@ -264,7 +264,6 @@ export default {
     initData(){
       this.getList();
       getDictData('sys_status').then(res => {
-        console.log(res);
         this.sysStatusDicts=res.data
       })
     },