mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-15 13:56:45 +08:00
Merge branch 'master' of ssh://gitlab.dongwu-inc.com:10022/BOE/fe-manage
This commit is contained in:
@@ -16,6 +16,8 @@ http.interceptors.request.use(
|
||||
config.headers.token = token;
|
||||
} else {
|
||||
console.log("当前请求页面无token,请执行操作!!!")
|
||||
// 此处测试默认配置token
|
||||
config.headers.token = "123456";
|
||||
}
|
||||
return config;
|
||||
},
|
||||
|
||||
@@ -51,9 +51,7 @@ export const createProject = (obj) => http.post('/admin/project/edit', {
|
||||
"name": obj.name,
|
||||
"notice": obj.notice,
|
||||
"noticeFlag": obj.noticeFlag,
|
||||
"parentId": obj.parentId,
|
||||
"picUrl": obj.picUrl,
|
||||
"projectId": obj.projectId,
|
||||
"remark": obj.remark,
|
||||
"sourceBelongId": obj.sourceBelongId,
|
||||
"status": obj.status,
|
||||
@@ -61,3 +59,13 @@ export const createProject = (obj) => http.post('/admin/project/edit', {
|
||||
"templateId": obj.templateId,
|
||||
"type": obj.type
|
||||
})
|
||||
|
||||
// 创建多层项目
|
||||
export const createStoreyProject = () => http.post('/admin/project/edit', {
|
||||
|
||||
})
|
||||
|
||||
// 获取项目列表
|
||||
export const getProjectList = () => http.post('/admin/project/list', {
|
||||
|
||||
})
|
||||
63
src/api/indexEval.js
Normal file
63
src/api/indexEval.js
Normal file
@@ -0,0 +1,63 @@
|
||||
import http from "./config";
|
||||
// import qs from 'qs';
|
||||
|
||||
|
||||
/**
|
||||
* 接口传参数方式(get)
|
||||
* axios.get('/user', {
|
||||
* params: {
|
||||
* id: 12345,
|
||||
* name: user
|
||||
* }
|
||||
* }).then(res => console.log(res))
|
||||
*
|
||||
* 接口传参三种方式(post/put/patch)
|
||||
*
|
||||
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'multipart/form-data')
|
||||
* var formData=new FormData();
|
||||
* formData.append('user',123456);formData.append('pass',12345678);
|
||||
* axios.post("/notice",formData).then()
|
||||
*
|
||||
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* let data = {"code":"1234","name":"yyyy"};
|
||||
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
|
||||
*
|
||||
* 3.'Content-Type'= 'application/json,传参格式为 raw (JSON格式)。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'application/json;charset=UTF-8')
|
||||
* let data = {"code":"1234","name":"yyyy"}
|
||||
* axios.post(`${this.$url}/test/testRequest`,data).then()
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// 接口-请求
|
||||
|
||||
//创建测评
|
||||
export const createEvaluation = (obj) => http.post('/evaluation/createEvaluation', obj,);
|
||||
|
||||
//上传组件
|
||||
export const fileUp = (obj) => http.post('/file/upload', obj,);
|
||||
|
||||
//删除测评信息
|
||||
export const deleteEvaluationById = (obj) => http.post('/evaluation/deleteEvaluationById', { params: obj })
|
||||
|
||||
|
||||
//根据ID获取测评信息详情
|
||||
export const queryEvaluationDetailById = (obj) => http.post('/evaluation/queryEvaluationDetailById', { params: obj })
|
||||
|
||||
//修改测评信息
|
||||
export const updateEvaluation = (obj) => http.post('/evaluation/updateEvaluation', obj)
|
||||
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
// api.getLearnPath({}).then(res => {
|
||||
// console.log(res)
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
60
src/api/indexInvist.js
Normal file
60
src/api/indexInvist.js
Normal file
@@ -0,0 +1,60 @@
|
||||
import http from "./config";
|
||||
// import qs from 'qs';
|
||||
|
||||
|
||||
/**
|
||||
* 接口传参数方式(get)
|
||||
* axios.get('/user', {
|
||||
* params: {
|
||||
* id: 12345,
|
||||
* name: user
|
||||
* }
|
||||
* }).then(res => console.log(res))
|
||||
*
|
||||
* 接口传参三种方式(post/put/patch)
|
||||
*
|
||||
* 1.'Content-Type'= 'multipart/form-data',传参格式为 formData。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'multipart/form-data')
|
||||
* var formData=new FormData();
|
||||
* formData.append('user',123456);formData.append('pass',12345678);
|
||||
* axios.post("/notice",formData).then()
|
||||
*
|
||||
* 2.'Content-Type'= 'application/x-www-form-urlencoded',传参格式为 query 形式,使用$qs.stringify。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* let data = {"code":"1234","name":"yyyy"};
|
||||
* axios.post(`${this.$url}/test/testRequest`,qs.stringify({data})).then()
|
||||
*
|
||||
* 3.'Content-Type'= 'application/json,传参格式为 raw (JSON格式)。
|
||||
* (全局请求头:'Content-Type'= 'application/x-www-form-urlencoded')
|
||||
* (request的Header:'Content-Type'= 'application/json;charset=UTF-8')
|
||||
* let data = {"code":"1234","name":"yyyy"}
|
||||
* axios.post(`${this.$url}/test/testRequest`,data).then()
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
// 接口-请求
|
||||
|
||||
//创建评估
|
||||
export const createAppraiseMessage = (obj) => http.post('/survey/createAppraiseMessage', obj,);
|
||||
|
||||
//删除评估信息
|
||||
export const deleteAppraise = (obj) => http.post('/survey/deleteAppraise', { params: obj })
|
||||
|
||||
|
||||
//根据ID获取评估信息详情
|
||||
export const queryAppraiseDetailById = (obj) => http.post('/survey/queryAppraiseDetailById', { params: obj })
|
||||
|
||||
//修改评估信息
|
||||
export const updateAppraiseMessage = (obj) => http.post('/survey/updateAppraiseMessage', obj)
|
||||
|
||||
|
||||
// 测试方法
|
||||
// import * as api from '../../api/index'
|
||||
// api.getLearnPath({}).then(res => {
|
||||
// console.log(res)
|
||||
// }).catch(err => {
|
||||
// console.log(err)
|
||||
// })
|
||||
13
src/api/indexLiveBroadcast.js
Normal file
13
src/api/indexLiveBroadcast.js
Normal file
@@ -0,0 +1,13 @@
|
||||
import http from "./config";
|
||||
|
||||
//根据直播Id获取直播信息 query参数
|
||||
export const getLiveBroadcastInfor = (obj) => http.get('/liveBroadcast', { params: obj })
|
||||
|
||||
//创建直播接口
|
||||
export const createLiveBroadcast = (obj) => http.post('/liveBroadcast/createLiveBroadcast', obj)
|
||||
|
||||
//直播信息删除接口
|
||||
export const deleteLiveBroadcast = (obj) => http.post('/liveBroadcast/deleteLiveBroadcast', obj)
|
||||
|
||||
//直播信息修改接口
|
||||
export const updateLiveBroadcastMessage = (obj) => http.post('/liveBroadcast/updateLiveBroadcastMessage', obj)
|
||||
0
src/api/indexVote.js
Normal file
0
src/api/indexVote.js
Normal file
@@ -61,7 +61,10 @@
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 424px;"
|
||||
style="width: 424px"
|
||||
v-model:value="time"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
@change="onChange"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
@@ -77,7 +80,7 @@
|
||||
list-type="picture-card"
|
||||
class="avatar-uploader"
|
||||
:show-upload-list="false"
|
||||
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||
action="/api/file/upload"
|
||||
:before-upload="beforeUpload"
|
||||
@change="handleChange"
|
||||
>
|
||||
@@ -93,15 +96,20 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2">确定</button>
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="createEvalText">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
const rowSelection = ref({
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import * as api from "../../api/indexEval";
|
||||
import { message } from "ant-design-vue";
|
||||
// import { toDate } from "../../api/method";
|
||||
const router = useRouter();
|
||||
const rowSelection = ref({
|
||||
checkStrictly: false,
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
console.log(
|
||||
@@ -116,8 +124,13 @@
|
||||
onSelectAll: (selected, selectedRows, changeRows) => {
|
||||
console.log(selected, selectedRows, changeRows);
|
||||
},
|
||||
});
|
||||
export default {
|
||||
});
|
||||
function getBase64(img, callback) {
|
||||
const reader = new FileReader();
|
||||
reader.addEventListener('load', () => callback(reader.result));
|
||||
reader.readAsDataURL(img);
|
||||
}
|
||||
export default {
|
||||
name: "AddEval",
|
||||
// components: {
|
||||
// },
|
||||
@@ -130,28 +143,130 @@
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
inputV1: "",
|
||||
inputV2:"",
|
||||
inputV2: "",
|
||||
time: undefined,
|
||||
endTime: undefined,
|
||||
startTime: undefined,
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:addevalVisible", false);
|
||||
state.inputV1 = "";
|
||||
state.inputV2 = "";
|
||||
state.time = undefined;
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool);
|
||||
};
|
||||
const onChange = () => {
|
||||
state.endTime = state.time[0].$d.toString;
|
||||
state.startTime = state.time[1].$d.toString;
|
||||
}
|
||||
//上传组件
|
||||
const fileList = ref([]);
|
||||
const loading = ref(false);
|
||||
const imageUrl = ref('');
|
||||
|
||||
const handleChange = info => {
|
||||
if (info.file.status === 'uploading') {
|
||||
loading.value = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (info.file.status === 'done') {
|
||||
// Get this url from response in real world.
|
||||
getBase64(info.file.originFileObj, base64Url => {
|
||||
imageUrl.value = base64Url;
|
||||
loading.value = false;
|
||||
});
|
||||
}
|
||||
|
||||
if (info.file.status === 'error') {
|
||||
loading.value = false;
|
||||
message.error('upload error');
|
||||
}
|
||||
}
|
||||
const beforeUpload = file => {
|
||||
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
|
||||
|
||||
if (!isJpgOrPng) {
|
||||
message.error('You can only upload JPG file!');
|
||||
}
|
||||
|
||||
const isLt2M = file.size / 1024 / 1024 < 2;
|
||||
|
||||
if (!isLt2M) {
|
||||
message.error('Image must smaller than 2MB!');
|
||||
}
|
||||
|
||||
return isJpgOrPng && isLt2M;
|
||||
}
|
||||
// const fileUp = () => {
|
||||
// let obj = {
|
||||
// file
|
||||
// }
|
||||
// }
|
||||
//创建测评信息
|
||||
const createEvalText = () => {
|
||||
if (!state.inputV1) return message.info("请输入测评名称");
|
||||
console.log(state.time);
|
||||
console.log(state.time[0]);
|
||||
console.log(state.time[0].$d.toString);
|
||||
console.log(state.time[1].$d.toString);
|
||||
let obj = {
|
||||
evaluationName: state.inputV1,
|
||||
createTime: "",
|
||||
createUser: 0,
|
||||
evaluationEndTime: state.endTime,
|
||||
evaluationFlag: "",
|
||||
evaluationId: "",
|
||||
evaluationPictureAddress: "",
|
||||
evaluationStartTime: state.startTime,
|
||||
evaluationTag: "",
|
||||
evaluationTypeId: 0,
|
||||
evaluationTypeName: "",
|
||||
updateTime: "",
|
||||
updateUser: 0,
|
||||
};
|
||||
api
|
||||
.createEvaluation(obj)
|
||||
.then((res) => {
|
||||
setTimeout(() => {
|
||||
console.log("创建成功", res);
|
||||
message.success("创建成功");
|
||||
console.log(obj);
|
||||
// state.createLoading = false;
|
||||
router.push("/leveladd");
|
||||
// getLearnPath();
|
||||
}, 1000);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("创建失败", err);
|
||||
// state.createLoading = false;
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
rowSelection,
|
||||
createEvalText,
|
||||
onChange,
|
||||
//上传组件
|
||||
fileList,
|
||||
loading,
|
||||
imageUrl,
|
||||
handleChange,
|
||||
beforeUpload,
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.ant-table-striped :deep(.table-striped) td {
|
||||
.ant-table-striped :deep(.table-striped) td {
|
||||
background-color: #fafafa !important;
|
||||
}
|
||||
.addevalDrawer {
|
||||
}
|
||||
.addevalDrawer {
|
||||
.drawerMain {
|
||||
.header {
|
||||
height: 73px;
|
||||
@@ -284,6 +399,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -85,14 +85,18 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2">确定</button>
|
||||
<button class="btn1" @click="closeDrawer">取消</button>
|
||||
<button class="btn2" @click="createInvist">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import * as api from "../../api/indexInvist";
|
||||
import { message } from "ant-design-vue";
|
||||
const router = useRouter();
|
||||
const options1 = ref([
|
||||
{
|
||||
value: "value1",
|
||||
@@ -132,16 +136,56 @@ export default {
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
ctx.emit("update:addinvistVisible", false);
|
||||
state.inputV1 = "";
|
||||
state.textV1 = "";
|
||||
};
|
||||
const afterVisibleChange = (bool) => {
|
||||
console.log("state", bool);
|
||||
};
|
||||
//创建评估信息
|
||||
const createInvist = () => {
|
||||
if (!state.inputV1) return message.info("请输入测评名称");
|
||||
// if (!state.inputV2) return message.info("请选择测评");
|
||||
// if (!state.organizationSelectName) return message.info("请选择归属组织");
|
||||
// state.createLoading = true;
|
||||
let obj = {
|
||||
appraiseName: state.inputV1,
|
||||
appraiseEndTime: "",
|
||||
appraiseExplain: state.textV1,
|
||||
appraiseFlag: "",
|
||||
appraiseId: 0,
|
||||
appraiseStartTime: "",
|
||||
appraiseTag: "",
|
||||
createTime: "",
|
||||
createUser: 0,
|
||||
researchId: 0,
|
||||
researchName: "",
|
||||
updateTime: "",
|
||||
updateUser: 0,
|
||||
};
|
||||
api
|
||||
.createAppraiseMessage(obj)
|
||||
.then((res) => {
|
||||
setTimeout(() => {
|
||||
console.log("创建成功", res);
|
||||
message.success("创建成功");
|
||||
// state.createLoading = false;
|
||||
router.push("/leveladd");
|
||||
// getLearnPath();
|
||||
}, 1000);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log("创建失败", err);
|
||||
// state.createLoading = false;
|
||||
});
|
||||
};
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
rowSelection,
|
||||
options1,
|
||||
createInvist,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- 直播抽屉 -->
|
||||
<template>
|
||||
<a-drawer
|
||||
:visible="addliveVisible"
|
||||
@@ -63,6 +64,8 @@
|
||||
<div class="btnbox">
|
||||
<a-range-picker
|
||||
style="width: 424px"
|
||||
v-model:value="time"
|
||||
format="YYYY-MM-DD HH:MM"
|
||||
:placeholder="[' 开始时间', ' 结束时间']"
|
||||
/>
|
||||
</div>
|
||||
@@ -114,7 +117,7 @@
|
||||
list-type="picture-card"
|
||||
class="avatar-uploader"
|
||||
:show-upload-list="false"
|
||||
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
|
||||
action="/api/file/upload"
|
||||
:before-upload="beforeUpload"
|
||||
@change="handleChange"
|
||||
>
|
||||
@@ -195,18 +198,32 @@
|
||||
<div class="timerbox">
|
||||
<span>开始前:</span>
|
||||
<a-input-number
|
||||
:min="0" :max="30" :precision="0"
|
||||
style="width: 88px; height: 32px;border-radius: 8px;overflow: hidden;"
|
||||
:v-model:value="inputV6"
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="inputV6"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
<div class="timerbox">
|
||||
<span>开始后:</span>
|
||||
<a-input-number
|
||||
:min="0" :max="30" :precision="0"
|
||||
style="width: 88px; height: 32px;border-radius: 8px;overflow: hidden;"
|
||||
:v-model:value="inputV7"
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="inputV7"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px">分钟</span>
|
||||
</div>
|
||||
@@ -218,9 +235,16 @@
|
||||
<div class="timerbox">
|
||||
<span>结束前:</span>
|
||||
<a-input-number
|
||||
:min="0" :max="30" :precision="0"
|
||||
style="width: 88px; height: 32px;border-radius: 8px;overflow: hidden;"
|
||||
:v-model:value="inputV8"
|
||||
:min="0"
|
||||
:max="30"
|
||||
:precision="0"
|
||||
style="
|
||||
width: 88px;
|
||||
height: 32px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
"
|
||||
v-model:value="inputV8"
|
||||
></a-input-number>
|
||||
<span style="color: #999999; margin-left: 8px"
|
||||
>分钟(提前签退则记为早退)</span
|
||||
@@ -235,8 +259,8 @@
|
||||
</div>
|
||||
<div class="btnbox">
|
||||
<a-radio-group v-model:value="radioV1">
|
||||
<a-radio v-model:checked="checked" :value="1" @click="cloradio1">仅签到</a-radio>
|
||||
<a-radio v-model:checked="checked" :value="2" @click="cloradio1"
|
||||
<a-radio :value="1" @click="cloradio1">仅签到</a-radio>
|
||||
<a-radio :value="2" @click="cloradio1"
|
||||
>签到、签退全部完成</a-radio
|
||||
>
|
||||
</a-radio-group>
|
||||
@@ -256,63 +280,65 @@
|
||||
</div>
|
||||
<div class="main_btns">
|
||||
<button class="btn1">取消</button>
|
||||
<button class="btn2">确定</button>
|
||||
<button class="btn2" @click="createLiveBroadcast">确定</button>
|
||||
</div>
|
||||
</div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { reactive, toRefs, ref } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "../../api/indexLiveBroadcast";
|
||||
const options1 = ref([
|
||||
{
|
||||
value: "value1",
|
||||
label: "请选择状态",
|
||||
},
|
||||
]);
|
||||
const columns1 = [
|
||||
{
|
||||
title: "课程编号",
|
||||
width: "20%",
|
||||
dataIndex: "num",
|
||||
key: "num",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "名称",
|
||||
width: "20%",
|
||||
dataIndex: "name",
|
||||
key: "name",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "内容分类",
|
||||
width: "13%",
|
||||
dataIndex: "content",
|
||||
key: "content",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "授课教师",
|
||||
width: "13%",
|
||||
dataIndex: "teacher",
|
||||
key: "teacher",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "创建人",
|
||||
width: "13%",
|
||||
dataIndex: "creator",
|
||||
key: "creator",
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: "完成时间",
|
||||
width: "20%",
|
||||
dataIndex: "time",
|
||||
key: "time",
|
||||
align: "center",
|
||||
},
|
||||
];
|
||||
// const columns1 = [
|
||||
// {
|
||||
// title: "课程编号",
|
||||
// width: "20%",
|
||||
// dataIndex: "num",
|
||||
// key: "num",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "名称",
|
||||
// width: "20%",
|
||||
// dataIndex: "name",
|
||||
// key: "name",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "内容分类",
|
||||
// width: "13%",
|
||||
// dataIndex: "content",
|
||||
// key: "content",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "授课教师",
|
||||
// width: "13%",
|
||||
// dataIndex: "teacher",
|
||||
// key: "teacher",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "创建人",
|
||||
// width: "13%",
|
||||
// dataIndex: "creator",
|
||||
// key: "creator",
|
||||
// align: "center",
|
||||
// },
|
||||
// {
|
||||
// title: "完成时间",
|
||||
// width: "20%",
|
||||
// dataIndex: "time",
|
||||
// key: "time",
|
||||
// align: "center",
|
||||
// },
|
||||
// ];
|
||||
const rowSelection = ref({
|
||||
checkStrictly: false,
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
@@ -427,19 +453,21 @@ export default {
|
||||
currentPage: 1,
|
||||
tableDataTotal: 100,
|
||||
pageSize: 10,
|
||||
inputV1: "",
|
||||
inputV2: "",
|
||||
inputV3: "",
|
||||
inputV4: "",
|
||||
inputV5: "",
|
||||
inputV6: "",
|
||||
inputV7: "",
|
||||
inputV8: "",
|
||||
inputV1: "", //*直播名称
|
||||
time: "", //*直播时间
|
||||
inputV2: "", //*直播时长
|
||||
inputV3: "", //*授课老师
|
||||
fileList: [], //直播封面
|
||||
inputV4: "", //直播链接
|
||||
inputV5: "", //回放链接
|
||||
inputV6: "", //活动开始前多少分钟结束签到
|
||||
inputV7: "", //活动开始后多少分钟结束签到
|
||||
inputV8: "", //结束前多少分钟开始签退
|
||||
textV1: "",
|
||||
radioV1: "",
|
||||
radioV1: "", //标准设置的单选
|
||||
switchC1: "",
|
||||
checkedC1: "",
|
||||
checkedC2: "",
|
||||
checkedC2: true,
|
||||
playback: false,
|
||||
});
|
||||
const closeDrawer = () => {
|
||||
@@ -454,19 +482,72 @@ export default {
|
||||
state.playback = !state.playback;
|
||||
};
|
||||
const cloradio1 = (value) => {
|
||||
if (value != "") {
|
||||
console.log(value.target._value); //点击的选项
|
||||
if (state.radioV1 === value.target._value) {
|
||||
state.radioV1 = "";
|
||||
}
|
||||
};
|
||||
|
||||
//创建直播
|
||||
const createLiveBroadcast = () => {
|
||||
if (!state.inputV1) return message.info("请输入直播名称");
|
||||
if (!state.time) return message.info("请输入直播时间");
|
||||
if (!state.inputV2) return message.info("请输入直播时长");
|
||||
const regular = /^[+]{0,1}(\d+)$/;
|
||||
if (!regular.test(state.inputV2)) {
|
||||
return message.info("直播时长需大于0");
|
||||
}
|
||||
|
||||
// if (!state.inputV3) return message.info("请输入授课老师");
|
||||
let check = state.checkedC2 * 1;
|
||||
let startTime = state.time[0].$d;
|
||||
let endTime = state.time[1].$d;
|
||||
console.log(startTime); //时间需要处理
|
||||
console.log(endTime);
|
||||
let obj = {
|
||||
afterSignIn: state.inputV6,
|
||||
beforeSignIn: state.inputV7,
|
||||
createTime: "",
|
||||
createUser: 0,
|
||||
// liveCover: state.fileList,//直播封面
|
||||
liveDuration: state.inputV2,
|
||||
// liveEndTime: endTime,
|
||||
// liveStartTime: startTime,
|
||||
liveExplain: state.textV1,
|
||||
liveFlag: "",
|
||||
liveId: 0,
|
||||
liveLink: state.inputV4,
|
||||
liveName: state.inputV1,
|
||||
livePlayback: "",
|
||||
livePlaybackLink: state.inputV5,
|
||||
liveTag: "",
|
||||
liveTeacherId: 0,
|
||||
otherSettings: check, //1或0
|
||||
signOutTime: state.inputV8,
|
||||
standardSettings: state.radioV1, //1或2
|
||||
updateTime: "",
|
||||
updateUser: 0,
|
||||
};
|
||||
api
|
||||
.createLiveBroadcast(obj)
|
||||
.then((res) => {
|
||||
console.log(res.data.data, 1111);
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err, 2222);
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
afterVisibleChange,
|
||||
closeDrawer,
|
||||
PlayBack,
|
||||
options1,
|
||||
columns1,
|
||||
// columns1,
|
||||
rowSelection,
|
||||
cloradio1,
|
||||
createLiveBroadcast,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
> -->
|
||||
<div
|
||||
class="items"
|
||||
:class=" isactive == index && isActive == true ? 'active' : '' "
|
||||
:class="isactive == index && isActive == true ? 'active' : ''"
|
||||
@click="changebgc(index)"
|
||||
v-for="( item , index ) in level"
|
||||
v-for="(item, index) in level"
|
||||
:key="item.id"
|
||||
>
|
||||
<div class="items1">
|
||||
@@ -49,7 +49,7 @@
|
||||
centered="true"
|
||||
:footer="null"
|
||||
:closable="clos"
|
||||
wrapClassName="AddLevel"
|
||||
wrapClassName="AddLevell"
|
||||
>
|
||||
<div class="header">
|
||||
<div class="headmain">
|
||||
@@ -1204,7 +1204,7 @@ export default {
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
.AddLevel {
|
||||
.AddLevell {
|
||||
.ant-modal {
|
||||
width: 624px !important;
|
||||
height: 388px !important;
|
||||
@@ -1535,7 +1535,7 @@ export default {
|
||||
}
|
||||
.active {
|
||||
opacity: 1;
|
||||
transition:all .5s;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
border: 1px solid rgba(78, 166, 255, 1);
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
">
|
||||
<a-upload v-model:file-list="fileList" name="file" list-type="picture-card" class="avatar-uploader"
|
||||
@@ -77,8 +78,8 @@
|
||||
<div class="in select">
|
||||
<a-select :getPopupContainer="triggerNode => {
|
||||
return triggerNode.parentNode || document.body
|
||||
}" :value="classifySelect1" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1" allowClear
|
||||
showSearch>
|
||||
}" :value="classifySelect1" placeholder="请选择项目经理" style="width: 100%" :options="classifyList1"
|
||||
@change="classificationChange1" allowClear showSearch>
|
||||
</a-select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -118,7 +119,7 @@
|
||||
<div class="inname">项目级别</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-input v-model:value="valueE" placeholder="集团级/组织级/现地级/部门级" />
|
||||
<a-input v-model:value="valueE1" placeholder="集团级/组织级/现地级/部门级" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
@@ -127,7 +128,7 @@
|
||||
<div class="inname">培训体系</div>
|
||||
</div>
|
||||
<div class="in">
|
||||
<a-input v-model:value="valueE" placeholder="集团级/组织级/现地级/部门级" />
|
||||
<a-input v-model:value="valueE2" placeholder="集团级/组织级/现地级/部门级" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="name">
|
||||
@@ -152,7 +153,7 @@
|
||||
<div>
|
||||
<img v-if="fileList1.length < 6" class="fileimg" src="../../assets/images/projectadd/enclosure.png" />
|
||||
<a-upload :disabled="fileList1.length > 5" :before-upload="beforeUpload1" v-model:file-list="fileList1"
|
||||
name="file" action="/api/file/upload" :headers="headers" @change="handleChange1">
|
||||
@remove="removeFile" name="file" action="/api/file/upload" :headers="headers" @change="handleChange1">
|
||||
<!-- <a-button> -->
|
||||
<!-- <upload-outlined></upload-outlined> -->
|
||||
<span v-if="fileList1.length > 5" class="filetext">上传数量已经达到最大值</span>
|
||||
@@ -196,7 +197,10 @@ export default {
|
||||
classifySelect: null,
|
||||
classifySelectId: null,
|
||||
checked: false,
|
||||
checked1: false
|
||||
checked1: false,
|
||||
valueE: null,
|
||||
valueE1: null,
|
||||
valueE2: null
|
||||
});
|
||||
|
||||
const projectName = ref('');
|
||||
@@ -224,6 +228,7 @@ export default {
|
||||
const fileList1 = ref([]);
|
||||
const loading = ref(false);
|
||||
const imageUrl = ref('');
|
||||
let picUrl = '';
|
||||
|
||||
const handleChange = (info) => {
|
||||
if (info.file.status === 'uploading') {
|
||||
@@ -232,6 +237,7 @@ export default {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
console.log('上传图片返回的信息 %o', info)
|
||||
picUrl = info.file.response.data;
|
||||
// Get this url from response in real world.
|
||||
getBase64(info.file.originFileObj, (base64Url) => {
|
||||
imageUrl.value = base64Url;
|
||||
@@ -246,6 +252,8 @@ export default {
|
||||
|
||||
let uplodaFileCount = false;
|
||||
|
||||
let attach = "";
|
||||
let attachData = "";
|
||||
const handleChange1 = (info) => {
|
||||
if (info.file.status === 'uploading') {
|
||||
loading.value = true;
|
||||
@@ -253,6 +261,19 @@ export default {
|
||||
}
|
||||
if (info.file.status === 'done') {
|
||||
console.log('上传附件返回的信息 %o', info, info.fileList.length, uplodaFileCount)
|
||||
|
||||
let attachStr = "";
|
||||
attachData = info.fileList;
|
||||
for (let i = 0; i < attachData.length; i++) {
|
||||
if (attachData.length - 1 == i) {
|
||||
attachStr += attachData[i].response.data;
|
||||
} else {
|
||||
attachStr += attachData[i].response.data + ',';
|
||||
}
|
||||
}
|
||||
console.log(attachStr)
|
||||
attach = attachStr;
|
||||
|
||||
if (info.fileList.length > 5) {
|
||||
uplodaFileCount = true;
|
||||
} else {
|
||||
@@ -287,12 +308,18 @@ export default {
|
||||
})
|
||||
};
|
||||
|
||||
let beginTime = "";
|
||||
let endTime = "";
|
||||
const onRangeChange = (value, dateString) => {
|
||||
console.log('Selected Time: ', value);
|
||||
// 项目时间选择函数
|
||||
console.log('Formatted Selected Time: ', dateString);
|
||||
console.log('Formatted Selected TimeStamp', new Date(dateString[0]).getTime())
|
||||
beginTime = new Date(dateString[0]).getTime();
|
||||
endTime = new Date(dateString[1]).getTime();
|
||||
};
|
||||
|
||||
|
||||
// 项目经理 后续接口调用
|
||||
const classifyList1 = ref([
|
||||
{ value: 1, label: '李俊国' },
|
||||
@@ -300,22 +327,56 @@ export default {
|
||||
{ value: 3, label: '刘孟君' },
|
||||
]);
|
||||
|
||||
let manager = "";
|
||||
let managerId = "";
|
||||
const classificationChange1 = (key) => {
|
||||
console.log(`selected ${key}`);
|
||||
console.log(classifyList1.value[key - 1].label)
|
||||
manager = String(classifyList1.value[key - 1].label)
|
||||
managerId = String(key)
|
||||
};
|
||||
|
||||
// 资源归属 sourceBelongId 后续给接口
|
||||
|
||||
// 项目说明
|
||||
const remark = ref('');
|
||||
|
||||
|
||||
let courseSyncFlag = 0;
|
||||
const changeChecked = () => {
|
||||
console.log(state.checked)
|
||||
state.checked ? state.checked = false : state.checked = true;
|
||||
courseSyncFlag = state.checked ? 1 : 0;
|
||||
}
|
||||
|
||||
let boeFlag = 0;
|
||||
const changeChecked1 = () => {
|
||||
console.log(state.checked1)
|
||||
state.checked1 ? state.checked1 = false : state.checked1 = true;
|
||||
boeFlag = state.checked1 ? 1 : 0;
|
||||
}
|
||||
|
||||
const removeFile = (file) => {
|
||||
const index = fileList1.value.indexOf(file);
|
||||
const newFileList = fileList1.value.slice();
|
||||
newFileList.splice(index, 1);
|
||||
fileList1.value = newFileList;
|
||||
|
||||
let attachStr = "";
|
||||
if (newFileList.length == 0) {
|
||||
attachStr = "";
|
||||
}
|
||||
for (let i = 0; i < fileList1["value"].length; i++) {
|
||||
console.log(fileList1["value"][i].response.data)
|
||||
if (fileList1["value"].length - 1 == i) {
|
||||
attachStr += fileList1["value"][i].response.data;
|
||||
} else {
|
||||
attachStr += fileList1["value"][i].response.data + ',';
|
||||
}
|
||||
}
|
||||
attach = attachStr;
|
||||
}
|
||||
|
||||
|
||||
const errorMsgs = {
|
||||
"name": "请输入项目名称",
|
||||
"type": "请选择项目分类",
|
||||
@@ -333,31 +394,29 @@ export default {
|
||||
|
||||
const createProject = () => {
|
||||
let obj = {
|
||||
"attach": "1",
|
||||
"beginTime": 0,
|
||||
"boeFlag": 0,
|
||||
"category": 0,
|
||||
"courseSyncFlag": 0,
|
||||
"endTime": 0,
|
||||
"level": 0,
|
||||
"manager": "",
|
||||
"managerId": "",
|
||||
"name": projectName["value"],
|
||||
"type": projectType,
|
||||
"picUrl": picUrl,
|
||||
"beginTime": beginTime,
|
||||
"endTime": endTime,
|
||||
"manager": manager,
|
||||
"managerId": managerId,
|
||||
"sourceBelongId": 11,
|
||||
"remark": remark["value"],
|
||||
"courseSyncFlag": courseSyncFlag,
|
||||
"level": 3,
|
||||
"systemId": 4,
|
||||
"boeFlag": boeFlag,
|
||||
"attach": attach,
|
||||
"templateId": 10,
|
||||
|
||||
"category": 0,
|
||||
"notice": "",
|
||||
"noticeFlag": 0,
|
||||
"parentId": 0,
|
||||
"picUrl": "",
|
||||
"projectId": 0,
|
||||
"remark": remark["value"],
|
||||
"sourceBelongId": 0,
|
||||
"status": 0,
|
||||
"systemId": 0,
|
||||
"templateId": 0,
|
||||
"type": projectType
|
||||
"status": 0
|
||||
}
|
||||
console.log('提交的数据格式 %o', obj)
|
||||
|
||||
for (let i in obj) {
|
||||
for (let i in errorMsgs) {
|
||||
console.log(obj[i])
|
||||
if (obj[i] === "") {
|
||||
message.destroy()
|
||||
@@ -378,6 +437,7 @@ export default {
|
||||
projectName,
|
||||
classifyList,
|
||||
classificationChange,
|
||||
classificationChange1,
|
||||
fileList,
|
||||
fileList1,
|
||||
loading,
|
||||
@@ -392,7 +452,8 @@ export default {
|
||||
changeChecked,
|
||||
changeChecked1,
|
||||
uplodaFileCount,
|
||||
createProject
|
||||
createProject,
|
||||
removeFile
|
||||
};
|
||||
}
|
||||
};
|
||||
@@ -443,6 +504,11 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
// 修改 antd upload 样式
|
||||
.ant-upload {
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user