瀏覽代碼

钉钉流程增加

yewc 1 年之前
父節點
當前提交
4ca2d4d3b9

+ 217 - 0
client_h5/src/pages/asset/indexAgent.vue

@@ -0,0 +1,217 @@
+
+<template>
+  <flow-form :data="formData" @submit="submitNextActivity">
+        <card title="基础信息">
+          <van-form required="auto" :readonly="formRead">
+            <van-cell-group inset>
+              <van-field
+                v-model="formData.userNickname"
+                name="申请人"
+                label="申请人"
+                placeholder="申请人"
+                readonly 
+              />
+              <van-field
+                v-model="formData.deptName"
+                name="所在部门"
+                label="所在部门"
+                placeholder="所在部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.applyTime"
+                name="申请时间"
+                label="申请时间"
+                placeholder="申请时间"
+                readonly 
+              />
+              <van-field
+                v-model="formData.useMoneyNo"
+                name="用款单号"
+                label="用款单号"
+                placeholder="用款单号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.paymentCompanyName"
+                name="付款单位"
+                label="付款单位"
+                placeholder="付款单位"
+                readonly
+              />
+              <van-field
+                v-model="formData.paymentMethod"
+                name="付款方式"
+                label="付款方式"
+                placeholder="付款方式"
+                readonly
+              />
+               <van-field
+                v-model="formData.agreedPayTime"
+                name="约定付款期限"
+                label="约定付款期限"
+                placeholder="约定付款期限"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompany"
+                name="收款单位"
+                label="收款单位"
+                placeholder="收款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyBank"
+                name="收款单位开户行"
+                label="收款单位开户行"
+                placeholder="收款单位开户行"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyAccount"
+                name="收款单位账号"
+                label="收款单位账号"
+                placeholder="收款单位账号"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmount"
+                name="用款总金额(元)"
+                label="用款总金额(元)"
+                placeholder="用款总金额(元)"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmountCn"
+                name="大写用款总金额"
+                label="大写用款总金额"
+                placeholder="大写用款总金额"
+                readonly
+              />
+              <van-field
+                v-model="formData.remark"
+                name="用款说明"
+                label="用款说明"
+                placeholder="用款说明"
+                type="textarea"
+                rows="3"
+                autosize
+                readonly
+              />
+            </van-cell-group>
+          </van-form>
+        </card>
+        <card title="用款详情">
+            <template #default>
+              <div v-for="(item,index) in formData.detailList" :key="index">
+                <van-swipe-cell :disabled="formRead">
+                  <card-cell>
+                    <van-cell title="项目名称" :value="item.projectName" />
+                    <van-cell title="责任部门" :value="item.projectDeptName" />
+                    <van-cell title="金额(元)" :value="item.amount" />
+                    <van-cell title="实际所属类型" :value="item.costTypeName" />
+                    <van-cell title="用途" :value="item.costContent" />
+                    <van-cell title="备注" :value="item.remark" />
+                  </card-cell>
+                </van-swipe-cell> 
+              </div>
+            </template>
+        </card>
+  </flow-form>
+</template>
+
+<script setup lang="ts">
+import { useRoute } from 'vue-router';
+import { FlowDTO, getNextActivity } from '@/service/flow';
+import reqest from "@/utils/request";
+import FlowForm from '@/components/flowForm.vue';
+import Card from '@/components/card.vue';
+import CardCell from '@/components/cardCell.vue';
+import moment from 'moment'
+const route = useRoute();
+interface FormDataType {
+  instanceId: string
+  id: string
+  leaveHours: number | null
+  userNickname: string
+  deptName: string
+  applyTime: string
+  leaveNo: string
+  leaveType: number | null
+  leaveTypeText: string
+  leaveDays: string
+  leaveReason: string
+  detailList: {
+    projectName: string,
+    projectDeptName: string,
+    amount: string,
+    costTypeName: string,
+    costContent: string,
+    remark: string
+  }[]
+}
+const formData = ref<FormDataType>({
+  instanceId: '',
+  id: '',
+  leaveHours: null,
+  userNickname: '',
+  deptName: '',
+  applyTime: '',
+  leaveNo: '',
+  leaveType: null,
+  leaveTypeText: '',
+  leaveDays: '',
+  leaveReason: '',
+  detailList: []
+})
+const formRead = ref(false)
+const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
+  activityInstanceId: string;
+  participant: string;
+  flowInstanceId: string;
+  read: string;
+};
+const activityData: FlowDTO = {
+  activityInstanceId,
+  participantId: participant,
+  flowOpinion: ''
+}
+const submitNextActivity = async (activeOpinion: any) => {
+  //工作流转件
+  activityData.activityInstanceId=activityInstanceId
+  activityData.participantId=participant
+  activityData.flowOpinion=JSON.stringify(activeOpinion)
+  const result = await getNextActivity(jsonToFormData(activityData))
+}
+const jsonToFormData = (json: any): FormData | null => {
+  const keys: string[] = Object.keys(json)
+  if (keys.length > 0) { 
+    const formData = new FormData();
+    keys.forEach((key) => { 
+      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    });
+    return formData;
+  }
+  return null;
+}
+
+/** 初始化表单数据 */
+const initFormData= async () => {
+  const result = await reqest.get(`/business/UseMoney/mobileAdd?flowInstanceId=${flowInstanceId}`)
+  formData.value = result.data
+  formData.value.applyTime=formData.value.applyTime?moment(formData.value.applyTime).format('YYYY-MM-DD'):''
+  formData.value.agreedPayTime=formData.value.agreedPayTime?moment(formData.value.agreedPayTime).format('YYYY-MM-DD'):''
+}
+
+/** 初始化 */
+onMounted(() => {
+  initFormData()
+  if(read==='1'){
+    formRead.value=true
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 188 - 0
client_h5/src/pages/asset/indexs.vue

@@ -0,0 +1,188 @@
+
+<template>
+  <flow-form :data="formData" @submit="submitNextActivity">
+        <card title="基础信息">
+          <van-form required="auto" :readonly="formRead">
+            <van-cell-group inset>
+              <van-field
+                v-model="formData.userNickname"
+                name="申请人"
+                label="申请人"
+                placeholder="申请人"
+                readonly 
+              />
+              <van-field
+                v-model="formData.deptName"
+                name="所在部门"
+                label="所在部门"
+                placeholder="所在部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.applyTime"
+                name="申请时间"
+                label="申请时间"
+                placeholder="申请时间"
+                readonly 
+              />
+              <van-field
+                v-model="formData.procureNo"
+                name="采购单号"
+                label="采购单号"
+                placeholder="采购单号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectName"
+                name="项目名称"
+                label="项目名称"
+                placeholder="项目名称"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectXmbh"
+                name="项目编号"
+                label="项目编号"
+                placeholder="项目编号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectZrbm"
+                name="项目责任部门"
+                label="项目责任部门"
+                placeholder="项目责任部门"
+                readonly 
+              />
+               <van-field
+                v-model="formData.totalAmount"
+                name="采购总金额(元)"
+                label="采购总金额(元)"
+                placeholder="采购总金额(元)"
+                readonly
+              />
+              <van-field
+                v-model="formData.procureReason"
+                name="采购清单说明"
+                label="采购清单说明"
+                placeholder="采购清单说明"
+                type="textarea"
+                rows="3"
+                autosize
+                readonly
+              />
+            </van-cell-group>
+          </van-form>
+        </card>
+        <card title="采购详情">
+            <template #default>
+              <div v-for="(item,index) in formData.detailList" :key="index">
+                <van-swipe-cell :disabled="formRead">
+                  <card-cell>
+                    <van-cell title="采购时间" :value="item.procureTime" />
+                    <van-cell title="资产名称" :value="item.assetName" />
+                    <van-cell title="资产类型" :value="item.assetType" />
+                    <van-cell title="资产型号" :value="item.assetModel" />
+                    <van-cell title="保管人" :value="item.custodian" />
+                    <van-cell title="金额(元)" :value="item.amount" />
+                    <van-cell title="备注" :value="item.bz1" />
+                  </card-cell>
+                </van-swipe-cell> 
+              </div>
+            </template>
+        </card>
+  </flow-form>
+</template>
+
+<script setup lang="ts">
+import { useRoute } from 'vue-router';
+import { FlowDTO, getNextActivity } from '@/service/flow';
+import reqest from "@/utils/request";
+import FlowForm from '@/components/flowForm.vue';
+import Card from '@/components/card.vue';
+import CardCell from '@/components/cardCell.vue';
+import moment from 'moment'
+const route = useRoute();
+interface FormDataType {
+  instanceId: string
+  id: string
+  leaveHours: number | null
+  userNickname: string
+  deptName: string
+  applyTime: string
+  leaveNo: string
+  leaveType: number | null
+  leaveTypeText: string
+  leaveDays: string
+  leaveReason: string
+  detailList: {
+    amount: string,
+    costTypeName: string,
+    costContent: string,
+    remark: string
+  }[]
+}
+const formData = ref<FormDataType>({
+  instanceId: '',
+  id: '',
+  leaveHours: null,
+  userNickname: '',
+  deptName: '',
+  applyTime: '',
+  leaveNo: '',
+  leaveType: null,
+  leaveTypeText: '',
+  leaveDays: '',
+  leaveReason: '',
+  detailList: []
+})
+const formRead = ref(false)
+const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
+  activityInstanceId: string;
+  participant: string;
+  flowInstanceId: string;
+  read: string;
+};
+const activityData: FlowDTO = {
+  activityInstanceId,
+  participantId: participant,
+  flowOpinion: ''
+}
+const submitNextActivity = async (activeOpinion: any) => {
+  //工作流转件
+  activityData.activityInstanceId=activityInstanceId
+  activityData.participantId=participant
+  activityData.flowOpinion=JSON.stringify(activeOpinion)
+  const result = await getNextActivity(jsonToFormData(activityData))
+}
+const jsonToFormData = (json: any): FormData | null => {
+  const keys: string[] = Object.keys(json)
+  if (keys.length > 0) { 
+    const formData = new FormData();
+    keys.forEach((key) => { 
+      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    });
+    return formData;
+  }
+  return null;
+}
+
+/** 初始化表单数据 */
+const initFormData= async () => {
+  const result = await reqest.get(`/business/UseMoney/mobileAdd?flowInstanceId=${flowInstanceId}`)
+  formData.value = result.data
+  formData.value.applyTime=moment(formData.value.applyTime).format('YYYY-MM-DD')
+  formData.value.agreedPayTime=moment(formData.value.agreedPayTime).format('YYYY-MM-DD')
+}
+
+/** 初始化 */
+onMounted(() => {
+  initFormData()
+  if(read==='1'){
+    formRead.value=true
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 163 - 119
client_h5/src/pages/loan/index.vue

@@ -1,154 +1,198 @@
 
 <template>
   <flow-form :data="formData" @submit="submitNextActivity">
-        <card title="基础信息">
-          <van-form required="auto" :readonly="formRead">
-            <van-cell-group inset>
-              <van-field
-                v-model="formData.worker"
-                name="借款人"
-                label="借款人"
-                placeholder="借款人"
-                readonly 
-                :rules="[{ required: true, message: '未获取借款人' }]"
-              />
-              <van-field
-                v-model="formData.workerDept"
-                name="所在部门"
-                label="所在部门"
-                placeholder="所在部门"
-                readonly 
-                :rules="[{ required: true, message: '未获取所在部门' }]"
-              />
-              <van-field
-                v-model="formData.applyDate"
-                name="申请时间"
-                label="申请时间"
-                placeholder="申请时间"
-                readonly 
-                :rules="[{ required: true, message: '未获取申请时间' }]"
-              />
-              <van-field
-                v-model="formData.loanNumber"
-                name="借款单号"
-                label="借款单号"
-                placeholder="借款单号"
-                readonly 
-                :rules="[{ required: true, message: '未获取借款单号' }]"
-              />
-              <van-field
-                v-model="formData.loanAmount"
-                name="借款总金额(元)"
-                label="借款总金额(元)"
-                placeholder="借款总金额(元)"
-                :rules="[{ required: true, message: '请填写借款总金额(元)' }]"
-              />
-              <van-field
-                v-model="formData.description"
-                name="借款事由"
-                label="借款事由"
-                placeholder="借款事由"
-                type="textarea"
-                rows="3"
-                autosize
-                :rules="[{ required: true, message: '请填写借款事由' }]"
-              />
-              <van-field
-                v-model="formData.bz1"
-                name="借款备注"
-                label="借款备注"
-                placeholder="借款备注"
-                type="textarea"
-                rows="3"
-                autosize
-                :rules="[{ required: true, message: '请填写借款备注' }]"
-              />
-            </van-cell-group>
-          </van-form>
-        </card>
+    <card title="基础信息">
+      <van-form required="auto" :readonly="formRead">
+        <van-cell-group inset>
+          <van-field
+            v-model="formData.worker"
+            name="借款人"
+            label="借款人"
+            placeholder="借款人"
+            readonly
+            :rules="[{ required: true, message: '未获取借款人' }]"
+          />
+          <van-field
+            v-model="formData.workerDept"
+            name="所在部门"
+            label="所在部门"
+            placeholder="所在部门"
+            readonly
+            :rules="[{ required: true, message: '未获取所在部门' }]"
+          />
+          <van-field
+            v-model="formData.applyDate"
+            name="申请时间"
+            label="申请时间"
+            placeholder="申请时间"
+            readonly
+            :rules="[{ required: true, message: '未获取申请时间' }]"
+          />
+          <van-field
+            v-model="formData.loanNumber"
+            name="借款单号"
+            label="借款单号"
+            placeholder="借款单号"
+            readonly
+            :rules="[{ required: true, message: '未获取借款单号' }]"
+          />
+          <van-field
+            v-model="formData.projectName"
+            is-link
+            readonly
+            name="项目"
+            label="项目"
+            placeholder="点击选择项目"
+            @click="showPicker = true"
+            :rules="[{ required: true, message: '请选择项目' }]"
+          />
+          <van-field
+            v-model="formData.loanAmount"
+            name="借款总金额(元)"
+            label="借款总金额(元)"
+            placeholder="借款总金额(元)"
+            :rules="[{ required: true, message: '请填写借款总金额(元)' }]"
+          />
+          <van-field
+            v-model="formData.description"
+            name="借款事由"
+            label="借款事由"
+            placeholder="借款事由"
+            type="textarea"
+            rows="3"
+            autosize
+            :rules="[{ required: true, message: '请填写借款事由' }]"
+          />
+          <van-field
+            v-model="formData.bz1"
+            name="借款备注"
+            label="借款备注"
+            placeholder="借款备注"
+            type="textarea"
+            rows="3"
+            autosize
+            :rules="[{ required: true, message: '请填写借款备注' }]"
+          />
+        </van-cell-group>
+      </van-form>
+    </card>
   </flow-form>
+  <van-popup v-model:show="showPicker" position="bottom">
+    <van-picker
+      :columns="columns"
+      @confirm="onConfirm"
+      @cancel="showPicker = false"
+      :columns-field-names="customFieldName"
+    />
+  </van-popup>
 </template>
 
 <script setup lang="ts">
-import { useRoute } from 'vue-router';
-import { FlowDTO, getNextActivity } from '@/service/flow';
+import { useRoute } from "vue-router";
+import { FlowDTO, getNextActivity } from "@/service/flow";
 import reqest from "@/utils/request";
-import DateTimeRange from '@/components/dateTimeRange.vue';
-import FlowForm from '@/components/flowForm.vue';
-import Card from '@/components/card.vue';
-import CardCell from '@/components/cardCell.vue';
+import DateTimeRange from "@/components/dateTimeRange.vue";
+import FlowForm from "@/components/flowForm.vue";
+import Card from "@/components/card.vue";
+import CardCell from "@/components/cardCell.vue";
 const route = useRoute();
 interface FormDataType {
-  instanceId: string
-  id: string
-  worker: string
-  workerDept: string
-  applyDate: string
-  loanNumber: string
-  loanAmount: string
-  description: string
-  bz1: string
+  instanceId: string;
+  id: string;
+  worker: string;
+  workerDept: string;
+  applyDate: string;
+  loanNumber: string;
+  loanAmount: string;
+  description: string;
+  projectName: string;
+  projecId: string;
+  bz1: string;
 }
 const formData = ref<FormDataType>({
-  instanceId: '',
-  id: '',
-  worker: '',
-  workerDept: '',
-  applyDate: '',
-  loanNumber: '',
+  instanceId: "",
+  id: "",
+  worker: "",
+  workerDept: "",
+  applyDate: "",
+  loanNumber: "",
   loanAmount: null,
-  description: '',
-  bz1: ''
-})
-const formRead = ref(false)
-const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
-  activityInstanceId: string;
-  participant: string;
-  flowInstanceId: string;
-  read: string;
+  description: "",
+  bz1: "",
+  projectName: "",
+  projecId: "",
+});
+let columns = [];
+const showPicker = ref(false);
+const customFieldName = {
+  text: "xmmc",
+  value: "id",
 };
+const onConfirm = (value) => {
+  formData.value.projectId = value.selectedValues[0];
+  formData.value.projectName = value.selectedOptions[0].xmmc;
+  showPicker.value = false;
+};
+const formRead = ref(false);
+const { activityInstanceId, participant, flowInstanceId, read } =
+  route.query as {
+    activityInstanceId: string;
+    participant: string;
+    flowInstanceId: string;
+    read: string;
+  };
 const activityData: FlowDTO = {
   activityInstanceId,
   participantId: participant,
-  flowOpinion: ''
-}
+  flowOpinion: "",
+};
 const submitNextActivity = async (activeOpinion: any) => {
   //更新表单业务数据
-  const result = await reqest.post("/business/Loan/update",formData.value)
-  if(result.code ===200||result.code ===0){
+  const result = await reqest.post("/business/Loan/update", formData.value);
+  if (result.code === 200 || result.code === 0) {
     //工作流转件
-    activityData.activityInstanceId=activityInstanceId
-    activityData.participantId=participant
-    activityData.flowOpinion=JSON.stringify(activeOpinion)
-    const result = await getNextActivity(jsonToFormData(activityData))
+    activityData.activityInstanceId = activityInstanceId;
+    activityData.participantId = participant;
+    activityData.flowOpinion = JSON.stringify(activeOpinion);
+    const result = await getNextActivity(jsonToFormData(activityData));
   }
-}
+};
 const jsonToFormData = (json: any): FormData | null => {
-  const keys: string[] = Object.keys(json)
-  if (keys.length > 0) { 
+  const keys: string[] = Object.keys(json);
+  if (keys.length > 0) {
     const formData = new FormData();
-    keys.forEach((key) => { 
-      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    keys.forEach((key) => {
+      formData.append(
+        key,
+        json[key] instanceof Object ? JSON.stringify(json[key]) : json[key]
+      );
     });
     return formData;
   }
   return null;
-}
+};
 
 /** 初始化表单数据 */
-const initFormData= async () => {
-  const result = await reqest.get(`/business/Loan/mobileAdd?flowInstanceId=${flowInstanceId}`)
-  formData.value = result.data
-}
-
-
+const initFormData = async () => {
+  const result = await reqest.get(
+    `/business/Loan/mobileAdd?flowInstanceId=${flowInstanceId}`
+  );
+  formData.value = result.data;
+};
+const getProjectList = async () => {
+  const result = await reqest.get(
+    `/business/project/getListByUser?userId=${flowInstanceId}`
+  );
+  columns = result.data;
+};
 /** 初始化 */
 onMounted(() => {
-  initFormData()
-  if(read==='1'){
-    formRead.value=true
+  initFormData();
+  getProjectList();
+  if (read === "1") {
+    formRead.value = true;
   }
-})
+});
 </script>
 
 <style lang="scss" scoped>

+ 33 - 0
client_h5/src/pages/outsource/index.scss

@@ -0,0 +1,33 @@
+.van-cell-group {
+  margin: 0px;
+}
+.van-overlay {
+  background: rgba(0,0,0,0.3);
+}
+.add_btn {
+  background-color: #1989fa;
+  padding: 5px 10px;
+  border: 0px;
+  outline: none;
+  font-size: 13px;
+  color: #fff;
+  border-radius: 2px;
+}
+.detail-popup {
+  >.title {
+    font-size: 15px;
+    padding-left: 10px;
+  }
+  >.fixed-btn {
+    padding: 15px;
+  }
+}
+  :deep(.van-swipe-cell__right) {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    >button {
+      height: 50%;
+    }
+  }

+ 281 - 0
client_h5/src/pages/outsource/index.vue

@@ -0,0 +1,281 @@
+
+<template>
+  <flow-form :data="formData" @submit="submitNextActivity">
+        <card title="基础信息">
+          <van-form required="auto" :readonly="formRead">
+            <van-cell-group inset>
+              <van-field
+                v-model="formData.userNickname"
+                name="申请人"
+                label="申请人"
+                placeholder="申请人"
+                readonly 
+              />
+              <van-field
+                v-model="formData.deptName"
+                name="所在部门"
+                label="所在部门"
+                placeholder="所在部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.applyTime"
+                name="申请时间"
+                label="申请时间"
+                placeholder="申请时间"
+                readonly 
+              />
+              <van-field
+                v-model="formData.useMoneyNo"
+                name="用款单号"
+                label="用款单号"
+                placeholder="用款单号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectName"
+                name="项目名称"
+                label="项目名称"
+                placeholder="项目名称"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectXmbh"
+                name="项目编号"
+                label="项目编号"
+                placeholder="项目编号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectZrbm"
+                name="项目责任部门"
+                label="项目责任部门"
+                placeholder="项目责任部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.hth"
+                name="合同号"
+                label="合同号"
+                placeholder="合同号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.name"
+                name="分包合同名称"
+                label="分包合同名称"
+                placeholder="分包合同名称"
+                readonly 
+                v-if="formData.contractId!=null&&formData.contractType==1"
+              />
+              <van-field
+                v-model="formData.name"
+                name="外包合同名称"
+                label="外包合同名称"
+                placeholder="外包合同名称"
+                readonly 
+                v-if="formData.contractId!=null&&formData.contractType==2"
+              />
+              <van-field
+                v-model="formData.contractAmount"
+                name="合同金额(元)"
+                label="合同金额(元)"
+                placeholder="合同金额(元)"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.payAmount"
+                name="已支付金额"
+                label="已支付金额"
+                placeholder="已支付金额"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.paymentTerms"
+                name="付款条件"
+                label="付款条件"
+                placeholder="付款条件"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.paymentCompanyName"
+                name="付款单位"
+                label="付款单位"
+                placeholder="付款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.paymentMethod"
+                name="付款方式"
+                label="付款方式"
+                placeholder="付款方式"
+                readonly
+              />
+               <van-field
+                v-model="formData.agreedPayTime"
+                name="约定付款期限"
+                label="约定付款期限"
+                placeholder="约定付款期限"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompany"
+                name="收款单位"
+                label="收款单位"
+                placeholder="收款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyBank"
+                name="收款单位开户行"
+                label="收款单位开户行"
+                placeholder="收款单位开户行"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyAccount"
+                name="收款单位账号"
+                label="收款单位账号"
+                placeholder="收款单位账号"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmount"
+                name="用款总金额(元)"
+                label="用款总金额(元)"
+                placeholder="用款总金额(元)"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmountCn"
+                name="大写用款总金额"
+                label="大写用款总金额"
+                placeholder="大写用款总金额"
+                readonly
+              />
+              <van-field
+                v-model="formData.remark"
+                name="用款说明"
+                label="用款说明"
+                placeholder="用款说明"
+                type="textarea"
+                rows="3"
+                autosize
+                readonly
+              />
+            </van-cell-group>
+          </van-form>
+        </card>
+        <card title="用款详情">
+            <template #default>
+              <div v-for="(item,index) in formData.detailList" :key="index">
+                <van-swipe-cell :disabled="formRead">
+                  <card-cell>
+                    <van-cell title="金额(元)" :value="item.amount" />
+                    <van-cell title="实际所属类型" :value="item.costTypeName" />
+                    <van-cell title="用途" :value="item.costContent" />
+                    <van-cell title="备注" :value="item.remark" />
+                  </card-cell>
+                </van-swipe-cell> 
+              </div>
+            </template>
+        </card>
+  </flow-form>
+</template>
+
+<script setup lang="ts">
+import { useRoute } from 'vue-router';
+import { FlowDTO, getNextActivity } from '@/service/flow';
+import reqest from "@/utils/request";
+import FlowForm from '@/components/flowForm.vue';
+import Card from '@/components/card.vue';
+import CardCell from '@/components/cardCell.vue';
+import moment from 'moment'
+const route = useRoute();
+interface FormDataType {
+  instanceId: string
+  id: string
+  leaveHours: number | null
+  userNickname: string
+  deptName: string
+  applyTime: string
+  leaveNo: string
+  leaveType: number | null
+  leaveTypeText: string
+  leaveDays: string
+  leaveReason: string
+  detailList: {
+    amount: string,
+    costTypeName: string,
+    costContent: string,
+    remark: string
+  }[]
+}
+const formData = ref<FormDataType>({
+  instanceId: '',
+  id: '',
+  leaveHours: null,
+  userNickname: '',
+  deptName: '',
+  applyTime: '',
+  leaveNo: '',
+  leaveType: null,
+  leaveTypeText: '',
+  leaveDays: '',
+  leaveReason: '',
+  detailList: []
+})
+const formRead = ref(false)
+const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
+  activityInstanceId: string;
+  participant: string;
+  flowInstanceId: string;
+  read: string;
+};
+const activityData: FlowDTO = {
+  activityInstanceId,
+  participantId: participant,
+  flowOpinion: ''
+}
+const submitNextActivity = async (activeOpinion: any) => {
+  //工作流转件
+  activityData.activityInstanceId=activityInstanceId
+  activityData.participantId=participant
+  activityData.flowOpinion=JSON.stringify(activeOpinion)
+  const result = await getNextActivity(jsonToFormData(activityData))
+}
+const jsonToFormData = (json: any): FormData | null => {
+  const keys: string[] = Object.keys(json)
+  if (keys.length > 0) { 
+    const formData = new FormData();
+    keys.forEach((key) => { 
+      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    });
+    return formData;
+  }
+  return null;
+}
+
+/** 初始化表单数据 */
+const initFormData= async () => {
+  const result = await reqest.get(`/business/UseMoney/mobileAdd?flowInstanceId=${flowInstanceId}`)
+  formData.value = result.data
+  formData.value.applyTime=moment(formData.value.applyTime).format('YYYY-MM-DD')
+  formData.value.agreedPayTime=moment(formData.value.agreedPayTime).format('YYYY-MM-DD')
+}
+
+/** 初始化 */
+onMounted(() => {
+  initFormData()
+  if(read==='1'){
+    formRead.value=true
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 33 - 0
client_h5/src/pages/projectstatus/index.scss

@@ -0,0 +1,33 @@
+.van-cell-group {
+  margin: 0px;
+}
+.van-overlay {
+  background: rgba(0,0,0,0.3);
+}
+.add_btn {
+  background-color: #1989fa;
+  padding: 5px 10px;
+  border: 0px;
+  outline: none;
+  font-size: 13px;
+  color: #fff;
+  border-radius: 2px;
+}
+.detail-popup {
+  >.title {
+    font-size: 15px;
+    padding-left: 10px;
+  }
+  >.fixed-btn {
+    padding: 15px;
+  }
+}
+  :deep(.van-swipe-cell__right) {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: center;
+    >button {
+      height: 50%;
+    }
+  }

+ 281 - 0
client_h5/src/pages/projectstatus/index.vue

@@ -0,0 +1,281 @@
+
+<template>
+  <flow-form :data="formData" @submit="submitNextActivity">
+        <card title="基础信息">
+          <van-form required="auto" :readonly="formRead">
+            <van-cell-group inset>
+              <van-field
+                v-model="formData.userNickname"
+                name="申请人"
+                label="申请人"
+                placeholder="申请人"
+                readonly 
+              />
+              <van-field
+                v-model="formData.deptName"
+                name="所在部门"
+                label="所在部门"
+                placeholder="所在部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.applyTime"
+                name="申请时间"
+                label="申请时间"
+                placeholder="申请时间"
+                readonly 
+              />
+              <van-field
+                v-model="formData.useMoneyNo"
+                name="用款单号"
+                label="用款单号"
+                placeholder="用款单号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectName"
+                name="项目名称"
+                label="项目名称"
+                placeholder="项目名称"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectXmbh"
+                name="项目编号"
+                label="项目编号"
+                placeholder="项目编号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.projectZrbm"
+                name="项目责任部门"
+                label="项目责任部门"
+                placeholder="项目责任部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.hth"
+                name="合同号"
+                label="合同号"
+                placeholder="合同号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.name"
+                name="分包合同名称"
+                label="分包合同名称"
+                placeholder="分包合同名称"
+                readonly 
+                v-if="formData.contractId!=null&&formData.contractType==1"
+              />
+              <van-field
+                v-model="formData.name"
+                name="外包合同名称"
+                label="外包合同名称"
+                placeholder="外包合同名称"
+                readonly 
+                v-if="formData.contractId!=null&&formData.contractType==2"
+              />
+              <van-field
+                v-model="formData.contractAmount"
+                name="合同金额(元)"
+                label="合同金额(元)"
+                placeholder="合同金额(元)"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.payAmount"
+                name="已支付金额"
+                label="已支付金额"
+                placeholder="已支付金额"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.paymentTerms"
+                name="付款条件"
+                label="付款条件"
+                placeholder="付款条件"
+                readonly 
+                v-if="formData.contractId!=null"
+              />
+              <van-field
+                v-model="formData.paymentCompanyName"
+                name="付款单位"
+                label="付款单位"
+                placeholder="付款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.paymentMethod"
+                name="付款方式"
+                label="付款方式"
+                placeholder="付款方式"
+                readonly
+              />
+               <van-field
+                v-model="formData.agreedPayTime"
+                name="约定付款期限"
+                label="约定付款期限"
+                placeholder="约定付款期限"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompany"
+                name="收款单位"
+                label="收款单位"
+                placeholder="收款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyBank"
+                name="收款单位开户行"
+                label="收款单位开户行"
+                placeholder="收款单位开户行"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyAccount"
+                name="收款单位账号"
+                label="收款单位账号"
+                placeholder="收款单位账号"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmount"
+                name="用款总金额(元)"
+                label="用款总金额(元)"
+                placeholder="用款总金额(元)"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmountCn"
+                name="大写用款总金额"
+                label="大写用款总金额"
+                placeholder="大写用款总金额"
+                readonly
+              />
+              <van-field
+                v-model="formData.remark"
+                name="用款说明"
+                label="用款说明"
+                placeholder="用款说明"
+                type="textarea"
+                rows="3"
+                autosize
+                readonly
+              />
+            </van-cell-group>
+          </van-form>
+        </card>
+        <card title="用款详情">
+            <template #default>
+              <div v-for="(item,index) in formData.detailList" :key="index">
+                <van-swipe-cell :disabled="formRead">
+                  <card-cell>
+                    <van-cell title="金额(元)" :value="item.amount" />
+                    <van-cell title="实际所属类型" :value="item.costTypeName" />
+                    <van-cell title="用途" :value="item.costContent" />
+                    <van-cell title="备注" :value="item.remark" />
+                  </card-cell>
+                </van-swipe-cell> 
+              </div>
+            </template>
+        </card>
+  </flow-form>
+</template>
+
+<script setup lang="ts">
+import { useRoute } from 'vue-router';
+import { FlowDTO, getNextActivity } from '@/service/flow';
+import reqest from "@/utils/request";
+import FlowForm from '@/components/flowForm.vue';
+import Card from '@/components/card.vue';
+import CardCell from '@/components/cardCell.vue';
+import moment from 'moment'
+const route = useRoute();
+interface FormDataType {
+  instanceId: string
+  id: string
+  leaveHours: number | null
+  userNickname: string
+  deptName: string
+  applyTime: string
+  leaveNo: string
+  leaveType: number | null
+  leaveTypeText: string
+  leaveDays: string
+  leaveReason: string
+  detailList: {
+    amount: string,
+    costTypeName: string,
+    costContent: string,
+    remark: string
+  }[]
+}
+const formData = ref<FormDataType>({
+  instanceId: '',
+  id: '',
+  leaveHours: null,
+  userNickname: '',
+  deptName: '',
+  applyTime: '',
+  leaveNo: '',
+  leaveType: null,
+  leaveTypeText: '',
+  leaveDays: '',
+  leaveReason: '',
+  detailList: []
+})
+const formRead = ref(false)
+const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
+  activityInstanceId: string;
+  participant: string;
+  flowInstanceId: string;
+  read: string;
+};
+const activityData: FlowDTO = {
+  activityInstanceId,
+  participantId: participant,
+  flowOpinion: ''
+}
+const submitNextActivity = async (activeOpinion: any) => {
+  //工作流转件
+  activityData.activityInstanceId=activityInstanceId
+  activityData.participantId=participant
+  activityData.flowOpinion=JSON.stringify(activeOpinion)
+  const result = await getNextActivity(jsonToFormData(activityData))
+}
+const jsonToFormData = (json: any): FormData | null => {
+  const keys: string[] = Object.keys(json)
+  if (keys.length > 0) { 
+    const formData = new FormData();
+    keys.forEach((key) => { 
+      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    });
+    return formData;
+  }
+  return null;
+}
+
+/** 初始化表单数据 */
+const initFormData= async () => {
+  const result = await reqest.get(`/business/UseMoney/mobileAdd?flowInstanceId=${flowInstanceId}`)
+  formData.value = result.data
+  formData.value.applyTime=moment(formData.value.applyTime).format('YYYY-MM-DD')
+  formData.value.agreedPayTime=moment(formData.value.agreedPayTime).format('YYYY-MM-DD')
+}
+
+/** 初始化 */
+onMounted(() => {
+  initFormData()
+  if(read==='1'){
+    formRead.value=true
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 217 - 0
client_h5/src/pages/projectstatus/indexJx.vue

@@ -0,0 +1,217 @@
+
+<template>
+  <flow-form :data="formData" @submit="submitNextActivity">
+        <card title="基础信息">
+          <van-form required="auto" :readonly="formRead">
+            <van-cell-group inset>
+              <van-field
+                v-model="formData.userNickname"
+                name="申请人"
+                label="申请人"
+                placeholder="申请人"
+                readonly 
+              />
+              <van-field
+                v-model="formData.deptName"
+                name="所在部门"
+                label="所在部门"
+                placeholder="所在部门"
+                readonly 
+              />
+              <van-field
+                v-model="formData.applyTime"
+                name="申请时间"
+                label="申请时间"
+                placeholder="申请时间"
+                readonly 
+              />
+              <van-field
+                v-model="formData.useMoneyNo"
+                name="用款单号"
+                label="用款单号"
+                placeholder="用款单号"
+                readonly 
+              />
+              <van-field
+                v-model="formData.paymentCompanyName"
+                name="付款单位"
+                label="付款单位"
+                placeholder="付款单位"
+                readonly
+              />
+              <van-field
+                v-model="formData.paymentMethod"
+                name="付款方式"
+                label="付款方式"
+                placeholder="付款方式"
+                readonly
+              />
+               <van-field
+                v-model="formData.agreedPayTime"
+                name="约定付款期限"
+                label="约定付款期限"
+                placeholder="约定付款期限"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompany"
+                name="收款单位"
+                label="收款单位"
+                placeholder="收款单位"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyBank"
+                name="收款单位开户行"
+                label="收款单位开户行"
+                placeholder="收款单位开户行"
+                readonly
+              />
+               <van-field
+                v-model="formData.collectionCompanyAccount"
+                name="收款单位账号"
+                label="收款单位账号"
+                placeholder="收款单位账号"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmount"
+                name="用款总金额(元)"
+                label="用款总金额(元)"
+                placeholder="用款总金额(元)"
+                readonly
+              />
+               <van-field
+                v-model="formData.totalAmountCn"
+                name="大写用款总金额"
+                label="大写用款总金额"
+                placeholder="大写用款总金额"
+                readonly
+              />
+              <van-field
+                v-model="formData.remark"
+                name="用款说明"
+                label="用款说明"
+                placeholder="用款说明"
+                type="textarea"
+                rows="3"
+                autosize
+                readonly
+              />
+            </van-cell-group>
+          </van-form>
+        </card>
+        <card title="用款详情">
+            <template #default>
+              <div v-for="(item,index) in formData.detailList" :key="index">
+                <van-swipe-cell :disabled="formRead">
+                  <card-cell>
+                    <van-cell title="项目名称" :value="item.projectName" />
+                    <van-cell title="责任部门" :value="item.projectDeptName" />
+                    <van-cell title="金额(元)" :value="item.amount" />
+                    <van-cell title="实际所属类型" :value="item.costTypeName" />
+                    <van-cell title="用途" :value="item.costContent" />
+                    <van-cell title="备注" :value="item.remark" />
+                  </card-cell>
+                </van-swipe-cell> 
+              </div>
+            </template>
+        </card>
+  </flow-form>
+</template>
+
+<script setup lang="ts">
+import { useRoute } from 'vue-router';
+import { FlowDTO, getNextActivity } from '@/service/flow';
+import reqest from "@/utils/request";
+import FlowForm from '@/components/flowForm.vue';
+import Card from '@/components/card.vue';
+import CardCell from '@/components/cardCell.vue';
+import moment from 'moment'
+const route = useRoute();
+interface FormDataType {
+  instanceId: string
+  id: string
+  leaveHours: number | null
+  userNickname: string
+  deptName: string
+  applyTime: string
+  leaveNo: string
+  leaveType: number | null
+  leaveTypeText: string
+  leaveDays: string
+  leaveReason: string
+  detailList: {
+    projectName: string,
+    projectDeptName: string,
+    amount: string,
+    costTypeName: string,
+    costContent: string,
+    remark: string
+  }[]
+}
+const formData = ref<FormDataType>({
+  instanceId: '',
+  id: '',
+  leaveHours: null,
+  userNickname: '',
+  deptName: '',
+  applyTime: '',
+  leaveNo: '',
+  leaveType: null,
+  leaveTypeText: '',
+  leaveDays: '',
+  leaveReason: '',
+  detailList: []
+})
+const formRead = ref(false)
+const { activityInstanceId, participant,flowInstanceId,read } = route.query as {
+  activityInstanceId: string;
+  participant: string;
+  flowInstanceId: string;
+  read: string;
+};
+const activityData: FlowDTO = {
+  activityInstanceId,
+  participantId: participant,
+  flowOpinion: ''
+}
+const submitNextActivity = async (activeOpinion: any) => {
+  //工作流转件
+  activityData.activityInstanceId=activityInstanceId
+  activityData.participantId=participant
+  activityData.flowOpinion=JSON.stringify(activeOpinion)
+  const result = await getNextActivity(jsonToFormData(activityData))
+}
+const jsonToFormData = (json: any): FormData | null => {
+  const keys: string[] = Object.keys(json)
+  if (keys.length > 0) { 
+    const formData = new FormData();
+    keys.forEach((key) => { 
+      formData.append(key, (json[key] instanceof Object) ? JSON.stringify(json[key]) : json[key]);
+    });
+    return formData;
+  }
+  return null;
+}
+
+/** 初始化表单数据 */
+const initFormData= async () => {
+  const result = await reqest.get(`/business/UseMoney/mobileAdd?flowInstanceId=${flowInstanceId}`)
+  formData.value = result.data
+  formData.value.applyTime=formData.value.applyTime?moment(formData.value.applyTime).format('YYYY-MM-DD'):''
+  formData.value.agreedPayTime=formData.value.agreedPayTime?moment(formData.value.agreedPayTime).format('YYYY-MM-DD'):''
+}
+
+/** 初始化 */
+onMounted(() => {
+  initFormData()
+  if(read==='1'){
+    formRead.value=true
+  }
+})
+</script>
+
+<style lang="scss" scoped>
+@import "./index.scss";
+</style>

+ 41 - 0
client_h5/src/router/routes.ts

@@ -181,6 +181,47 @@ const routes: RouteRecordRaw[] = [
         },
         component: () => import("@/pages/outsourcing-apply/index.vue"),
       },
+      {
+        path: "asset",
+        name: "asset",
+        meta: {
+          title: "固定资产",
+        },
+        component: () => import("@/pages/asset/indexs.vue"),
+      },
+      {
+        path: "asset/indexAgent",
+        name: "assetAgent",
+        meta: {
+          title: "固定资产(代办)",
+        },
+        component: () => import("@/pages/asset/indexAgent.vue"),
+      },
+      {
+        path: "outsource",
+        name: "outsource",
+        meta: {
+          title: "外购存货",
+        },
+        component: () => import("@/pages/outsource/index.vue"),
+      },
+      {
+        path: "projectstatus",
+        name: "projectstatus",
+        meta: {
+          title: "项目验收",
+        },
+        component: () => import("@/pages/projectstatus/index.vue"),
+      },
+      {
+        path: "projectstatus/indexJx",
+        name: "projectstatusjx",
+        meta: {
+          title: "项目结项",
+        },
+        component: () => import("@/pages/projectstatus/indexJx.vue"),
+      },
+      
     ] as RouteRecordRaw[],
   },
 ] as RouteRecordRaw[];

+ 10 - 1
zjugis-business/src/main/java/com/zjugis/business/controller/ProjectController.java

@@ -157,6 +157,15 @@ public class ProjectController{
                 "attachment;filename*=utf-8'zh-cn'" + URLEncoder.encode("项目.xlsx", String.valueOf(StandardCharsets.UTF_8)));
         ExcelUtils.write(response, "项目.xlsx", "项目列表", ProjectExcelResponse.class, excelList);
     }
-
+    /**
+     * 当前用户所有数据
+     *
+     * @return 所有数据
+     */
+    @GetMapping("/project/getListByUser")
+    public CommonResult<List<Project>> getList(ProjectDto projectDto) {
+        projectDto.setIsRelContract(1);
+        return CommonResult.success(projectService.getList( projectDto));
+    }
 }
 

+ 4 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/loan/service/LoanFlowServiceImpl.java

@@ -173,6 +173,10 @@ public class LoanFlowServiceImpl implements LoanFlowService {
                 }
             }
             LoanRespVO respVO = LoanConvert.INSTANCE.convert01(entity);
+            if (StringUtils.isNotBlank(respVO.getProjectId())) {
+                Project project = projectService.selectById(respVO.getProjectId());
+                respVO.setProjectName(project.getXmmc());
+            }
             return respVO;
         }
         return null;

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectMapper.java

@@ -59,5 +59,7 @@ public interface ProjectMapper extends BaseMapperX<Project> {
     List<String> selectAllIds();
 
     List<Contract> contractExist(String projectId);
+
+    List<Project> getList(@Param("params") ProjectDto projectDto);
 }
 

+ 2 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectService.java

@@ -62,5 +62,7 @@ public interface ProjectService {
     void calcProject(String projectId);
 
     ContractExistResp contractExist(String projectId);
+
+    List<Project> getList(ProjectDto projectDto);
 }
 

+ 6 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectServiceImpl.java

@@ -421,5 +421,11 @@ public class ProjectServiceImpl implements ProjectService {
         }
         return res;
     }
+
+    @Override
+    public List<Project> getList(ProjectDto projectDto) {
+        projectDto.setUserId(SecurityFrameworkUtils.getLoginUserId());
+        return  projectMapper.getList(projectDto);
+    }
 }
 

+ 67 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectMapper.xml

@@ -271,4 +271,71 @@
         SELECT ID,INSTANCE_ID,FLOW_STATUS,ISVALID FROM CONTRACT
         WHERE PROJECT_ID = #{projectId,jdbcType=VARCHAR}
     </select>
+    <select id="getList" resultType="com.zjugis.business.bean.entity.Project">
+        SELECT P.*,D.NAME as zrbm,PA.CONTRACT_AMOUNT,PA.RECEIVABLE_AMOUNT,PA.CONTRACT_BALANCE,PA.PROJECT_COST,PA.VIRTUAL_AMOUNT
+        <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
+            ,C.contractNumber as contractNumber
+        </if>
+        FROM PROJECT P
+        LEFT JOIN PROJECT_AMOUNT PA ON PA.PROJECT_ID = P.ID
+        LEFT JOIN ZJUGIS_OA.SYSTEM_DEPT D ON D.ID = P.ZRBM_ID
+        <if test="params != null and params.isRelContract != null and params.isRelContract == 1">
+            LEFT JOIN (SELECT PID,count(1) as ccount FROM PROJECT WHERE FLOW_STATUS = 99 GROUP BY PID) CH ON CH.PID = P.ID
+            LEFT JOIN (SELECT PROJECT_ID,max(CONTRACT_NUMBER) as contractNumber FROM  CONTRACT where FLOW_STATUS in (90,99) GROUP BY PROJECT_ID) C ON C.PROJECT_ID = P.ID
+        </if>
+        <if test="params != null and params.userId != null  and params.userId != ''">
+            LEFT JOIN PROJECT_WORKER_RELATION PW ON PW.PROJECT_ID = P.ID
+        </if>
+        <where>
+            P.ISVALID = 1 AND P.FLOW_STATUS IN (90,99)
+            <if test="params != null and params.hyId != null">
+                AND P.HY_ID = #{params.hyId}
+            </if>
+            <if test="params != null and params.xzqdm != null and params.xzqdm != ''">
+                AND P.XZQDM = #{params.xzqdm}
+            </if>
+            <if test="params != null and params.projectTypeId != null and params.projectTypeId != ''">
+                AND P.PROJECT_TYPE_ID = #{params.projectTypeId}
+            </if>
+            <if test="params != null and params.xmzt != null">
+                AND P.XMZT = #{params.xmzt}
+            </if>
+            <if test="params != null and params.lxsjOn != null">
+                AND P.LXSJ &gt;= #{params.lxsjOn}
+            </if>
+            <if test="params != null and params.lxsjOff != null">
+                AND P.LXSJ &lt;= #{params.lxsjOff}
+            </if>
+            <if test="params != null and params.isSign != null">
+                AND P.IS_SIGN = #{params.isSign}
+            </if>
+            <if test="params != null and params.xmmc != null and params.xmmc != ''">
+                <bind name="xmmc" value="'%'+params.xmmc+'%'"/>
+                AND P.XMMC LIKE #{xmmc}
+            </if>
+            <if test="params != null and params.xmbh != null and params.xmbh != ''">
+                <bind name="xmbh" value="'%'+params.xmbh+'%'"/>
+                AND P.XMBH LIKE #{xmbh}
+            </if>
+            <if test="params != null and params.userId != null  and params.userId != ''">
+                AND PW.WORKER_ID = #{params.userId}
+            </if>
+            <if test="params != null and params.deptId != null and params.deptId != ''">
+                AND P.ZRBM_ID = #{params.deptId}
+            </if>
+            <if test="params != null and params.xmjlId != null and params.xmjlId != ''">
+                AND P.XMJL_ID = #{params.xmjlId}
+            </if>
+        </where>
+        ORDER BY
+        <choose>
+            <when test="params != null and params.sortType == 2 ">
+                YSSJ
+            </when>
+            <otherwise>
+                LXSJ
+            </otherwise>
+        </choose>
+        DESC
+    </select>
 </mapper>