|
@@ -1,6 +1,21 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div class="app-container">
|
|
<div class="app-container">
|
|
|
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
|
|
<el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
|
|
|
|
|
+ <el-form-item label="领用人" prop="receiveUserId" v-hasPermi="['material:asset:add']">
|
|
|
|
|
+ <el-autocomplete
|
|
|
|
|
+ class="my-autocomplete"
|
|
|
|
|
+ v-model="selectUser"
|
|
|
|
|
+ :fetch-suggestions="querySearch"
|
|
|
|
|
+ placeholder="请输入姓名"
|
|
|
|
|
+ @select="handleSelect">
|
|
|
|
|
+ <template slot-scope="{ item }">
|
|
|
|
|
+ <div class="autocomplete-item">
|
|
|
|
|
+ <div class="name">{{ item.value }}</div>
|
|
|
|
|
+ <div class="dept">{{ item.deptName }}</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-autocomplete>
|
|
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="资产类型" prop="assetType">
|
|
<el-form-item label="资产类型" prop="assetType">
|
|
|
<el-select
|
|
<el-select
|
|
|
v-model="queryParams.assetType"
|
|
v-model="queryParams.assetType"
|
|
@@ -33,20 +48,27 @@
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
<el-table-column label="设备型号" prop="equipmentType" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="设备型号" prop="equipmentType" :show-overflow-tooltip="true"/>
|
|
|
-<!-- <el-table-column label="设备编号" prop="equipmentNumber" :show-overflow-tooltip="true"/>-->
|
|
|
|
|
-<!-- <el-table-column label="原厂编号" prop="factoryNumber" :show-overflow-tooltip="true"/>-->
|
|
|
|
|
|
|
+ <!-- <el-table-column label="设备编号" prop="equipmentNumber" :show-overflow-tooltip="true"/>-->
|
|
|
|
|
+ <!-- <el-table-column label="原厂编号" prop="factoryNumber" :show-overflow-tooltip="true"/>-->
|
|
|
<el-table-column label="生产厂家" prop="factoryName" :show-overflow-tooltip="true"/>
|
|
<el-table-column label="生产厂家" prop="factoryName" :show-overflow-tooltip="true"/>
|
|
|
<el-table-column label="领用日期" prop="receiveDate">
|
|
<el-table-column label="领用日期" prop="receiveDate">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<span>{{ parseTime(scope.row.receiveDate) }}</span>
|
|
<span>{{ parseTime(scope.row.receiveDate) }}</span>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" width="120">
|
|
|
|
|
|
|
+ <el-table-column label="操作" mini-width="120">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-button
|
|
<el-button
|
|
|
- plain
|
|
|
|
|
|
|
+ icon="el-icon-edit"
|
|
|
|
|
+ size="mini"
|
|
|
|
|
+ type="text"
|
|
|
|
|
+ @click="handleTransfer(scope.row)"
|
|
|
|
|
+ >流转记录
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <el-button
|
|
|
icon="el-icon-coordinate"
|
|
icon="el-icon-coordinate"
|
|
|
size="mini"
|
|
size="mini"
|
|
|
|
|
+ type="text"
|
|
|
v-if="scope.row.receiveConfirm==='0'"
|
|
v-if="scope.row.receiveConfirm==='0'"
|
|
|
@click="handleConfirm(scope.row)"
|
|
@click="handleConfirm(scope.row)"
|
|
|
>领用确认
|
|
>领用确认
|
|
@@ -63,30 +85,168 @@
|
|
|
<el-button size="mini" @click="cancel">取 消</el-button>
|
|
<el-button size="mini" @click="cancel">取 消</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 物品流转记录对话框 -->
|
|
|
|
|
+ <el-dialog title="物品流转记录" :visible.sync="transferOpen" class="asset-dialog" width="800px" append-to-body
|
|
|
|
|
+ @close="cancelTransferForm">
|
|
|
|
|
+ <el-row :gutter="20">
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <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>
|
|
|
|
|
+ <el-form-item label="公司资产编号" prop="assetNumber">
|
|
|
|
|
+ <div>{{ transferForm.assetNumber }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="唯一编码" prop="deptAssetNumber">
|
|
|
|
|
+ <div>{{ transferForm.deptAssetNumber }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="设备型号" prop="equipmentType">
|
|
|
|
|
+ <div>{{ transferForm.equipmentType }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="物品说明" prop="remark">
|
|
|
|
|
+ <div>{{ transferForm.remark }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="定位位置" prop="location">
|
|
|
|
|
+ <div>{{ transferForm.location }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item v-if="transferForm.assetType==='1'" label="库存数">
|
|
|
|
|
+ <div>{{ transferForm.num }}</div>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="流转数量" prop="receiveNum" v-if="transferForm.assetType==='1'">
|
|
|
|
|
+ <el-input-number v-model="transferForm.receiveNum" :max="transferForm.num"></el-input-number>
|
|
|
|
|
+ <el-tooltip class="item" effect="dark" content="不填表示领取剩余全部库存" placement="right">
|
|
|
|
|
+ <div style="margin-left: 10px" class="el-icon-info"></div>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="选择配件" prop="accessoriesId">
|
|
|
|
|
+ <el-select v-model="transferForm.accessoriesId" multiple style="width: 200px">
|
|
|
|
|
+ <el-option v-for="(item,index) in accessoryList" :label="item.accessoryName" :key="index"
|
|
|
|
|
+ :value="item.id">
|
|
|
|
|
+ <span style="float: left">{{ item.accessoryName }}</span>
|
|
|
|
|
+ <span style="float: right; color: #8492a6; font-size: 10px">{{ item.location }}</span>
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="接收人" prop="receiveUserId">
|
|
|
|
|
+ <dept-user-tree ref="dut" :userList="userList" style="width: 200px"
|
|
|
|
|
+ @selected="selectReceiveUserId"></dept-user-tree>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="流转类型" prop="transferType">
|
|
|
|
|
+ <el-select v-model="transferForm.transferType" style="width: 200px">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="dict in dict.type.transfer_type"
|
|
|
|
|
+ :key="dict.value"
|
|
|
|
|
+ :label="dict.label"
|
|
|
|
|
+ :value="dict.value"/>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="流转备注" prop="transferRemark">
|
|
|
|
|
+ <el-input v-model="transferForm.transferRemark" type="textarea"
|
|
|
|
|
+ :autosize="{ minRows: 4, maxRows: 7}"></el-input>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </el-form>
|
|
|
|
|
+ <div class="transfer-btn">
|
|
|
|
|
+ <el-button type="primary" size="mini" @click="submitTransferForm">确 定</el-button>
|
|
|
|
|
+ <el-button size="mini" @click="cancelTransferForm">取 消</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ <el-col :span="12">
|
|
|
|
|
+ <div style="margin-top: -15px">
|
|
|
|
|
+ <span style="font-size: 18px;margin-right: 10px">流转记录</span>
|
|
|
|
|
+ <span style="font-size: 12px"><i class="el-icon-info"/>红点表示接收人还未确认</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="height: 500px;margin-top: 10px;overflow: auto">
|
|
|
|
|
+ <el-timeline :reverse="true">
|
|
|
|
|
+ <el-timeline-item
|
|
|
|
|
+ v-for="(transfer, index) in assetTransferList"
|
|
|
|
|
+ :key="index"
|
|
|
|
|
+ :timestamp="transfer.transferDate" placement="top">
|
|
|
|
|
+ <div style="font-size: 12px;color: #1c84c6">
|
|
|
|
|
+ <span>{{ getTransferTypeLabel(transfer.transferType) }}</span>
|
|
|
|
|
+ <span>({{ transfer.transferUserName }}</span>
|
|
|
|
|
+ <span><i class="el-icon-right"/></span>
|
|
|
|
|
+ <span>{{ transfer.receiveUserName }}</span>
|
|
|
|
|
+ <el-badge v-if="transfer.receiveConfirm!='1'" is-dot></el-badge>
|
|
|
|
|
+ <span>)</span>
|
|
|
|
|
+ <span>{{ ':' + transfer.transferRemark }}</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div style="margin-top: 5px" v-if="transfer.accessoryList.length>0">
|
|
|
|
|
+ <span style="font-size: 10px">配件:</span>
|
|
|
|
|
+ <template v-for="(item,index) in transfer.accessoryList">
|
|
|
|
|
+ <el-tooltip :content="item.deptAssetNumber" placement="top">
|
|
|
|
|
+ <el-tag size="mini" style="margin-left: 5px">{{ item.assetName }}</el-tag>
|
|
|
|
|
+ </el-tooltip>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-timeline-item>
|
|
|
|
|
+ </el-timeline>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-col>
|
|
|
|
|
+ </el-row>
|
|
|
|
|
+ </el-dialog>
|
|
|
|
|
+
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
-import {confirmReceive, personReceive} from "@/api/material/transfer";
|
|
|
|
|
|
|
+import {addTransfer, confirmReceive, getTransferList, personReceive} from "@/api/material/transfer";
|
|
|
import {getAsset} from "@/api/material/asset";
|
|
import {getAsset} from "@/api/material/asset";
|
|
|
import AssetDetail from "./components/assetDetail"
|
|
import AssetDetail from "./components/assetDetail"
|
|
|
|
|
+import DeptUserTree from "@/components/DeptUserTree"
|
|
|
|
|
+import {getDeptUserTree, listUser} from "@/api/system/user";
|
|
|
|
|
+import DateUtil from "@/utils/date";
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: "myReceive",
|
|
name: "myReceive",
|
|
|
- components: {AssetDetail},
|
|
|
|
|
|
|
+ components: {AssetDetail, DeptUserTree},
|
|
|
|
|
+ dicts: ['asset_type', 'asset_status', 's_source', 'transfer_type'],
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ users: [],
|
|
|
queryParams: {},
|
|
queryParams: {},
|
|
|
|
|
+ selectUser: '',
|
|
|
assetList: [],
|
|
assetList: [],
|
|
|
detailOpen: false,
|
|
detailOpen: false,
|
|
|
confirmDialog: false,
|
|
confirmDialog: false,
|
|
|
toConfirmTransferId: undefined,
|
|
toConfirmTransferId: undefined,
|
|
|
form: {},
|
|
form: {},
|
|
|
- title:''
|
|
|
|
|
|
|
+ title: '',
|
|
|
|
|
+
|
|
|
|
|
+ accessoryList: [],
|
|
|
|
|
+ pickerOptions: {
|
|
|
|
|
+ disabledDate(time) {
|
|
|
|
|
+ return time.getTime() > DateUtil.unix(DateUtil.day()) * 1000
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ transferOpen: false,
|
|
|
|
|
+ transferForm: {},
|
|
|
|
|
+ assetTransferList: [],
|
|
|
|
|
+ userList: [],
|
|
|
|
|
+ transferRules: {
|
|
|
|
|
+ receiveUserId: [
|
|
|
|
|
+ {required: true, message: "接收人不能为空", trigger: "change"}
|
|
|
|
|
+ ],
|
|
|
|
|
+ transferType: [
|
|
|
|
|
+ {required: true, message: "流转类型不能为空", trigger: "change"}
|
|
|
|
|
+ ],
|
|
|
|
|
+ transferRemark: [
|
|
|
|
|
+ {required: true, message: "流转备注不能为空", trigger: "blur"}
|
|
|
|
|
+ ]
|
|
|
|
|
+ },
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ watch: {
|
|
|
|
|
+ selectUser(val) {
|
|
|
|
|
+ console.log(val);
|
|
|
|
|
+ if (!val) {
|
|
|
|
|
+ this.$set(this.queryParams, 'receiveUserId', null)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
created() {
|
|
created() {
|
|
|
this.getList()
|
|
this.getList()
|
|
|
|
|
+ this.getUsers()
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
getList() {
|
|
getList() {
|
|
@@ -94,22 +254,66 @@ export default {
|
|
|
this.assetList = res.data
|
|
this.assetList = res.data
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
|
|
|
+ getUsers() {
|
|
|
|
|
+ listUser({pageSize: 1000, pageNum: 1}).then(res => {
|
|
|
|
|
+ this.users = res.data.records.map(item => {
|
|
|
|
|
+ return {id: item.id, value: item.userName, deptName: item.deptName}
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
/** 搜索按钮操作 */
|
|
/** 搜索按钮操作 */
|
|
|
handleQuery() {
|
|
handleQuery() {
|
|
|
- // this.queryParams.pageNum = 1;
|
|
|
|
|
this.getList();
|
|
this.getList();
|
|
|
},
|
|
},
|
|
|
/** 重置按钮操作 */
|
|
/** 重置按钮操作 */
|
|
|
resetQuery() {
|
|
resetQuery() {
|
|
|
this.resetForm("queryForm");
|
|
this.resetForm("queryForm");
|
|
|
- // this.queryParams.deptId = undefined;
|
|
|
|
|
|
|
+ this.selectUser = ''
|
|
|
this.handleQuery();
|
|
this.handleQuery();
|
|
|
},
|
|
},
|
|
|
|
|
+ querySearch(queryString, cb) {
|
|
|
|
|
+ let users = this.users;
|
|
|
|
|
+ let results = queryString ? users.filter(this.createFilter(queryString)) : users;
|
|
|
|
|
+ // 调用 callback 返回建议列表的数据
|
|
|
|
|
+ cb(results);
|
|
|
|
|
+ },
|
|
|
|
|
+ createFilter(queryString) {
|
|
|
|
|
+ return (user) => {
|
|
|
|
|
+ return (user.value.indexOf(queryString) > -1);
|
|
|
|
|
+ };
|
|
|
|
|
+ },
|
|
|
|
|
+ handleSelect(item) {
|
|
|
|
|
+ this.$set(this.queryParams, "receiveUserId", item.id)
|
|
|
|
|
+ },
|
|
|
|
|
+ handleTransfer(row) {
|
|
|
|
|
+ getDeptUserTree('1').then(res => {
|
|
|
|
|
+ this.userList = 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) {
|
|
|
|
|
+ let typeLabel = ''
|
|
|
|
|
+ this.dict.type.transfer_type.forEach(item => {
|
|
|
|
|
+ if (item.value === transferType) {
|
|
|
|
|
+ typeLabel = item.label
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ return typeLabel
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
handleConfirm(row) {
|
|
handleConfirm(row) {
|
|
|
this.toConfirmTransferId = row.transferId
|
|
this.toConfirmTransferId = row.transferId
|
|
|
getAsset(row.id).then(res => {
|
|
getAsset(row.id).then(res => {
|
|
|
this.form = res.data
|
|
this.form = res.data
|
|
|
- this.title='物品领用确认'
|
|
|
|
|
|
|
+ this.title = '物品领用确认'
|
|
|
this.confirmDialog = true
|
|
this.confirmDialog = true
|
|
|
this.detailOpen = true;
|
|
this.detailOpen = true;
|
|
|
})
|
|
})
|
|
@@ -133,7 +337,7 @@ export default {
|
|
|
}
|
|
}
|
|
|
getAsset(row.id).then(res => {
|
|
getAsset(row.id).then(res => {
|
|
|
this.form = res.data
|
|
this.form = res.data
|
|
|
- this.title='物品详情'
|
|
|
|
|
|
|
+ this.title = '物品详情'
|
|
|
this.detailOpen = true;
|
|
this.detailOpen = true;
|
|
|
})
|
|
})
|
|
|
},
|
|
},
|
|
@@ -142,13 +346,83 @@ export default {
|
|
|
return 'warning-row';
|
|
return 'warning-row';
|
|
|
}
|
|
}
|
|
|
return '';
|
|
return '';
|
|
|
|
|
+ },
|
|
|
|
|
+ selectReceiveUserId(val) {
|
|
|
|
|
+ this.$set(this.transferForm, 'receiveUserId', val)
|
|
|
|
|
+ },
|
|
|
|
|
+ submitTransferForm() {
|
|
|
|
|
+ this.$refs["transferForm"].validate(valid => {
|
|
|
|
|
+ if (valid) {
|
|
|
|
|
+ this.transferForm.id = undefined
|
|
|
|
|
+ if (this.transferForm.accessoriesId) {
|
|
|
|
|
+ this.transferForm.accessoriesId = this.transferForm.accessoriesId.join()
|
|
|
|
|
+ }
|
|
|
|
|
+ addTransfer(this.transferForm).then(res => {
|
|
|
|
|
+ this.$message.success("流转成功");
|
|
|
|
|
+ this.$refs.dut.clearText();
|
|
|
|
|
+ this.transferOpen = false;
|
|
|
|
|
+ this.resetForm("transferForm");
|
|
|
|
|
+ this.getList();
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ },
|
|
|
|
|
+ cancelTransferForm() {
|
|
|
|
|
+ this.$refs.dut.clearText();
|
|
|
|
|
+ this.transferOpen = false
|
|
|
|
|
+ this.transferForm = {}
|
|
|
|
|
+ this.resetForm("transferForm");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
|
|
+.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.el-table::v-deep .warning-row {
|
|
.el-table::v-deep .warning-row {
|
|
|
background: #fef0f0;
|
|
background: #fef0f0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.asset-dialog ::v-deep .el-dialog__body {
|
|
|
|
|
+ padding: 0 20px 10px 20px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.accessory-header {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ margin-bottom: 10px;
|
|
|
|
|
+
|
|
|
|
|
+ .a-h-title {
|
|
|
|
|
+ font-size: 18px;
|
|
|
|
|
+ margin-top: 7px;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.dialog-btn {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ bottom: 0px;
|
|
|
|
|
+ right: 20px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.transfer-btn {
|
|
|
|
|
+ text-align: right;
|
|
|
|
|
+ margin-top: 20px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.my-autocomplete {
|
|
|
|
|
+ width: 240px;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.autocomplete-item {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+
|
|
|
|
|
+ .dept {
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ color: #b4b4b4;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|