浏览代码

主合同详情字段添加

songxy 1 年之前
父节点
当前提交
82a9cd26e3

+ 10 - 0
client/src/interface/contract.ts

@@ -180,6 +180,16 @@ export interface Contract {
    * 销售经理
    */
   areaManagerId: string
+
+  /**
+   * 签订时间
+   */
+  signTime?: string
+
+  /**
+   * 履约到期时间
+   */
+  dueTime?: string
 }
 
 export interface ExtraConstract {

+ 28 - 0
client/src/views/OaSystem/projectCenter/projectDetail/components/xmht/index.vue

@@ -140,6 +140,34 @@
                 </el-select>
               </td>
             </tr>
+            <tr>
+              <td class="th">签订时间:</td>
+              <td>
+                <span v-if="!editor && !mContractDetail.signTime"></span>
+                <el-date-picker
+                  v-else
+                  style="width: 100%"
+                  :disabled="!editor"
+                  v-model="mContractDetail.signTime"
+                  type="date"
+                  value-format="YYYY-MM-DD"
+                  placeholder="请选择签订时间"
+                />
+              </td>
+              <td class="th">履约到期时间:</td>
+              <td>
+                <span v-if="!editor && !mContractDetail.dueTime"></span>
+                <el-date-picker
+                  v-else
+                  style="width: 100%"
+                  :disabled="!editor"
+                  v-model="mContractDetail.dueTime"
+                  type="date"
+                  value-format="YYYY-MM-DD"
+                  placeholder="请选择履约到期时间"
+                />
+              </td>
+            </tr>
             <tr>
               <td class="th">合同拿出日期:</td>
               <td>

+ 45 - 11
client/src/views/OaSystem/projectCenter/purchaseContract/deptContract.vue

@@ -82,7 +82,7 @@
         </el-select>
       </div>
       <div class="form form-time-range">
-        <span class="formSpan">拿回时间:</span>
+        <span class="formSpan">签订时间:</span>
         <el-date-picker
           v-model="lxsjObj"
           type="daterange"
@@ -92,6 +92,17 @@
           end-placeholder="结束日期"
         />
       </div>
+      <div class="form form-time-range">
+        <span class="formSpan">履约到期时间:</span>
+        <el-date-picker
+          v-model="dueTimeObj"
+          type="daterange"
+          unlink-panels
+          range-separator="To"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        />
+      </div>
       <div class="from">
         <div class="btnBox">
           <el-button type="primary" style="background: #3485ff" @click="searchHandle">
@@ -166,8 +177,8 @@
           <el-table-column prop="contractBalance" label="合同余额" width="100" align="center">
             <template #default="scope">{{ scope.row.contractBalance ?? 0 }}</template>
           </el-table-column>
-          <el-table-column prop="contractOn" label="拿出日期" width="120" />
-          <el-table-column prop="contractOff" label="拿回日期" width="120" />
+          <el-table-column prop="signTime" label="签订时间" width="120" />
+          <el-table-column prop="dueTime" label="履约到期时间" width="120" />
           <el-table-column label="操作" fixed="right" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
@@ -222,6 +233,10 @@ const queryParams = reactive<{
   secondType: any
   contractOn: string
   contractOff: string
+  signTimeStart: string
+  signTimeEnd: string
+  dueTimeStart: string
+  dueTimeEnd: string
   deptId: string
 }>({
   contractNumber: '',
@@ -234,9 +249,14 @@ const queryParams = reactive<{
   secondType: '',
   contractOn: '',
   contractOff: '',
+  signTimeStart: '',
+  signTimeEnd: '',
+  dueTimeStart: '',
+  dueTimeEnd: '',
   deptId: deptId
 })
 const lxsjObj = ref()
+const dueTimeObj = ref()
 const infoList: any = ref([
   {
     icon: 'xmzx/xmzcz',
@@ -284,11 +304,18 @@ const searchHandle: () => void = () => {
 const queryContractListAjax = async (): Promise<void> => {
   const urlApi = `/contract/page`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,
@@ -313,11 +340,18 @@ const contractListCalc = ref({
 const queryContractListCalc = async (): Promise<void> => {
   const urlApi = `/contract/list/calc`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,

+ 45 - 11
client/src/views/OaSystem/projectCenter/purchaseContract/myContract.vue

@@ -70,7 +70,7 @@
         </el-select>
       </div>
       <div class="form form-time-range">
-        <span class="formSpan">拿回时间:</span>
+        <span class="formSpan">签订时间:</span>
         <el-date-picker
           v-model="lxsjObj"
           type="daterange"
@@ -80,6 +80,17 @@
           end-placeholder="结束日期"
         />
       </div>
+      <div class="form form-time-range">
+        <span class="formSpan">履约到期时间:</span>
+        <el-date-picker
+          v-model="dueTimeObj"
+          type="daterange"
+          unlink-panels
+          range-separator="To"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        />
+      </div>
       <div class="from">
         <div class="btnBox">
           <el-button type="primary" style="background: #3485ff" @click="searchHandle">
@@ -154,8 +165,8 @@
           <el-table-column prop="contractBalance" label="合同余额" width="100" align="center">
             <template #default="scope">{{ scope.row.contractBalance ?? 0 }}</template>
           </el-table-column>
-          <el-table-column prop="contractOn" label="拿出日期" width="120" />
-          <el-table-column prop="contractOff" label="拿回日期" width="120" />
+          <el-table-column prop="signTime" label="签订时间" width="120" />
+          <el-table-column prop="dueTime" label="履约到期时间" width="120" />
           <el-table-column fixed="right" label="操作" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
@@ -210,6 +221,10 @@ const queryParams = reactive<{
   secondType: any
   contractOn: string
   contractOff: string
+  signTimeStart: string
+  signTimeEnd: string
+  dueTimeStart: string
+  dueTimeEnd: string
   managerId: string
 }>({
   contractNumber: '',
@@ -222,9 +237,14 @@ const queryParams = reactive<{
   secondType: '',
   contractOn: '',
   contractOff: '',
+  signTimeStart: '',
+  signTimeEnd: '',
+  dueTimeStart: '',
+  dueTimeEnd: '',
   managerId: userId
 })
 const lxsjObj = ref()
+const dueTimeObj = ref()
 const infoList: any = ref([
   {
     icon: 'xmzx/xmzcz',
@@ -272,11 +292,18 @@ const searchHandle: () => void = () => {
 const queryContractListAjax = async (): Promise<void> => {
   const urlApi = `/contract/page`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,
@@ -301,11 +328,18 @@ const contractListCalc = ref({
 const queryContractListCalc = async (): Promise<void> => {
   const urlApi = `/contract/list/calc`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,

+ 46 - 12
client/src/views/OaSystem/projectCenter/purchaseContract/purchaseContract.vue

@@ -63,7 +63,7 @@
         </el-select>
       </div>
       <div class="form form-time-range">
-        <span class="formSpan">拿回时间:</span>
+        <span class="formSpan">签订时间:</span>
         <el-date-picker
           v-model="lxsjObj"
           type="daterange"
@@ -73,6 +73,17 @@
           end-placeholder="结束日期"
         />
       </div>
+      <div class="form form-time-range">
+        <span class="formSpan">履约到期时间:</span>
+        <el-date-picker
+          v-model="dueTimeObj"
+          type="daterange"
+          unlink-panels
+          range-separator="To"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        />
+      </div>
       <div class="from">
         <div class="btnBox">
           <el-button type="primary" style="background: #3485ff" @click="searchHandle">
@@ -147,8 +158,8 @@
           <el-table-column prop="contractBalance" label="合同余额" width="100" align="center">
             <template #default="scope">{{ scope.row.contractBalance ?? 0 }}</template>
           </el-table-column>
-          <el-table-column prop="contractOn" label="拿出日期" width="120" />
-          <el-table-column prop="contractOff" label="拿回日期" width="120" />
+          <el-table-column prop="signTime" label="签订时间" width="120" />
+          <el-table-column prop="dueTime" label="履约到期时间" width="120" />
           <el-table-column label="操作" fixed="right" width="80">
             <template #default="scope">
               <div class="operateBtn" @click="operateClick(scope.row)">
@@ -199,6 +210,10 @@ const queryParams = reactive<{
   secondType: any
   contractOn: string
   contractOff: string
+  signTimeStart: string
+  signTimeEnd: string
+  dueTimeStart: string
+  dueTimeEnd: string
 }>({
   contractNumber: '',
   name: '',
@@ -209,9 +224,14 @@ const queryParams = reactive<{
   mainType: '',
   secondType: '',
   contractOn: '',
-  contractOff: ''
+  contractOff: '',
+  signTimeStart: '',
+  signTimeEnd: '',
+  dueTimeStart: '',
+  dueTimeEnd: ''
 })
 const lxsjObj = ref()
+const dueTimeObj = ref()
 const infoList: any = ref([
   {
     icon: 'xmzx/xmzcz',
@@ -259,11 +279,18 @@ const searchHandle: () => void = () => {
 const queryContractListAjax = async (): Promise<void> => {
   const urlApi = `/contract/page`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,
@@ -288,11 +315,18 @@ const contractListCalc = ref({
 const queryContractListCalc = async (): Promise<void> => {
   const urlApi = `/contract/list/calc`
   if (lxsjObj.value && lxsjObj.value.length > 0) {
-    queryParams.contractOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
-    queryParams.contractOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+    queryParams.signTimeStart = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
+    queryParams.signTimeEnd = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
+  } else {
+    queryParams.signTimeStart = ''
+    queryParams.signTimeEnd = ''
+  }
+  if (dueTimeObj.value && dueTimeObj.value.length > 0) {
+    queryParams.dueTimeStart = moment(dueTimeObj.value[0]).format('YYYY-MM-DD')
+    queryParams.dueTimeEnd = moment(dueTimeObj.value[1]).format('YYYY-MM-DD')
   } else {
-    queryParams.contractOn = ''
-    queryParams.contractOff = ''
+    queryParams.dueTimeStart = ''
+    queryParams.dueTimeEnd = ''
   }
   const sendData = {
     ...queryParams,

+ 22 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/dto/ContractDto.java

@@ -38,6 +38,28 @@ public class ContractDto extends PageParam {
     @DateTimeFormat(pattern="yyyy-MM-dd")
     private LocalDate contractOff;
 
+    /**
+     * 开始签订时间
+     * **/
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private LocalDate signTimeStart;
+
+    /**
+     * 结束签订时间
+     * **/
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private LocalDate signTimeEnd;
+    /**
+     * 开始履约到期时间
+     * **/
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private LocalDate dueTimeStart;
+    /**
+     * 结束履约到期时间
+     * **/
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private LocalDate dueTimeEnd;
+
     // 有应收账款
     private Integer hasReceivableAmount;
 

+ 9 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/entity/Contract.java

@@ -311,4 +311,13 @@ public class Contract extends BaseEntity {
 
     private BigDecimal virtualAmount;
 
+    /**
+     * 签订时间
+     * **/
+    private LocalDate signTime;
+
+    /**
+     * 履约到期时间
+     * **/
+    private LocalDate dueTime;
 }

+ 8 - 0
zjugis-business/src/main/java/com/zjugis/business/bean/response/ContractResponse.java

@@ -92,7 +92,15 @@ public class ContractResponse {
      */
     private LocalDate contractOff;
 
+    /**
+     * 签订时间
+     * **/
+    private LocalDate signTime;
 
+    /**
+     * 履约到期时间
+     * **/
+    private LocalDate dueTime;
 
     /**
      * 合同费用状态

+ 24 - 0
zjugis-business/src/main/resources/mapper/oracle/ContractMapper.xml

@@ -57,6 +57,18 @@
             <if test="params != null and params.contractOff != null">
                 AND c.CONTRACT_OFF &lt;= #{params.contractOff}
             </if>
+            <if test="params != null and params.signTimeStart != null">
+                AND c.SIGN_TIME &gt;= #{params.signTimeStart}
+            </if>
+            <if test="params != null and params.signTimeEnd != null">
+                AND c.SIGN_TIME &lt;= #{params.signTimeEnd}
+            </if>
+            <if test="params != null and params.dueTimeStart != null">
+                AND c.DUE_TIME &gt;= #{params.dueTimeStart}
+            </if>
+            <if test="params != null and params.dueTimeEnd != null">
+                AND c.DUE_TIME &lt;= #{params.dueTimeEnd}
+            </if>
             <if test="params != null and params.isSign != null">
                 AND c.IS_SIGN = #{params.isSign}
             </if>
@@ -186,6 +198,18 @@
             <if test="params != null and params.contractOff != null">
                 AND c.CONTRACT_OFF &lt;= #{params.contractOff}
             </if>
+            <if test="params != null and params.signTimeStart != null">
+                AND c.SIGN_TIME &gt;= #{params.signTimeStart}
+            </if>
+            <if test="params != null and params.signTimeEnd != null">
+                AND c.SIGN_TIME &lt;= #{params.signTimeEnd}
+            </if>
+            <if test="params != null and params.dueTimeStart != null">
+                AND c.DUE_TIME &gt;= #{params.dueTimeStart}
+            </if>
+            <if test="params != null and params.dueTimeEnd != null">
+                AND c.DUE_TIME &lt;= #{params.dueTimeEnd}
+            </if>
             <if test="params != null and params.isSign != null">
                 AND c.IS_SIGN = #{params.isSign}
             </if>

+ 2 - 2
zjugis-gateway/src/main/resources/bootstrap-local.yaml

@@ -5,7 +5,7 @@ spring:
     nacos:
       server-addr: 10.10.10.7:8848
       discovery:
-        namespace: 2cf329b5-95c5-4b3b-9112-8e09eb8f67cf # 命名空间。这里使用 dev 开发环境
+        namespace: b8c5fc93-8b01-491f-b75a-3b99d1e21f42 # 命名空间。这里使用 dev 开发环境
 
 --- #################### 配置中心相关配置 ####################
 
@@ -15,7 +15,7 @@ spring:
       # Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
       config:
         server-addr:  10.10.10.7:8848 # Nacos 服务器地址
-        namespace: 2cf329b5-95c5-4b3b-9112-8e09eb8f67cf # 命名空间。这里使用 dev 开发环境
+        namespace: b8c5fc93-8b01-491f-b75a-3b99d1e21f42 # 命名空间。这里使用 dev 开发环境
         group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
         name: # 使用的 Nacos 配置集的 dataId,默认为 spring.application.name
         file-extension: yaml # 使用的 Nacos 配置集的 dataId 的文件拓展名,同时也是 Nacos 配置集的配置格式,默认为 properties