|
@@ -1,244 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class="oa-sys-list-view">
|
|
|
- <div class="searchBox">
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">项目名称:</span>
|
|
|
- <el-input v-model="queryParams.xmmc" placeholder="请输入项目名称" style="width: 210px" />
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">项目编号:</span>
|
|
|
- <el-input v-model="queryParams.xmbh" placeholder="请输入项目名称" style="width: 160px" />
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">行政区:</span>
|
|
|
- <el-select v-model="queryParams.xzqmc" placeholder="请选择行政区" style="width: 160px">
|
|
|
- <el-option
|
|
|
- v-for="item in xzqList"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">行业:</span>
|
|
|
- <el-input v-model="queryParams.hymc" placeholder="请输入行业" style="width: 160px" />
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">立项时间:</span>
|
|
|
- <el-date-picker
|
|
|
- v-model="queryParams.lxsj"
|
|
|
- type="daterange"
|
|
|
- unlink-panels
|
|
|
- range-separator="To"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- />
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">合同:</span>
|
|
|
- <el-checkbox-group v-model="queryParams.htList">
|
|
|
- <el-checkbox label="全部" />
|
|
|
- <el-checkbox label="已签订" />
|
|
|
- <el-checkbox label="未签订" />
|
|
|
- </el-checkbox-group>
|
|
|
- </div>
|
|
|
- <div class="form">
|
|
|
- <span class="formSpan">项目状态:</span>
|
|
|
- <el-radio-group v-model="queryParams.xmzt">
|
|
|
- <el-radio :label="1">进行中({{ process }})</el-radio>
|
|
|
- <el-radio :label="4">已验收({{ accepted }})</el-radio>
|
|
|
- <el-radio :label="2">已结项({{ finished }})</el-radio>
|
|
|
- <el-radio :label="9">已终止({{ terminated }})</el-radio>
|
|
|
- <el-radio>全部({{ totalNum }})</el-radio>
|
|
|
- </el-radio-group>
|
|
|
- </div>
|
|
|
- <div class="from">
|
|
|
- <div class="btnBox">
|
|
|
- <el-button type="primary" style="background: #3485ff">
|
|
|
- <img src="@/assets/imgs/OA/search.png" class="mr-8px" alt="" />
|
|
|
- 查询</el-button
|
|
|
- >
|
|
|
- <el-button type="primary">
|
|
|
- <img src="@/assets/imgs/OA/open.png" class="mr-8px" alt="" />
|
|
|
- 导出</el-button
|
|
|
- >
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="infoBox">
|
|
|
- <ul>
|
|
|
- <li v-for="(item, index) in infoList" :key="index" class="mr-40px">
|
|
|
- <img class="mr-8px" :src="getAssetURL(item.icon)" alt="" />
|
|
|
- <p>{{ item.name }}:</p>
|
|
|
- <h4 class="font-size-18px">{{ item.num }}</h4>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- <div class="tableBox">
|
|
|
- <div class="table" ref="tableRef">
|
|
|
- <el-table
|
|
|
- :data="tableData"
|
|
|
- style="width: 100%; height: 100%"
|
|
|
- :style="{ height: tableHeight + 'px' }"
|
|
|
- :header-cell-style="{
|
|
|
- background: '#F7F8FA',
|
|
|
- color: '#121518',
|
|
|
- height: '50px'
|
|
|
- }"
|
|
|
- >
|
|
|
- <el-table-column label="序号" width="60">
|
|
|
- <template #default="scope">{{ scope.$index + 1 }}</template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="name" label="项目名称" />
|
|
|
- <el-table-column prop="name" label="项目编号" width="180" />
|
|
|
- <el-table-column prop="name" label="行政区" width="100" />
|
|
|
- <el-table-column prop="name" label="项目类别" width="180" />
|
|
|
- <el-table-column prop="name" label="责任部门" />
|
|
|
- <el-table-column prop="name" label="项目经理" />
|
|
|
- <el-table-column prop="name" label="立项时间" />
|
|
|
- <el-table-column prop="name" label="OA确认验收时间" />
|
|
|
- <el-table-column prop="name" label="实际验收时间" />
|
|
|
- <el-table-column prop="name" label="总产值" />
|
|
|
- <el-table-column prop="name" label="总成本" />
|
|
|
- <el-table-column prop="name" label="项目状态" />
|
|
|
-
|
|
|
- <el-table-column label="操作" width="80">
|
|
|
- <template #default="scope">
|
|
|
- <div class="operateBtn" @click="operateClick(scope.row)">
|
|
|
- <span>查看</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <div class="pageBox">
|
|
|
- <el-pagination
|
|
|
- v-model:current-page="currentPage1"
|
|
|
- :page-size="100"
|
|
|
- background
|
|
|
- layout="total, prev, pager, next"
|
|
|
- :total="1000"
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-<script setup lang="ts">
|
|
|
-import { useRouter } from 'vue-router'
|
|
|
-import { getAssetURL } from '@/utils/auth'
|
|
|
-defineOptions({ name: 'ProjectBook' })
|
|
|
-const router = useRouter()
|
|
|
-const tableRef: any = ref(null)
|
|
|
-const tableHeight: any = ref(0)
|
|
|
-const currentPage1: any = ref(5)
|
|
|
-const tableData: any = ref([
|
|
|
- {
|
|
|
- id: 111
|
|
|
- },
|
|
|
- { id: 222 },
|
|
|
- { id: 333 }
|
|
|
-])
|
|
|
-const queryParams: any = reactive({
|
|
|
- xmmc: '',
|
|
|
- xmbh: '',
|
|
|
- xzqmc: '',
|
|
|
- hymc: '',
|
|
|
- lxsj: '',
|
|
|
- htList: [],
|
|
|
- xmzt: 0
|
|
|
-})
|
|
|
-const infoList: any = ref([
|
|
|
- {
|
|
|
- icon: 'xmzx/xmzcz',
|
|
|
- name: '项目总产值(元)',
|
|
|
- num: '0'
|
|
|
- },
|
|
|
- {
|
|
|
- icon: 'xmzx/xmzcb',
|
|
|
- name: '项目总成本(元)',
|
|
|
- num: '0'
|
|
|
- },
|
|
|
- {
|
|
|
- icon: 'xmzx/xmzlr',
|
|
|
- name: '项目总利润(元)',
|
|
|
- num: '0'
|
|
|
- }
|
|
|
-])
|
|
|
-const xzqList: any = ref([
|
|
|
- {
|
|
|
- value: 'Option1',
|
|
|
- label: 'Option1'
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option2',
|
|
|
- label: 'Option2'
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option3',
|
|
|
- label: 'Option3'
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option4',
|
|
|
- label: 'Option4'
|
|
|
- },
|
|
|
- {
|
|
|
- value: 'Option5',
|
|
|
- label: 'Option5'
|
|
|
- }
|
|
|
-])
|
|
|
-
|
|
|
-const handleSizeChange = () => {}
|
|
|
-const handleCurrentChange = () => {}
|
|
|
-const operateClick = (row: any) => {
|
|
|
- let c: any = {}
|
|
|
- c = router.resolve({
|
|
|
- path: '/projectDetail',
|
|
|
- query: { id: row.id }
|
|
|
- })
|
|
|
-
|
|
|
- window.open(c.href, '_blank')
|
|
|
-}
|
|
|
-/**
|
|
|
- * 项目状态数据统计
|
|
|
- */
|
|
|
-const totalNum = ref<number>(0)
|
|
|
-const process = ref<number>(0)
|
|
|
-const finished = ref<number>(0)
|
|
|
-const terminated = ref<number>(0)
|
|
|
-const accepted = ref<number>(0)
|
|
|
-
|
|
|
-const queryXmztCount = async (): Promise<void> => {
|
|
|
- const urlApi = `/project/xmzt/count`
|
|
|
- if (lxsjObj.value && lxsjObj.value.length > 0) {
|
|
|
- queryParams.lxsjOn = moment(lxsjObj.value[0]).format('YYYY-MM-DD')
|
|
|
- queryParams.lxsjOff = moment(lxsjObj.value[1]).format('YYYY-MM-DD')
|
|
|
- } else {
|
|
|
- queryParams.lxsjOn = ''
|
|
|
- queryParams.lxsjOff = ''
|
|
|
- }
|
|
|
- const sendData = {
|
|
|
- ...queryParams
|
|
|
- }
|
|
|
- if (sendData['hyId'] == 0) {
|
|
|
- sendData['hyId'] = null
|
|
|
- }
|
|
|
- const result = await request.get({ url: urlApi, params: sendData }, '/business')
|
|
|
- if (result) {
|
|
|
- totalNum.value = result['total']
|
|
|
- process.value = result['process']
|
|
|
- finished.value = result['finished']
|
|
|
- terminated.value = result['terminated']
|
|
|
- accepted.value = result['accepted']
|
|
|
- }
|
|
|
-}
|
|
|
-queryXmztCount()
|
|
|
-onMounted(() => {
|
|
|
- tableHeight.value = tableRef.value.clientHeight
|
|
|
-})
|
|
|
-</script>
|
|
|
-<!-- <style lang="scss" scoped>
|
|
|
-@import url('./projectBook.scss');
|
|
|
-</style> -->
|