ソースを参照

固定资产增加变更功能

yewc 1 年間 前
コミット
f7bc1185ba

+ 104 - 0
client/src/views/OaSystem/officeCenter/gdzccgsqPage/UserForm.vue

@@ -0,0 +1,104 @@
+<template>
+  <Dialog v-model="dialogVisible" title="变更保管人">
+    <el-form
+      ref="formRef"
+      v-loading="formLoading"
+      :model="formData"
+      :rules="formRules"
+      label-width="120px"
+    >
+      <el-row>
+        <el-col :span="21">
+          <el-form-item label="保管人" prop="custodian">
+            <UserOrgTree v-model="formData.custodian" placeholder="请选择保管人" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <template #footer>
+      <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
+      <el-button @click="dialogVisible = false">取 消</el-button>
+    </template>
+  </Dialog>
+</template>
+<script lang="ts" setup>
+import { CommonStatusEnum } from '@/utils/constants'
+import * as PostApi from '@/api/system/post'
+import * as DeptApi from '@/api/system/dept'
+import * as UserApi from '@/api/system/user'
+import moment from 'moment'
+import request from '@/config/axios'
+import UserOrgTree from '@/views/OaSystem/components/UserOrgTree/index.vue'
+
+defineOptions({ name: 'SystemUserForm' })
+
+const { t } = useI18n() // 国际化
+const message = useMessage() // 消息弹窗
+
+const dialogVisible = ref(false) // 弹窗的是否展示
+const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
+const formType = ref('') // 表单的类型:create - 新增;update - 修改
+const formData = ref({
+  custodian: '',
+  id: undefined
+})
+const checkAge = (rule: any, value: any, callback: any) => {
+  if (!value) {
+    return callback(new Error('请输入保管人'))
+  } else {
+    return true
+  }
+}
+const formRules = reactive({
+  custodian: [{ validator: checkAge, trigger: 'blur' }]
+})
+const formRef = ref() // 表单 Ref
+/** 打开弹窗 */
+const open = async (row: object, userLists: object) => {
+  dialogVisible.value = true
+  resetForm()
+  // 修改时,设置数据
+  if (row) {
+    formLoading.value = true
+    try {
+      formData.value = row
+    } finally {
+      formLoading.value = false
+    }
+  }
+}
+defineExpose({ open }) // 提供 open 方法,用于打开弹窗
+
+/** 提交表单 */
+const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
+const submitForm = async () => {
+  // 校验表单
+  if (!formRef) return
+  const valid = await formRef.value.validate()
+  if (!valid) return
+  // 提交请求
+  formLoading.value = true
+  try {
+    const urlApi = `/AssetProcure/updateDetail`
+    const sendData = {
+      custodian: formData.value.custodian,
+      id: formData.value.id
+    }
+    const result = await request.post({ url: urlApi, data: sendData }, '/business')
+    message.success(t('变更成功'))
+    dialogVisible.value = false
+    // 发送操作成功的事件
+    emit('success')
+  } finally {
+    formLoading.value = false
+  }
+}
+/** 重置表单 */
+const resetForm = () => {
+  formData.value = {
+    custodian: '',
+    id: undefined
+  }
+  formRef.value?.resetFields()
+}
+</script>

+ 17 - 0
client/src/views/OaSystem/officeCenter/gdzccgsqPage/index.vue

@@ -93,12 +93,18 @@
             <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
             导出</el-button
           >
+          <el-button type="danger" @click="changeCustodian">
+            <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
+            变更</el-button
+          >
         </div>
       </div>
     </div>
     <div class="tableBox">
       <div class="table" ref="tableRef">
         <el-table
+          @current-change="onCurrentChange"
+          highlight-current-row
           :data="tableData"
           style="width: 100%; height: 100%"
           :style="{ height: tableHeight + 'px' }"
@@ -173,6 +179,7 @@
       </div>
     </div>
   </div>
+  <UserForm ref="formRef" @success="queryProjectListAjax" />
 </template>
 <script setup lang="ts">
 import moment from 'moment'
@@ -183,6 +190,8 @@ import * as DeptApi from '@/api/system/dept'
 import * as AssetApi from '@/api/system/asset'
 import { defaultProps, handleTree } from '@/utils/tree'
 import { arrFlatten } from '../../attendanceCenter/attendAuth'
+import UserForm from './UserForm.vue'
+
 defineOptions({ name: 'ProjectBook' })
 const xmztMap: any = { 0: '报废', 1: '正常' }
 const router = useRouter()
@@ -258,6 +267,14 @@ const handleCurrentChange = (pageNo: number) => {
   qrs.pageNo = pageNo
   queryProjectListAjax()
 }
+const formRef = ref()
+const changeCustodian = (pageNo: number) => {
+  formRef.value.open(row.value)
+}
+const row: any = ref([])
+const onCurrentChange = (currentRow: object) => {
+  row.value = currentRow
+}
 const operateClick = (row: any) => {
   router.push({
     path: '/processLook',

+ 12 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/Asset/controller/AssetProcureController.java

@@ -6,8 +6,11 @@ import com.zjugis.business.bean.dto.ProjectDto;
 import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.flow.Asset.controller.vo.AssetProcureRespVO;
 import com.zjugis.business.flow.Asset.controller.vo.AssetProcureUpdateReqVO;
+import com.zjugis.business.flow.Asset.entity.AssetProcureDetailDO;
+import com.zjugis.business.flow.Asset.service.AssetProcureDetailService;
 import com.zjugis.business.flow.Asset.service.AssetProcureService;
 import com.zjugis.business.flow.usemoney.controller.vo.UseMoneyRespVO;
+import com.zjugis.business.flow.usemoney.entity.UseMoneyDetailDO;
 import com.zjugis.framework.common.pojo.CommonResult;
 import com.zjugis.framework.workflow.model.BaseController;
 import com.zjugis.framework.workflow.model.Grid;
@@ -37,6 +40,9 @@ public class AssetProcureController extends BaseController {
 
     @Resource
     private AssetProcureService assetProcureService;
+    @Resource
+    private AssetProcureDetailService assetProcureDetailService;
+
 
     @WorkFlow(isReceiveMaterial = true, isReceiveOpinion = true)
     @ResponseBody
@@ -85,4 +91,10 @@ public class AssetProcureController extends BaseController {
     public CommonResult<AssetProcureRespVO> mobileAdd(String activityTemplateId, String flowInstanceId, String userId){
         return CommonResult.success(assetProcureService.flowAdd(flowInstanceId, userId));
     }
+    @PostMapping("/updateDetail")
+    @Operation(summary = "核销更新")
+    public String updateDetail(@Valid @RequestBody AssetProcureDetailDO updateReqVO) {
+        assetProcureDetailService.updateDetail(updateReqVO);
+        return success(true);
+    }
 }

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/Asset/service/AssetProcureDetailService.java

@@ -20,4 +20,6 @@ public interface AssetProcureDetailService {
      * @return
      */
     List<AssetProcureDetailDO> getListByCommonCostId(String assetId);
+
+    void updateDetail(AssetProcureDetailDO updateReqVO);
 }

+ 13 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/Asset/service/AssetProcureDetailServiceImpl.java

@@ -23,9 +23,22 @@ public class AssetProcureDetailServiceImpl implements AssetProcureDetailService
 
     @Resource
     private AssetProcureDetailDao assetProcureDetailDao;
+    @Resource
+    private AdminUserApi adminUserApi;
     @Override
     public List<AssetProcureDetailDO> getListByCommonCostId(String assetId) {
         return assetProcureDetailDao.getListByCommonCostId(assetId);
     }
 
+    @Override
+    public void updateDetail(AssetProcureDetailDO updateReqVO) {
+        CommonResult<AdminUserRespDTO> cust = adminUserApi.getUser(updateReqVO.getCustodian());
+        if (cust.isSuccess()) {
+            updateReqVO.setCustodianDept(cust.getData().getDeptId());
+            updateReqVO.setCustodianName(cust.getData().getNickname());
+            updateReqVO.setCustodianDeptName(cust.getData().getDeptName());
+        }
+        assetProcureDetailDao.updateById(updateReqVO);
+    }
+
 }