|
@@ -1,12 +1,17 @@
|
|
|
<template>
|
|
|
- <div>
|
|
|
- <div class="integral_event_box boxMinHeight">
|
|
|
- <div class="flex-box-ce flex-d-wrap">
|
|
|
- <div class="sleItem">
|
|
|
- <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
|
|
|
- <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- <span v-show="newTaskFormType == 1">
|
|
|
+ <el-container>
|
|
|
+ <el-header :height="headerMaxHeight">
|
|
|
+ <el-collapse v-model="activeCollapseName" >
|
|
|
+ <el-collapse-item title="积分搜索" name="search">
|
|
|
+ <template slot="title">
|
|
|
+ <el-tag style="margin-left: 20px">当前数据:{{total}}条,最多导出10000条。</el-tag>
|
|
|
+ </template>
|
|
|
+ <div class="flex-box-ce flex-d-wrap" style="margin-left: 20px">
|
|
|
+ <div class="sleItem">
|
|
|
+ <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
|
|
|
+ <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <span v-show="newTaskFormType == 1">
|
|
|
<el-cascader
|
|
|
class="date-picker-width"
|
|
|
v-model="rule"
|
|
@@ -20,7 +25,7 @@
|
|
|
placeholder="全部规则分类"
|
|
|
></el-cascader>
|
|
|
</span>
|
|
|
- <span v-show="newTaskFormType == 2">
|
|
|
+ <span v-show="newTaskFormType == 2">
|
|
|
<el-cascader
|
|
|
@change="ruleautomatic"
|
|
|
class="date-picker-width"
|
|
@@ -34,82 +39,92 @@
|
|
|
clearable
|
|
|
></el-cascader>
|
|
|
</span>
|
|
|
- </div>
|
|
|
- <div class="sleItem">
|
|
|
- <span class="label">积分类型</span>
|
|
|
- <el-select class="date-picker-width" v-model="formData.pt_id" clearable placeholder="全部">
|
|
|
- <el-option v-for="item in $getTyps()" :key="item.name" :label="item.name" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- <div class="sleItem">
|
|
|
- <span class="label">事件来源</span>
|
|
|
- <el-select class="date-picker-width" v-model="formData.source_type" clearable placeholder="全部">
|
|
|
- <el-option v-for="item in source_type" :key="item.name" :label="item.name" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- <div class="sleItem">
|
|
|
- <span class="label">部门</span>
|
|
|
- <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司"></el-cascader>
|
|
|
- </div>
|
|
|
- <div class="sleItem flex-box-ce">
|
|
|
- <span class="label">时间</span>
|
|
|
- <el-date-picker
|
|
|
- v-model="time_slot"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- range-separator="至"
|
|
|
- :clearable="process=='production'? false:true"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :picker-options="instantPickerOptions"
|
|
|
- ></el-date-picker>
|
|
|
- </div>
|
|
|
- <div class="sleItem flex-box-ce">
|
|
|
- <el-select v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员" style="width: 250px;margin-right: 10px;">
|
|
|
- <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- <el-input v-model="formData.keyword" style="width: 250px;" placeholder="输入关键字查找" maxlength="100" @keyup.enter.native="keyWordSelect" class="persons_name">
|
|
|
- <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
|
|
|
- </el-input>
|
|
|
- <span class="label" style="margin-left: 10px">奖扣分值</span>
|
|
|
- <el-select v-model="formData.add_subtract" style="width:110px;" filterable placeholder="全部">
|
|
|
- <el-option v-for="item in add_subtract_items" :key="item.id" :label="item.value" :value="item.id"></el-option>
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="flex-box-ce" style="margin-bottom: 20px;">
|
|
|
- <div class="flex-1">
|
|
|
- <el-button type="primary" v-if="!$supremeAuthority('employee')" @click="excelImportShow = true">导入数据</el-button>
|
|
|
- <el-button type="primary" @click="exportExcel">导出当前数据</el-button>
|
|
|
- <el-button class="first-element-btn" v-if="noticeRole" :disabled="selectionID.length == 0" @click="deleteInBatches" type="danger">批量删除</el-button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="diy-tip1" style="margin-bottom: 10px;">
|
|
|
- <div>
|
|
|
- 当前数据:{{total}}条,最多导出10000条。
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="open_detail" @selection-change="deleteEvents">
|
|
|
- <el-table-column v-if="noticeRole" :selectable="isSelectable" type="selection" width="55"></el-table-column>
|
|
|
- <el-table-column prop="employee_name" label="姓名" align="left" width="180px">
|
|
|
+ </div>
|
|
|
+ <div class="sleItem">
|
|
|
+ <span class="label">积分类型</span>
|
|
|
+ <el-select class="date-picker-width" v-model="formData.pt_id" clearable placeholder="全部">
|
|
|
+ <el-option v-for="item in $getTyps()" :key="item.name" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="sleItem">
|
|
|
+ <span class="label">事件来源</span>
|
|
|
+ <el-select class="date-picker-width" v-model="formData.source_type" clearable placeholder="全部">
|
|
|
+ <el-option v-for="item in source_type" :key="item.name" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ <div class="sleItem">
|
|
|
+ <span class="label">部门</span>
|
|
|
+ <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司"></el-cascader>
|
|
|
+ </div>
|
|
|
+ <div class="sleItem flex-box-ce">
|
|
|
+ <span class="label">时间</span>
|
|
|
+ <el-date-picker
|
|
|
+ v-model="time_slot"
|
|
|
+ type="daterange"
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
+ range-separator="至"
|
|
|
+ :clearable="process=='production'? false:true"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :picker-options="instantPickerOptions"
|
|
|
+ ></el-date-picker>
|
|
|
+ </div>
|
|
|
+ <div class="sleItem flex-box-ce">
|
|
|
+ <el-select v-model="select_employee_id" filterable clearable placeholder="受益人员" style="width: 250px;margin-right: 10px;">
|
|
|
+ <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-select v-model="select_recorder_id" filterable clearable placeholder="录入人" style="width: 250px;margin-right: 10px;">
|
|
|
+ <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ <el-input v-model="formData.keyword" style="width: 250px;" placeholder="输入关键字查找" maxlength="100" @keyup.enter.native="keyWordSelect" class="persons_name">
|
|
|
+ <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
|
|
|
+ </el-input>
|
|
|
+ <span class="label" style="margin-left: 10px">奖扣分值</span>
|
|
|
+ <el-select v-model="formData.add_subtract" style="width:110px;" filterable placeholder="全部">
|
|
|
+ <el-option v-for="item in add_subtract_items" :key="item.id" :label="item.value" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="flex-box-ce" style="margin-bottom: 10px;margin-left: 20px">
|
|
|
+ <div class="flex-1">
|
|
|
+ <el-button type="primary" v-if="!$supremeAuthority('employee')" @click="excelImportShow = true">导入数据</el-button>
|
|
|
+ <el-button type="primary" @click="exportExcel">导出当前数据</el-button>
|
|
|
+ <el-button class="first-element-btn" v-if="noticeRole" :disabled="selectionID.length == 0" @click="deleteInBatches" type="danger">批量删除</el-button>
|
|
|
+ <el-button type="warning" :disabled="!appealEnable || appealSelectionEvents.length === 0" @click="showAppealCreate = true" >发起申诉</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </el-header>
|
|
|
+ <el-main>
|
|
|
+ <el-table
|
|
|
+ :data="list"
|
|
|
+ style="width: 100%"
|
|
|
+ v-loading="loading"
|
|
|
+ @row-click="open_detail"
|
|
|
+ @selection-change="deleteEvents"
|
|
|
+ >
|
|
|
+<!-- <el-table-column v-if="noticeRole" :selectable="isSelectable" type="selection" width="55" fixed></el-table-column>-->
|
|
|
+ <el-table-column :selectable="isSelectable" type="selection" width="55" fixed></el-table-column>
|
|
|
+ <el-table-column prop="employee_name" label="姓名" align="left" width="180px" fixed>
|
|
|
<template slot-scope="scope">
|
|
|
<userImage class="fl" :id="scope.row.employee_id" :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>
|
|
|
<span style="margin-left: 10px; line-height: 50px;">{{ scope.row.employee_name }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column prop="dept" label="部门" align="left" width="200px"></el-table-column>
|
|
|
- <el-table-column prop="point_mark" label="积分" align="left" width="120px">
|
|
|
+ <el-table-column prop="point_mark" label="积分" align="left" width="120px" fixed>
|
|
|
<template slot-scope="scope">
|
|
|
<span :class="scope.row.point < 0 ? 'color_green' : 'color_red'">{{ scope.row.point_mark }} {{ $getTypsName(scope.row.pt_id) }}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
+ <el-table-column prop="dept" label="部门" align="left" width="200px"></el-table-column>
|
|
|
<el-table-column prop="remark" show-overflow-tooltip label="事件内容" align="left" min-width="280px"></el-table-column>
|
|
|
<el-table-column prop="rule_name" show-overflow-tooltip label="规则分类" align="left" min-width="140px"></el-table-column>
|
|
|
<el-table-column prop="item_remark" show-overflow-tooltip label="规则细则" align="left" min-width="140px"></el-table-column>
|
|
|
<el-table-column prop="create_time" label="事件发生时间" align="left" min-width="140px">
|
|
|
- <template slot-scope="scope">
|
|
|
- {{ scope.row.event_time }}
|
|
|
- </template>
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ scope.row.event_time }}
|
|
|
+ </template>
|
|
|
</el-table-column>
|
|
|
<el-table-column prop="source_type" label="来源" align="left" width="140px">
|
|
|
<template slot-scope="scope">
|
|
@@ -133,6 +148,8 @@
|
|
|
<noData></noData>
|
|
|
</template>
|
|
|
</el-table>
|
|
|
+ </el-main>
|
|
|
+ <el-footer height="60">
|
|
|
<center class="pagination">
|
|
|
<el-pagination
|
|
|
background
|
|
@@ -145,10 +162,9 @@
|
|
|
:total="total"
|
|
|
></el-pagination>
|
|
|
</center>
|
|
|
- </div>
|
|
|
-
|
|
|
+ </el-footer>
|
|
|
<el-drawer title="事件详情" :visible.sync="detail_popup" ref="drawer" :with-header="false" :width="'500px'" direction="rtl">
|
|
|
- <div class="drawer_title">事件详情</div>
|
|
|
+ <div class="drawer_title">事件详情 <el-tag v-if="detail_info && detail_info.has_appeal">已申诉</el-tag> </div>
|
|
|
<div class="detail_popup" v-loading="detail_loading" v-if="detail_info !== null">
|
|
|
<el-row style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">
|
|
|
<el-col :span="24">
|
|
@@ -214,11 +230,11 @@
|
|
|
</el-row>
|
|
|
</div>
|
|
|
<div v-show="detail_info.process"><Steps :process="detail_info.process"></Steps></div>
|
|
|
-<!-- <div v-if="!detail_info.is" class="red" style="text-align: center;">
|
|
|
- 考勤积分暂不支持立即删除,请在
|
|
|
- <span class="blue">{{ detail_info.btnDate }}</span>
|
|
|
- 后再操作删除此事件
|
|
|
- </div> -->
|
|
|
+ <!-- <div v-if="!detail_info.is" class="red" style="text-align: center;">
|
|
|
+ 考勤积分暂不支持立即删除,请在
|
|
|
+ <span class="blue">{{ detail_info.btnDate }}</span>
|
|
|
+ 后再操作删除此事件
|
|
|
+ </div> -->
|
|
|
</div>
|
|
|
<div class="drawer-footer flex-box-end flex-v-ce" v-show="noticeRole">
|
|
|
<el-button @click="close_integral_event">取消</el-button>
|
|
@@ -308,14 +324,382 @@
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
|
|
|
- </div>
|
|
|
+ <!-- 发起申诉 -->
|
|
|
+ <AppealCreate
|
|
|
+ :visible.sync="showAppealCreate"
|
|
|
+ :events="appealSelectionEvents"
|
|
|
+ @createFinish="onAppealCreateFinish"
|
|
|
+ />
|
|
|
+
|
|
|
+ <!-- 申诉详情 -->
|
|
|
+ <el-drawer
|
|
|
+ :with-header="false"
|
|
|
+ :visible.sync="showAppealDetail"
|
|
|
+ size="500px"
|
|
|
+ direction="rtl"
|
|
|
+ :show-close="false"
|
|
|
+ :wrapper-closable="true"
|
|
|
+ @close="handleAppealClose"
|
|
|
+ @closed="handleAppealClosed"
|
|
|
+ @opened="handleAppealOpen"
|
|
|
+ >
|
|
|
+ <AppealPopup ref="appealInfo" :id="appeal.id" @update:appeal="onAppealUpdate"/>
|
|
|
+ </el-drawer>
|
|
|
+ </el-container>
|
|
|
+
|
|
|
+<!-- <div>-->
|
|
|
+<!-- <div class="integral_event_box boxMinHeight">-->
|
|
|
+<!-- <el-collapse v-model="activeCollapseName" >-->
|
|
|
+<!-- <el-collapse-item title="积分搜索" name="search">-->
|
|
|
+<!-- <template slot="title">-->
|
|
|
+<!-- <el-tag>当前数据:{{total}}条,最多导出10000条。</el-tag>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- <div class="flex-box-ce flex-d-wrap">-->
|
|
|
+<!-- <div class="sleItem">-->
|
|
|
+<!-- <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">-->
|
|
|
+<!-- <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- <span v-show="newTaskFormType == 1">-->
|
|
|
+<!-- <el-cascader-->
|
|
|
+<!-- class="date-picker-width"-->
|
|
|
+<!-- v-model="rule"-->
|
|
|
+<!-- :options="rule_trees"-->
|
|
|
+<!-- :props="props"-->
|
|
|
+<!-- @change="rule_null"-->
|
|
|
+<!-- ref="rule"-->
|
|
|
+<!-- clearable-->
|
|
|
+<!-- filterable-->
|
|
|
+<!-- change-on-select-->
|
|
|
+<!-- placeholder="全部规则分类"-->
|
|
|
+<!-- ></el-cascader>-->
|
|
|
+<!-- </span>-->
|
|
|
+<!-- <span v-show="newTaskFormType == 2">-->
|
|
|
+<!-- <el-cascader-->
|
|
|
+<!-- @change="ruleautomatic"-->
|
|
|
+<!-- class="date-picker-width"-->
|
|
|
+<!-- v-model="automaticIntegration"-->
|
|
|
+<!-- :options="rule_list"-->
|
|
|
+<!-- :props="props"-->
|
|
|
+<!-- ref="rule1"-->
|
|
|
+<!-- filterable-->
|
|
|
+<!-- change-on-select-->
|
|
|
+<!-- placeholder="全部自动积分"-->
|
|
|
+<!-- clearable-->
|
|
|
+<!-- ></el-cascader>-->
|
|
|
+<!-- </span>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="sleItem">-->
|
|
|
+<!-- <span class="label">积分类型</span>-->
|
|
|
+<!-- <el-select class="date-picker-width" v-model="formData.pt_id" clearable placeholder="全部">-->
|
|
|
+<!-- <el-option v-for="item in $getTyps()" :key="item.name" :label="item.name" :value="item.id"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="sleItem">-->
|
|
|
+<!-- <span class="label">事件来源</span>-->
|
|
|
+<!-- <el-select class="date-picker-width" v-model="formData.source_type" clearable placeholder="全部">-->
|
|
|
+<!-- <el-option v-for="item in source_type" :key="item.name" :label="item.name" :value="item.id"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="sleItem">-->
|
|
|
+<!-- <span class="label">部门</span>-->
|
|
|
+<!-- <el-cascader class="date-picker-width" v-model="dept_name" :options="dept_tree" ref="dept" clearable filterable change-on-select placeholder="全公司"></el-cascader>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="sleItem flex-box-ce">-->
|
|
|
+<!-- <span class="label">时间</span>-->
|
|
|
+<!-- <el-date-picker-->
|
|
|
+<!-- v-model="time_slot"-->
|
|
|
+<!-- type="daterange"-->
|
|
|
+<!-- value-format="yyyy-MM-dd"-->
|
|
|
+<!-- range-separator="至"-->
|
|
|
+<!-- :clearable="process=='production'? false:true"-->
|
|
|
+<!-- start-placeholder="开始日期"-->
|
|
|
+<!-- end-placeholder="结束日期"-->
|
|
|
+<!-- :picker-options="instantPickerOptions"-->
|
|
|
+<!-- ></el-date-picker>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="sleItem flex-box-ce">-->
|
|
|
+<!-- <el-select v-model="select_employee_id" filterable clearable placeholder="请输入或选择人员" style="width: 250px;margin-right: 10px;">-->
|
|
|
+<!-- <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- <el-input v-model="formData.keyword" style="width: 250px;" placeholder="输入关键字查找" maxlength="100" @keyup.enter.native="keyWordSelect" class="persons_name">-->
|
|
|
+<!-- <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>-->
|
|
|
+<!-- </el-input>-->
|
|
|
+<!-- <span class="label" style="margin-left: 10px">奖扣分值</span>-->
|
|
|
+<!-- <el-select v-model="formData.add_subtract" style="width:110px;" filterable placeholder="全部">-->
|
|
|
+<!-- <el-option v-for="item in add_subtract_items" :key="item.id" :label="item.value" :value="item.id"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="flex-box-ce" style="margin-bottom: 20px;">-->
|
|
|
+<!-- <div class="flex-1">-->
|
|
|
+<!-- <el-button type="primary" v-if="!$supremeAuthority('employee')" @click="excelImportShow = true">导入数据</el-button>-->
|
|
|
+<!-- <el-button type="primary" @click="exportExcel">导出当前数据</el-button>-->
|
|
|
+<!-- <el-button class="first-element-btn" v-if="noticeRole" :disabled="selectionID.length == 0" @click="deleteInBatches" type="danger">批量删除</el-button>-->
|
|
|
+<!-- <el-button type="warning" :disabled="!appealEnable || appealSelectionEvents.length === 0" @click="showAppealCreate = true" >发起申诉</el-button>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </el-collapse-item>-->
|
|
|
+<!-- </el-collapse>-->
|
|
|
+<!-- <el-table-->
|
|
|
+<!-- :data="list"-->
|
|
|
+<!-- style="width: 100%"-->
|
|
|
+<!-- v-loading="loading"-->
|
|
|
+<!-- @row-click="open_detail"-->
|
|
|
+<!-- @selection-change="deleteEvents"-->
|
|
|
+<!-- :height="tableMaxHeight"-->
|
|
|
+<!-- >-->
|
|
|
+<!-- <el-table-column v-if="noticeRole" :selectable="isSelectable" type="selection" width="55"></el-table-column>-->
|
|
|
+<!-- <el-table-column prop="employee_name" label="姓名" align="left" width="180px">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- <userImage class="fl" :id="scope.row.employee_id" :user_name="scope.row.employee_name" :img_url="scope.row.employee_img_url" width="50px" height="50px"></userImage>-->
|
|
|
+<!-- <span style="margin-left: 10px; line-height: 50px;">{{ scope.row.employee_name }}</span>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- <el-table-column prop="dept" label="部门" align="left" width="200px"></el-table-column>-->
|
|
|
+<!-- <el-table-column prop="point_mark" label="积分" align="left" width="120px">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- <span :class="scope.row.point < 0 ? 'color_green' : 'color_red'">{{ scope.row.point_mark }} {{ $getTypsName(scope.row.pt_id) }}</span>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- <el-table-column prop="remark" show-overflow-tooltip label="事件内容" align="left" min-width="280px"></el-table-column>-->
|
|
|
+<!-- <el-table-column prop="rule_name" show-overflow-tooltip label="规则分类" align="left" min-width="140px"></el-table-column>-->
|
|
|
+<!-- <el-table-column prop="item_remark" show-overflow-tooltip label="规则细则" align="left" min-width="140px"></el-table-column>-->
|
|
|
+<!-- <el-table-column prop="create_time" label="事件发生时间" align="left" min-width="140px">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- {{ scope.row.event_time }}-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- <el-table-column prop="source_type" label="来源" align="left" width="140px">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 1">积分奖扣 <span v-if="scope.row.recorder_name">({{scope.row.recorder_name}})</span></span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 2">任务</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 3">积分系统分配</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 4">考勤系统分配</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 5">积分申请 <span v-if="scope.row.applyor_name">({{scope.row.applyor_name}})</span></span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 6">绩效任务包</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 8">积分导入</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type == 9">A分转B分</span>-->
|
|
|
+<!-- <span v-show="scope.row.source_type > 9">其他</span>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- <el-table-column prop="create_time" label="录入时间" align="left" width="120px">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- {{ cuttString(scope.row.create_time) }}-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- <template slot="empty">-->
|
|
|
+<!-- <noData></noData>-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table>-->
|
|
|
+<!-- <center class="pagination">-->
|
|
|
+<!-- <el-pagination-->
|
|
|
+<!-- background-->
|
|
|
+<!-- @size-change="handleSizeChange"-->
|
|
|
+<!-- @current-change="handleCurrentChange"-->
|
|
|
+<!-- :current-page="formData.page"-->
|
|
|
+<!-- :page-sizes="[10, 20, 50, 100]"-->
|
|
|
+<!-- layout="total, sizes, prev, pager, next"-->
|
|
|
+<!-- :page-size="pageLimit"-->
|
|
|
+<!-- :total="total"-->
|
|
|
+<!-- ></el-pagination>-->
|
|
|
+<!-- </center>-->
|
|
|
+<!-- </div>-->
|
|
|
+
|
|
|
+<!-- <el-drawer title="事件详情" :visible.sync="detail_popup" ref="drawer" :with-header="false" :width="'500px'" direction="rtl">-->
|
|
|
+<!-- <div class="drawer_title">事件详情</div>-->
|
|
|
+<!-- <div class="detail_popup" v-loading="detail_loading" v-if="detail_info !== null">-->
|
|
|
+<!-- <el-row style="padding-bottom:10px;border-bottom:1px #f8f8f8 solid;">-->
|
|
|
+<!-- <el-col :span="24">-->
|
|
|
+<!-- <userImage :user_name="detail_info.employee_name" :img_url="detail_info.img_url" class="fl" width="50px" height="50px" fontSize="15"></userImage>-->
|
|
|
+<!-- <span style="line-height:50px; margin-left:10px;margin-right:4px;">{{ detail_info.employee_name }}</span>-->
|
|
|
+<!-- <span class="color_red point" v-show="detail_info.point >= 0">+{{ detail_info.point }} {{ $getTypsName(detail_info.pt_id) }}</span>-->
|
|
|
+<!-- <span class="color_green point" v-show="detail_info.point < 0">{{ detail_info.point }} {{ $getTypsName(detail_info.pt_id) }}</span>-->
|
|
|
+<!-- </el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row>-->
|
|
|
+<!-- <el-col :span="4">事件内容</el-col>-->
|
|
|
+<!-- <el-col :span="20" v-if="detail_info.remark">{{ detail_info.remark && (detail_info.remark.customize || detail_info.remark.rule) }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row>-->
|
|
|
+<!-- <el-col :span="4">规则分类</el-col>-->
|
|
|
+<!-- <el-col :span="20">{{ detail_info.rule_list }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row v-show="detail_info.rule_list">-->
|
|
|
+<!-- <el-col :span="4">发生时间</el-col>-->
|
|
|
+<!-- <el-col :span="20">{{ detail_info.date }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row v-show="detail_info.source_type">-->
|
|
|
+<!-- <el-col :span="4">来源类型</el-col>-->
|
|
|
+<!-- <el-col :span="20">{{ returnStr(detail_info.source_type) }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row v-show="detail_info.recorder_name">-->
|
|
|
+<!-- <el-col :span="4">记录人</el-col>-->
|
|
|
+<!-- <el-col :span="20">{{ detail_info.recorder_name }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <el-row v-show="detail_info.files !== null && detail_info.files.length > 0">-->
|
|
|
+<!-- <el-col :span="4">图片</el-col>-->
|
|
|
+<!-- <el-col :span="20">-->
|
|
|
+<!-- <el-image-->
|
|
|
+<!-- v-for="(item, index) in detail_info.files"-->
|
|
|
+<!-- :key="index"-->
|
|
|
+<!-- style="width: 100px; height: 100px;margin:1px"-->
|
|
|
+<!-- :src="item"-->
|
|
|
+<!-- :preview-src-list="detail_info.files"-->
|
|
|
+<!-- ></el-image>-->
|
|
|
+<!-- </el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+
|
|
|
+<!-- <div v-show="detail_info.rule_item_id">-->
|
|
|
+<!-- <p class="row_title">规则依据</p>-->
|
|
|
+<!-- <el-row>-->
|
|
|
+<!-- <el-col :span="4">规则分类</el-col>-->
|
|
|
+<!-- <el-col :span="19">{{ detail_info.rule_list }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+<!-- <el-row v-show="detail_info.rule_item_id">-->
|
|
|
+<!-- <el-col :span="4">积分规则</el-col>-->
|
|
|
+<!-- <el-col :span="19">{{ detail_info.rule_item.remark }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+<!-- <el-row v-show="detail_info.rule_item_id">-->
|
|
|
+<!-- <el-col :span="4">规则积分</el-col>-->
|
|
|
+<!-- <el-col :span="19" v-show="detail_info.rule_item.min_point == detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }} {{ $getTypsName(detail_info.pt_id) }}</el-col>-->
|
|
|
+<!-- <el-col :span="19" v-show="detail_info.rule_item.min_point != detail_info.rule_item.max_point">{{ detail_info.rule_item.min_point }} ~ {{ detail_info.rule_item.max_point }} {{ $getTypsName(detail_info.pt_id) }}</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div v-show="detail_info.process"><Steps :process="detail_info.process"></Steps></div>-->
|
|
|
+<!--<!– <div v-if="!detail_info.is" class="red" style="text-align: center;">-->
|
|
|
+<!-- 考勤积分暂不支持立即删除,请在-->
|
|
|
+<!-- <span class="blue">{{ detail_info.btnDate }}</span>-->
|
|
|
+<!-- 后再操作删除此事件-->
|
|
|
+<!-- </div> –>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div class="drawer-footer flex-box-end flex-v-ce" v-show="noticeRole">-->
|
|
|
+<!-- <el-button @click="close_integral_event">取消</el-button>-->
|
|
|
+<!-- <el-button type="danger" @click="del_integral_event(detail_info)">删除</el-button>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </el-drawer>-->
|
|
|
+
|
|
|
+<!-- <!– 导入数据 –>-->
|
|
|
+<!-- <el-dialog title="导入积分事件数据" width="600px" :visible.sync="excelImportShow" :close-on-click-modal="false" :before-close="close_import">-->
|
|
|
+<!-- <div style="padding:0 50px;">-->
|
|
|
+<!-- <div class="align-center" style="margin-bottom:20px;">-->
|
|
|
+<!-- <p>-->
|
|
|
+<!-- 1、下载积分事件模版,批量录入积分事件-->
|
|
|
+<!-- <el-button type="primary" @click="downloadTemplate" plain>下载模板</el-button>-->
|
|
|
+<!-- </p>-->
|
|
|
+<!-- <el-upload-->
|
|
|
+<!-- :limit="1"-->
|
|
|
+<!-- :headers="ATOKEN"-->
|
|
|
+<!-- ref="upload1"-->
|
|
|
+<!-- :action="integralUpload"-->
|
|
|
+<!-- :data="{ type: 'integral' }"-->
|
|
|
+<!-- :on-success="handlePictureCardPreview"-->
|
|
|
+<!-- :before-upload="beforeFilesUpload"-->
|
|
|
+<!-- >-->
|
|
|
+<!-- <p>-->
|
|
|
+<!-- 2、上传积分事件数据Excel表-->
|
|
|
+<!-- <el-button type="primary" plain>选择文件</el-button>-->
|
|
|
+<!-- </p>-->
|
|
|
+<!-- </el-upload>-->
|
|
|
+<!-- <p>3、选择文件后点击下方【上传】按钮</p>-->
|
|
|
+<!-- </div>-->
|
|
|
+
|
|
|
+<!-- <div class="align-center" style="margin-bottom:20px; float:left; margin-left:10px;"></div>-->
|
|
|
+<!-- <div class="align-center" style="margin-bottom:20px; float:left; margin-left:10px;"><!– <el-button type="primary" @click="downloadSheet">Excel导出</el-button> –></div>-->
|
|
|
+<!-- <div style="clear:both;"></div>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <div slot="footer" class="dialog-footer">-->
|
|
|
+<!-- <el-button @click="close_import">取 消</el-button>-->
|
|
|
+<!-- <el-button type="primary" @click="uploadFile(1)" :loading="update_btn" plain>上传</el-button>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- </el-dialog>-->
|
|
|
+
|
|
|
+<!-- <el-dialog :close-on-click-modal="false" title="导入结果" :visible.sync="importErrorInfoShow" width="30%">-->
|
|
|
+<!-- <div>-->
|
|
|
+<!-- <el-table :data="error_list" border stripe>-->
|
|
|
+<!-- <el-table-column prop="name" label="备注信息">-->
|
|
|
+<!-- <template slot-scope="scope">-->
|
|
|
+<!-- {{ scope.row }}-->
|
|
|
+<!-- </template>-->
|
|
|
+<!-- </el-table-column>-->
|
|
|
+<!-- </el-table>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <span slot="footer"><el-button type="primary" @click="importErrorInfoShow = false">确 定</el-button></span>-->
|
|
|
+<!-- </el-dialog>-->
|
|
|
+
|
|
|
+<!-- <el-dialog title="轮播排名" :visible.sync="swiperShow" width="500px">-->
|
|
|
+<!-- <div>-->
|
|
|
+<!-- <el-form :inline="true">-->
|
|
|
+<!-- <div style="color:rgb(122 202 126);font-size: 13px;padding:5px 0 20px 0">设置后,相关排名信息可在各类智能终端屏幕上的网页浏览器滚屏展示</div>-->
|
|
|
+<!-- <el-form-item label="展示标题">-->
|
|
|
+<!-- <el-input-->
|
|
|
+<!-- type="textarea"-->
|
|
|
+<!-- :autosize="{ minRows: 2, maxRows: 6 }"-->
|
|
|
+<!-- v-model="titleVals"-->
|
|
|
+<!-- placeholder="请输入标题"-->
|
|
|
+<!-- maxlength="20"-->
|
|
|
+<!-- show-word-limit-->
|
|
|
+<!-- style="width: 341px"-->
|
|
|
+<!-- ></el-input>-->
|
|
|
+<!-- </el-form-item>-->
|
|
|
+<!-- </el-form>-->
|
|
|
+<!-- <el-row>-->
|
|
|
+<!-- <el-col :span="4" style="line-height: 36px;"> 显示最新</el-col>-->
|
|
|
+<!-- <el-col :span="6">-->
|
|
|
+<!-- <el-select v-model="page_size" placeholder="请选择">-->
|
|
|
+<!-- <el-option v-for="item in swiperPageList" :key="item.value" :label="item.value" :value="item.value"></el-option>-->
|
|
|
+<!-- </el-select>-->
|
|
|
+<!-- </el-col>-->
|
|
|
+<!-- <el-col :span="6" style="line-height: 36px;">条积分事件来轮播</el-col>-->
|
|
|
+<!-- </el-row>-->
|
|
|
+<!-- </div>-->
|
|
|
+<!-- <span slot="footer">-->
|
|
|
+<!-- <el-button @click="swiperShow = false">取 消</el-button>-->
|
|
|
+<!-- <router-link :to="{ path: '/deptRankSwiper?' + '&page=1&page_size=' + this.page_size + '&types=1&companyName='+titleVals }" target="_blank">-->
|
|
|
+<!-- <el-button type="primary">开始轮播</el-button>-->
|
|
|
+<!-- </router-link>-->
|
|
|
+<!-- </span>-->
|
|
|
+<!-- </el-dialog>-->
|
|
|
+
|
|
|
+<!--<!– 发起申诉 –>-->
|
|
|
+<!-- <AppealCreate-->
|
|
|
+<!-- :visible.sync="showAppealCreate"-->
|
|
|
+<!-- :events="appealSelectionEvents"-->
|
|
|
+<!-- @createFinish="onAppealCreateFinish"-->
|
|
|
+<!-- />-->
|
|
|
+
|
|
|
+<!-- <!– 申诉详情 –>-->
|
|
|
+<!-- <el-drawer-->
|
|
|
+<!-- :with-header="false"-->
|
|
|
+<!-- :visible.sync="showAppealDetail"-->
|
|
|
+<!-- size="500px"-->
|
|
|
+<!-- direction="rtl"-->
|
|
|
+<!-- :show-close="false"-->
|
|
|
+<!-- :wrapper-closable="true"-->
|
|
|
+<!-- @close="handleAppealClose"-->
|
|
|
+<!-- @closed="handleAppealClosed"-->
|
|
|
+<!-- @opened="handleAppealOpen"-->
|
|
|
+<!-- >-->
|
|
|
+<!-- <AppealPopup ref="appealInfo" :id="appeal.id" @update:appeal="onAppealUpdate"/>-->
|
|
|
+<!-- </el-drawer>-->
|
|
|
+<!-- </div>-->
|
|
|
</template>
|
|
|
<script>
|
|
|
import moment from 'moment';
|
|
|
import Steps from '@/components/Steps.vue';
|
|
|
+import AppealCreate from "../../../components/AppealCreate.vue";
|
|
|
+import AppealPopup from "../common/AppealPopup.vue";
|
|
|
+import Template from "../../../examine/components/Template.vue";
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
|
+ userInfo: this.$userInfo(),
|
|
|
+ pts:this.$getTyps(),
|
|
|
instantPickerOptions: {
|
|
|
shortcuts: [
|
|
|
{
|
|
@@ -376,6 +760,7 @@ export default {
|
|
|
rule_list: [], //自动积分分类列表
|
|
|
noticeRole:!this.$supremeAuthority('dept_manager') && !this.$supremeAuthority('employee'),
|
|
|
select_employee_id: '',
|
|
|
+ select_recorder_id: '',
|
|
|
employee_map: this.$getEmployeeMap(),
|
|
|
integralUpload:this.$serverdomain + '/api/pro/upload/excel',
|
|
|
titleVals: '',
|
|
@@ -411,10 +796,9 @@ export default {
|
|
|
update_btn: false,
|
|
|
error_list: [],
|
|
|
importErrorInfoShow: false,
|
|
|
-
|
|
|
deriveNum: 0,
|
|
|
-
|
|
|
selectionID: [] ,//删除的事件ID
|
|
|
+ appealSelectionEvents:[], //批量发起申诉的事件ID
|
|
|
source_type: [
|
|
|
{id: 0,name: '全部'},
|
|
|
{id: 1,name: '积分奖扣'},
|
|
@@ -439,10 +823,16 @@ export default {
|
|
|
value: '扣分',
|
|
|
id: 2
|
|
|
},
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ showAppealCreate:false,
|
|
|
+ appeal:{id:0},
|
|
|
+ showAppealDetail:false,
|
|
|
+ appealEnable:false,
|
|
|
+ activeCollapseName:['search'],
|
|
|
+ // tableMaxHeight:680
|
|
|
};
|
|
|
},
|
|
|
- components: {Steps},
|
|
|
+ components: {Template, AppealPopup, AppealCreate, Steps},
|
|
|
created() {
|
|
|
this.process=process.env.NODE_ENV
|
|
|
this.deriveRestrict()
|
|
@@ -454,6 +844,7 @@ export default {
|
|
|
this.get_rule_trees();
|
|
|
this.get_integral_list(this.formData);
|
|
|
this.voluntarilyRule_trees(); //自动积分列表
|
|
|
+ this.getConfig()
|
|
|
},
|
|
|
watch: {
|
|
|
newTaskFormType(val) {
|
|
@@ -499,6 +890,11 @@ export default {
|
|
|
this.formData.employee_ids = val;
|
|
|
this.get_integral_list(this.formData);
|
|
|
},
|
|
|
+ select_recorder_id(val) {
|
|
|
+ this.formData.page = 1
|
|
|
+ this.formData.recorder_id= val
|
|
|
+ this.get_integral_list(this.formData)
|
|
|
+ }
|
|
|
},
|
|
|
methods: {
|
|
|
returnStr(id){
|
|
@@ -517,7 +913,13 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
isSelectable(row, index) {
|
|
|
- return row.is;
|
|
|
+ if (this.noticeRole) {
|
|
|
+ /*指点管理员*/
|
|
|
+ return row.is;
|
|
|
+ }else {
|
|
|
+ /*非指定管理员*/
|
|
|
+ return row.employee_id === this.userInfo.id
|
|
|
+ }
|
|
|
},
|
|
|
ruleautomatic() {
|
|
|
let list = this.automaticIntegration;
|
|
@@ -536,10 +938,21 @@ export default {
|
|
|
//删除事件
|
|
|
deleteEvents(selection) {
|
|
|
let listId = [];
|
|
|
+ let appealEvents = [];
|
|
|
selection.forEach(item => {
|
|
|
listId.push(item.id);
|
|
|
+ if (item.employee_id === this.userInfo.id) {
|
|
|
+ let pt = this.pts.find(p => p.id === item.pt_id)
|
|
|
+ pt = pt ? pt.name : ''
|
|
|
+ appealEvents.push({
|
|
|
+ id:item.id,
|
|
|
+ remark:`${item.point} ${pt} ${item.event_time} ${item.remark}`,
|
|
|
+ appeal_remark: ''
|
|
|
+ })
|
|
|
+ }
|
|
|
});
|
|
|
this.selectionID = listId;
|
|
|
+ this.appealSelectionEvents = appealEvents
|
|
|
},
|
|
|
//批量删除
|
|
|
deleteInBatches() {
|
|
@@ -645,6 +1058,7 @@ export default {
|
|
|
(this.formData.rule_id ? '&rule_ids=' + this.formData.rule_id : '') +
|
|
|
(this.formData.pt_id ? '&pt_id=' + this.formData.pt_id : '') +
|
|
|
(this.formData.employee_ids ? '&employee_ids=' + this.formData.employee_ids : '') +
|
|
|
+ (this.formData.recorder_id ? '&recorder_id=' + this.formData.recorder_id : '') +
|
|
|
(this.formData.dept_id ? '&dept_ids=' + this.formData.dept_id : '') +
|
|
|
(this.formData.start_day ? '&start_day=' + this.formData.start_day : '') +
|
|
|
(this.formData.end_day ? '&end_day=' + this.formData.end_day : '') +
|
|
@@ -803,6 +1217,51 @@ export default {
|
|
|
},
|
|
|
close_integral_event() {
|
|
|
this.detail_popup = false;
|
|
|
+ },
|
|
|
+ onAppealCreateFinish(appeal){
|
|
|
+ this.appeal = {id:0}
|
|
|
+ this.$confirm('申诉已发起,积分申诉模块可以查看详细记录','发起申诉',{
|
|
|
+ confirmButtonText:'直接查看',
|
|
|
+ cancelButtonText:'知道了',
|
|
|
+ type:'success'
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ this.appeal = appeal
|
|
|
+ this.showAppealDetail = true
|
|
|
+ })
|
|
|
+
|
|
|
+ this.get_integral_list(this.formData)
|
|
|
+ },
|
|
|
+ onAppealUpdate(){
|
|
|
+ this.get_integral_list(this.formData)
|
|
|
+ },
|
|
|
+ handleAppealClose(){
|
|
|
+ this.$refs['appealInfo'].closeHandler()
|
|
|
+ },
|
|
|
+ handleAppealClosed(){
|
|
|
+ this.$refs['appealInfo'].closedHandler()
|
|
|
+ },
|
|
|
+ handleAppealOpen(){
|
|
|
+ this.$refs['appealInfo'].openedHandler()
|
|
|
+ },
|
|
|
+ getConfig(){
|
|
|
+ let self = this
|
|
|
+ self.$axiosUser('get','/api/pro/integral/site/config')
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.code === 1){
|
|
|
+ self.appealEnable = res.data.data.appeal === 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed:{
|
|
|
+ tableMaxHeight(){
|
|
|
+ // return this.activeCollapseName.includes('search') ? 530 : 710
|
|
|
+ return this.activeCollapseName.includes('search') ? '30%' : '80%'
|
|
|
+ },
|
|
|
+ headerMaxHeight(){
|
|
|
+ // return this.activeCollapseName.includes('search') ? '300' : '50'
|
|
|
+ return this.activeCollapseName.includes('search') ? '27%' : '5%'
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -915,9 +1374,18 @@ span.point {
|
|
|
/deep/ .el-dialog__body {
|
|
|
padding: 0px 20px 30px;
|
|
|
}
|
|
|
-</style>
|
|
|
-<style lang="scss">
|
|
|
- .el-tooltip__popper{
|
|
|
- max-width: 800px;
|
|
|
- }
|
|
|
+.el-tooltip__popper{
|
|
|
+ max-width: 800px;
|
|
|
+}
|
|
|
+
|
|
|
+.el-header{
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+.el-main{
|
|
|
+ padding: 0;
|
|
|
+}
|
|
|
+.el-footer{
|
|
|
+ padding: 0;
|
|
|
+ background-color: white;
|
|
|
+}
|
|
|
</style>
|