Merge branch '250213-prod-master_1202-gx' into master_1202

This commit is contained in:
joshen
2025-03-07 17:37:03 +08:00
10 changed files with 94 additions and 50 deletions

View File

@@ -92,7 +92,9 @@
</a-button>
</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-col>
@@ -329,11 +331,16 @@ function reset() {
function exportStu() {
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){
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({
searchStu,

View File

@@ -1,19 +1,19 @@
import axios from 'axios'
import {getCookieForName} from "@/api/method";
const mimeMap = {
xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
zip: 'application/zip'
}
export function downLoadXlsx(str, filename) {
axios({
method: 'get',
url: str,
responseType: 'blob',
headers: { 'Authorization': 'Bearer ' + getCookieForName("token") }
}).then(res => {
export const downLoadXlsx = async (str, filename) => {
const res = await axios({
method: 'get',
url: str,
responseType: 'blob',
headers: { 'Authorization': 'Bearer ' + getCookieForName("token") }
});
resolveBlob(res, mimeMap.xlsx,filename)
})
}
const baseUrl = process.env.VUE_APP_ACT_API
export function downLoadZip(str, filename) {

View File

@@ -140,7 +140,7 @@
v-model:value="xzinputV1"
v-model:validated="validated"
:id="offcourseId"
:maxlength="20"
:maxlength="50"
show-count
:type="2"
></NameInput>

View File

@@ -571,7 +571,6 @@ export default {
let objA = { ...state.searchParam };
objA.beginTime = state.searchdate ? dayjs(state.searchdate[0]).format("YYYY-MM-DD") : "",
objA.endTime = state.searchdate ? dayjs(state.searchdate[1]).format("YYYY-MM-DD") : "",
delete objA.searchdate
expenseBillList(objA)
.then((res) => {
tableData.value = res.data.data.records
@@ -1101,14 +1100,14 @@ export default {
}
//TODO1
watchEffect(() => {
console.log('Item changed:', props.activeKeyProps);
if(props.activeKeyProps == 2){
state.searchParam.pageNo = 1;
getTableDate()
}
// 在这里你可以根据 props.item 进行一些操作
});
// watchEffect(() => {
// console.log('Item changed:', props.activeKeyProps);
// if(props.activeKeyProps == 2){
// state.searchParam.pageNo = 1;
// getTableDate()
// }
// // 在这里你可以根据 props.item 进行一些操作
// });
return {

View File

@@ -65,10 +65,10 @@
<UploadOutlined />导出
</a-button>
<a-button v-if="checkMenu('lecturerMonthDown')" class="resetbtn-mo" @click="handleFeeMonthlyDown" type="primary">
<UploadOutlined />讲师月度费用下载
<UploadOutlined />讲师月度汇总
</a-button>
<a-button v-if="checkMenu('lecturerMonthDetailDown')" class="resetbtn-mo" @click="handleFeeMonthlyDetail" type="primary">
<UploadOutlined />讲师费用详情下载
<UploadOutlined />讲师费月度详情
</a-button>
</div>
<!-- 表格 -->
@@ -318,7 +318,7 @@ export default {
align: "center",
width: 140,
customRender: ({ text }) => {
return text ? text + '分钟' : '-'
return text ? (text/60).toFixed(2) + '小时' : '-'
}
},
{
@@ -329,7 +329,7 @@ export default {
align: "center",
width: 140,
customRender: ({ text }) => {
return text ? text + '分钟' : '-'
return text ? (text/60).toFixed(2) + '小时' : '-'
}
},
{
@@ -340,7 +340,7 @@ export default {
align: "center",
width: 120,
customRender: ({ text }) => {
return text ? text + '分钟' : '-'
return text ? (text/60).toFixed(2) + '小时' : '-'
}
},
{

View File

@@ -8,7 +8,7 @@
</a-tab-pane>
<!-- v-if="lecturerAdmin('lecturer-admin')" -->
<a-tab-pane key="2" tab="审批中心">
<OrganizationApproval/>
<OrganizationApproval ref="organizationApprovalRef" :organizationActive="organizationActive"/>
</a-tab-pane>
</a-tabs>
</div>
@@ -34,18 +34,24 @@ export default {
const state = reactive({
activeKey: '1',
organizationActive:"0"
});
const organizationApprovalRef = ref(null)
onMounted(() => {
if (route.query.activeKey) {
state.activeKey = '2'
state.activeKey = '2';
state.organizationActive = "1"
}
})
const activeKeyFn = () => {
state.activeKey = '2'
setTimeout(() => {
state.activeKey = '2';
organizationApprovalRef.value.getTableDate()
}, 5000);
}
return {

View File

@@ -27,9 +27,9 @@
<a-select-option :value="0">全部</a-select-option>
<a-select-option :value="1">待提交</a-select-option>
<a-select-option :value="2">审核中</a-select-option>
<a-select-option :value="3">审核通过</a-select-option>
<a-select-option :value="4">拒绝</a-select-option>
<a-select-option :value="5">撤回</a-select-option>
<!-- <a-select-option :value="3">已完成</a-select-option> -->
<a-select-option :value="4">审核失败</a-select-option>
<!-- <a-select-option :value="5">撤回</a-select-option> -->
</a-select>
</div>
</a-form-item>
@@ -534,7 +534,10 @@ export default {
lockLecturer,
AddApprover,
},
setup() {
props: {
organizationActive: String
},
setup(props) {
const formRef = ref();
const state = reactive({
@@ -754,6 +757,7 @@ export default {
const tableData = ref([]);
// List接口数据
const getTableDate = (obj) => {
console.log("执行 gx getTableDate 111111111111111111111")
state.tableLoading = true;
let objA = {
...state.searchParam ,
@@ -762,17 +766,7 @@ export default {
approvalType:1,
moduleType:1
};
if(objA.status == 0){
objA.approvalType = null; //全部数据
objA.status = null;
}
if(objA.status == 3){ //审核通过
objA.approvalType = 0;
}
console.log("执行 gx getTableDate objA",objA);
queryTrainOrg(objA).then((res) => {
tableData.value = res.data.data.records;
state.tableDataTotal = Number(res.data.data.total);
@@ -1048,6 +1042,16 @@ export default {
state.formParam.affiliationName = record.affiliationName;
state.formParam.remark = record.remark;
};
watch(
() => props.organizationActive,
(val) => {
console.log("organizationActive gx val",val)
}
);
const cancel = () => {
state.formParam = {
orglistName: null,

View File

@@ -147,14 +147,26 @@
<a-radio :style="radioStyle" :value="0"></a-radio>
</a-radio-group>
</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_input">
<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>
<!-- <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 class="name name2">
<div class="namebox">
<div class="inname">同步学习记录</div>
@@ -338,6 +350,7 @@ export default {
});
watch(routers.query, () => {
state.projectInfo.name = routers.query.name;
state.projectInfo.id = routers.query.id;
state.projectInfo.parentName = routers.query.parentName;
state.projectInfo.parentId = routers.query.parentId;
@@ -349,6 +362,7 @@ export default {
})
function getProjectInfo() {
state.projectInfo.name = routers.query.name;
state.projectInfo.parentName = routers.query.parentName;
state.projectInfo.parentId = routers.query.parentId;
state.projectInfo.id = routers.query.projectId;

View File

@@ -1577,9 +1577,11 @@ export default {
}
function handleEdit(record) {
if (record.type === 1 || record.type === 2) {
state.doublepro = true;
console.log("state.record gx",record)
state.projectInfo = record;
console.log("state.projectInfo gx",state.projectInfo)
state.onceName = record.name;
state.doublepro = true;
} else {
router.push({
path: "/projectadd",

View File

@@ -304,11 +304,13 @@
<NameInput
placeholder="请输入项目名称"
v-model:value="projectInfo.name"
v-model:name="projectInfo.name"
v-model:validated="projectInfo.validated"
:type="1"
:maxlength="30"
show-count
:onceName="onceName"
:name="projectInfo.name"
:id="projectInfo.projectId"
></NameInput>
</div>
@@ -1576,14 +1578,24 @@ export default {
}
}
function handleEdit(record) {
console.log("handleEdit gx 项目中心-项目" ,record);
if (record.type === 1 || record.type === 2) {
state.doublepro = true;
state.projectInfo = record;
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 {
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({
path: "/projectadd",
query: {
name: record.name,
projectId: record.id,
parentId: record.parentId,
parentName: record.parentName,