Browse Source

资产管理图片/库房管理员

master
xuhuajiao 2 weeks ago
parent
commit
e9bf437ea9
  1. 11
      src/api/asset/index.js
  2. 146
      src/views/assetManage/inventory/index.vue
  3. 119
      src/views/system/warehouse/index.vue

11
src/api/asset/index.js

@ -8,6 +8,16 @@ export function FetchInitAssetInfo(params) {
}) })
} }
// 资产详情
export function FetchAssetInfoDetailsByMark(params) {
return request({
url: 'api/asset/getAssetInfoDetailsByMark',
method: 'get',
params
})
}
// 新增盘点单 // 新增盘点单
export function add(data) { export function add(data) {
return request({ return request({
@ -46,6 +56,7 @@ export function FetchDeleteStockTake(ids) {
export default { export default {
FetchInitAssetInfo, FetchInitAssetInfo,
add, add,
FetchAssetInfoDetailsByMark,
FetchStockTakeDetailsByTaskId, FetchStockTakeDetailsByTaskId,
FetchStockSettle, FetchStockSettle,
FetchDeleteStockTake FetchDeleteStockTake

146
src/views/assetManage/inventory/index.vue

@ -93,36 +93,58 @@
<!-- v-if="tabIndex===0" --> <!-- v-if="tabIndex===0" -->
<div class="detail-check"> <div class="detail-check">
<ul class="book-detail"> <ul class="book-detail">
<li><span>资产编号</span>{{ selectedAsset &&selectedAsset.mark }}</li>
<li><span>资产名称</span>{{ selectedAsset &&selectedAsset.name }}</li>
<li><span>资产类型</span>{{ selectedAsset &&selectedAsset.capitaltyepname || '——' }}</li>
<li><span>规格型号</span>{{ selectedAsset &&selectedAsset.capitalspec || '——' }}</li>
<li><span>设备用途</span>{{ selectedAsset &&selectedAsset.sbyt || '——' }}</li>
<li><span>价值类型</span>{{ selectedAsset &&selectedAsset.jzlx || '——' }}</li>
<li><span>资产编号</span>{{ selectedAsset && selectedAsset.mark }}</li>
<li><span>资产名称</span>{{ selectedAsset && selectedAsset.name }}</li>
<li><span>资产类型</span>{{ selectedAsset && selectedAsset.capitaltyepname || '——' }}</li>
<li><span>规格型号</span>{{ selectedAsset && selectedAsset.capitalspec || '——' }}</li>
<li><span>设备用途</span>{{ selectedAsset && selectedAsset.sbyt || '——' }}</li>
<li><span>价值类型</span>{{ selectedAsset && selectedAsset.jzlx || '——' }}</li>
<li><span>价值</span>{{ selectedAsset ? formatMoney(selectedAsset?.startprice) : '——' }}</li> <li><span>价值</span>{{ selectedAsset ? formatMoney(selectedAsset?.startprice) : '——' }}</li>
<li><span>数量</span>{{ selectedAsset &&selectedAsset.capitalnum }}</li>
<li><span>实际数量</span>{{ selectedAsset &&selectedAsset.sjsl }}</li>
<li><span>计量单位</span>{{ selectedAsset &&selectedAsset.unitname }}</li>
<li><span>使用部门</span>{{ selectedAsset &&selectedAsset.departmentname }}</li>
<li><span>使用人</span>{{ selectedAsset &&selectedAsset.resourcename }}</li>
<li><span>数量</span>{{ selectedAsset && selectedAsset.capitalnum }}</li>
<li><span>实际数量</span>{{ selectedAsset && selectedAsset.sjsl }}</li>
<li><span>计量单位</span>{{ selectedAsset && selectedAsset.unitname }}</li>
<li><span>使用部门</span>{{ selectedAsset && selectedAsset.departmentname }}</li>
<li><span>使用人</span>{{ selectedAsset && selectedAsset.resourcename }}</li>
<!-- <li><span>所属单位</span>{{ selectedAsset &&selectedAsset.blongsubcompanyname }}</li> --> <!-- <li><span>所属单位</span>{{ selectedAsset &&selectedAsset.blongsubcompanyname }}</li> -->
<li><span>所属部门</span>{{ selectedAsset &&selectedAsset.blongdepartmentname }}</li>
<li><span>管理人</span>{{ selectedAsset &&selectedAsset.glrname }}</li>
<li><span>存放地</span>{{ selectedAsset &&selectedAsset.cfd }}</li>
<li><span>供应商</span>{{ selectedAsset &&selectedAsset.gys }}</li>
<li><span>项目名称</span>{{ selectedAsset &&selectedAsset.xmmc }}</li>
<li><span>无线电设备用途</span>{{ selectedAsset &&selectedAsset.wxdsbyt }}</li>
<li><span>领用日期</span>{{ selectedAsset &&selectedAsset.deprestartdate | parseTime }}</li>
<li><span>所属部门</span>{{ selectedAsset && selectedAsset.blongdepartmentname }}</li>
<li><span>管理人</span>{{ selectedAsset && selectedAsset.glrname }}</li>
<li><span>存放地</span>{{ selectedAsset && selectedAsset.cfd }}</li>
<li><span>供应商</span>{{ selectedAsset && selectedAsset.gys }}</li>
<li><span>项目名称</span>{{ selectedAsset && selectedAsset.xmmc }}</li>
<li><span>无线电设备用途</span>{{ selectedAsset && selectedAsset.wxdsbyt }}</li>
<li><span>领用日期</span>{{ selectedAsset && selectedAsset.deprestartdate | parseTime }}</li>
<!-- <li><span>购置日期</span>{{ selectedAsset &&selectedAsset.gzrq | parseTime }}</li> --> <!-- <li><span>购置日期</span>{{ selectedAsset &&selectedAsset.gzrq | parseTime }}</li> -->
<li><span>投入使用日期</span>{{ selectedAsset &&selectedAsset.trsyrq | parseTime }}</li>
<li><span>入账日期</span>{{ selectedAsset &&selectedAsset.rzrq | parseTime }}</li>
<li><span>保修截至日期</span>{{ selectedAsset &&selectedAsset.bxjzrq | parseTime }}</li>
<li><span>投入使用日期</span>{{ selectedAsset && selectedAsset.trsyrq | parseTime }}</li>
<li><span>入账日期</span>{{ selectedAsset && selectedAsset.rzrq | parseTime }}</li>
<li><span>保修截至日期</span>{{ selectedAsset && selectedAsset.bxjzrq | parseTime }}</li>
<!-- <li v-if="selectedAsset && selectedAsset.rzrq !== null"><span>更新时间</span>{{ selectedAsset &&selectedAsset.rzrq | parseTime }}</li> <!-- <li v-if="selectedAsset && selectedAsset.rzrq !== null"><span>更新时间</span>{{ selectedAsset &&selectedAsset.rzrq | parseTime }}</li>
<li v-else><span>更新时间</span></li> --> <li v-else><span>更新时间</span></li> -->
</ul> </ul>
<!-- <img src="http://192.168.99.72:15000/api/minio/getImg?bucket=2&fileName=2b532fd6792f4dbe91d6a1dbf15e4738.jpg" alt="资产图片"> --> <!-- <img src="http://192.168.99.72:15000/api/minio/getImg?bucket=2&fileName=2b532fd6792f4dbe91d6a1dbf15e4738.jpg" alt="资产图片"> -->
<div :class="selectedAsset && selectedAsset.imageUrl ? 'asset-image asset-img' : 'asset-image default-img'">
<!-- <div :class="selectedAsset && selectedAsset.imageUrl ? 'asset-image asset-img' : 'asset-image default-img'">
<img :src="selectedAsset && selectedAsset.imageUrl || require('@/assets/images/system/default-img2.png')" alt="资产图片"> <img :src="selectedAsset && selectedAsset.imageUrl || require('@/assets/images/system/default-img2.png')" alt="资产图片">
</div> -->
<!-- 资产图片轮播 -->
<div class="asset-image">
<!-- 有图片时显示轮播 -->
<el-carousel
v-if="assetImageList.length > 0"
:interval="5000"
arrow="always"
height="200px"
class="asset-carousel"
>
<el-carousel-item v-for="(img, index) in assetImageList" :key="index">
<img :src="img" alt="资产图片" class="carousel-img">
</el-carousel-item>
</el-carousel>
<!-- 无图片时显示默认图 -->
<div v-else class="default-img">
<img :src="require('@/assets/images/system/default-img2.png')" alt="默认图片">
</div>
</div> </div>
</div> </div>
</div> </div>
@ -133,7 +155,7 @@
</template> </template>
<script> <script>
import crudAsset from '@/api/asset/index'
import crudAsset,{ FetchAssetInfoDetailsByMark } from '@/api/asset/index'
import CRUD, { presenter, header, crud } from '@crud/crud' import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation' import crudOperation from '@crud/CRUD.operation'
@ -174,7 +196,8 @@ export default {
selectedAsset: null, selectedAsset: null,
newCount: 0, newCount: 0,
updateCount: 0, updateCount: 0,
tabIndex: 0
tabIndex: 0,
assetImageList: [],
} }
}, },
computed: { computed: {
@ -302,16 +325,29 @@ export default {
}, },
// //
handleRowDblClick(row) { handleRowDblClick(row) {
this.selectedAsset = row
this.tabIndex = 0 this.tabIndex = 0
//
if (this.selectedAsset.assetphoto) {
this.selectedAsset.imageUrl = this.baseApi + '/api/minio/getImg?bucket=2&fileName=' + this.selectedAsset.assetphoto
} else {
this.selectedAsset.imageUrl = null
}
console.log(this.selectedAsset)
this.detailDialogVisible = true this.detailDialogVisible = true
//
this.selectedAsset = {}
this.assetImageList = []
const params = { mark: row.mark }
FetchAssetInfoDetailsByMark(params).then(res => {
console.log('获取资产详情成功', res)
this.selectedAsset = res || row
const photoList = res.assetInfoPhoto || []
//
this.assetImageList = photoList.map(item => {
return this.baseApi + '/api/minio/getImg?bucket=2&fileName=' + item.photoUrl
})
// this.assetImageList = [
// 'https://qiniu.aiyxlib.com/1604467087428',
// 'https://qiniu.aiyxlib.com/1605059837392',
// 'https://qiniu.aiyxlib.com/1605060069983',
// ]
console.log(' this.assetImageList', this.assetImageList)
}).catch(() => {
this.$message({ message: '获取资产详情失败', type: 'error', offset: 8 })
})
}, },
changeDetailTab(index) { changeDetailTab(index) {
this.tabIndex = index this.tabIndex = index
@ -320,6 +356,7 @@ export default {
this.detailDialogVisible = false this.detailDialogVisible = false
this.tabIndex = 0 this.tabIndex = 0
this.selectedAsset = null this.selectedAsset = null
this.assetImageList = [] //
} }
} }
} }
@ -380,29 +417,54 @@ export default {
flex: 1; flex: 1;
} }
.asset-image {
.asset-carousel {
width: 400px;
height: 200px;
::v-deep .el-carousel__item {
display: flex; display: flex;
align-items: flex-start;
align-items: center;
justify-content: center; justify-content: center;
background: #f5f7fa;
}
}
.carousel-img {
max-width: 100%;
max-height: 200px;
object-fit: contain;
} }
.asset-img {
// width: 100%;
// height: 200px;
object-fit: cover;
border-radius: 4px;
img {
display: block;
.asset-image {
display: flex;
align-items: center;
justify-content: center;
width: 400px; width: 400px;
}
height: 200px;
} }
// .asset-img {
// // width: 100%;
// // height: 200px;
// object-fit: cover;
// border-radius: 4px;
// img {
// display: block;
// width: 400px;
// }
// }
.default-img{ .default-img{
width: 200px; width: 200px;
height: 200px; height: 200px;
display: flex;
align-items: center; align-items: center;
justify-content: center;
background-color: #f5f7fa; background-color: #f5f7fa;
border: 4px solid #dcdfe6; border: 4px solid #dcdfe6;
border-radius: 4px; border-radius: 4px;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
} }
.detailBook { .detailBook {

119
src/views/system/warehouse/index.vue

@ -83,7 +83,9 @@
</el-row> </el-row>
<el-row> <el-row>
<el-form-item label="管理员" prop="administrator"> <el-form-item label="管理员" prop="administrator">
<el-input v-model="form.administrator" />
<el-input v-model="form.administrator">
<el-button @click="openUserDialog" slot="append" icon="el-icon-search"></el-button>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="contactPhone"> <el-form-item label="联系电话" prop="contactPhone">
<el-input v-model="form.contactPhone" /> <el-input v-model="form.contactPhone" />
@ -115,18 +117,58 @@
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :close-on-click-modal="false" :modal-append-to-body="false" append-to-body :visible.sync="userDialog" title="用户列表" class="group-form" width="50%">
<span class="dialog-right-top" />
<span class="dialog-left-bottom" />
<div class="setting-dialog">
<el-table ref="userTableRef" v-loading="userLoading" :data="userTable" style="width: 100%;" height="calc(100vh - 470px)" @selection-change="handleUserSelection">
<el-table-column type="selection" align="center" width="55" />
<el-table-column prop="loginid" label="账号" />
<el-table-column prop="lastname" label="用户名" />
<el-table-column prop="sex" label="性别" width="60" />
<el-table-column prop="departmentname" label="所属部门" />
<el-table-column prop="isFace" label="人脸绑定">
<template slot-scope="scope">
<el-tag v-if="scope.row.isFace === 1" type="success">已绑定</el-tag>
<el-tag v-if="scope.row.isFace === 0" type="info">未绑定</el-tag>
</template>
</el-table-column>
</el-table>
<!-- <div style="text-align: right; margin-top: 15px;">
<el-button @click="userDialog = false">取消</el-button>
<el-button type="primary" @click="confirmSelectUser">确认选择</el-button>
</div> -->
<el-pagination
v-if="userTable.length !== 0"
:current-page="userPage.pageNo"
:total="userPage.total"
:page-size="userPage.pageSize"
:pager-count="5"
layout="total, prev, pager, next, sizes"
@size-change="handleUserSizeChange"
@current-change="handleUserCurrentPage"
style="text-align:right; margin: 10px 0 !important;"
/>
</div>
<div slot="footer" class="dialog-footer" style="margin-top:0 !important;">
<el-button @click.native="userDialog = false">取消</el-button>
<el-button type="primary" @click.native="confirmSelectUser">确定</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import { FetchFondsWarehouseTree } from '@/api/assetDevice/index' import { FetchFondsWarehouseTree } from '@/api/assetDevice/index'
import crudWarehouse from '@/api/assetWarehouse/index' import crudWarehouse from '@/api/assetWarehouse/index'
import { FetchInitUserList } from '@/api/system/user'
import CRUD, { presenter, header, form, crud } from '@crud/crud' import CRUD, { presenter, header, form, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation' import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation' import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination' import pagination from '@crud/Pagination'
const defaultForm = { id: null, administrator: null, contactPhone: null, fondsNo: null, sequence: 999, status: 1, remark: null, warehouseArea: null, warehouseName: null, warehouseNo: null }
const defaultForm = { id: null, administrator: null, internalId:null, contactPhone: null, fondsNo: null, sequence: 999, status: 1, remark: null, warehouseArea: null, warehouseName: null, warehouseNo: null }
export default { export default {
name: 'Warehouse', name: 'Warehouse',
components: { pagination, crudOperation, rrOperation }, components: { pagination, crudOperation, rrOperation },
@ -165,7 +207,16 @@ export default {
enabledTypeOptions: [ enabledTypeOptions: [
{ key: '1', display_name: '启用' }, { key: '1', display_name: '启用' },
{ key: '0', display_name: '停用' } { key: '0', display_name: '停用' }
]
],
userLoading:false,
userDialog:false,
userTable:[],
userPage:{
pageNo: 1,
pageSize: 10,
total: null
},
selectedUserList: [] //
} }
}, },
created() { created() {
@ -269,6 +320,68 @@ export default {
this.$message({ message: '已取消修改', offset: 8 }) this.$message({ message: '已取消修改', offset: 8 })
data.status = val === 1 ? 0 : 1 data.status = val === 1 ? 0 : 1
}) })
},
//
openUserDialog() {
this.userDialog = true
this.$nextTick(() => {
this.getUserList()
})
},
//
async getUserList() {
this.userLoading = true
this.selectedUserList = []
try {
const params = {
isSync: true,
pageNo: this.userPage.pageNo,
pageSize: this.userPage.pageSize
}
const res = await FetchInitUserList(params)
this.userTable = res.records || res.rows || res.data || []
this.userPage.total = res.total || 0
} catch (error) {
console.error('获取用户列表失败', error)
this.$message.error('获取用户数据失败')
} finally {
this.userLoading = false
}
},
//
handleUserSizeChange(val) {
this.userPage.pageSize = val
this.getUserList()
},
//
handleUserCurrentPage(val) {
this.userPage.pageNo = val
this.getUserList()
},
//
handleUserSelection(val) {
const table = this.$refs.userTableRef
if (val.length > 1) {
//
table.clearSelection()
table.toggleRowSelection(val[val.length - 1])
this.selectedUserList = [val[val.length - 1]]
} else {
this.selectedUserList = val
}
},
//
confirmSelectUser() {
if (this.selectedUserList.length === 0) {
this.$message.warning('请选择一个用户')
return
}
//
const user = this.selectedUserList[0]
this.form.administrator = user.lastname
this.form.internalId = user.internalId
this.userDialog = false
this.$message.success('选择管理员成功')
} }
} }
} }

Loading…
Cancel
Save