This commit is contained in:
2025-09-10 16:49:01 +08:00
parent d52504f438
commit 5d01ca6aad
10 changed files with 520 additions and 17 deletions
@@ -8,8 +8,8 @@ layout("/layouts/platform_h5.html"){
}
.list-card-body {
width: calc(100% - 140px);
display: flex;
/* width: calc(100% - 140px);
display: flex;*/
flex-direction: column;
justify-content: space-between;
}
@@ -35,6 +35,9 @@ layout("/layouts/platform_h5.html"){
padding: 5px;
border-radius: 5px;
}
.list-card-img img{
width: 100%;
}
</style>
<div id="app" v-cloak>
@@ -44,6 +47,7 @@ layout("/layouts/platform_h5.html"){
<year-van-dropdown-item :num="5" @change="doSearch" v-model="pageForm.year"></year-van-dropdown-item>
<van-dropdown-item :options="stateList" @change="doSearch" v-model="pageForm.state"></van-dropdown-item>
<van-dropdown-item :options="isEnrolledOptions" @change="doSearch" v-model="pageForm.isEnrolledText"></van-dropdown-item>
<van-dropdown-item :options="activityTypeOptions" @change="doSearch" v-model="pageForm.activity_type"></van-dropdown-item>
</van-dropdown-menu>
</van-sticky>
@@ -115,12 +119,13 @@ layout("/layouts/platform_h5.html"){
loading: false,
refreshing: false,
pageForm: {
state: 2,
state: 1,
isEnrolledText: 0,
year: new Date().getFullYear(),
pageNumber: 1,
pageSize: 5,
totalCount: 0
totalCount: 0,
activity_type: 40001
},
yearList: [],
isEnrolledOptions: [
@@ -134,7 +139,12 @@ layout("/layouts/platform_h5.html"){
],
subLoading: false,
viewShow: false,
viewData: {}
viewData: {},
activityTypeOptions: [
{ value: 40001, text: "校文化活动" },
{ value: 40002, text: "分工会文化活动" },
{ value: 40003, text: "协会文化活动" },
]
}
},
components: {
@@ -301,7 +301,6 @@ layout("/layouts/platform_h5.html"){
<span>取消报名</span>
<span style="font-size: 12px; margin-top: 5px">{{viewData.applyEndTime}}截止报名</span>
</div>
<div class="bottom-button" v-if="$moment(viewData.endTime).valueOf() < $moment().valueOf()">活动已结束</div>
</div>
</div>
@@ -0,0 +1,168 @@
<!--#
layout("/layouts/platform_h5.html"){
#-->
<div id="app">
<!-- 导航栏 -->
<van-nav-bar title="资产盘点" left-text="返回" left-arrow placeholder
@click-left="historyBack" fixed></van-nav-bar>
<van-sticky offset-top="46px">
<van-search
:reverse-color="false"
:show-action="false"
@search="doSearch"
input-align="left"
placeholder="请输入编号或名称搜索"
v-model="pageForm.searchKeyword"
></van-search>
<van-tabs v-model="pageForm.isStocktakingText"
@change="(val)=>{this.pageForm.isStocktaking = val==='1';this.doSearch();}">
<van-tab title="已盘点" name="1"></van-tab>
<van-tab title="未盘点" name="0"></van-tab>
</van-tabs>
</van-sticky>
<table-list api="/platform/asset/stocktaking/pageData" :page_form.sync="pageForm"
ref="tableListRef"
title="assetNumber" @ready="onReady">
<template v-slot="{index,row}">
<table-column label="资产名称">{{row.assetName}}</table-column>
<table-column label="类别名称"> {{row.assetTypeCode===1?'校工会资产':'分工会资产'}}</table-column>
<table-column label="存放地点">{{row.assetStorageLocation}}</table-column>
<table-column label="责任人">{{row.assetUseUserName}}</table-column>
<table-column label="折旧到期日期"> {{$moment(row.assetRetiredAssetsDate).format('YYYY-MM-DD')}}
</table-column>
<table-column label="使用状况">{{row.assetUsageStateName}}</table-column>
</template>
<template #actions="{index,row}">
<div class="action-btn" @click="onView(row)">
<i class="fa fa-eye"></i>
<span>查看</span>
</div>
<div class="action-btn" v-if="!row.isStocktaking"
:disabled="stocktakingPlanOption.length==0
||!pageForm.assetStocktakingPlanId
||!stocktakingPlanOption.find(p=>p.id===pageForm.assetStocktakingPlanId).isShow"
@click="onAudit(row)">
<i class="fa fa-edit"></i>
<span>开始盘点</span>
</div>
<div class="action-btn delete" v-if="row.isStocktaking"
:disabled="stocktakingPlanOption.length==0
||!pageForm.assetStocktakingPlanId
||!stocktakingPlanOption.find(p=>p.id===pageForm.assetStocktakingPlanId).isShow"
@click="onRevoke(row)">
<i class="fa fa-undo"></i>
<span>删除盘点</span>
</div>
</template>
</table-list>
<h5-asset-info ref="h5AssetInfoRef"></h5-asset-info>
<h5-asset-stocktaking-form ref="h5AssetStocktakingFormRef" @save_success="doSearch"></h5-asset-stocktaking-form>
</div>
<script>
<!--#include("info.js"){}#-->
<!--#include("stocktakingForm.js"){}#-->
const vue = new Vue({
el: "#app",
store,
data() {
return {
assetCategoryOption: [],
stocktakingPlanOption: [],
unionList: [],
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
isStocktakingText: "0",
isStocktaking: false,
}
}
},
components: {
"h5-asset-info": H5_ASSET_INFO,
"h5-asset-stocktaking-form": H5_ASSET_STOCKTAKING_FORM,
},
methods: {
onRevoke(row) {
this.$dialog.confirm({
title: "提示",
message: "您确定要删除本次盘点信息吗?"
}).then(() => {
this.$axios.post("/platform/asset/stocktaking/doDelete", {
id: row.id,
assetStocktakingPlanId: this.pageForm.assetStocktakingPlanId
}).then(resp => {
if (resp.code === 0) {
this.doSearch()
this.$toast.success(resp.msg)
} else {
this.$toast.fail(resp.msg)
}
})
})
},
onAudit(row) {
row.assetStocktakingPlanId = this.pageForm.assetStocktakingPlanId
this.$refs.h5AssetStocktakingFormRef.onOpen(row)
},
onView(row) {
this.$refs.h5AssetInfoRef.onOpen(row)
},
// 查询资产类别
queryCategory() {
this.$axios.post("/platform/asset/category/queryCategory").then(resp => {
if (resp.code === 0) {
this.assetCategoryOption = resp.data
}
})
},
// 按年度查询资产盘点计划
async queryStocktakingPlan() {
const resp = await this.$axios.post("/platform/asset/stocktakingPlan/queryStocktakingPlan")
if (resp.code === 0) {
resp.data.forEach(v => {
const startDate = this.$moment(v.startDate).format('YYYY-MM-DD')
const endDate = this.$moment(v.endDate).format('YYYY-MM-DD')
v.name = startDate + "至" + endDate + "" + v.year + ""
v.isShow = (this.$moment().format('YYYY-MM-DD hh:mm:ss') > v.startDate && this.$moment().format('YYYY-MM-DD hh:mm:ss') < v.endDate)
})
this.stocktakingPlanOption = resp.data
if (this.stocktakingPlanOption && this.stocktakingPlanOption.length > 0) {
this.$set(this.pageForm, "assetStocktakingPlanId", this.stocktakingPlanOption[0].id)
} else {
this.$set(this.pageForm, "assetStocktakingPlanId", null)
}
this.doSearch()
}
},
doSearch() {
this.$nextTick(() => {
this.pageForm.pageNumber = 1
this.pageForm.totalCount = 0
this.$refs.tableListRef.doSearch()
})
},
onReady() {
this.queryCategory()
this.queryStocktakingPlan()
}
},
created() {
}
})
</script>
<!--#
}
#-->
@@ -0,0 +1,124 @@
const H5_ASSET_INFO = {
template: /*language=HTML*/ `
<van-action-sheet v-model="visible" title="查看详情" ref="actionSheetRef">
<van-tabs v-model="activeName">
<van-tab title="资产基本信息" name="1">
</van-tab>
<van-tab title="盘点信息" name="2">
</van-tab>
</van-tabs>
<div class="detail-container" v-if="activeName==='1'">
<van-cell-group>
<van-cell title="资产编号">
{{ viewData.assetNumber }}
</van-cell>
<van-cell title="资产名称">
{{ viewData.assetName }}
</van-cell>
<van-cell title="资产类别">
{{viewData.assetCategoryName}}{{viewData.assetDepreciationYear}}年)
</van-cell>
<van-cell title="资产规格型号">
{{viewData.assetSpecs}}
</van-cell>
<van-cell title="供应商名称">
{{viewData.assetSupplierName}}
</van-cell>
<van-cell title="采购方式">
{{viewData.assetFundingSubjectName}}
</van-cell>
<van-cell title="单价(元)">
{{viewData.assetUnitPrice}}
</van-cell>
<van-cell title="数量(台/件)">
{{viewData.assetQuantity}}
</van-cell>
<van-cell title="资产类型">
{{viewData.assetTypeCode===1?'校工会资产':'分工会资产'}}
</van-cell>
<van-cell title="开始使用日期">
{{$moment(viewData.assetUsedDate).format('YYYY-MM-DD')}}
</van-cell>
<van-cell title="预计报废时间">
{{$moment(viewData.assetRetiredAssetsDate).format('YYYY-MM-DD')}}
</van-cell>
<van-cell title="责任人">
{{viewData.assetUseUserName}}
</van-cell>
<van-cell title="使用/管理部门">
{{viewData.assetUseUnionName}}
</van-cell>
<van-cell title="存放地点">
{{viewData.assetStorageLocation}}
</van-cell>
<van-cell title="使用状况">
{{viewData.assetUsageStateName}}
</van-cell>
<van-cell title="备注" class="direction-column-cell">
<div style="white-space: pre">{{viewData.assetNotes}}</div>
</van-cell>
</van-cell-group>
</div>
<div class="detail-container" v-else-if="activeName==='2'">
<template v-for="item in viewData.assetStocktakingList"
v-if="viewData.assetStocktakingList&&viewData.assetStocktakingList.length>0">
<van-cell-group :title="$moment(item.createdAt).format('YYYY-MM-DD HH:mm:ss')">
<van-cell title="原责任人">
{{ item.oldAssetUseUserName }}
</van-cell>
<van-cell title="原使用/管理部门">
{{ item.oldAssetUseUnionName }}
</van-cell>
<van-cell title="原存放地点">
{{ item.oldAssetStorageLocation }}
</van-cell>
<van-cell title="原使用状况">
{{ item.oldAssetUsageStateName }}
</van-cell>
<!-- <van-cell title="操作时间">
{{$moment(item.createdAt).format('YYYY-MM-DD HH:mm:ss')}}
</van-cell>-->
<van-cell title="旧备注" class="direction-column-cell">
<div style="white-space: pre">{{item.oldAssetNotes}}</div>
</van-cell>
<van-cell title="旧资产图片" class="direction-column-cell">
{{item.oldAssetFiles}}
</van-cell>
</van-cell-group>
</template>
<template v-if="viewData.assetStocktakingList&&viewData.assetStocktakingList.length===0">
<van-empty description="暂无数据" ></van-empty>
</template>
</div>
</van-action-sheet>
`,
data() {
return {
visible: false,
viewData: {},
row: null,
activeName: "1",
actionSheetRef: null
}
},
methods: {
// 打开
onOpen(row) {
this.activeName = "1"
this.row = row
this.visible = true
this.getInfo()
},
// 获取申请信息
getInfo() {
this.$axios.post('/platform/asset/manage/fondOneAsset', {id: this.row.id}).then((res) => {
if (res.code === 0) {
this.viewData = res.data
}
})
},
}
}
@@ -0,0 +1,192 @@
let H5_ASSET_STOCKTAKING_FORM = {
template: /*language=HTML*/ `
<van-action-sheet v-model="visible" title="盘点信息">
<div>
<div class="form-container">
<van-form ref="formRef">
<van-cell-group title="资产信息">
<van-field label="资产编号"
:rules="[{ required: true }]"
v-model="formData.assetNumber"
readonly
required></van-field>
<van-field label="资产名称"
:rules="[{ required: true }]"
v-model="formData.assetName"
readonly
required></van-field>
<van-field label="开始使用日期"
:rules="[{ required: true }]"
v-model="$moment(formData.assetUsedDate).format('YYYY-MM-DD')"
readonly
required></van-field>
<van-field label="存放地点"
:rules="[{ required: true }]"
v-model="formData.assetStorageLocation"
required
name="assetStorageLocation"
placeholder="请输入存放地点"></van-field>
<van-field
v-model="formData.assetUseName"
name="assetUseName"
label="责任人"
required
readonly
:rules="[{ required: true }]"
is-link
placeholder="请输入工号或姓名选择责任人"
@click="assetUseNameShow=true"
></van-field>
<van-action-sheet v-model="assetUseNameShow" title="责任人" class="height100" :close-on-click-overlay="false">
<van-search
v-model="searchKeyword"
:show-action="false"
:reverse-color="false"
input-align="left"
placeholder="请输入工号或姓名选择责任人"
@input="(val) => {searchAssetUseUser(val)}"
@clear="(val) => {searchAssetUseUser(val)}"
shape="round"
></van-search>
<div class="van-action-sheet__content mt5"
v-if="assetUseUserOption && assetUseUserOption.length>0">
<template>
<template v-for="item in assetUseUserOption">
<van-button native-type="button" @click="onUserSelect(item)"
class="van-action-sheet__item van-hairline--bottom">
<span class="van-action-sheet__name">{{item.username}}{{item.loginname}}</span>
</van-button>
</template>
</template>
</div>
<van-empty description="暂无数据" v-else></van-empty>
</van-action-sheet>
<van-field
:rules="[{ required: true }]"
v-model="formData.assetUsageStateName"
label="使用状况"
name="assetUsageStateName"
placeholder="请选择使用状况"
required
is-link
readonly
@click="showAssetUsageStateNamePopup = true"
></van-field>
<van-popup v-model="showAssetUsageStateNamePopup" position="bottom">
<van-picker
show-toolbar
:columns="assetUsageStateNameOption.map(i => i.name)"
@confirm="onAssetUsageStateNameConfirm"
@cancel="showAssetUsageStateNamePopup = false"
></van-picker>
</van-popup>
<van-field label="备注"
v-model="formData.assetNotes"
type="textarea"
name="assetNotes"
rows="4"
autosize
maxlength="150"
class="more-text"
placeholder="请填写备注"></van-field>
</van-cell-group>
<van-cell-group title="附件">
<van-field class="more-text" name="assetFiles"
:rules="[{ required: true,message:'请上传附件' }]"
label=""
required>
<template #input>
<h5-file-upload
slot="input"
:value.sync="formData.assetFiles"
:upload_number="10"
upload_mode="file"
upload_result_category="array"
upload_result_type="url"
complete_result
></h5-file-upload>
</template>
</van-field>
</van-cell-group>
<!-- 按钮区域 -->
<div class="form-actions">
<van-button type="primary" @click="onSubmit">提交</van-button>
</div>
</van-form>
</div>
</div>
</van-action-sheet>
`,
dicts: ["ASSET_USAGE_STATE"],
data() {
return {
visible: false,
viewData: {},
row: null,
formData: {},
assetUsageStateNameOption:[],
showAssetUsageStateNamePopup:false,
assetUseUserOption:[],
assetUseNameShow:false,
searchKeyword:""
}
},
methods: {
// 打开
async onOpen(row) {
this.row = row
this.$set(this.formData, "assetId", row.id)
this.$set(this.formData, "assetStocktakingPlanId", row.assetStocktakingPlanId)
this.$set(this.formData, "assetNumber", row.assetNumber)
this.$set(this.formData, "assetName", row.assetName)
this.$set(this.formData, "assetUsedDate", row.assetUsedDate)
this.$set(this.formData, "assetStorageLocation", row.assetStorageLocation)
this.assetUsageStateNameOption = await this.$businessTool.getDictOptions("ASSET_USAGE_STATE")
this.visible = true
},
onAssetUsageStateNameConfirm(value,index){
this.formData.assetUsageStateName = this.assetUsageStateNameOption[index].name
this.showAssetUsageStateNamePopup=false
},
onUserSelect(o){
this.$set(this.formData, "assetUseUserId", o.id)
this.$set(this.formData, "assetUseName", o.username)
this.assetUseNameShow = false
},
searchAssetUseUser(val) {
$.get("/platform/asset/manage/searchAssetUseUser", {query: val}).then(resp => {
if (resp.code === 0) {
this.assetUseUserOption = resp.data
}
})
},
onSubmit() {
this.$refs.formRef.validate().then(() => {
this.$dialog.confirm({
title: "提示",
message: "您确定要提交吗?"
}).then(() => {
let formData = clone(this.formData)
if (formData.assetFiles) {
formData.assetFiles = JSON.stringify(formData.assetFiles)
}
this.$axios.post("/platform/asset/stocktaking/doSubmit", formData).then(res => {
if (res.code === 0) {
this.$toast(res.msg)
this.visible = false
this.$emit("save_success")
}
})
})
})
},
}
}
@@ -403,7 +403,7 @@ layout("/layouts/platform_h5.html"){
}).then(res => {
if (res.code === 0) {
this.$toast.success("提交成功")
pjaxReplace("/platform/h5/enrollmentRegistration/apply/mine")
pjaxReplace("/platform/enrollmentRegistration/applyList/h5")
}
})
}).catch(() => {
@@ -427,7 +427,7 @@ layout("/layouts/platform_h5.html"){
}).then(res => {
if (res.code === 0) {
this.$toast.success("提交成功")
pjaxReplace("/platform/h5/enrollmentRegistration/apply/mine")
pjaxReplace("/platform/enrollmentRegistration/applyList/h5")
}
})
}).catch(() => {
@@ -454,7 +454,7 @@ layout("/layouts/platform_h5.html"){
}).then(res => {
if (res.code === 0) {
this.$toast.success("提交成功")
pjaxReplace("/platform/h5/enrollmentRegistration/apply/mine")
pjaxReplace("/platform/enrollmentRegistration/applyList/h5")
}
})
}).catch(() => {
@@ -79,7 +79,7 @@ layout("/layouts/platform_h5.html"){
this.$refs.h5EnrollmentRegistrationInfoRef.onOpen(row)
},
onEdit(row) {
pjaxReplace('/platform/h5/enrollmentRegistration/apply/index?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
pjaxReplace('/platform/enrollmentRegistration/apply/h5?taskId=' + (row.startTaskId || '') + "&bizId=" + row.id)
},
onDelete(id) {
this.$dialog.confirm({