|
@@ -11,16 +11,16 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="项目" prop="project">
|
|
|
|
|
- <el-select v-model="queryParams.project" placeholder="请选择项目" clearable size="small" >
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in projectOptions"
|
|
|
|
|
- :key="item.dictValue"
|
|
|
|
|
- :label="item.dictLabel"
|
|
|
|
|
- :value="item.dictValue"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
|
|
+<!-- <el-form-item label="项目" prop="project">-->
|
|
|
|
|
+<!-- <el-select v-model="queryParams.project" placeholder="请选择项目" clearable size="small" >-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="item in projectOptions"-->
|
|
|
|
|
+<!-- :key="item.dictValue"-->
|
|
|
|
|
+<!-- :label="item.dictLabel"-->
|
|
|
|
|
+<!-- :value="item.dictValue"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
<el-form-item label="会员昵称" prop="nickName" v-if="queryParams.sendType == 1">
|
|
<el-form-item label="会员昵称" prop="nickName" v-if="queryParams.sendType == 1">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="queryParams.nickName"
|
|
v-model="queryParams.nickName"
|
|
@@ -68,11 +68,14 @@
|
|
|
/>
|
|
/>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="所属销售" prop="companyUserId">
|
|
|
|
|
|
|
+ <el-form-item v-if="companyName === undefined || companyName === 1" label="所属销售" prop="companyUserId">
|
|
|
<el-select v-model="queryParams.companyUserId" clearable filterable remote
|
|
<el-select v-model="queryParams.companyUserId" clearable filterable remote
|
|
|
placeholder="请输入关键词" :remote-method="loadCompanyUserOptions"
|
|
placeholder="请输入关键词" :remote-method="loadCompanyUserOptions"
|
|
|
v-select-load-more="loadMoreCompanyUserOptions"
|
|
v-select-load-more="loadMoreCompanyUserOptions"
|
|
|
- :loading="companyUserOptionsLoading">
|
|
|
|
|
|
|
+ @change="handleCompanyUserChange"
|
|
|
|
|
+ :loading="companyUserOptionsLoading"
|
|
|
|
|
+ @visible-change="handleCompanyUserDropdownVisible"
|
|
|
|
|
+ >
|
|
|
<el-option
|
|
<el-option
|
|
|
v-for="item in companyUserOptions"
|
|
v-for="item in companyUserOptions"
|
|
|
:key="item.dictValue"
|
|
:key="item.dictValue"
|
|
@@ -81,6 +84,35 @@
|
|
|
</el-option>
|
|
</el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
+ <el-form-item v-if="companyName==2" label="所属销售" prop="companyUserId">
|
|
|
|
|
+ <el-select v-model="queryParams.companyUserId" clearable filterable remote
|
|
|
|
|
+ placeholder="请输入关键词"
|
|
|
|
|
+ v-select-load-more="loadMoreCompanyUserOptions"
|
|
|
|
|
+ @change="handleCompanyUserChange"
|
|
|
|
|
+ @visible-change="handleQwUserDropdownVisible"
|
|
|
|
|
+ :loading="companyUserOptionsLoading">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in companyUserOptionsByAll"
|
|
|
|
|
+ :key="item.dictValue"
|
|
|
|
|
+ :label="item.dictLabel"
|
|
|
|
|
+ :value="item.dictValue">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ <el-form-item label="所属企微" prop="qwUserName" v-if="queryParams.companyUserId">
|
|
|
|
|
+ <el-select v-model="queryParams.qwUserName"
|
|
|
|
|
+ clearable filterable
|
|
|
|
|
+ placeholder="请输入关键词"
|
|
|
|
|
+ @visible-change="handleQwUserDropdownVisible"
|
|
|
|
|
+ :loading="qwUserOptionsLoading">
|
|
|
|
|
+ <el-option
|
|
|
|
|
+ v-for="item in qwUserOptions"
|
|
|
|
|
+ :key="item.qwUserId"
|
|
|
|
|
+ :label="item.qwUserName"
|
|
|
|
|
+ :value="item.qwUserName">
|
|
|
|
|
+ </el-option>
|
|
|
|
|
+ </el-select>
|
|
|
|
|
+ </el-form-item>
|
|
|
<!-- sop名称 -->
|
|
<!-- sop名称 -->
|
|
|
<el-form-item label="SOP名称" prop="sopId" v-if="queryParams.sendType == 2">
|
|
<el-form-item label="SOP名称" prop="sopId" v-if="queryParams.sendType == 2">
|
|
|
<el-autocomplete
|
|
<el-autocomplete
|
|
@@ -103,7 +135,7 @@
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<!-- 营期时间 -->
|
|
<!-- 营期时间 -->
|
|
|
- <el-form-item label="营期时间" prop="scheduleTime">
|
|
|
|
|
|
|
+ <!-- <el-form-item label="营期时间" prop="scheduleTime">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="scheduleTimeText"
|
|
v-model="scheduleTimeText"
|
|
|
placeholder="请选择营期时间"
|
|
placeholder="请选择营期时间"
|
|
@@ -117,9 +149,21 @@
|
|
|
@change="handleScheduleTimeChange"
|
|
@change="handleScheduleTimeChange"
|
|
|
:key="scheduleCalendarKey"
|
|
:key="scheduleCalendarKey"
|
|
|
/>
|
|
/>
|
|
|
|
|
+ </el-form-item>-->
|
|
|
|
|
+ <el-form-item label="营期时间" prop="scheduleTime">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="scheduleTimeText"
|
|
|
|
|
+ type="daterange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ style="width: 240px"
|
|
|
|
|
+ @change="handleScheduleTimeChange"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- 创建时间 -->
|
|
<!-- 创建时间 -->
|
|
|
- <el-form-item label="创建时间" prop="createTime">
|
|
|
|
|
|
|
+ <!-- <el-form-item label="创建时间" prop="createTime">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="createTimeText"
|
|
v-model="createTimeText"
|
|
|
placeholder="请选择创建时间"
|
|
placeholder="请选择创建时间"
|
|
@@ -133,9 +177,22 @@
|
|
|
@change="createChange"
|
|
@change="createChange"
|
|
|
:key="createCalendarKey"
|
|
:key="createCalendarKey"
|
|
|
/>
|
|
/>
|
|
|
|
|
+ </el-form-item> -->
|
|
|
|
|
+
|
|
|
|
|
+ <el-form-item label="创建时间" prop="createTime">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="createTimeText"
|
|
|
|
|
+ type="datetimerange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
+ @change="createChange"
|
|
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- 最新更新时间 -->
|
|
<!-- 最新更新时间 -->
|
|
|
- <el-form-item label="最新更新时间" prop="updateTime">
|
|
|
|
|
|
|
+ <!-- <el-form-item label="最新更新时间" prop="updateTime">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="updateTimeText"
|
|
v-model="updateTimeText"
|
|
|
placeholder="请选择更新时间"
|
|
placeholder="请选择更新时间"
|
|
@@ -149,9 +206,21 @@
|
|
|
@change="updateChange"
|
|
@change="updateChange"
|
|
|
:key="updateCalendarKey"
|
|
:key="updateCalendarKey"
|
|
|
/>
|
|
/>
|
|
|
|
|
+ </el-form-item> -->
|
|
|
|
|
+ <el-form-item label="最新更新时间" prop="updateTime">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="updateTimeText"
|
|
|
|
|
+ type="daterange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ style="width: 240px"
|
|
|
|
|
+ @change="updateChange"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<!-- 进线时间 -->
|
|
<!-- 进线时间 -->
|
|
|
- <el-form-item label="进线时间" prop="qecCreateTime">
|
|
|
|
|
|
|
+ <!-- <el-form-item label="进线时间" prop="qecCreateTime">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-model="qecCreateTimeText"
|
|
v-model="qecCreateTimeText"
|
|
|
placeholder="请选择进线时间"
|
|
placeholder="请选择进线时间"
|
|
@@ -165,22 +234,52 @@
|
|
|
@change="qecCreateTimeChange"
|
|
@change="qecCreateTimeChange"
|
|
|
:key="qecCalendarKey"
|
|
:key="qecCalendarKey"
|
|
|
/>
|
|
/>
|
|
|
|
|
+ </el-form-item> -->
|
|
|
|
|
+ <el-form-item label="进线时间" prop="qecCreateTime">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="qecCreateTimeText"
|
|
|
|
|
+ type="daterange"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
|
+ value-format="yyyy-MM-dd"
|
|
|
|
|
+ style="width: 240px"
|
|
|
|
|
+ @change="qecCreateTimeChange"
|
|
|
|
|
+ />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
- <el-form-item label="是否为会员" prop="isVip">
|
|
|
|
|
- <el-select
|
|
|
|
|
- filterable
|
|
|
|
|
- v-model="queryParams.isVip"
|
|
|
|
|
- placeholder="请选择是否为会员"
|
|
|
|
|
- clearable size="small">
|
|
|
|
|
- <el-option
|
|
|
|
|
- v-for="dict in isVipList"
|
|
|
|
|
- :key="dict.dictValue"
|
|
|
|
|
- :label="dict.dictLabel"
|
|
|
|
|
- :value="dict.dictValue"
|
|
|
|
|
- />
|
|
|
|
|
- </el-select>
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <el-form-item label="营期课程时间" prop="periodTime" v-if="queryParams.sendType==1">
|
|
|
|
|
+ <el-date-picker
|
|
|
|
|
+ v-model="periodTimeText"
|
|
|
|
|
+ type="datetimerange"
|
|
|
|
|
+ align="right"
|
|
|
|
|
+ unlink-panels
|
|
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
+ range-separator="至"
|
|
|
|
|
+ start-placeholder="开始日期"
|
|
|
|
|
+ end-placeholder="结束日期"
|
|
|
|
|
+ :picker-options="pickerOptions"
|
|
|
|
|
+ @change="qecPeriodTimeChange"
|
|
|
|
|
+ :default-time="['00:00:00', '23:59:59']">
|
|
|
|
|
+ </el-date-picker>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
+<!-- <el-form-item label="是否注册" prop="isVip">-->
|
|
|
|
|
+<!-- <el-select-->
|
|
|
|
|
+<!-- filterable-->
|
|
|
|
|
+<!-- v-model="queryParams.isVip"-->
|
|
|
|
|
+<!-- placeholder="请选择是否注册"-->
|
|
|
|
|
+<!-- clearable size="small">-->
|
|
|
|
|
+<!-- <el-option-->
|
|
|
|
|
+<!-- v-for="dict in isVipList"-->
|
|
|
|
|
+<!-- :key="dict.dictValue"-->
|
|
|
|
|
+<!-- :label="dict.dictLabel"-->
|
|
|
|
|
+<!-- :value="dict.dictValue"-->
|
|
|
|
|
+<!-- />-->
|
|
|
|
|
+<!-- </el-select>-->
|
|
|
|
|
+<!-- </el-form-item>-->
|
|
|
|
|
+
|
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
|
@@ -198,7 +297,7 @@
|
|
|
@click="handleExport"
|
|
@click="handleExport"
|
|
|
v-hasPermi="['course:courseWatchLog:export']"
|
|
v-hasPermi="['course:courseWatchLog:export']"
|
|
|
>导出</el-button>
|
|
>导出</el-button>
|
|
|
- <el-col :span="1.5">
|
|
|
|
|
|
|
+ <el-col :span="1.5" v-if="queryParams.sendType == 2">
|
|
|
<el-button
|
|
<el-button
|
|
|
type="primary"
|
|
type="primary"
|
|
|
plain
|
|
plain
|
|
@@ -207,7 +306,7 @@
|
|
|
v-hasPermi="['qw:externalContact:addTag']"
|
|
v-hasPermi="['qw:externalContact:addTag']"
|
|
|
>批量添加标签</el-button>
|
|
>批量添加标签</el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
|
|
|
|
+ <el-col :span="1.5" v-if="queryParams.sendType == 2" >
|
|
|
<el-button
|
|
<el-button
|
|
|
type="primary"
|
|
type="primary"
|
|
|
plain
|
|
plain
|
|
@@ -255,6 +354,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
|
|
+ <el-table-column label="营期名称" align="center" prop="periodIdName" v-if="this.queryParams.sendType==1" />
|
|
|
<el-table-column label="课程名称" align="center" prop="courseName" />
|
|
<el-table-column label="课程名称" align="center" prop="courseName" />
|
|
|
<el-table-column label="小节名称" align="center" prop="videoName" />
|
|
<el-table-column label="小节名称" align="center" prop="videoName" />
|
|
|
<el-table-column label="记录类型" align="center" prop="logType">
|
|
<el-table-column label="记录类型" align="center" prop="logType">
|
|
@@ -272,6 +372,16 @@
|
|
|
<el-table-column label="完课时间" align="center" prop="finishTime" />
|
|
<el-table-column label="完课时间" align="center" prop="finishTime" />
|
|
|
<el-table-column label="营期时间" align="center" prop="campPeriodTime" />
|
|
<el-table-column label="营期时间" align="center" prop="campPeriodTime" />
|
|
|
<el-table-column label="进线时间" align="center" prop="qecCreateTime" />
|
|
<el-table-column label="进线时间" align="center" prop="qecCreateTime" />
|
|
|
|
|
+ <el-table-column label="是否领奖" align="center" prop="rewardType" >
|
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
|
+ <el-tag
|
|
|
|
|
+ :type="scope.row.rewardType ? 'success' : 'info'"
|
|
|
|
|
+ effect="plain"
|
|
|
|
|
+ >
|
|
|
|
|
+ {{ scope.row.rewardType ? '已领取' : '未领取' }}
|
|
|
|
|
+ </el-tag>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </el-table-column>
|
|
|
<el-table-column
|
|
<el-table-column
|
|
|
fixed="right"
|
|
fixed="right"
|
|
|
label="操作"
|
|
label="操作"
|
|
@@ -502,27 +612,36 @@ import Vue from 'vue'
|
|
|
import Calendar from 'vue-mobile-calendar'
|
|
import Calendar from 'vue-mobile-calendar'
|
|
|
import {infoSop} from "@/api/qw/sop";
|
|
import {infoSop} from "@/api/qw/sop";
|
|
|
import {getCompanyUserListLikeName} from "../../../api/company/companyUser";
|
|
import {getCompanyUserListLikeName} from "../../../api/company/companyUser";
|
|
|
|
|
+import {getQwList} from "@/api/qw/qwUser";
|
|
|
Vue.use(Calendar)
|
|
Vue.use(Calendar)
|
|
|
|
|
|
|
|
export default {
|
|
export default {
|
|
|
name: "CourseWatchLog",
|
|
name: "CourseWatchLog",
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
|
|
+ companyUserFirstLoad: true, // 首次加载标志
|
|
|
|
|
+ qwUserFirstLoad: true, // 首次加载标志
|
|
|
|
|
+ companyUserDropdownVisible: false, // 下拉框显示状态
|
|
|
|
|
+ qwUserDropdownVisible: false, // 下拉框显示状态
|
|
|
|
|
+ companyName:process.env.VUE_APP_COURSE_COMPANY_NAME,
|
|
|
// 日历 key 控制刷新
|
|
// 日历 key 控制刷新
|
|
|
scheduleCalendarKey: 0,
|
|
scheduleCalendarKey: 0,
|
|
|
createCalendarKey: 0,
|
|
createCalendarKey: 0,
|
|
|
updateCalendarKey: 0,
|
|
updateCalendarKey: 0,
|
|
|
qecCalendarKey: 0,
|
|
qecCalendarKey: 0,
|
|
|
|
|
+ periodTimeKey: 0,
|
|
|
|
|
|
|
|
createTimeText: '',
|
|
createTimeText: '',
|
|
|
scheduleTimeText: '', // 新增
|
|
scheduleTimeText: '', // 新增
|
|
|
updateTimeText: '', // 新增
|
|
updateTimeText: '', // 新增
|
|
|
qecCreateTimeText: '', // 新增
|
|
qecCreateTimeText: '', // 新增
|
|
|
|
|
+ periodTimeText: '', // 营期课程时间
|
|
|
|
|
|
|
|
scheduleTime: [], // 改为数组
|
|
scheduleTime: [], // 改为数组
|
|
|
createTime: [], // 改为数组
|
|
createTime: [], // 改为数组
|
|
|
updateTime: [], // 改为数组
|
|
updateTime: [], // 改为数组
|
|
|
qecCreateTime: [], // 改为数组
|
|
qecCreateTime: [], // 改为数组
|
|
|
|
|
+ periodTime: [], // 改为数组
|
|
|
|
|
|
|
|
// 控制日历显隐
|
|
// 控制日历显隐
|
|
|
showScheduleCalendar: false,
|
|
showScheduleCalendar: false,
|
|
@@ -537,9 +656,9 @@ export default {
|
|
|
activeName:"2",
|
|
activeName:"2",
|
|
|
pickerOptions: {
|
|
pickerOptions: {
|
|
|
disabledDate(time) {
|
|
disabledDate(time) {
|
|
|
- // 获取6天前的日期(加上今天就是7天)
|
|
|
|
|
|
|
+ // 获取13天前的日期(加上今天就是14天)
|
|
|
const sixDaysAgo = new Date();
|
|
const sixDaysAgo = new Date();
|
|
|
- sixDaysAgo.setDate(sixDaysAgo.getDate() - 6);
|
|
|
|
|
|
|
+ sixDaysAgo.setDate(sixDaysAgo.getDate() - 13);
|
|
|
sixDaysAgo.setHours(0, 0, 0, 0);
|
|
sixDaysAgo.setHours(0, 0, 0, 0);
|
|
|
|
|
|
|
|
// 获取明天的日期(不包括今天)
|
|
// 获取明天的日期(不包括今天)
|
|
@@ -647,6 +766,7 @@ export default {
|
|
|
externalUserName:null,
|
|
externalUserName:null,
|
|
|
duration: null,
|
|
duration: null,
|
|
|
qwUserId: null,
|
|
qwUserId: null,
|
|
|
|
|
+ qwUserName: null,
|
|
|
companyUserId: null,
|
|
companyUserId: null,
|
|
|
companyId: null,
|
|
companyId: null,
|
|
|
courseId: null,
|
|
courseId: null,
|
|
@@ -656,6 +776,8 @@ export default {
|
|
|
upETime:null,
|
|
upETime:null,
|
|
|
qecSTime:null,
|
|
qecSTime:null,
|
|
|
qecETime:null,
|
|
qecETime:null,
|
|
|
|
|
+ periodSTime:null,
|
|
|
|
|
+ periodETime:null,
|
|
|
scheduleStartTime: null,
|
|
scheduleStartTime: null,
|
|
|
scheduleEndTime: null,
|
|
scheduleEndTime: null,
|
|
|
sendType:process.env.VUE_APP_COURSE_DEFAULT,
|
|
sendType:process.env.VUE_APP_COURSE_DEFAULT,
|
|
@@ -675,7 +797,18 @@ export default {
|
|
|
pageSize: 10
|
|
pageSize: 10
|
|
|
},
|
|
},
|
|
|
companyUserOptions: [],
|
|
companyUserOptions: [],
|
|
|
|
|
+ companyUserOptionsByAll: [],
|
|
|
companyUserOptionsLoading: false,
|
|
companyUserOptionsLoading: false,
|
|
|
|
|
+ // 企微信息
|
|
|
|
|
+ qwUserOptions: [],
|
|
|
|
|
+ // 员工选项列表
|
|
|
|
|
+ qwUserOptionsParams: {
|
|
|
|
|
+ name: undefined,
|
|
|
|
|
+ hasNextPage: false,
|
|
|
|
|
+ pageNum: 1,
|
|
|
|
|
+ pageSize: 10
|
|
|
|
|
+ },
|
|
|
|
|
+ qwUserOptionsLoading: false,
|
|
|
};
|
|
};
|
|
|
},
|
|
},
|
|
|
created() {
|
|
created() {
|
|
@@ -683,29 +816,88 @@ export default {
|
|
|
this.courseLists = response.list;
|
|
this.courseLists = response.list;
|
|
|
});
|
|
});
|
|
|
this.getList();
|
|
this.getList();
|
|
|
- this.getDicts("sys_course_watch_log_type").then(response => {
|
|
|
|
|
|
|
+ this.getDicts("sys_course_watch_log_type_new").then(response => {
|
|
|
this.logTypeOptions = response.data;
|
|
this.logTypeOptions = response.data;
|
|
|
});
|
|
});
|
|
|
this.getDicts("sys_course_project").then(response => {
|
|
this.getDicts("sys_course_project").then(response => {
|
|
|
this.projectOptions = response.data;
|
|
this.projectOptions = response.data;
|
|
|
});
|
|
});
|
|
|
|
|
+ this.getCompanyUserListLikeName(true);
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理所属销售下拉框显示状态变化
|
|
|
|
|
+ */
|
|
|
|
|
+ handleCompanyUserDropdownVisible(visible) {
|
|
|
|
|
+ this.companyUserDropdownVisible = visible;
|
|
|
|
|
+ if (visible && this.companyUserFirstLoad) {
|
|
|
|
|
+ // 首次展开下拉框时加载数据
|
|
|
|
|
+ this.companyUserFirstLoad = false;
|
|
|
|
|
+ this.loadCompanyUserOptions('');
|
|
|
|
|
+ } else if (visible && this.companyUserOptions.length === 0) {
|
|
|
|
|
+ // 下拉框显示但无数据时重新加载
|
|
|
|
|
+ this.loadCompanyUserOptions('');
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 处理所属企微下拉框显示状态变化
|
|
|
|
|
+ */
|
|
|
|
|
+ handleQwUserDropdownVisible(visible) {
|
|
|
|
|
+ this.qwUserDropdownVisible = visible;
|
|
|
|
|
+ if (visible && this.qwUserFirstLoad) {
|
|
|
|
|
+ // 首次展开下拉框时加载数据
|
|
|
|
|
+ this.qwUserFirstLoad = false;
|
|
|
|
|
+ this.loadQwUserOptions('');
|
|
|
|
|
+ } else if (visible && this.qwUserOptions.length === 0) {
|
|
|
|
|
+ // 下拉框显示但无数据时重新加载
|
|
|
|
|
+ this.loadQwUserOptions('');
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 当销售被选择
|
|
|
|
|
+ * 级联更新企微列表
|
|
|
|
|
+ */
|
|
|
|
|
+ handleCompanyUserChange(companyUserId){
|
|
|
|
|
+ if (companyUserId) {
|
|
|
|
|
+ // 清空当前企微选择
|
|
|
|
|
+ this.queryParams.qwUserName = "";
|
|
|
|
|
+ this.qwUserOptions = [];
|
|
|
|
|
+ this.qwUserOptionsParams.pageNum = 1;
|
|
|
|
|
+
|
|
|
|
|
+ // 重新加载企微列表,传入销售ID作为过滤条件
|
|
|
|
|
+ this.getQwList();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 清空销售时也清空企微
|
|
|
|
|
+ this.queryParams.qwUserName = "";
|
|
|
|
|
+ this.qwUserOptions = [];
|
|
|
|
|
+ this.qwUserOptionsParams.pageNum = 1;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
/**
|
|
/**
|
|
|
* 根据名称模糊查询用户列表
|
|
* 根据名称模糊查询用户列表
|
|
|
* @param query 参数
|
|
* @param query 参数
|
|
|
*/
|
|
*/
|
|
|
loadCompanyUserOptions(query) {
|
|
loadCompanyUserOptions(query) {
|
|
|
this.companyUserOptions = [];
|
|
this.companyUserOptions = [];
|
|
|
- if (query === '') {
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
this.companyUserOptionsParams.pageNum = 1
|
|
this.companyUserOptionsParams.pageNum = 1
|
|
|
this.companyUserOptionsParams.name = query
|
|
this.companyUserOptionsParams.name = query
|
|
|
this.companyUserOptionsLoading = true;
|
|
this.companyUserOptionsLoading = true;
|
|
|
this.getCompanyUserListLikeName()
|
|
this.getCompanyUserListLikeName()
|
|
|
},
|
|
},
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 根据条件查询企微列表
|
|
|
|
|
+ * @param query 参数
|
|
|
|
|
+ */
|
|
|
|
|
+ loadQwUserOptions(query) {
|
|
|
|
|
+ this.qwUserOptions = [];
|
|
|
|
|
+ this.qwUserOptionsParams.pageNum = 1
|
|
|
|
|
+ // 将搜索关键词设置到queryParams中
|
|
|
|
|
+ this.queryParams.qwUserName = query
|
|
|
|
|
+ this.qwUserOptionsLoading = true;
|
|
|
|
|
+ this.getQwList()
|
|
|
|
|
+ },
|
|
|
/**
|
|
/**
|
|
|
* 加载更多员工选项
|
|
* 加载更多员工选项
|
|
|
*/
|
|
*/
|
|
@@ -721,12 +913,56 @@ export default {
|
|
|
/**
|
|
/**
|
|
|
* 获取员工列表
|
|
* 获取员工列表
|
|
|
*/
|
|
*/
|
|
|
- getCompanyUserListLikeName() {
|
|
|
|
|
- getCompanyUserListLikeName(this.companyUserOptionsParams).then(response => {
|
|
|
|
|
- this.companyUserOptions = [...this.companyUserOptions, ...response.data.list]
|
|
|
|
|
- this.companyUserOptionsParams.hasNextPage = response.data.hasNextPage
|
|
|
|
|
- this.companyUserOptionsLoading = false;
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ getCompanyUserListLikeName(isAll) {
|
|
|
|
|
+
|
|
|
|
|
+ if (isAll){
|
|
|
|
|
+
|
|
|
|
|
+ getCompanyUserListLikeName(this.companyUserOptionsParams).then(response => {
|
|
|
|
|
+ this.companyUserOptionsByAll = [...this.companyUserOptions, ...response.data.list]
|
|
|
|
|
+ this.companyUserOptionsParams.hasNextPage = response.data.hasNextPage
|
|
|
|
|
+ this.companyUserOptionsLoading = false;
|
|
|
|
|
+ });
|
|
|
|
|
+ }else {
|
|
|
|
|
+ getCompanyUserListLikeName(this.companyUserOptionsParams).then(response => {
|
|
|
|
|
+ this.companyUserOptions = [...this.companyUserOptions, ...response.data.list]
|
|
|
|
|
+ this.companyUserOptionsParams.hasNextPage = response.data.hasNextPage
|
|
|
|
|
+ this.companyUserOptionsLoading = false;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+ getQwList() {
|
|
|
|
|
+ const params = {
|
|
|
|
|
+ name: this.qwUserOptionsParams.name,
|
|
|
|
|
+ pageNum: this.qwUserOptionsParams.pageNum,
|
|
|
|
|
+ pageSize: this.qwUserOptionsParams.pageSize,
|
|
|
|
|
+ // 添加销售ID作为过滤条件
|
|
|
|
|
+ companyUserId: this.queryParams.companyUserId || null,
|
|
|
|
|
+ disableCompanyId: 1
|
|
|
|
|
+ };
|
|
|
|
|
+ console.log("企微参数", this.queryParams);
|
|
|
|
|
+ getQwList(params).then(response => {
|
|
|
|
|
+ if (this.qwUserOptionsParams.pageNum === 1) {
|
|
|
|
|
+ this.qwUserOptions = response.rows || [];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.qwUserOptions = [...this.qwUserOptions, ...(response.rows || [])];
|
|
|
|
|
+ }
|
|
|
|
|
+ this.qwUserOptionsParams.hasNextPage = response.rows && response.rows.length >= this.qwUserOptionsParams.pageSize;
|
|
|
|
|
+ }).finally(()=>{
|
|
|
|
|
+ this.qwUserOptionsLoading = false;
|
|
|
|
|
+ })
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 加载更多员工选项
|
|
|
|
|
+ */
|
|
|
|
|
+ loadMoreQwUserOptions() {
|
|
|
|
|
+ if (!this.qwUserOptionsParams.hasNextPage) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.qwUserOptionsParams.pageNum += 1
|
|
|
|
|
+ this.getQwList()
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
// 重置日历组件
|
|
// 重置日历组件
|
|
@@ -735,17 +971,20 @@ export default {
|
|
|
this.createTime = [];
|
|
this.createTime = [];
|
|
|
this.updateTime = [];
|
|
this.updateTime = [];
|
|
|
this.qecCreateTime = [];
|
|
this.qecCreateTime = [];
|
|
|
|
|
+ this.periodTime = [];
|
|
|
|
|
|
|
|
- this.scheduleTimeText = '';
|
|
|
|
|
- this.createTimeText = '';
|
|
|
|
|
- this.updateTimeText = '';
|
|
|
|
|
- this.qecCreateTimeText = '';
|
|
|
|
|
|
|
+ this.scheduleTimeText = [];
|
|
|
|
|
+ this.createTimeText = [];
|
|
|
|
|
+ this.updateTimeText = [];
|
|
|
|
|
+ this.qecCreateTimeText = [];
|
|
|
|
|
+ this.periodTimeText = [];
|
|
|
|
|
|
|
|
// 强制刷新日历组件
|
|
// 强制刷新日历组件
|
|
|
this.scheduleCalendarKey++;
|
|
this.scheduleCalendarKey++;
|
|
|
this.createCalendarKey++;
|
|
this.createCalendarKey++;
|
|
|
this.updateCalendarKey++;
|
|
this.updateCalendarKey++;
|
|
|
this.qecCalendarKey++;
|
|
this.qecCalendarKey++;
|
|
|
|
|
+ this.periodTimeKey++;
|
|
|
},
|
|
},
|
|
|
formatDateRange(dates) {
|
|
formatDateRange(dates) {
|
|
|
if (!dates || dates.length < 2) return '';
|
|
if (!dates || dates.length < 2) return '';
|
|
@@ -765,9 +1004,9 @@ export default {
|
|
|
// 营期时间
|
|
// 营期时间
|
|
|
handleScheduleTimeChange(scheduleTime) {
|
|
handleScheduleTimeChange(scheduleTime) {
|
|
|
if (scheduleTime && scheduleTime.length >= 2) {
|
|
if (scheduleTime && scheduleTime.length >= 2) {
|
|
|
- this.scheduleTimeText = this.formatDateRange(scheduleTime);
|
|
|
|
|
- this.queryParams.scheduleStartTime = scheduleTime.map(date => date.format('YYYY-MM-DD'))[0] || null;
|
|
|
|
|
- this.queryParams.scheduleEndTime = scheduleTime.map(date => date.format('YYYY-MM-DD'))[1] || null;
|
|
|
|
|
|
|
+ // this.scheduleTimeText = this.formatDateRange(scheduleTime);
|
|
|
|
|
+ this.queryParams.scheduleStartTime = scheduleTime[0] || null;
|
|
|
|
|
+ this.queryParams.scheduleEndTime = scheduleTime[1] || null;
|
|
|
console.log(this.queryParams.scheduleStartTime)
|
|
console.log(this.queryParams.scheduleStartTime)
|
|
|
console.log(this.queryParams.scheduleEndTime)
|
|
console.log(this.queryParams.scheduleEndTime)
|
|
|
} else {
|
|
} else {
|
|
@@ -779,9 +1018,9 @@ export default {
|
|
|
// 创建时间
|
|
// 创建时间
|
|
|
createChange(createTime) {
|
|
createChange(createTime) {
|
|
|
if (createTime && createTime.length >= 2) {
|
|
if (createTime && createTime.length >= 2) {
|
|
|
- this.createTimeText = this.formatDateRange(createTime);
|
|
|
|
|
- this.queryParams.sTime = createTime.map(date => date.format('YYYY-MM-DD'))[0] || null;
|
|
|
|
|
- this.queryParams.eTime = createTime.map(date => date.format('YYYY-MM-DD'))[1] || null;
|
|
|
|
|
|
|
+ // this.createTimeText = this.formatDateRange(createTime);
|
|
|
|
|
+ this.queryParams.sTime = this.formatDate(createTime[0]) || null;
|
|
|
|
|
+ this.queryParams.eTime = this.formatDate(createTime[1]) || null;
|
|
|
} else {
|
|
} else {
|
|
|
this.createTimeText = '';
|
|
this.createTimeText = '';
|
|
|
this.queryParams.sTime = null;
|
|
this.queryParams.sTime = null;
|
|
@@ -792,9 +1031,9 @@ export default {
|
|
|
// 更新时间
|
|
// 更新时间
|
|
|
updateChange(updateTime) {
|
|
updateChange(updateTime) {
|
|
|
if (updateTime && updateTime.length >= 2) {
|
|
if (updateTime && updateTime.length >= 2) {
|
|
|
- this.updateTimeText = this.formatDateRange(updateTime);
|
|
|
|
|
- this.queryParams.upSTime = updateTime.map(date => date.format('YYYY-MM-DD'))[0] || null;
|
|
|
|
|
- this.queryParams.upETime = updateTime.map(date => date.format('YYYY-MM-DD'))[1] || null;
|
|
|
|
|
|
|
+ // this.updateTimeText = this.formatDateRange(updateTime);
|
|
|
|
|
+ this.queryParams.upSTime = updateTime[0] || null;
|
|
|
|
|
+ this.queryParams.upETime = updateTime[1] || null;
|
|
|
} else {
|
|
} else {
|
|
|
this.updateTimeText = '';
|
|
this.updateTimeText = '';
|
|
|
this.queryParams.upSTime = null;
|
|
this.queryParams.upSTime = null;
|
|
@@ -821,16 +1060,18 @@ export default {
|
|
|
this.$message.error('进线时间选择范围不能超过7天');
|
|
this.$message.error('进线时间选择范围不能超过7天');
|
|
|
// 清空选择
|
|
// 清空选择
|
|
|
this.qecCreateTime = [];
|
|
this.qecCreateTime = [];
|
|
|
- this.qecCreateTimeText = '';
|
|
|
|
|
|
|
+ this.qecCreateTimeText = [];
|
|
|
this.queryParams.qecSTime = null;
|
|
this.queryParams.qecSTime = null;
|
|
|
this.queryParams.qecETime = null;
|
|
this.queryParams.qecETime = null;
|
|
|
this.qecCalendarKey++;
|
|
this.qecCalendarKey++;
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- this.qecCreateTimeText = this.formatDateRange(qecCreateTime);
|
|
|
|
|
- this.queryParams.qecSTime = qecCreateTime.map(date => date.format('YYYY-MM-DD'))[0] || null;
|
|
|
|
|
- this.queryParams.qecETime = qecCreateTime.map(date => date.format('YYYY-MM-DD'))[1] || null;
|
|
|
|
|
|
|
+ // this.qecCreateTimeText = this.formatDateRange(qecCreateTime);
|
|
|
|
|
+ this.queryParams.qecSTime = qecCreateTime[0] || null;
|
|
|
|
|
+ this.queryParams.qecETime = qecCreateTime[1] || null;
|
|
|
|
|
+ console.log(this.queryParams.qecSTime);
|
|
|
|
|
+ console.log(this.queryParams.qecETime);
|
|
|
} else {
|
|
} else {
|
|
|
this.qecCreateTimeText = '';
|
|
this.qecCreateTimeText = '';
|
|
|
this.queryParams.qecSTime = null;
|
|
this.queryParams.qecSTime = null;
|
|
@@ -838,6 +1079,69 @@ export default {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
|
|
|
|
|
+ //营期课程时间
|
|
|
|
|
+ qecPeriodTimeChange(periodTime){
|
|
|
|
|
+
|
|
|
|
|
+ if (periodTime && periodTime.length >= 2) {
|
|
|
|
|
+ // 检查选择的日期范围是否超过7天(包括起始和结束日期)
|
|
|
|
|
+ const startDate = new Date(periodTime[0]);
|
|
|
|
|
+ const endDate = new Date(periodTime[1]);
|
|
|
|
|
+
|
|
|
|
|
+ // 设置时间为当天开始,避免时间部分影响计算
|
|
|
|
|
+ startDate.setHours(0, 0, 0, 0);
|
|
|
|
|
+ endDate.setHours(0, 0, 0, 0);
|
|
|
|
|
+
|
|
|
|
|
+ const timeDiff = Math.abs(endDate - startDate);
|
|
|
|
|
+ const diffDays = Math.ceil(timeDiff / (1000 * 60 * 60 * 24));
|
|
|
|
|
+
|
|
|
|
|
+ // 如果超过6天的范围(总共7天,包括起始日)
|
|
|
|
|
+ if (diffDays > 13) {
|
|
|
|
|
+ this.$message.error('时间选择范围不能超过14天');
|
|
|
|
|
+ // 清空选择
|
|
|
|
|
+ this.periodTime = [];
|
|
|
|
|
+ this.periodTimeText = [];
|
|
|
|
|
+ this.queryParams.periodSTime = null;
|
|
|
|
|
+ this.queryParams.periodETime = null;
|
|
|
|
|
+ this.periodTimeKey++;
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ this.queryParams.periodSTime = this.formatDate(periodTime[0]) || null;
|
|
|
|
|
+ this.queryParams.periodETime = this.formatDate(periodTime[1]) || null;
|
|
|
|
|
+
|
|
|
|
|
+ } else {
|
|
|
|
|
+
|
|
|
|
|
+ this.periodTimeText = '';
|
|
|
|
|
+ this.queryParams.periodSTime = null;
|
|
|
|
|
+ this.queryParams.periodETime = null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ },
|
|
|
|
|
+
|
|
|
|
|
+ formatDate(date) {
|
|
|
|
|
+ if (!date) return ''
|
|
|
|
|
+
|
|
|
|
|
+ // 确保 date 是 Date 对象
|
|
|
|
|
+ let dateObj = date
|
|
|
|
|
+ if (typeof date === 'string') {
|
|
|
|
|
+ dateObj = new Date(date)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 如果转换失败,返回空字符串
|
|
|
|
|
+ if (!(dateObj instanceof Date) || isNaN(dateObj.getTime())) {
|
|
|
|
|
+ return ''
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 使用更安全的格式化方法
|
|
|
|
|
+ const year = dateObj.getFullYear()
|
|
|
|
|
+ const month = String(dateObj.getMonth() + 1).padStart(2, '0')
|
|
|
|
|
+ const day = String(dateObj.getDate()).padStart(2, '0')
|
|
|
|
|
+ const hours = String(dateObj.getHours()).padStart(2, '0')
|
|
|
|
|
+ const minutes = String(dateObj.getMinutes()).padStart(2, '0')
|
|
|
|
|
+ const seconds = String(dateObj.getSeconds()).padStart(2, '0')
|
|
|
|
|
+
|
|
|
|
|
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
|
|
|
|
|
+ },
|
|
|
|
|
|
|
|
|
|
|
|
|
handleClickX(tab,event){
|
|
handleClickX(tab,event){
|
|
@@ -911,6 +1215,8 @@ export default {
|
|
|
this.queryParams.upETime = null;
|
|
this.queryParams.upETime = null;
|
|
|
this.queryParams.qecSTime = null;
|
|
this.queryParams.qecSTime = null;
|
|
|
this.queryParams.qecETime = null;
|
|
this.queryParams.qecETime = null;
|
|
|
|
|
+ this.queryParams.periodSTime = null;
|
|
|
|
|
+ this.queryParams.periodDTime = null;
|
|
|
this.queryParams.scheduleStartTime = null;
|
|
this.queryParams.scheduleStartTime = null;
|
|
|
this.queryParams.scheduleEndTime = null;
|
|
this.queryParams.scheduleEndTime = null;
|
|
|
this.queryParams.sopId = null; // 重置SOP ID
|
|
this.queryParams.sopId = null; // 重置SOP ID
|