|
|
@@ -1,391 +1,550 @@
|
|
|
<template>
|
|
|
- <div class="resetElEmtClass">
|
|
|
- <el-dialog :title="$t('zhuanYIGongShi')" :visible.sync="modelValue" width="96vw" :top="'4vh'"
|
|
|
- :before-close="handleClose">
|
|
|
- <div class="transferWorkingHours">
|
|
|
- <!-- 筛选条件 -->
|
|
|
- <div class="transferWorkingHours-title">
|
|
|
- <el-form :inline="true" :model="filterCriteriaForm" class="demo-form-inline">
|
|
|
- <el-form-item :label="$t('ren-yuan')">
|
|
|
- <el-select v-model="filterCriteriaForm.userList" multiple filterable
|
|
|
- :placeholder="$t('defaultText.pleaseChoose')" clearable collapse-tags size="small"
|
|
|
- @change="filterSelect()" v-if="user.userNameNeedTranslate != 1">
|
|
|
- <el-option v-for="item in allUserList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- <selectCat :filterable="true" :size="'small'" v-if="user.userNameNeedTranslate == 1"
|
|
|
- :subject="allUserList" :clearable="true" :multiSelect="true" :distinction="'1'"
|
|
|
- :expandPersonnel="false" @selectCal="selectCal"></selectCat>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="$t('screening.workingDate')">
|
|
|
- <el-date-picker size="small" v-model="filterCriteriaForm.workDate" :editable="false"
|
|
|
- format="yyyy-MM-dd" value-format="yyyy-MM-dd" :clearable="true" @change="filterSelect()"
|
|
|
- :range-separator="$t('other.to')" type="daterange" :start-placeholder="$t('time.startDate')"
|
|
|
- :end-placeholder="$t('time.endDate')"></el-date-picker>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item :label="$t('other.project')">
|
|
|
- <el-select v-model="filterCriteriaForm.projectId" filterable clearable
|
|
|
- :placeholder="$t('defaultText.pleaseChoose')" size="small" @change="filterSelect()">
|
|
|
- <el-option v-for="item in allProjectList" :key="item.id" :label="item.projectName + item.projectCode"
|
|
|
- :value="item.id">
|
|
|
- <div class="omitText">
|
|
|
- <div class="left">{{ item.projectName }}</div>
|
|
|
- <div class="right">{{ item.projectCode }}</div>
|
|
|
- </div>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <!-- 表格 -->
|
|
|
- <div>
|
|
|
- <el-table :data="tableData" ref="multipleTable" height="58vh" border v-loading="tableDataLoading"
|
|
|
- @selection-change="handleSelectionChange" style="width: 100%">
|
|
|
- <el-table-column align="center" type="selection" width="55"></el-table-column>
|
|
|
- <el-table-column align="center" prop="jobNumber" :label="$t('Worknumber')"
|
|
|
- width="180"></el-table-column>
|
|
|
- <el-table-column align="center" prop="userName" :label="$t('lable.name')" width="180">
|
|
|
- <template slot-scope="scope">
|
|
|
- <TranslationOpenDataText type='userName' :openid='scope.row.userName'>
|
|
|
- </TranslationOpenDataText>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="deptName" :label="$t('subordinatedepartments')" width="180">
|
|
|
- <template slot-scope="scope">
|
|
|
- <TranslationOpenDataText type='departmentName' :openid='scope.row.deptName'>
|
|
|
- </TranslationOpenDataText>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="projectCode" :label="$t('Itemno')"
|
|
|
- width="240"></el-table-column>
|
|
|
- <el-table-column align="center" prop="projectName" :label="$t('headerTop.projectName')"
|
|
|
- width="240"></el-table-column>
|
|
|
- <el-table-column align="center" prop="createDate" :label="$t('screening.workingDate')"
|
|
|
- width="180"></el-table-column>
|
|
|
- <el-table-column align="center" prop="workingTime" :label="$t('screening.workTime')"
|
|
|
- width="100"></el-table-column>
|
|
|
- <el-table-column align="center" prop="groupName" :label="$t('other.taskGroup')"
|
|
|
- width="180"></el-table-column>
|
|
|
- <el-table-column align="center" prop="stageName" :label="$t('other.inputStage')"
|
|
|
- width="180"></el-table-column>
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <!-- 分页 -->
|
|
|
- <div class="transferWorkingHours-paging">
|
|
|
- <div>{{ $t('yiXuanZe') }} {{ tableSelected.length }} {{ $t('tiaoShuJu') }},{{ $t('gongJiGongShi') }}:{{
|
|
|
- totalWorkingHours }} {{ $t('time.hour') }}</div>
|
|
|
- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
|
|
|
- :current-page="pagingForm.pageIndex" :page-sizes="[30, 50, 100, 150, 200, 300]"
|
|
|
- :page-size="pagingForm.pageSize" layout="prev, pager, next, sizes" :total="pagingTotal">
|
|
|
- </el-pagination>
|
|
|
- </div>
|
|
|
- <!-- 转移至 -->
|
|
|
- <div slot="footer">
|
|
|
- <el-form :inline="true" :model="transform" class="demo-form-inline">
|
|
|
- <el-form-item :label="$t('zhuanYiZhi')">
|
|
|
- <el-select v-model="transform.projectId" filterable clearable
|
|
|
- :placeholder="$t('defaultText.pleaseChoose')" size="small" :disabled="!tableSelected.length"
|
|
|
- @change="changeProject()">
|
|
|
- <el-option v-for="item in allProjectList" :key="item.id" :label="item.projectName + item.projectCode"
|
|
|
- :value="item.id">
|
|
|
- <div class="omitText">
|
|
|
- <div class="left">{{ item.projectName }}</div>
|
|
|
- <div class="right">{{ item.projectCode }}</div>
|
|
|
- </div>
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-select v-model="transform.taskGroupingId" filterable clearable
|
|
|
- :placeholder="$t('defaultText.pleaseSelectaTaskGroup')" :disabled="!transform.projectId"
|
|
|
- size="small" @change="changeTaskGroup()">
|
|
|
- <el-option v-for="item in taskGroupingList" :key="item.id" :label="item.name"
|
|
|
- :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-select v-model="transform.stageId" filterable clearable
|
|
|
- :placeholder="$t('pleaseselecttheprojectphase')"
|
|
|
- :disabled="!(transform.projectId && transform.taskGroupingId)" size="small">
|
|
|
- <el-option v-for="item in stageList" :key="item.id" :label="item.stagesName"
|
|
|
- :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button type="primary" :size="'small'" :loading="confirmTransformLoading"
|
|
|
- @click="confirmTransform()"
|
|
|
- :disabled="!(transform.projectId && transform.taskGroupingId)">{{
|
|
|
- $t('queRenZhuanYi') }}</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
- </div>
|
|
|
+ <div class="resetElEmtClass">
|
|
|
+ <el-dialog
|
|
|
+ :title="$t('zhuanYIGongShi')"
|
|
|
+ :visible.sync="modelValue"
|
|
|
+ width="96vw"
|
|
|
+ :top="'4vh'"
|
|
|
+ :before-close="handleClose"
|
|
|
+ >
|
|
|
+ <div class="transferWorkingHours">
|
|
|
+ <!-- 筛选条件 -->
|
|
|
+ <div class="transferWorkingHours-title">
|
|
|
+ <el-form
|
|
|
+ :inline="true"
|
|
|
+ :model="filterCriteriaForm"
|
|
|
+ class="demo-form-inline"
|
|
|
+ >
|
|
|
+ <el-form-item :label="$t('ren-yuan')">
|
|
|
+ <el-select
|
|
|
+ v-model="filterCriteriaForm.userList"
|
|
|
+ multiple
|
|
|
+ filterable
|
|
|
+ :placeholder="$t('defaultText.pleaseChoose')"
|
|
|
+ clearable
|
|
|
+ collapse-tags
|
|
|
+ size="small"
|
|
|
+ @change="filterSelect()"
|
|
|
+ v-if="user.userNameNeedTranslate != 1"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in allUserList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ <selectCat
|
|
|
+ :filterable="true"
|
|
|
+ :size="'small'"
|
|
|
+ v-if="user.userNameNeedTranslate == 1"
|
|
|
+ :subject="allUserList"
|
|
|
+ :clearable="true"
|
|
|
+ :multiSelect="true"
|
|
|
+ :distinction="'1'"
|
|
|
+ :expandPersonnel="false"
|
|
|
+ @selectCal="selectCal"
|
|
|
+ ></selectCat>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('screening.workingDate')">
|
|
|
+ <el-date-picker
|
|
|
+ size="small"
|
|
|
+ v-model="filterCriteriaForm.workDate"
|
|
|
+ :editable="false"
|
|
|
+ format="yyyy-MM-dd"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ :clearable="true"
|
|
|
+ @change="filterSelect()"
|
|
|
+ :range-separator="$t('other.to')"
|
|
|
+ type="daterange"
|
|
|
+ :start-placeholder="$t('time.startDate')"
|
|
|
+ :end-placeholder="$t('time.endDate')"
|
|
|
+ ></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item :label="$t('other.project')">
|
|
|
+ <el-select
|
|
|
+ v-model="filterCriteriaForm.projectId"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :placeholder="$t('defaultText.pleaseChoose')"
|
|
|
+ size="small"
|
|
|
+ @change="filterSelect()"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in allProjectList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.projectName + item.projectCode"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ <div class="omitText">
|
|
|
+ <div class="left">{{ item.projectName }}</div>
|
|
|
+ <div class="right">{{ item.projectCode }}</div>
|
|
|
+ </div>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <!-- 表格 -->
|
|
|
+ <div>
|
|
|
+ <el-table
|
|
|
+ :data="tableData"
|
|
|
+ ref="multipleTable"
|
|
|
+ height="58vh"
|
|
|
+ border
|
|
|
+ v-loading="tableDataLoading"
|
|
|
+ @selection-change="handleSelectionChange"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ type="selection"
|
|
|
+ width="55"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="jobNumber"
|
|
|
+ :label="$t('Worknumber')"
|
|
|
+ width="180"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="userName"
|
|
|
+ :label="$t('lable.name')"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <TranslationOpenDataText
|
|
|
+ type="userName"
|
|
|
+ :openid="scope.row.userName"
|
|
|
+ >
|
|
|
+ </TranslationOpenDataText>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="deptName"
|
|
|
+ :label="$t('subordinatedepartments')"
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <TranslationOpenDataText
|
|
|
+ type="departmentName"
|
|
|
+ :openid="scope.row.deptName"
|
|
|
+ >
|
|
|
+ </TranslationOpenDataText>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="projectCode"
|
|
|
+ :label="$t('Itemno')"
|
|
|
+ width="240"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="projectName"
|
|
|
+ :label="$t('headerTop.projectName')"
|
|
|
+ width="240"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="createDate"
|
|
|
+ :label="$t('screening.workingDate')"
|
|
|
+ width="180"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="workingTime"
|
|
|
+ :label="$t('screening.workTime')"
|
|
|
+ width="100"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="groupName"
|
|
|
+ :label="$t('other.taskGroup')"
|
|
|
+ width="180"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ prop="stageName"
|
|
|
+ :label="$t('other.inputStage')"
|
|
|
+ width="180"
|
|
|
+ ></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <!-- 分页 -->
|
|
|
+ <div class="transferWorkingHours-paging">
|
|
|
+ <div>
|
|
|
+ {{ $t("yiXuanZe") }} {{ tableSelected.length }}
|
|
|
+ {{ $t("tiaoShuJu") }},{{ $t("gongJiGongShi") }}:{{
|
|
|
+ totalWorkingHours
|
|
|
+ }}
|
|
|
+ {{ $t("time.hour") }}
|
|
|
+ </div>
|
|
|
+ <el-pagination
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page="pagingForm.pageIndex"
|
|
|
+ :page-sizes="[30, 50, 100, 150, 200, 300]"
|
|
|
+ :page-size="pagingForm.pageSize"
|
|
|
+ layout="prev, pager, next, sizes"
|
|
|
+ :total="pagingTotal"
|
|
|
+ >
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ <!-- 转移至 -->
|
|
|
+ <div slot="footer">
|
|
|
+ <el-form :inline="true" :model="transform" class="demo-form-inline">
|
|
|
+ <el-form-item :label="$t('zhuanYiZhi')">
|
|
|
+ <el-select
|
|
|
+ v-model="transform.projectId"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :placeholder="$t('defaultText.pleaseChoose')"
|
|
|
+ size="small"
|
|
|
+ :disabled="!tableSelected.length"
|
|
|
+ @change="changeProject()"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in allProjectList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.projectName + item.projectCode"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ <div class="omitText">
|
|
|
+ <div class="left">{{ item.projectName }}</div>
|
|
|
+ <div class="right">{{ item.projectCode }}</div>
|
|
|
+ </div>
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select
|
|
|
+ v-model="transform.taskGroupingId"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :placeholder="$t('defaultText.pleaseSelectaTaskGroup')"
|
|
|
+ :disabled="!transform.projectId"
|
|
|
+ size="small"
|
|
|
+ @change="changeTaskGroup()"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in taskGroupingList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-select
|
|
|
+ v-model="transform.stageId"
|
|
|
+ filterable
|
|
|
+ clearable
|
|
|
+ :placeholder="$t('pleaseselecttheprojectphase')"
|
|
|
+ :disabled="!(transform.projectId && transform.taskGroupingId)"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in stageList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.stagesName"
|
|
|
+ :value="item.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ :size="'small'"
|
|
|
+ :loading="confirmTransformLoading"
|
|
|
+ @click="confirmTransform()"
|
|
|
+ :disabled="!(transform.projectId && transform.taskGroupingId)"
|
|
|
+ >{{ $t("queRenZhuanYi") }}</el-button
|
|
|
+ >
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import selectCat from "@/components/select.vue"
|
|
|
+import selectCat from "@/components/select.vue";
|
|
|
export default {
|
|
|
- name: '',
|
|
|
- components: {
|
|
|
- selectCat
|
|
|
+ name: "",
|
|
|
+ components: {
|
|
|
+ selectCat,
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ modelValue: {
|
|
|
+ type: Boolean,
|
|
|
+ default: () => false,
|
|
|
},
|
|
|
- props: {
|
|
|
- modelValue: {
|
|
|
- type: Boolean,
|
|
|
- default: () => false
|
|
|
- },
|
|
|
- projectList: {
|
|
|
- type: Array,
|
|
|
- default: () => []
|
|
|
- },
|
|
|
- userList: {
|
|
|
- type: Array,
|
|
|
- default: () => []
|
|
|
- }
|
|
|
+ projectList: {
|
|
|
+ type: Array,
|
|
|
+ default: () => [],
|
|
|
},
|
|
|
- data() {
|
|
|
- return {
|
|
|
- user: JSON.parse(sessionStorage.getItem("user")),
|
|
|
- allProjectList: [],
|
|
|
- allUserList: [],
|
|
|
- taskGroupingList: [],
|
|
|
- stageList: [],
|
|
|
- transform: {
|
|
|
- projectId: '',
|
|
|
- taskGroupingId: '',
|
|
|
- stageId: ''
|
|
|
- },
|
|
|
- filterCriteriaForm: {
|
|
|
- userList: [],
|
|
|
- workDate: [],
|
|
|
- projectId: ''
|
|
|
- },
|
|
|
- pagingForm: {
|
|
|
- pageIndex: 1,
|
|
|
- pageSize: 100
|
|
|
- },
|
|
|
- pagingTotal: 0,
|
|
|
- tableSelected: [],
|
|
|
- tableData: [],
|
|
|
- tableDataLoading: false,
|
|
|
- confirmTransformLoading: false
|
|
|
- }
|
|
|
+ userList: {
|
|
|
+ type: Array,
|
|
|
+ default: () => [],
|
|
|
},
|
|
|
- computed: {
|
|
|
- totalWorkingHours() {
|
|
|
- return this.tableSelected.reduce((total, item) => {
|
|
|
- let num = item.workingTime || 0
|
|
|
- return total + Number(num)
|
|
|
- }, 0)
|
|
|
- }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ user: JSON.parse(sessionStorage.getItem("user")),
|
|
|
+ allProjectList: [],
|
|
|
+ allUserList: [],
|
|
|
+ taskGroupingList: [],
|
|
|
+ stageList: [],
|
|
|
+ transform: {
|
|
|
+ projectId: "",
|
|
|
+ taskGroupingId: "",
|
|
|
+ stageId: "",
|
|
|
+ },
|
|
|
+ filterCriteriaForm: {
|
|
|
+ userList: [],
|
|
|
+ workDate: [],
|
|
|
+ projectId: "",
|
|
|
+ },
|
|
|
+ pagingForm: {
|
|
|
+ pageIndex: 1,
|
|
|
+ pageSize: 100,
|
|
|
+ },
|
|
|
+ pagingTotal: 0,
|
|
|
+ tableSelected: [],
|
|
|
+ tableData: [],
|
|
|
+ tableDataLoading: false,
|
|
|
+ confirmTransformLoading: false,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ totalWorkingHours() {
|
|
|
+ return this.tableSelected.reduce((total, item) => {
|
|
|
+ let num = item.workingTime || 0;
|
|
|
+ return total + Number(num);
|
|
|
+ }, 0);
|
|
|
},
|
|
|
- watch: {
|
|
|
- modelValue(val) {
|
|
|
- if (val) {
|
|
|
- this.emptyFilterData()
|
|
|
- this.getTableList()
|
|
|
- }
|
|
|
- this.updateModelValue()
|
|
|
- },
|
|
|
- projectList(val) {
|
|
|
- this.allProjectList = val
|
|
|
- },
|
|
|
- userList(val) {
|
|
|
- this.allUserList = val
|
|
|
- }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ modelValue(val) {
|
|
|
+ if (val) {
|
|
|
+ this.emptyFilterData();
|
|
|
+ this.getTableList();
|
|
|
+ }
|
|
|
+ this.updateModelValue();
|
|
|
+ },
|
|
|
+ projectList(val) {
|
|
|
+ this.allProjectList = val;
|
|
|
},
|
|
|
- model: {
|
|
|
- prop: 'modelValue',
|
|
|
- event: 'getValue'
|
|
|
+ userList(val) {
|
|
|
+ this.allUserList = val;
|
|
|
},
|
|
|
- created() { },
|
|
|
- mounted() { },
|
|
|
- methods: {
|
|
|
- async confirmTransform() {
|
|
|
- const { projectId, taskGroupingId, stageId } = this.transform
|
|
|
- const reportIds = this.tableSelected.map(item => item.reportId).join(',')
|
|
|
- this.confirmTransformLoading = true
|
|
|
- const { data, code } = await this.postData('/report/transferReport', {
|
|
|
- reportIds, projectId, stageId,
|
|
|
- groupId: taskGroupingId,
|
|
|
- })
|
|
|
+ },
|
|
|
+ model: {
|
|
|
+ prop: "modelValue",
|
|
|
+ event: "getValue",
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ mounted() {},
|
|
|
+ methods: {
|
|
|
+ async confirmTransform() {
|
|
|
+ const { projectId, taskGroupingId, stageId } = this.transform;
|
|
|
+ const reportIds = this.tableSelected
|
|
|
+ .map((item) => item.reportId)
|
|
|
+ .join(",");
|
|
|
+ this.confirmTransformLoading = true;
|
|
|
+ const { data, code } = await this.postData("/report/transferReport", {
|
|
|
+ reportIds,
|
|
|
+ projectId,
|
|
|
+ stageId,
|
|
|
+ groupId: taskGroupingId,
|
|
|
+ });
|
|
|
|
|
|
- if (code == 'ok') {
|
|
|
- this.$message({
|
|
|
- message: this.$t('zhuanYiChengGong'),
|
|
|
- type: "success"
|
|
|
- });
|
|
|
- this.pagingForm.pageIndex = 1
|
|
|
- this.emptyBasicData()
|
|
|
- this.getTableList()
|
|
|
- }
|
|
|
- this.confirmTransformLoading = false
|
|
|
- },
|
|
|
- async getTableList() {
|
|
|
- const { userList, workDate, projectId } = this.filterCriteriaForm
|
|
|
- this.tableDataLoading = true
|
|
|
- const { data } = await this.postData('/report/getReportListWithTransfer ', {
|
|
|
- startDate: workDate[0],
|
|
|
- endDate: workDate[1],
|
|
|
- userIds: userList.join(','),
|
|
|
- projectId: projectId,
|
|
|
- ...this.pagingForm
|
|
|
- })
|
|
|
- this.tableDataLoading = false
|
|
|
- this.tableData = data.result
|
|
|
- this.pagingTotal = data.count
|
|
|
- },
|
|
|
- async getTaskGroups() {
|
|
|
- const { projectId } = this.transform
|
|
|
- let { data } = await this.postData('/task-group/listMyJoinGroup', {
|
|
|
- projectId,
|
|
|
- isSubstitude: 1
|
|
|
- })
|
|
|
- this.taskGroupingList = data
|
|
|
- },
|
|
|
- async getGroupStages() {
|
|
|
- const { taskGroupingId } = this.transform
|
|
|
- let { data } = await this.postData('/stages/getProjectStagesByGroup', {
|
|
|
- groupId: taskGroupingId
|
|
|
- })
|
|
|
- this.stageList = data
|
|
|
- },
|
|
|
- filterSelect() {
|
|
|
- this.pagingForm.pageIndex = 1
|
|
|
- this.getTableList()
|
|
|
- },
|
|
|
- emptyBasicData() {
|
|
|
- this.transform = {
|
|
|
- projectId: '',
|
|
|
- taskGroupingId: '',
|
|
|
- stageId: ''
|
|
|
- }
|
|
|
- this.taskGroupingList = []
|
|
|
- this.stageList = []
|
|
|
- },
|
|
|
- emptyFilterData() {
|
|
|
- this.filterCriteriaForm = {
|
|
|
- userList: [],
|
|
|
- workDate: [],
|
|
|
- projectId: ''
|
|
|
- }
|
|
|
- },
|
|
|
- changeTaskGroup() {
|
|
|
- const { taskGroupingId } = this.transform
|
|
|
- if (taskGroupingId) {
|
|
|
- this.getGroupStages()
|
|
|
- } else {
|
|
|
- this.transform = {
|
|
|
- ...this.transform,
|
|
|
- stageId: ''
|
|
|
- }
|
|
|
- this.stageList = []
|
|
|
- }
|
|
|
+ if (code == "ok") {
|
|
|
+ this.$message({
|
|
|
+ message: this.$t("zhuanYiChengGong"),
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ this.pagingForm.pageIndex = 1;
|
|
|
+ this.emptyBasicData();
|
|
|
+ this.getTableList();
|
|
|
+ }
|
|
|
+ this.confirmTransformLoading = false;
|
|
|
+ },
|
|
|
+ async getTableList() {
|
|
|
+ const { userList, workDate, projectId } = this.filterCriteriaForm;
|
|
|
+ this.tableDataLoading = true;
|
|
|
+ const { data } = await this.postData(
|
|
|
+ "/report/getReportListWithTransfer ",
|
|
|
+ {
|
|
|
+ startDate: workDate[0],
|
|
|
+ endDate: workDate[1],
|
|
|
+ userIds: userList.join(","),
|
|
|
+ projectId: projectId,
|
|
|
+ ...this.pagingForm,
|
|
|
},
|
|
|
- changeProject() {
|
|
|
- const { projectId } = this.transform
|
|
|
- if (projectId) {
|
|
|
- this.getTaskGroups()
|
|
|
+ );
|
|
|
+ this.tableDataLoading = false;
|
|
|
+ this.tableData = data.result;
|
|
|
+ this.pagingTotal = data.count;
|
|
|
+ },
|
|
|
+ async getTaskGroups() {
|
|
|
+ const { projectId } = this.transform;
|
|
|
+ let { data } = await this.postData("/task-group/listMyJoinGroup", {
|
|
|
+ projectId,
|
|
|
+ isSubstitude: 1,
|
|
|
+ // workDate: this.filterCriteriaForm.workDate[0],
|
|
|
+ });
|
|
|
+ this.taskGroupingList = data;
|
|
|
+ },
|
|
|
+ async getGroupStages() {
|
|
|
+ const { taskGroupingId } = this.transform;
|
|
|
+ let { data } = await this.postData("/stages/getProjectStagesByGroup", {
|
|
|
+ groupId: taskGroupingId,
|
|
|
+ });
|
|
|
+ this.stageList = data;
|
|
|
+ },
|
|
|
+ filterSelect() {
|
|
|
+ this.pagingForm.pageIndex = 1;
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+ emptyBasicData() {
|
|
|
+ this.transform = {
|
|
|
+ projectId: "",
|
|
|
+ taskGroupingId: "",
|
|
|
+ stageId: "",
|
|
|
+ };
|
|
|
+ this.taskGroupingList = [];
|
|
|
+ this.stageList = [];
|
|
|
+ },
|
|
|
+ emptyFilterData() {
|
|
|
+ this.filterCriteriaForm = {
|
|
|
+ userList: [],
|
|
|
+ workDate: [],
|
|
|
+ projectId: "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ changeTaskGroup() {
|
|
|
+ const { taskGroupingId } = this.transform;
|
|
|
+ if (taskGroupingId) {
|
|
|
+ this.getGroupStages();
|
|
|
+ } else {
|
|
|
+ this.transform = {
|
|
|
+ ...this.transform,
|
|
|
+ stageId: "",
|
|
|
+ };
|
|
|
+ this.stageList = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changeProject() {
|
|
|
+ const { projectId } = this.transform;
|
|
|
+ if (projectId) {
|
|
|
+ this.getTaskGroups();
|
|
|
+ } else {
|
|
|
+ this.transform = {
|
|
|
+ projectId: "",
|
|
|
+ taskGroupingId: "",
|
|
|
+ stageId: "",
|
|
|
+ };
|
|
|
+ this.taskGroupingList = [];
|
|
|
+ this.stageList = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleSelectionChange(row) {
|
|
|
+ this.tableSelected = row;
|
|
|
+ },
|
|
|
+ handleSizeChange(size) {
|
|
|
+ this.pagingForm = {
|
|
|
+ pageIndex: 1,
|
|
|
+ pageSize: size,
|
|
|
+ };
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+ handleCurrentChange(page) {
|
|
|
+ this.pagingForm.pageIndex = page;
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+ updateModelValue() {
|
|
|
+ this.$emit("getValue", this.modelValue);
|
|
|
+ this.$emit("change", this.modelValue);
|
|
|
+ },
|
|
|
+ selectCal(obj) {
|
|
|
+ if (obj.distinction == 1) {
|
|
|
+ let userListId = obj.arrUserList;
|
|
|
+ let arr = [];
|
|
|
+ for (var i in userListId) {
|
|
|
+ arr.push(userListId[i].id);
|
|
|
+ }
|
|
|
+ this.filterCriteriaForm.userList = arr;
|
|
|
+ this.filterSelect();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 封装 post 请求
|
|
|
+ postData(url, params) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ this.http.post(
|
|
|
+ url,
|
|
|
+ { ...params },
|
|
|
+ (res) => {
|
|
|
+ if (res.code == "ok") {
|
|
|
+ resolve(res);
|
|
|
} else {
|
|
|
- this.transform = {
|
|
|
- projectId: '',
|
|
|
- taskGroupingId: '',
|
|
|
- stageId: ''
|
|
|
- }
|
|
|
- this.taskGroupingList = []
|
|
|
- this.stageList = []
|
|
|
+ this.$message({
|
|
|
+ message: res.msg,
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ reject(error);
|
|
|
}
|
|
|
- },
|
|
|
- handleSelectionChange(row) {
|
|
|
- this.tableSelected = row
|
|
|
- },
|
|
|
- handleSizeChange(size) {
|
|
|
- this.pagingForm = {
|
|
|
- pageIndex: 1,
|
|
|
- pageSize: size
|
|
|
- }
|
|
|
- this.getTableList()
|
|
|
- },
|
|
|
- handleCurrentChange(page) {
|
|
|
- this.pagingForm.pageIndex = page
|
|
|
- this.getTableList()
|
|
|
- },
|
|
|
- updateModelValue() {
|
|
|
- this.$emit('getValue', this.modelValue);
|
|
|
- this.$emit('change', this.modelValue);
|
|
|
- },
|
|
|
- selectCal(obj) {
|
|
|
- if (obj.distinction == 1) {
|
|
|
- let userListId = obj.arrUserList
|
|
|
- let arr = []
|
|
|
- for (var i in userListId) {
|
|
|
- arr.push(userListId[i].id)
|
|
|
- }
|
|
|
- this.filterCriteriaForm.userList = arr
|
|
|
- this.filterSelect()
|
|
|
- }
|
|
|
- },
|
|
|
- // 封装 post 请求
|
|
|
- postData(url, params) {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- this.http.post(url, { ...params },
|
|
|
- res => {
|
|
|
- if (res.code == 'ok') {
|
|
|
- resolve(res)
|
|
|
- } else {
|
|
|
- this.$message({
|
|
|
- message: res.msg,
|
|
|
- type: "error"
|
|
|
- });
|
|
|
- reject(error)
|
|
|
- }
|
|
|
- },
|
|
|
- error => {
|
|
|
- this.$message({
|
|
|
- message: error,
|
|
|
- type: "error"
|
|
|
- });
|
|
|
- reject(error)
|
|
|
- })
|
|
|
- })
|
|
|
- },
|
|
|
+ },
|
|
|
+ (error) => {
|
|
|
+ this.$message({
|
|
|
+ message: error,
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ reject(error);
|
|
|
+ },
|
|
|
+ );
|
|
|
+ });
|
|
|
},
|
|
|
-}
|
|
|
+ },
|
|
|
+};
|
|
|
</script>
|
|
|
-<style scoped lang='scss'>
|
|
|
+<style scoped lang="scss">
|
|
|
.omitText {
|
|
|
- width: 100%;
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- justify-content: space-between;
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
|
|
|
- .left {
|
|
|
- max-width: 300px;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- }
|
|
|
+ .left {
|
|
|
+ max-width: 300px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
|
|
|
- .right {
|
|
|
- flex: 1;
|
|
|
- color: #8492a6;
|
|
|
- font-size: 13px;
|
|
|
- margin-left: 10px;
|
|
|
- text-align: right;
|
|
|
- }
|
|
|
+ .right {
|
|
|
+ flex: 1;
|
|
|
+ color: #8492a6;
|
|
|
+ font-size: 13px;
|
|
|
+ margin-left: 10px;
|
|
|
+ text-align: right;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
.transferWorkingHours {
|
|
|
- padding: 0 20px;
|
|
|
+ padding: 0 20px;
|
|
|
|
|
|
- .transferWorkingHours-paging {
|
|
|
- margin: 10px 0;
|
|
|
- display: flex;
|
|
|
- justify-content: space-between;
|
|
|
- align-items: center;
|
|
|
- }
|
|
|
+ .transferWorkingHours-paging {
|
|
|
+ margin: 10px 0;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|