Bläddra i källkod

业务提问:评估的和会计的项目分开获取展示

lizhenhao 2 år sedan
förälder
incheckning
f2d8d17117

+ 7 - 0
src/api/cw/projectRecords/ProjectRecordsService.js

@@ -8,6 +8,13 @@ export default class ProjectRecordsService {
       params: params
     })
   }
+  list2 (params) {
+    return request({
+      url: '/cwProjectRecords/list2',
+      method: 'get',
+      params: params
+    })
+  }
   queryById (id) {
     return request({
       url: '/cwProjectRecords/queryById',

+ 7 - 0
src/api/program/ProgramProjectListInfoService.js

@@ -8,6 +8,13 @@ export default class ProgramProjectListInfoService {
       params: params
     })
   }
+  list2 (params) {
+    return request({
+      url: '/program/projectList/list2',
+      method: 'get',
+      params: params
+    })
+  }
   list2022 (params) {
     return request({
       url: '/program/projectList/list2022',

+ 6 - 0
src/api/sys/OfficeService.js

@@ -59,4 +59,10 @@ export default class OfficeService {
       method: 'get'
     })
   }
+  checkLoginIsPgOrKj () {
+    return request({
+      url: '/sys/office/checkLoginIsPgOrKj',
+      method: 'get'
+    })
+  }
 }

+ 4 - 0
src/views/modules/klgBase/questions/KlgBaseQuestionsDetailForm.vue

@@ -4,6 +4,7 @@
       :title="title"
       :close-on-click-modal="false"
       v-dialogDrag
+      width="1200px"
       :visible.sync="visible">
     <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method === 'view'"
              label-width="120px" @submit.native.prevent>
@@ -81,6 +82,9 @@
         </el-col>
       </el-row>
     </el-form>
+      <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+    </span>
     <!--        附件-->
     <UpLoadComponent ref="uploadComponent"></UpLoadComponent>
     <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>

+ 29 - 11
src/views/modules/klgBase/questions/KlgBaseQuestionsForm.vue

@@ -32,7 +32,9 @@
           <el-form-item label="所属项目" prop="programName"
                         :rules="[
                  ]">
-            <el-input @focus="openProgramPageForm()" v-model="inputForm.programName" placeholder="请选择项目" clearable></el-input>
+            <el-input @focus="openProgramPageForm()" :disabled="formReadOnly || (belongFlag !== 1 && belongFlag !== 2)" :readonly="true" v-model="inputForm.programName" placeholder="请选择项目" clearable>
+              <el-button slot="append" :disabled="formReadOnly || (belongFlag !== 1 && belongFlag !== 2)" @click="openProgramPageForm" icon="el-icon-search"></el-button>
+            </el-input>
           </el-form-item>
         </el-col>
 <!--        选择审核人  多选-->
@@ -89,8 +91,9 @@
   import SelectTree from '@/components/treeSelect/treeSelect.vue'
   import UserSelect from '@/components/userSelect'
   import KlgBaseQuestionsService from '@/api/klgBase/questions/KlgBaseQuestionsService'
-  import ProgramPageForm from '@/views/modules/finance/invoice/ProgramPageForm'
+  import ProgramPageForm from './ProgramPageForm'
   import WangEditor from '@/components/editor/WangEditor'
+  import OfficeService from '@/api/sys/OfficeService'
   export default {
     props: {
       businessId: {
@@ -125,14 +128,18 @@
           editorFilesDTOList: [],
           klgBaseDisposeDTOList: [],
           klgBaseReplyDTOList: [],
-          workAttachmentDtoList: []
+          workAttachmentDtoList: [],
+          projectType: ''
         },
-        keyWatch: ''
+        keyWatch: '',
+        belongFlag: ''
       }
     },
     klgBaseQuestionsService: null,
+    officeService: null,
     created () {
       this.klgBaseQuestionsService = new KlgBaseQuestionsService()
+      this.officeService = new OfficeService()
     },
     computed: {
       bus: {
@@ -173,6 +180,10 @@
       },
       init (method, id) {
         this.klgBaseQuestionsService = new KlgBaseQuestionsService()
+        this.officeService = new OfficeService()
+        this.officeService.checkLoginIsPgOrKj().then(({data}) => {
+          this.belongFlag = data
+        })
         this.method = method
         this.inputForm = {
           title: '',
@@ -188,7 +199,8 @@
           editorFilesDTOList: [],
           klgBaseDisposeDTOList: [],
           klgBaseReplyDTOList: [],
-          workAttachmentDtoList: []
+          workAttachmentDtoList: [],
+          projectType: ''
         }
         this.inputForm.id = id
         this.loading = false
@@ -414,19 +426,25 @@
           editorFilesDTOList: [],
           klgBaseDisposeDTOList: [],
           klgBaseReplyDTOList: [],
-          workAttachmentDtoList: []
+          workAttachmentDtoList: [],
+          projectType: ''
         }
         this.$refs.uploadComponent.clearUpload()
         this.$refs.inputForm.resetFields()
         this.$refs.contentEditor.enable()
       },
       openProgramPageForm () {
-        this.$refs.programPageForm.init('1', false)
+        if (this.belongFlag === '1' || this.belongFlag === 1) {
+          this.$refs.programPageForm.init('1') // 评估部门人员打开
+        } else if (this.belongFlag === '2' || this.belongFlag === 2) {
+          this.$refs.programPageForm.init('2') // 兴光会计部门人员打开
+        } // 其他人不允许打开
       },
-      getProgram (rows) {
-        if (this.commonJS.isNotEmpty(rows)) {
-          this.inputForm.programId = rows[0].id // 项目id
-          this.inputForm.programName = rows[0].name // 项目名称
+      getProgram (row) {
+        if (this.commonJS.isNotEmpty(row)) {
+          this.inputForm.programId = row.id // 项目id
+          this.inputForm.programName = row.name // 项目名称
+          this.inputForm.projectType = row.ptype // 项目类型   兴光会计项目还是评估项目
         }
       },
       getEditorFilesDTOList () {

+ 27 - 18
src/views/modules/klgBase/questions/KlgBaseQuestionsList.vue

@@ -6,7 +6,9 @@
         <el-input size="small" v-model="searchForm.title" placeholder="请输入标题" clearable></el-input>
       </el-form-item>
       <el-form-item prop="programName">
-        <el-input @focus="openProgramPageForm()" v-model="searchForm.programName" @clear="clearProgram" placeholder="请选择项目" clearable></el-input>
+        <el-input @focus="openProgramPageForm()" v-model="searchForm.programName" @clear="clearProgram" placeholder="请选择项目" clearable>
+          <el-button slot="append" @click="openProgramPageForm" icon="el-icon-search"></el-button>
+        </el-input>
       </el-form-item>
       <el-form-item prop="status" v-if="showHideItem">
         <el-select size="small" v-model="searchForm.status" placeholder="处理状态" clearable>
@@ -89,7 +91,8 @@
           </vxe-column>
           <vxe-column min-width="160"align="center" title="所属项目" field="programName">
             <template slot-scope="scope">
-              <el-link  type="primary" :underline="false" v-if="hasPermission('klg:question:view')" @click="viewProgram(scope.row.programId)">{{scope.row.programName}}</el-link>
+              <el-link v-if="hasPermission('klg:question:view') && scope.row.projectType === '1'" type="primary" :underline="false"  @click="viewProgramPG(scope.row.programId)">{{scope.row.programName}}</el-link>
+              <el-link v-if="hasPermission('klg:question:view') && scope.row.projectType === '2'" type="primary" :underline="false"  @click="viewProgramXG(scope.row.programId)">{{scope.row.programName}}</el-link>
               <span v-else>{{scope.row.programName}}</span>
             </template>
           </vxe-column>
@@ -107,9 +110,9 @@
           </vxe-column>
           <vxe-column title="操作" width="150px" fixed="right" align="center">
             <template  slot-scope="scope">
-              <el-button v-if="hasPermission('klg:question:edit')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status==='1'||scope.row.status==='3'||scope.row.status==='4'" type="text"  size="small" @click="registeredPush(scope.row)">修改</el-button>
-              <el-button v-if="hasPermission('klg:question:edit')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status==='2'||scope.row.status==='5'" type="text"  size="small" @click="registeredReback(scope.row)">撤回</el-button>
-              <el-button v-if="hasPermission('klg:question:del')&&scope.row.createBy.id === $store.state.user.id&&scope.row.status==='1'||scope.row.status==='3'||scope.row.status==='4'" type="text"   size="small" @click="del(scope.row.id)">删除</el-button>
+              <el-button v-if="hasPermission('klg:question:edit')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status==='1'||scope.row.status==='3'||scope.row.status==='4')" type="text"  size="small" @click="registeredPush(scope.row)">修改</el-button>
+              <el-button v-if="hasPermission('klg:question:edit')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status==='2'||scope.row.status==='5')" type="text"  size="small" @click="registeredReback(scope.row)">撤回</el-button>
+              <el-button v-if="hasPermission('klg:question:del')&&scope.row.createBy.id === $store.state.user.id&&(scope.row.status==='1'||scope.row.status==='3'||scope.row.status==='4')" type="text"   size="small" @click="del(scope.row.id)">删除</el-button>
             </template>
           </vxe-column>
         </vxe-table>
@@ -129,6 +132,7 @@
     <ProgramPageForm ref="programPageForm" @getProgram="getProgram"></ProgramPageForm>
     <KlgBaseQuestionsDetailForm ref="klgBaseQuestionsDetailForm"></KlgBaseQuestionsDetailForm>
     <ProjectFormUpdate ref="projectFormUpdate"></ProjectFormUpdate>
+    <ProjectRecordsForm ref="projectRecordsForm"></ProjectRecordsForm>
   </div>
 </template>
 
@@ -137,10 +141,11 @@
   import KlgBaseQuestionsForm from './KlgBaseQuestionsForm'
   import TaskService from '@/api/flowable/TaskService'
   import ProcessService from '@/api/flowable/ProcessService'
-  import ProgramPageForm from '@/views/modules/finance/invoice/ProgramPageForm'
   import pick from 'lodash.pick'
   import KlgBaseQuestionsDetailForm from './KlgBaseQuestionsDetailForm'
   import ProjectFormUpdate from '@/views/modules/program/registered/ProjectFormUpdate'
+  import ProjectRecordsForm from '@/views/modules/cw/projectRecords/ProjectRecordsForm'
+  import ProgramPageForm from './ProgramPageForm'
   export default {
     data () {
       return {
@@ -190,7 +195,8 @@
       KlgBaseQuestionsForm,
       ProgramPageForm,
       KlgBaseQuestionsDetailForm,
-      ProjectFormUpdate
+      ProjectFormUpdate,
+      ProjectRecordsForm
     },
     computed: {
       userName () {
@@ -234,10 +240,14 @@
       view (id) {
         this.$refs.klgBaseQuestionsDetailForm.init('view', id)
       },
-      // 查看
-      viewProgram (id) {
+      // 查看评估项目详情
+      viewProgramPG (id) {
         this.$refs.projectFormUpdate.init('view', id)
       },
+      // 查看兴光会计项目详情
+      viewProgramXG (id) {
+        this.$refs.projectRecordsForm.init('view', id)
+      },
       // 获取数据列表
       refreshList () {
         this.loading = true
@@ -414,25 +424,24 @@
             } else {
               this.processService.revokeProcIns(row.procInsId).then(({data}) => {
                 let form = {status: '3', id: row.id}
-                this.klgBaseQuestionsService.updateStatusById(form)
-                this.$message.success(data)
-                this.refreshList()
+                this.klgBaseQuestionsService.updateStatusById(form).then(() => {
+                  this.$message.success(data)
+                  this.refreshList()
+                })
               })
             }
           })
         })
       },
       openProgramPageForm () {
-        this.$refs.programPageForm.init('1', false)
+        this.$refs.programPageForm.init('3')
       },
-      getProgram (rows) {
-        if (this.commonJS.isNotEmpty(rows)) {
-          this.searchForm.programId = rows[0].id // 项目id
-          this.searchForm.programName = rows[0].name // 项目名称
+      getProgram (row) {
+        if (this.commonJS.isNotEmpty(row)) {
+          this.searchForm.programName = row.name // 项目名称
         }
       },
       clearProgram () {
-        this.searchForm.programId = ''
         this.searchForm.programName = ''
       }
     }

+ 300 - 0
src/views/modules/klgBase/questions/ProgramPageForm.vue

@@ -0,0 +1,300 @@
+<template>
+  <div>
+    <el-dialog
+      :title="title"
+      :close-on-click-modal="false"
+      v-dialogDrag
+      width="1300px"
+      height="500px"
+      @close="close"
+      @keyup.enter.native=""
+      :visible.sync="visible">
+      <div v-if="isShow">
+        <el-radio-group v-model="checkType" size="small" @input="changeProjectType">
+          <el-radio-button label="1">评估项目</el-radio-button>
+          <el-radio-button label="2">会计项目</el-radio-button>
+        </el-radio-group>
+      </div>
+      <div v-if="checkType === '1'" style="height: calc(100% - 80px);">
+          <el-form size="small" :inline="true" class="query-form" ref="searchFormPG" :model="searchFormPG" @submit.native.prevent>
+            <!-- 搜索框-->
+            <el-form-item label="项目名称" prop="name">
+              <el-input size="small" v-model="searchFormPG.name" placeholder="请输入项目名称" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="项目编号" prop="no">
+              <el-input size="small" v-model="searchFormPG.no" placeholder="请输入项目编号" clearable></el-input>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button type="primary" @click="listPG()" size="small" icon="el-icon-search">查询</el-button>
+              <el-button @click="resetSearchPG()" size="small" icon="el-icon-refresh-right">重置</el-button>
+            </el-form-item>
+          </el-form>
+          <vxe-table
+            border="inner"
+            auto-resize
+            resizable
+            height="400px"
+            :loading="loading"
+            size="small"
+            ref="programTablePG"
+            show-header-overflow
+            show-overflow
+            highlight-hover-row
+            :menu-config="{}"
+            :print-config="{}"
+            @sort-change=""
+            :sort-config="{remote:true}"
+            :data="dataListPG"
+            :row-config="{isCurrent: true}"
+            :radio-config="{trigger: 'row'}">
+            <vxe-column type="seq" width="60" title="序号"></vxe-column>
+            <vxe-column type="radio" width="40px"></vxe-column>
+            <vxe-column min-width="230px" title="项目名称" field="name" align="center"></vxe-column>
+            <vxe-column min-width="80px" title="项目编号" field="no" align="center"></vxe-column>
+            <vxe-column min-width="150px" title="合同名称" field="contractName" align="center"></vxe-column>
+            <vxe-column min-width="90px" title="登记人" field="createBy" align="center"></vxe-column>
+            <vxe-column min-width="110px" title="创建时间" field="createDate" align="center"></vxe-column>
+
+          </vxe-table>
+          <vxe-pager
+            background
+            size="small"
+            :current-page="tablePagePG.currentPage"
+            :page-size="tablePagePG.pageSize"
+            :total="tablePagePG.total"
+            :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+            :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+            @page-change="currentChangeHandlePG">
+          </vxe-pager>
+      </div>
+      <div v-if="checkType === '2'" style="height: calc(100% - 80px);">
+          <el-form size="small" :inline="true" class="query-form" ref="searchFormXG" :model="searchFormXG" @submit.native.prevent>
+            <!-- 搜索框-->
+            <el-form-item label="项目名称" prop="projectName">
+              <el-input size="small" v-model="searchFormXG.projectName" placeholder="请输入项目名称" clearable></el-input>
+            </el-form-item>
+            <el-form-item label="项目编号" prop="projectNumber">
+              <el-input size="small" v-model="searchFormXG.projectNumber" placeholder="请输入项目编号" clearable></el-input>
+            </el-form-item>
+
+            <el-form-item>
+              <el-button type="primary" @click="listXG()" size="small" icon="el-icon-search">查询</el-button>
+              <el-button @click="resetSearchXG()" size="small" icon="el-icon-refresh-right">重置</el-button>
+            </el-form-item>
+          </el-form>
+
+          <vxe-table
+            border="inner"
+            auto-resize
+            resizable
+            height="400px"
+            :loading="loading"
+            size="small"
+            ref="projectTableXG"
+            show-header-overflow
+            show-overflow
+            highlight-hover-row
+            :menu-config="{}"
+            :print-config="{}"
+            @sort-change=""
+            :sort-config="{remote:true}"
+            :data="dataListXG"
+            :row-config="{isCurrent: true}"
+            :radio-config="{trigger: 'row'}"
+          >
+            <vxe-column type="seq" width="60" title="序号"></vxe-column>
+            <vxe-column type="radio" width="40px"></vxe-column>
+            <vxe-column min-width="230" align="center" title="项目名称" field="projectName"></vxe-column>
+            <vxe-column min-width="160" align="center" title="项目编号" field="projectNumber"></vxe-column>
+            <vxe-column min-width="160" align="center" title="合同名称" field="contractName"></vxe-column>
+            <vxe-column min-width="160" align="center" title="创建人" field="createBy.name"></vxe-column>
+            <vxe-column min-width="160" align="center" title="创建时间" field="createDate"></vxe-column>
+
+          </vxe-table>
+          <vxe-pager
+            background
+            size="small"
+            :current-page="tablePageXG.currentPage"
+            :page-size="tablePageXG.pageSize"
+            :total="tablePageXG.total"
+            :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+            :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+            @page-change="currentChangeHandleXG">
+          </vxe-pager>
+      </div>
+      <span slot="footer" class="dialog-footer">
+      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
+      <el-button size="small" type="primary" v-if="method != 'view'" @click="getProgram()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+    </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import ProjectRecordsServiceXG from '@/api/cw/projectRecords/ProjectRecordsService'
+  import ProgramProjectServicePG from '@/api/program/ProgramProjectListInfoService'
+  export default {
+    data () {
+      return {
+        title: '项目选择',
+        method: '',
+        visible: false,
+        loading: false,
+        tablePageXG: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataListXG: [],
+        searchFormXG: {
+          name: '',
+          no: '',
+          createBy: '',
+          projectMasterName: '',
+          projectNumber: '',
+          projectName: '',
+          createDates: [],
+          status: ''
+        },
+        tablePagePG: {
+          total: 0,
+          currentPage: 1,
+          pageSize: 10,
+          orders: []
+        },
+        dataListPG: [],
+        searchFormPG: {
+          name: '',
+          no: '',
+          createBy: ''
+        },
+        checkType: '',
+        isShow: true
+      }
+    },
+    projectRecordsServiceXG: null,
+    programProjectServicePG: null,
+    created () {
+      this.projectRecordsServiceXG = new ProjectRecordsServiceXG()
+      this.programProjectServicePG = new ProgramProjectServicePG()
+    },
+    components: {
+    },
+    methods: {
+      /**
+       * @param checkType
+       *  1. 默认展示评估项目数据,隐藏评估、会计项目选择框
+       *  2. 默认展示会计项目数据,隐藏评估、会计项目选择框
+       *  3. 显示评估、会计项目选择框
+       */
+      init (checkType) {
+        this.visible = true
+        if (checkType === '1') {
+          this.isShow = false
+          this.checkType = '1'
+          this.listPG()
+        } else if (checkType === '2') {
+          this.isShow = false
+          this.checkType = '2'
+          this.listXG()
+        } else {
+          this.isShow = true
+          this.checkType = '1'
+          this.listPG()
+        }
+      },
+      // 表单提交
+      getProgram () {
+        let row
+        if (this.checkType === '1') {
+          if (this.commonJS.isEmpty(this.$refs.programTablePG.getRadioRecord())) {
+            this.$message.error('请至少选择一条数据')
+            return
+          }
+          row = this.$refs.programTablePG.getRadioRecord()
+        } else {
+          if (this.commonJS.isEmpty(this.$refs.projectTableXG.getRadioRecord())) {
+            this.$message.error('请至少选择一条数据')
+            return
+          }
+          row = this.$refs.projectTableXG.getRadioRecord()
+          row.name = row.projectName
+        }
+        if (this.checkType === '1') {
+          row.ptype = '1'
+        }
+        if (this.checkType === '2') {
+          row.ptype = '2'
+        }
+        this.close()
+        this.$emit('getProgram', row)
+      },
+      listXG () {
+        this.loading = true
+        this.searchFormXG.status = '5'
+        this.projectRecordsServiceXG.list2({
+          'current': this.tablePageXG.currentPage,
+          'size': this.tablePageXG.pageSize,
+          'orders': this.tablePageXG.orders,
+          ...this.searchFormXG
+        }).then(({data}) => {
+          this.dataListXG = data.records
+          this.tablePageXG.total = data.total
+          this.loading = false
+        })
+      },
+      // 当前页
+      currentChangeHandleXG ({currentPage, pageSize}) {
+        this.tablePageXG.currentPage = currentPage
+        this.tablePageXG.pageSize = pageSize
+        this.listXG()
+      },
+      resetSearchXG () {
+        this.$refs.searchFormXG.resetFields()
+        this.listXG()
+      },
+      listPG () {
+        this.loading = true
+        this.searchFormPG.status = '5'
+        this.programProjectServicePG.list2({
+          'current': this.tablePagePG.currentPage,
+          'size': this.tablePagePG.pageSize,
+          'orders': this.tablePagePG.orders,
+          ...this.searchFormPG
+        }).then(({data}) => {
+          this.dataListPG = data.records
+          this.tablePagePG.total = data.total
+          this.loading = false
+        })
+      },
+      // 当前页
+      currentChangeHandlePG ({currentPage, pageSize}) {
+        this.tablePagePG.currentPage = currentPage
+        this.tablePagePG.pageSize = pageSize
+        this.listPG()
+      },
+      resetSearchPG () {
+        this.$refs.searchFormPG.resetFields()
+        this.listPG()
+      },
+      close () {
+        this.visible = false
+      },
+      changeProjectType () {
+        if (this.checkType === '1') {
+          this.listPG()
+        }
+        if (this.checkType === '2') {
+          this.listXG()
+        }
+      }
+    }
+  }
+</script>
+<style>
+  .messageZindex {
+    z-index:9999 !important;
+  }
+</style>