mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-14 05:16:45 +08:00
Merge branch '250213-prod-master_1202-gx' into master_1202
This commit is contained in:
@@ -92,7 +92,9 @@
|
|||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col>
|
<a-col>
|
||||||
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff; width: 150px" @click="exportStudy">
|
<a-button class="cus-btn" style="background: #4ea6ff; color: #fff; width: 150px"
|
||||||
|
:disabled="exportDisabled"
|
||||||
|
@click="exportStudy">
|
||||||
导出详细学习记录
|
导出详细学习记录
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -329,11 +331,16 @@ function reset() {
|
|||||||
function exportStu() {
|
function exportStu() {
|
||||||
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportOnlineStudent?type=3&&thirdType=8&pid=${searchParams.value.pid}`);
|
window.open(`${process.env.VUE_APP_BASE_API}/admin/student/exportOnlineStudent?type=3&&thirdType=8&pid=${searchParams.value.pid}`);
|
||||||
}
|
}
|
||||||
function exportStudy() {
|
|
||||||
|
let exportDisabled = ref(false)
|
||||||
|
|
||||||
|
const exportStudy = async () => {
|
||||||
if(studentList.value.length == 0){
|
if(studentList.value.length == 0){
|
||||||
return message.warning('暂无可导出的学习记录')
|
return message.warning('暂无可导出的学习记录')
|
||||||
}
|
}
|
||||||
downLoadXlsx(`${process.env.VUE_APP_BASE_API}/admin/student/exportOnlineStudentDetail?type=4&&thirdType=8&pid=${searchParams.value.pid}`,'在线课学员学习记录')
|
exportDisabled.value = true;
|
||||||
|
await downLoadXlsx(`${process.env.VUE_APP_BASE_API}/admin/student/exportOnlineStudentDetail?type=4&&thirdType=8&pid=${searchParams.value.pid}`,'在线课学员学习记录');
|
||||||
|
exportDisabled.value = false;
|
||||||
}
|
}
|
||||||
defineExpose({
|
defineExpose({
|
||||||
searchStu,
|
searchStu,
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import {getCookieForName} from "@/api/method";
|
import {getCookieForName} from "@/api/method";
|
||||||
|
|
||||||
|
|
||||||
const mimeMap = {
|
const mimeMap = {
|
||||||
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
||||||
zip: 'application/zip'
|
zip: 'application/zip'
|
||||||
}
|
}
|
||||||
export function downLoadXlsx(str, filename) {
|
export const downLoadXlsx = async (str, filename) => {
|
||||||
axios({
|
const res = await axios({
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url: str,
|
url: str,
|
||||||
responseType: 'blob',
|
responseType: 'blob',
|
||||||
headers: { 'Authorization': 'Bearer ' + getCookieForName("token") }
|
headers: { 'Authorization': 'Bearer ' + getCookieForName("token") }
|
||||||
}).then(res => {
|
});
|
||||||
resolveBlob(res, mimeMap.xlsx,filename)
|
resolveBlob(res, mimeMap.xlsx,filename)
|
||||||
})
|
|
||||||
}
|
}
|
||||||
const baseUrl = process.env.VUE_APP_ACT_API
|
const baseUrl = process.env.VUE_APP_ACT_API
|
||||||
export function downLoadZip(str, filename) {
|
export function downLoadZip(str, filename) {
|
||||||
|
|||||||
@@ -140,7 +140,7 @@
|
|||||||
v-model:value="xzinputV1"
|
v-model:value="xzinputV1"
|
||||||
v-model:validated="validated"
|
v-model:validated="validated"
|
||||||
:id="offcourseId"
|
:id="offcourseId"
|
||||||
:maxlength="20"
|
:maxlength="50"
|
||||||
show-count
|
show-count
|
||||||
:type="2"
|
:type="2"
|
||||||
></NameInput>
|
></NameInput>
|
||||||
|
|||||||
@@ -571,7 +571,6 @@ export default {
|
|||||||
let objA = { ...state.searchParam };
|
let objA = { ...state.searchParam };
|
||||||
objA.beginTime = state.searchdate ? dayjs(state.searchdate[0]).format("YYYY-MM-DD") : "",
|
objA.beginTime = state.searchdate ? dayjs(state.searchdate[0]).format("YYYY-MM-DD") : "",
|
||||||
objA.endTime = state.searchdate ? dayjs(state.searchdate[1]).format("YYYY-MM-DD") : "",
|
objA.endTime = state.searchdate ? dayjs(state.searchdate[1]).format("YYYY-MM-DD") : "",
|
||||||
delete objA.searchdate
|
|
||||||
expenseBillList(objA)
|
expenseBillList(objA)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
tableData.value = res.data.data.records
|
tableData.value = res.data.data.records
|
||||||
@@ -1101,14 +1100,14 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO1
|
//TODO1
|
||||||
watchEffect(() => {
|
// watchEffect(() => {
|
||||||
console.log('Item changed:', props.activeKeyProps);
|
// console.log('Item changed:', props.activeKeyProps);
|
||||||
if(props.activeKeyProps == 2){
|
// if(props.activeKeyProps == 2){
|
||||||
state.searchParam.pageNo = 1;
|
// state.searchParam.pageNo = 1;
|
||||||
getTableDate()
|
// getTableDate()
|
||||||
}
|
// }
|
||||||
// 在这里你可以根据 props.item 进行一些操作
|
// // 在这里你可以根据 props.item 进行一些操作
|
||||||
});
|
// });
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -65,10 +65,10 @@
|
|||||||
<UploadOutlined />导出
|
<UploadOutlined />导出
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button v-if="checkMenu('lecturerMonthDown')" class="resetbtn-mo" @click="handleFeeMonthlyDown" type="primary">
|
<a-button v-if="checkMenu('lecturerMonthDown')" class="resetbtn-mo" @click="handleFeeMonthlyDown" type="primary">
|
||||||
<UploadOutlined />讲师月度费用下载
|
<UploadOutlined />讲师费月度汇总
|
||||||
</a-button>
|
</a-button>
|
||||||
<a-button v-if="checkMenu('lecturerMonthDetailDown')" class="resetbtn-mo" @click="handleFeeMonthlyDetail" type="primary">
|
<a-button v-if="checkMenu('lecturerMonthDetailDown')" class="resetbtn-mo" @click="handleFeeMonthlyDetail" type="primary">
|
||||||
<UploadOutlined />讲师费用详情下载
|
<UploadOutlined />讲师费月度详情
|
||||||
</a-button>
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
@@ -318,7 +318,7 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
width: 140,
|
width: 140,
|
||||||
customRender: ({ text }) => {
|
customRender: ({ text }) => {
|
||||||
return text ? text + '分钟' : '-'
|
return text ? (text/60).toFixed(2) + '小时' : '-'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -329,7 +329,7 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
width: 140,
|
width: 140,
|
||||||
customRender: ({ text }) => {
|
customRender: ({ text }) => {
|
||||||
return text ? text + '分钟' : '-'
|
return text ? (text/60).toFixed(2) + '小时' : '-'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -340,7 +340,7 @@ export default {
|
|||||||
align: "center",
|
align: "center",
|
||||||
width: 120,
|
width: 120,
|
||||||
customRender: ({ text }) => {
|
customRender: ({ text }) => {
|
||||||
return text ? text + '分钟' : '-'
|
return text ? (text/60).toFixed(2) + '小时' : '-'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<!-- v-if="lecturerAdmin('lecturer-admin')" -->
|
<!-- v-if="lecturerAdmin('lecturer-admin')" -->
|
||||||
<a-tab-pane key="2" tab="审批中心">
|
<a-tab-pane key="2" tab="审批中心">
|
||||||
<OrganizationApproval/>
|
<OrganizationApproval ref="organizationApprovalRef" :organizationActive="organizationActive"/>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,18 +34,24 @@ export default {
|
|||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
activeKey: '1',
|
activeKey: '1',
|
||||||
|
organizationActive:"0"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const organizationApprovalRef = ref(null)
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (route.query.activeKey) {
|
if (route.query.activeKey) {
|
||||||
state.activeKey = '2'
|
state.activeKey = '2';
|
||||||
|
state.organizationActive = "1"
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
const activeKeyFn = () => {
|
const activeKeyFn = () => {
|
||||||
state.activeKey = '2'
|
setTimeout(() => {
|
||||||
|
state.activeKey = '2';
|
||||||
|
organizationApprovalRef.value.getTableDate()
|
||||||
|
}, 5000);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -27,9 +27,9 @@
|
|||||||
<a-select-option :value="0">全部</a-select-option>
|
<a-select-option :value="0">全部</a-select-option>
|
||||||
<a-select-option :value="1">待提交</a-select-option>
|
<a-select-option :value="1">待提交</a-select-option>
|
||||||
<a-select-option :value="2">审核中</a-select-option>
|
<a-select-option :value="2">审核中</a-select-option>
|
||||||
<a-select-option :value="3">审核通过</a-select-option>
|
<!-- <a-select-option :value="3">已完成</a-select-option> -->
|
||||||
<a-select-option :value="4">拒绝</a-select-option>
|
<a-select-option :value="4">审核失败</a-select-option>
|
||||||
<a-select-option :value="5">撤回</a-select-option>
|
<!-- <a-select-option :value="5">撤回</a-select-option> -->
|
||||||
</a-select>
|
</a-select>
|
||||||
</div>
|
</div>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
@@ -534,7 +534,10 @@ export default {
|
|||||||
lockLecturer,
|
lockLecturer,
|
||||||
AddApprover,
|
AddApprover,
|
||||||
},
|
},
|
||||||
setup() {
|
props: {
|
||||||
|
organizationActive: String
|
||||||
|
},
|
||||||
|
setup(props) {
|
||||||
const formRef = ref();
|
const formRef = ref();
|
||||||
|
|
||||||
const state = reactive({
|
const state = reactive({
|
||||||
@@ -754,6 +757,7 @@ export default {
|
|||||||
const tableData = ref([]);
|
const tableData = ref([]);
|
||||||
// List接口数据
|
// List接口数据
|
||||||
const getTableDate = (obj) => {
|
const getTableDate = (obj) => {
|
||||||
|
console.log("执行 gx getTableDate 111111111111111111111")
|
||||||
state.tableLoading = true;
|
state.tableLoading = true;
|
||||||
let objA = {
|
let objA = {
|
||||||
...state.searchParam ,
|
...state.searchParam ,
|
||||||
@@ -762,17 +766,7 @@ export default {
|
|||||||
approvalType:1,
|
approvalType:1,
|
||||||
moduleType:1
|
moduleType:1
|
||||||
};
|
};
|
||||||
|
console.log("执行 gx getTableDate objA",objA);
|
||||||
if(objA.status == 0){
|
|
||||||
objA.approvalType = null; //全部数据
|
|
||||||
objA.status = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(objA.status == 3){ //审核通过
|
|
||||||
objA.approvalType = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
queryTrainOrg(objA).then((res) => {
|
queryTrainOrg(objA).then((res) => {
|
||||||
tableData.value = res.data.data.records;
|
tableData.value = res.data.data.records;
|
||||||
state.tableDataTotal = Number(res.data.data.total);
|
state.tableDataTotal = Number(res.data.data.total);
|
||||||
@@ -1048,6 +1042,16 @@ export default {
|
|||||||
state.formParam.affiliationName = record.affiliationName;
|
state.formParam.affiliationName = record.affiliationName;
|
||||||
state.formParam.remark = record.remark;
|
state.formParam.remark = record.remark;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.organizationActive,
|
||||||
|
(val) => {
|
||||||
|
console.log("organizationActive gx val",val)
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const cancel = () => {
|
const cancel = () => {
|
||||||
state.formParam = {
|
state.formParam = {
|
||||||
orglistName: null,
|
orglistName: null,
|
||||||
|
|||||||
@@ -147,14 +147,26 @@
|
|||||||
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
<a-radio :style="radioStyle" :value="0">否</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</div>
|
</div>
|
||||||
<div class="num" style="flex:3" v-if="projectInfo.boeFlag === 1">
|
<!-- <div class="num" style="flex:3" v-if="projectInfo.boeFlag === 1">
|
||||||
<div class="num_text">项目编号:</div>
|
<div class="num_text">项目编号:</div>
|
||||||
<div class="num_input">
|
<div class="num_input"> -->
|
||||||
<!-- <a-input style="border-radius: 8px;" show-count allowClear maxlength="30" v-model:value="projectInfo.numValue" placeholder="请输入项目编号" /> -->
|
<!-- <a-input style="border-radius: 8px;" show-count allowClear maxlength="30" v-model:value="projectInfo.numValue" placeholder="请输入项目编号" /> -->
|
||||||
<ProjectNumber v-model:value="projectInfo.numValue"></ProjectNumber>
|
<!-- <ProjectNumber v-model:value="projectInfo.numValue"></ProjectNumber>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
<div class="name name2 num" style="flex:3" v-if="projectInfo.boeFlag === 1">
|
||||||
|
<div class="namebox">
|
||||||
|
<div class="num_text">项目编号:</div>
|
||||||
|
</div>
|
||||||
|
<div class="in ggysxz">
|
||||||
|
<div class="num_input">
|
||||||
|
<!-- <a-input style="border-radius: 8px;" show-count allowClear maxlength="30" v-model:value="projectInfo.numValue" placeholder="请输入项目编号" /> -->
|
||||||
|
<ProjectNumber v-model:value="projectInfo.numValue"></ProjectNumber>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="name name2">
|
<div class="name name2">
|
||||||
<div class="namebox">
|
<div class="namebox">
|
||||||
<div class="inname">同步学习记录</div>
|
<div class="inname">同步学习记录</div>
|
||||||
@@ -338,6 +350,7 @@ export default {
|
|||||||
});
|
});
|
||||||
|
|
||||||
watch(routers.query, () => {
|
watch(routers.query, () => {
|
||||||
|
state.projectInfo.name = routers.query.name;
|
||||||
state.projectInfo.id = routers.query.id;
|
state.projectInfo.id = routers.query.id;
|
||||||
state.projectInfo.parentName = routers.query.parentName;
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
state.projectInfo.parentId = routers.query.parentId;
|
state.projectInfo.parentId = routers.query.parentId;
|
||||||
@@ -349,6 +362,7 @@ export default {
|
|||||||
})
|
})
|
||||||
|
|
||||||
function getProjectInfo() {
|
function getProjectInfo() {
|
||||||
|
state.projectInfo.name = routers.query.name;
|
||||||
state.projectInfo.parentName = routers.query.parentName;
|
state.projectInfo.parentName = routers.query.parentName;
|
||||||
state.projectInfo.parentId = routers.query.parentId;
|
state.projectInfo.parentId = routers.query.parentId;
|
||||||
state.projectInfo.id = routers.query.projectId;
|
state.projectInfo.id = routers.query.projectId;
|
||||||
|
|||||||
@@ -1577,9 +1577,11 @@ export default {
|
|||||||
}
|
}
|
||||||
function handleEdit(record) {
|
function handleEdit(record) {
|
||||||
if (record.type === 1 || record.type === 2) {
|
if (record.type === 1 || record.type === 2) {
|
||||||
state.doublepro = true;
|
console.log("state.record gx",record)
|
||||||
state.projectInfo = record;
|
state.projectInfo = record;
|
||||||
|
console.log("state.projectInfo gx",state.projectInfo)
|
||||||
state.onceName = record.name;
|
state.onceName = record.name;
|
||||||
|
state.doublepro = true;
|
||||||
} else {
|
} else {
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectadd",
|
path: "/projectadd",
|
||||||
|
|||||||
@@ -304,11 +304,13 @@
|
|||||||
<NameInput
|
<NameInput
|
||||||
placeholder="请输入项目名称"
|
placeholder="请输入项目名称"
|
||||||
v-model:value="projectInfo.name"
|
v-model:value="projectInfo.name"
|
||||||
|
v-model:name="projectInfo.name"
|
||||||
v-model:validated="projectInfo.validated"
|
v-model:validated="projectInfo.validated"
|
||||||
:type="1"
|
:type="1"
|
||||||
:maxlength="30"
|
:maxlength="30"
|
||||||
show-count
|
show-count
|
||||||
:onceName="onceName"
|
:onceName="onceName"
|
||||||
|
:name="projectInfo.name"
|
||||||
:id="projectInfo.projectId"
|
:id="projectInfo.projectId"
|
||||||
></NameInput>
|
></NameInput>
|
||||||
</div>
|
</div>
|
||||||
@@ -1576,14 +1578,24 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function handleEdit(record) {
|
function handleEdit(record) {
|
||||||
|
console.log("handleEdit gx 项目中心-项目" ,record);
|
||||||
if (record.type === 1 || record.type === 2) {
|
if (record.type === 1 || record.type === 2) {
|
||||||
state.doublepro = true;
|
state.doublepro = true;
|
||||||
state.projectInfo = record;
|
state.projectInfo = record;
|
||||||
state.onceName = record.name;
|
state.onceName = record.name;
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 edit record" ,record);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 edit state.doublepro" ,state.doublepro);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 edit state.projectInfo" ,state.projectInfo);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 edit state.onceName" ,state.onceName);
|
||||||
} else {
|
} else {
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 add record" ,record);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 add state.doublepro" ,state.doublepro);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 add state.projectInfo" ,state.projectInfo);
|
||||||
|
console.log("handleEdit gx 项目中心-项目 进入 add state.onceName" ,state.onceName);
|
||||||
router.push({
|
router.push({
|
||||||
path: "/projectadd",
|
path: "/projectadd",
|
||||||
query: {
|
query: {
|
||||||
|
name: record.name,
|
||||||
projectId: record.id,
|
projectId: record.id,
|
||||||
parentId: record.parentId,
|
parentId: record.parentId,
|
||||||
parentName: record.parentName,
|
parentName: record.parentName,
|
||||||
|
|||||||
Reference in New Issue
Block a user