mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-13 04:46:46 +08:00
feat: 模板列表获取,查看撤回操作,模板详情
This commit is contained in:
@@ -1,10 +0,0 @@
|
||||
import http from "./config";
|
||||
|
||||
// 获取模板库列表
|
||||
export const templateList = obj => http.post('/admin/project/template/list', obj);
|
||||
|
||||
// 获取模板详情
|
||||
export const templateDetail = id => http.get(`/admin/project/template/detail?projectTemplateId=${id}`);
|
||||
|
||||
// 操作模板(撤回,发布,删除)
|
||||
export const templateHadle = obj => http.post(`/admin/project/template/handle`,obj);
|
||||
@@ -14,4 +14,8 @@ export const moveTask = (obj) => http.post('/admin/project/template/moveTask',ob
|
||||
// 新建或编辑阶段
|
||||
export const editStage = (obj) => http.post('/admin/project/template/editStage',obj);
|
||||
// 新建或编辑阶段任务
|
||||
export const editTask = (obj) => http.post('/admin/project/template/editTask',obj);
|
||||
export const editTask = (obj) => http.post('/admin/project/template/editTask',obj);
|
||||
// 操作模板(撤回,发布,删除)
|
||||
export const handleTemplates = (obj) => http.post('/admin/project/template/handle',obj);
|
||||
// 模板库列表
|
||||
export const templateList = (obj) => http.post(`/admin/project/template/list`,obj);
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
<img class="img" src="../../assets/images/projectadd/picture.png" />
|
||||
</div>
|
||||
<div class="imgfor">
|
||||
<div class="forz">管理者进阶-腾飞班1备份</div>
|
||||
<div class="forz">{{projectInfo.name || '-'}}</div>
|
||||
<div class="fort">
|
||||
<div class="fort1">项目经理:黄华、刘俊备份</div>
|
||||
<div class="fort1">项目经理:{{projectInfo.manager || '-'}}</div>
|
||||
<div class="fort2">
|
||||
起止时间:2022-09-21 00:00 至 2022-10-21 00:00
|
||||
起止时间:{{projectInfo.beginTime || '-'}} 至 {{projectInfo.endTime || '-'}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -200,7 +200,7 @@
|
||||
: 'none',
|
||||
}"
|
||||
>
|
||||
<!-- 考勤 -->
|
||||
<!-- 考勤 -->
|
||||
</div>
|
||||
<div
|
||||
class="operation"
|
||||
@@ -278,7 +278,7 @@
|
||||
<hr color="#E8E8E8" />
|
||||
<div class="ntc_body">
|
||||
<div class="ntc_switch">
|
||||
<a-switch v-model:checked="checked" @click="changeopclo" />
|
||||
<a-switch v-model:checked="checked" @click="changeopclo" />
|
||||
<div
|
||||
class="opclo"
|
||||
:style="{ display: hideshow ? 'block' : 'none' }"
|
||||
@@ -385,217 +385,165 @@
|
||||
<div class="split"></div>
|
||||
<a-tabs>
|
||||
<a-tab-pane key="1" tab="编辑">
|
||||
<div class="setting">
|
||||
<div class="set_tit">
|
||||
<span>基本信息</span>
|
||||
<span class="editBtn" @click="toEdit">编辑</span>
|
||||
</div>
|
||||
<hr color="#E8E8E8" />
|
||||
<div class="set_body">
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板名称:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-input
|
||||
v-model:value="formData.name"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
style="width: 300px"
|
||||
></a-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>封面图:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
name="file"
|
||||
action="/api/file/upload"
|
||||
@change="handleChange"
|
||||
:disabled="!isEdit"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/projectadd/picture.png"
|
||||
alt=""
|
||||
/>
|
||||
</a-upload>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板时间:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-range-picker
|
||||
v-model:value="formData.time"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>项目经理:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.manager"
|
||||
mode="multiple"
|
||||
placeholder="请选择项目经理"
|
||||
:size="large"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
style="width: 200px; color: #999999"
|
||||
:options="managerOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>资源归属:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.sourceBelongId"
|
||||
placeholder="请选择资源归属"
|
||||
:size="large"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
style="width: 200px; color: #999999"
|
||||
:options="sourceBelongOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板说明:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-input
|
||||
v-model:value="formData.remark"
|
||||
style="width: 300px"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
></a-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>同步学习记录:</span></div>
|
||||
<div class="setc_main" @click="changecheck2">
|
||||
<a-radio
|
||||
v-model:checked="formData.courseSyncFlag"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
><span style="color: #333333"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-radio
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>项目级别:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.level"
|
||||
placeholder="请选择项目级别"
|
||||
:size="large"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
style="width: 200px; color: #999999"
|
||||
:options="levelOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>培训分类:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.systemId"
|
||||
placeholder="请选择培训分类"
|
||||
:size="large"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
style="width: 200px; color: #999999"
|
||||
:options="systemOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>是否BOEU实施:</span></div>
|
||||
<div class="setc_main" @click="changecheck3">
|
||||
<a-radio
|
||||
v-model:checked="formData.boeFlag"
|
||||
:bordered="isEdit"
|
||||
:disabled="!isEdit"
|
||||
><span style="color: #333333">BOEU实施</span></a-radio
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isEdit" style="transform: translateX(50%)">
|
||||
<a-button
|
||||
@click="cancelEdit"
|
||||
style="background-color: #f9f9f9"
|
||||
>取消</a-button
|
||||
>
|
||||
<a-button
|
||||
@click="confirmEdit"
|
||||
style="background-color: #f5faff"
|
||||
>保存</a-button
|
||||
>
|
||||
</div>
|
||||
<div class="setting">
|
||||
<div class="set_tit">
|
||||
<span>基本信息</span>
|
||||
<span class="editBtn" @click="toEdit">编辑</span>
|
||||
</div>
|
||||
<hr color="#E8E8E8" />
|
||||
<div class="set_body">
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板名称:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-input v-model:value="formData.name"
|
||||
:bordered="isEdit" :disabled="!isEdit"
|
||||
style="width:300px;"
|
||||
></a-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>封面图:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
name="file"
|
||||
action="/api/file/upload"
|
||||
@change="handleChange"
|
||||
:disabled="!isEdit"
|
||||
>
|
||||
<img src="@/assets/images/projectadd/picture.png" alt="" />
|
||||
</a-upload>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板时间:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-range-picker v-model:value="formData.time"
|
||||
|
||||
:bordered="isEdit" :disabled="!isEdit" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>项目经理:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.manager" mode="multiple"
|
||||
placeholder="请选择项目经理"
|
||||
:size="large" :bordered="isEdit" :disabled="!isEdit"
|
||||
style="width: 200px;color: #999999;" :options="managerOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>资源归属:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.sourceBelongId"
|
||||
placeholder="请选择资源归属"
|
||||
:size="large" :bordered="isEdit" :disabled="!isEdit"
|
||||
style="width: 200px;color: #999999;" :options="sourceBelongOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>模板说明:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-input v-model:value="formData.remark"
|
||||
style="width:300px;"
|
||||
:bordered="isEdit" :disabled="!isEdit"
|
||||
></a-input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>同步学习记录:</span></div>
|
||||
<div class="setc_main" @click="changecheck2">
|
||||
<a-radio v-model:checked="formData.courseSyncFlag"
|
||||
:bordered="isEdit" :disabled="!isEdit"
|
||||
><span style="color: #333333"
|
||||
>同步课程学习记录(如学员在课程库中拥有课程的学习记录,自动免修该课程)</span
|
||||
></a-radio
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>项目级别:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.level"
|
||||
placeholder="请选择项目级别"
|
||||
:size="large" :bordered="isEdit" :disabled="!isEdit"
|
||||
style="width: 200px;color: #999999;" :options="levelOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>培训分类:</span></div>
|
||||
<div class="setc_main">
|
||||
<a-select
|
||||
v-model:value="formData.systemId"
|
||||
placeholder="请选择培训分类"
|
||||
:size="large" :bordered="isEdit" :disabled="!isEdit"
|
||||
style="width: 200px;color: #999999;" :options="systemOptions"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="set_content">
|
||||
<div class="setc_name"><span>是否BOEU实施:</span></div>
|
||||
<div class="setc_main" @click="changecheck3">
|
||||
<a-radio v-model:checked="formData.boeFlag"
|
||||
:bordered="isEdit" :disabled="!isEdit"
|
||||
><span style="color: #333333">BOEU实施</span></a-radio
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="isEdit" style="transform: translateX(50%)">
|
||||
<a-button @click="cancelEdit" style="background-color: #f9f9f9">取消</a-button>
|
||||
<a-button @click="confirmEdit" style="background-color: #f5faff">保存</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" tab="共享文档">
|
||||
<div class="sametab">
|
||||
<div class="Gcon">
|
||||
<div class="pad"></div>
|
||||
<div class="Gin">
|
||||
<div class="headone" style="transform: translateX(30px)">
|
||||
<div class="box"></div>
|
||||
<div class="onetitle">上传共享文档</div>
|
||||
<div class="oneedi">
|
||||
<a-switch v-model:checked="docChecked"></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnbox" style="margin: 20px">
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
name="file"
|
||||
action="/api/file/upload"
|
||||
@change="handleChange"
|
||||
>
|
||||
<span
|
||||
class="xkbtn"
|
||||
style="cursor: pointer; font-size: 17px"
|
||||
>上传</span
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/basicinfo/cloud.png"
|
||||
style="cursor: pointer; width: 34px; height: 34px"
|
||||
alt=""
|
||||
/>
|
||||
</a-upload>
|
||||
<div class="btnbox" style="margin: 20px">
|
||||
<span style="color: #999999">
|
||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||
</span>
|
||||
</div>
|
||||
<div
|
||||
v-for="item in docList"
|
||||
:key="item.src"
|
||||
class="docListStyle"
|
||||
>
|
||||
<img
|
||||
src="@/assets/images/basicinfo/download.png"
|
||||
style="
|
||||
cursor: pointer;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 40px;
|
||||
"
|
||||
alt=""
|
||||
/>
|
||||
<span style="font: oblique 16px Sans-serif">{{
|
||||
item.name
|
||||
}}</span>
|
||||
<span style="color: #4ea6ff; float: right">删除</span>
|
||||
</div>
|
||||
<div class="Gcon">
|
||||
<div class="pad"></div>
|
||||
<div class="Gin">
|
||||
<div class="headone" style="transform: translateX(30px)">
|
||||
<div class="box"></div>
|
||||
<div class="onetitle">上传共享文档</div>
|
||||
<div class="oneedi">
|
||||
<a-switch v-model:checked="docChecked" ></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btnbox" style="margin:20px;">
|
||||
<a-upload
|
||||
v-model:file-list="fileList"
|
||||
name="file"
|
||||
action="/api/file/upload"
|
||||
@change="handleChange"
|
||||
>
|
||||
<span class="xkbtn" style="cursor: pointer; font-size: 17px" >上传</span>
|
||||
<img src="@/assets/images/basicinfo/cloud.png" style="cursor: pointer;
|
||||
width:34px;height:34px;
|
||||
" alt="">
|
||||
</a-upload>
|
||||
<div class="btnbox" style="margin:20px;">
|
||||
<span style="color: #999999">
|
||||
支持:pdf.ppt.pptx.doc.docx.xls.xlsx.jpeg.png.gif.zip
|
||||
</span>
|
||||
</div>
|
||||
<div v-for="item in docList" :key="item.src" class="docListStyle">
|
||||
<img src="@/assets/images/basicinfo/download.png" style="cursor: pointer;
|
||||
width:40px;height:40px;margin-right:40px;
|
||||
" alt="">
|
||||
<span style="font: oblique 16px Sans-serif">{{item.name}}</span>
|
||||
<span style="color: #4ea6ff;float:right;">删除</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-tab-pane>
|
||||
@@ -642,9 +590,9 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, reactive, defineComponent, toRefs, onMounted } from "vue";
|
||||
import { ref, reactive, defineComponent, toRefs, onMounted} from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "@/api/indexTemplate";
|
||||
import * as api from "@/api/indexTemplate"
|
||||
import { useRouter } from "vue-router";
|
||||
export default defineComponent({
|
||||
name: "LibraryAdd",
|
||||
@@ -772,27 +720,27 @@ export default defineComponent({
|
||||
},
|
||||
],
|
||||
// 模板编辑列表
|
||||
managerOptions: [
|
||||
{ value: "李俊国" },
|
||||
{ value: "将小米" },
|
||||
{ value: "刘孟君" },
|
||||
managerOptions:[
|
||||
{ value: "李俊国"},
|
||||
{ value: "将小米"},
|
||||
{ value: "刘孟君"},
|
||||
],
|
||||
sourceBelongOptions: [
|
||||
{ value: "项目一" },
|
||||
{ value: "项目二" },
|
||||
{ value: "项目三" },
|
||||
sourceBelongOptions:[
|
||||
{ value: "项目一"},
|
||||
{ value: "项目二"},
|
||||
{ value: "项目三"},
|
||||
],
|
||||
levelOptions: [
|
||||
{ value: "集团级" },
|
||||
{ value: "组织级" },
|
||||
{ value: "现地级" },
|
||||
{ value: "部门级" },
|
||||
levelOptions:[
|
||||
{ value: "集团级"},
|
||||
{ value: "组织级"},
|
||||
{ value: "现地级"},
|
||||
{ value: "部门级"},
|
||||
],
|
||||
systemOptions: [
|
||||
{ value: "集团级" },
|
||||
{ value: "组织级" },
|
||||
{ value: "现地级" },
|
||||
{ value: "部门级" },
|
||||
systemOptions:[
|
||||
{ value: "集团级"},
|
||||
{ value: "组织级"},
|
||||
{ value: "现地级"},
|
||||
{ value: "部门级"},
|
||||
],
|
||||
taskSyllabusActive: 0,
|
||||
//在线管理等页面传递参数
|
||||
@@ -804,7 +752,7 @@ export default defineComponent({
|
||||
checked: true,
|
||||
checked2: false,
|
||||
checked3: false,
|
||||
docChecked: true,
|
||||
docChecked:true,
|
||||
value3: false,
|
||||
value4: false,
|
||||
hideshow: true,
|
||||
@@ -812,22 +760,22 @@ export default defineComponent({
|
||||
score2: 5,
|
||||
edit: true,
|
||||
// 共享文档列表
|
||||
docList: [
|
||||
docList:[
|
||||
{
|
||||
name: "测试文档1.doc",
|
||||
src: "",
|
||||
name:'测试文档1.doc',
|
||||
src:"",
|
||||
},
|
||||
{
|
||||
name: "测试文档2.doc",
|
||||
src: "",
|
||||
name:'测试文档2.doc',
|
||||
src:"",
|
||||
},
|
||||
{
|
||||
name: "测试文档3.doc",
|
||||
src: "",
|
||||
},
|
||||
name:'测试文档3.doc',
|
||||
src:"",
|
||||
}
|
||||
],
|
||||
// 基本信息
|
||||
formData: {
|
||||
formData:{
|
||||
name: "123",
|
||||
time: "",
|
||||
manager: "建国",
|
||||
@@ -838,7 +786,13 @@ export default defineComponent({
|
||||
systemId: null,
|
||||
boeFlag: false,
|
||||
},
|
||||
isEdit: false, // 是否处于编辑状态
|
||||
isEdit:false, // 是否处于编辑状态
|
||||
projectInfo:{
|
||||
beginTime:null,
|
||||
endTime:null,
|
||||
name: null,
|
||||
manager: null,
|
||||
}
|
||||
});
|
||||
const value = ref("");
|
||||
const value2 = ref("");
|
||||
@@ -859,182 +813,153 @@ export default defineComponent({
|
||||
};
|
||||
const confirmEdit = () => {
|
||||
state.isEdit = false;
|
||||
editTemplate();
|
||||
editTemplate()
|
||||
getDetail();
|
||||
};
|
||||
onMounted(() => {
|
||||
getDetail();
|
||||
});
|
||||
onMounted(() => {getDetail()});
|
||||
// 获取详情
|
||||
const getDetail = () => {
|
||||
api
|
||||
.templateDetail(0)
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
state.formData.name = res.data.data.projectInfo.name;
|
||||
state.formData.time =
|
||||
res.data.data.projectInfo.startTime +
|
||||
res.data.data.projectInfo.endTime;
|
||||
state.formData.manager = res.data.data.projectInfo.manager;
|
||||
state.formData.sourceBelongId =
|
||||
res.data.data.projectInfo.sourceBelongId;
|
||||
state.formData.remark = res.data.data.stageList.remark;
|
||||
state.formData.courseSyncFlag =
|
||||
res.data.data.projectInfo.courseSyncFlag;
|
||||
state.formData.level = res.data.data.projectInfo.level;
|
||||
state.formData.systemId = res.data.data.projectInfo.systemId;
|
||||
state.formData.boeFlag = res.data.data.projectInfo.boeFlag;
|
||||
state.value2 = res.data.data.projectInfo.notice;
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("操作失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
api.templateDetail(1).then(res => {
|
||||
console.log(res)
|
||||
state.formData.name = res.data.data.projectInfo.name
|
||||
state.formData.time = res.data.data.projectInfo.startTime+res.data.data.projectInfo.endTime;
|
||||
state.formData.manager = res.data.data.projectInfo.manager
|
||||
state.formData.sourceBelongId = res.data.data.projectInfo.sourceBelongId
|
||||
state.formData.remark = res.data.data.stageList.remark
|
||||
state.formData.courseSyncFlag = res.data.data.projectInfo.courseSyncFlag
|
||||
state.formData.level = res.data.data.projectInfo.level
|
||||
state.formData.systemId = res.data.data.projectInfo.systemId
|
||||
state.formData.boeFlag = res.data.data.projectInfo.boeFlag
|
||||
state.value2 = res.data.data.projectInfo.notice
|
||||
}).catch(err => {
|
||||
message.error("操作失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
// 编辑项目模板
|
||||
const editTemplate = () => {
|
||||
let obj = {
|
||||
beginTime: state.formData.time,
|
||||
boeFlag: state.formData.boeFlag,
|
||||
category: 0,
|
||||
courseSyncFlag: state.formData.courseSyncFlag,
|
||||
endTime: state.formData.time,
|
||||
level: state.formData.level,
|
||||
manager: state.formData.manager,
|
||||
managerId: "",
|
||||
name: state.formData.name,
|
||||
notice: "",
|
||||
noticeFlag: 0,
|
||||
picUrl: "",
|
||||
projectTemplateId: 0,
|
||||
remark: state.formData.remark,
|
||||
sourceBelongId: state.formData.sourceBelongId,
|
||||
status: 0,
|
||||
systemId: state.formData.systemId,
|
||||
"beginTime": state.formData.time,
|
||||
"boeFlag": state.formData.boeFlag,
|
||||
"category": 0,
|
||||
"courseSyncFlag": state.formData.courseSyncFlag,
|
||||
"endTime": state.formData.time,
|
||||
"level": state.formData.level,
|
||||
"manager": state.formData.manager,
|
||||
"managerId": "",
|
||||
"name": state.formData.name,
|
||||
"notice": "",
|
||||
"noticeFlag": 0,
|
||||
"picUrl": "",
|
||||
"projectTemplateId": 0,
|
||||
"remark": state.formData.remark,
|
||||
"sourceBelongId": state.formData.sourceBelongId,
|
||||
"status": 0,
|
||||
"systemId": state.formData.systemId
|
||||
};
|
||||
api
|
||||
.templateEdit(obj)
|
||||
.methods(obj)
|
||||
.then((res) => {
|
||||
message.success("编辑成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("编辑失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
api.templateEdit(obj).methods(obj).then(res => {
|
||||
message.success("编辑成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("编辑失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
// 发布公告
|
||||
const addNotice = () => {
|
||||
let obj = {
|
||||
beginTime: 0,
|
||||
boeFlag: 0,
|
||||
category: 0,
|
||||
courseSyncFlag: 0,
|
||||
endTime: 0,
|
||||
level: 0,
|
||||
manager: "",
|
||||
managerId: "",
|
||||
name: "",
|
||||
notice: state.value2,
|
||||
noticeFlag: 0,
|
||||
picUrl: "",
|
||||
projectTemplateId: 0,
|
||||
remark: "",
|
||||
sourceBelongId: 0,
|
||||
status: 0,
|
||||
systemId: 0,
|
||||
"beginTime": 0,
|
||||
"boeFlag": 0,
|
||||
"category": 0,
|
||||
"courseSyncFlag": 0,
|
||||
"endTime": 0,
|
||||
"level": 0,
|
||||
"manager": "",
|
||||
"managerId": "",
|
||||
"name": "",
|
||||
"notice": state.value2,
|
||||
"noticeFlag": 0,
|
||||
"picUrl": "",
|
||||
"projectTemplateId": 0,
|
||||
"remark": "",
|
||||
"sourceBelongId": 0,
|
||||
"status": 0,
|
||||
"systemId": 0
|
||||
};
|
||||
api
|
||||
.templateEdit(obj)
|
||||
.methods(obj)
|
||||
.then((res) => {
|
||||
message.success("公告发布成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("公告发布失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
api.templateEdit(obj).methods(obj).then(res => {
|
||||
message.success("公告发布成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("公告发布失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
// 删除阶段
|
||||
const stateDel = (id) => {
|
||||
api
|
||||
.deleteStage(id)
|
||||
.then((res) => {
|
||||
message.success("删除阶段成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("删除阶段失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
|
||||
api.deleteStage(id).then(res => {
|
||||
message.success("删除阶段成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("删除阶段失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
|
||||
// 删除任务
|
||||
const taskDel = (id) => {
|
||||
api
|
||||
.deleteTask(id)
|
||||
.then((res) => {
|
||||
message.success("删除任务成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("删除任务失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
api.deleteTask(id).then(res => {
|
||||
message.success("删除任务成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("删除任务失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
const toEdit = () => {
|
||||
routered.push({
|
||||
path: "/manage/templateAdd",
|
||||
query: {
|
||||
projectId: state.projectId,
|
||||
name: state.name,
|
||||
},
|
||||
});
|
||||
};
|
||||
// 新建或编辑阶段
|
||||
const stateEdit = () => {
|
||||
let obj = {
|
||||
name: "",
|
||||
projectTemplateId: 0,
|
||||
remark: "",
|
||||
stageId: 0,
|
||||
};
|
||||
api
|
||||
.editStagek(obj)
|
||||
.then((res) => {
|
||||
message.success("编辑阶段成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("编辑阶段失败" + err);
|
||||
console.log(err);
|
||||
path: "/templateAdd",
|
||||
query: {
|
||||
projectId: state.projectId,
|
||||
name: state.name,
|
||||
},
|
||||
});
|
||||
};
|
||||
}
|
||||
// 新建或编辑阶段
|
||||
const stateEdit = () => {
|
||||
let obj={
|
||||
"name": "",
|
||||
"projectTemplateId": 0,
|
||||
"remark": "",
|
||||
"stageId": 0
|
||||
}
|
||||
api.editStagek(obj).then(res => {
|
||||
message.success("编辑阶段成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("编辑阶段失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
//新建或编辑阶段任务
|
||||
const taskEdit = () => {
|
||||
let obj = {
|
||||
courseId: 0,
|
||||
duration: 0,
|
||||
flag: true,
|
||||
name: "",
|
||||
projectTaskId: 0,
|
||||
projectTemplateId: 0,
|
||||
stageId: 0,
|
||||
type: 0,
|
||||
};
|
||||
api
|
||||
.editTask(obj)
|
||||
.then((res) => {
|
||||
message.success("编辑任务成功");
|
||||
console.log(res);
|
||||
})
|
||||
.catch((err) => {
|
||||
message.error("编辑任务失败" + err);
|
||||
console.log(err);
|
||||
});
|
||||
};
|
||||
"courseId": 0,
|
||||
"duration": 0,
|
||||
"flag": true,
|
||||
"name": "",
|
||||
"projectTaskId": 0,
|
||||
"projectTemplateId": 0,
|
||||
"stageId": 0,
|
||||
"type": 0
|
||||
}
|
||||
api.editTask(obj).then(res => {
|
||||
message.success("编辑任务成功")
|
||||
console.log(res)
|
||||
}).catch(err => {
|
||||
message.error("编辑任务失败"+err)
|
||||
console.log(err)
|
||||
})
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
value,
|
||||
@@ -1063,11 +988,11 @@ export default defineComponent({
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.editBtn {
|
||||
float: right;
|
||||
margin-right: 150px;
|
||||
color: #4ea6ff;
|
||||
cursor: pointer;
|
||||
}
|
||||
float:right;
|
||||
margin-right: 150px;
|
||||
color:#4ea6ff;
|
||||
cursor: pointer;
|
||||
}
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
@@ -1110,7 +1035,7 @@ export default defineComponent({
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 1030px) {
|
||||
.imgfor {
|
||||
margin-left: 20px;
|
||||
@@ -1237,15 +1162,15 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
.split {
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
background-color: #edf0f5;
|
||||
}
|
||||
.docListStyle {
|
||||
display: flex;
|
||||
width: 300px !important;
|
||||
justify-content: space-around;
|
||||
}
|
||||
width: 100%;
|
||||
height: 20px;
|
||||
background-color: #edf0f5;
|
||||
}
|
||||
.docListStyle {
|
||||
display: flex;
|
||||
width: 300px !important;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.taskBox {
|
||||
.onerow {
|
||||
//width: 100%;
|
||||
@@ -1474,12 +1399,14 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
.notice {
|
||||
|
||||
.ntc_tit {
|
||||
padding-top: 22px;
|
||||
padding-top:22px;
|
||||
margin-left: 34px;
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
color: #232425;
|
||||
|
||||
}
|
||||
.ntc_body {
|
||||
margin-left: 34px;
|
||||
@@ -1501,6 +1428,7 @@ export default defineComponent({
|
||||
.btnarea {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
|
||||
}
|
||||
.area_btn {
|
||||
width: 100px;
|
||||
@@ -1535,7 +1463,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
.projectscore {
|
||||
padding-top: 22px;
|
||||
padding-top:22px;
|
||||
.pjc_tit {
|
||||
margin-left: 34px;
|
||||
font-size: 18px;
|
||||
@@ -1614,7 +1542,7 @@ export default defineComponent({
|
||||
}
|
||||
|
||||
.setting {
|
||||
padding-top: 22px;
|
||||
padding-top:22px;
|
||||
.set_tit {
|
||||
margin-left: 34px;
|
||||
font-size: 18px;
|
||||
|
||||
@@ -6,30 +6,21 @@
|
||||
<div class="inpbox">
|
||||
<div class="inpbox1">
|
||||
<span>模版名称:</span>
|
||||
<a-input
|
||||
v-model:value="value1"
|
||||
style="
|
||||
<a-input v-model:value="value1" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
"
|
||||
placeholder="请输入项目名称"
|
||||
/>
|
||||
" placeholder="请输入项目名称" />
|
||||
</div>
|
||||
<div class="inpbox1">
|
||||
<span>创建时间:</span>
|
||||
<a-date-picker
|
||||
v-model="selectTime"
|
||||
type="date"
|
||||
placeholder="创建时间"
|
||||
style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
"
|
||||
/>
|
||||
<a-date-picker v-model="selectTime" type="date" placeholder="创建时间" style="
|
||||
width: 270px;
|
||||
height: 40px;
|
||||
border-radius: 8px;
|
||||
margin-right: 14px;
|
||||
" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -46,14 +37,8 @@
|
||||
</div>
|
||||
<div class="tmpl_body">
|
||||
<div class="tmpl_tabbox">
|
||||
<a-table
|
||||
:columns="columns1"
|
||||
:data-source="tableData1"
|
||||
:loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true"
|
||||
@expand="expandTable"
|
||||
:pagination="false"
|
||||
/>
|
||||
<a-table :columns="columns1" :data-source="tableData1" :loading="tableDataTotal === -1 ? true : false"
|
||||
expandRowByClick="true" @expand="expandTable" :pagination="pagination" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -62,7 +47,7 @@
|
||||
<script>
|
||||
import { reactive, defineComponent, toRefs, onMounted } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import * as api from "@/api/indexLibrary";
|
||||
import * as api from "@/api/indexTemplate"
|
||||
const columns1 = [
|
||||
{
|
||||
title: "模版名称",
|
||||
@@ -115,6 +100,7 @@ export default defineComponent({
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
projectTemplateId: 1,
|
||||
},
|
||||
{
|
||||
key: "2",
|
||||
@@ -123,9 +109,9 @@ export default defineComponent({
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
},
|
||||
projectTemplateId: 2,
|
||||
}
|
||||
],
|
||||
// state
|
||||
});
|
||||
const getTableDate1 = () => {
|
||||
let data = state.tableData1;
|
||||
@@ -146,17 +132,9 @@ export default defineComponent({
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="ops3">
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
templateHadler({
|
||||
projectTemplateId: value.projectTemplateId,
|
||||
type: 0,
|
||||
});
|
||||
}}
|
||||
>
|
||||
撤回
|
||||
</div>
|
||||
<div class="jc"
|
||||
onClick={() => { templateHadler({ "projectTemplateId": value.projectTemplateId, "type": 0 }) }}
|
||||
>撤回</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
@@ -165,15 +143,8 @@ export default defineComponent({
|
||||
{value.status === "未发布" ? (
|
||||
<div class="nselect">
|
||||
<div class="ops1">
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
templateHadler({
|
||||
projectTemplateId: value.projectTemplateId,
|
||||
type: 1,
|
||||
});
|
||||
}}
|
||||
>
|
||||
<div class="jc"
|
||||
onClick={() => { templateHadler({ "projectTemplateId": value.projectTemplateId, "type": 1 }) }}>
|
||||
发布
|
||||
<span style="color:#E9E9E9;margin-left:15px;">|</span>
|
||||
</div>
|
||||
@@ -187,17 +158,9 @@ export default defineComponent({
|
||||
</router-link>
|
||||
</div>
|
||||
<div class="ops3">
|
||||
<div
|
||||
class="jc"
|
||||
onClick={() => {
|
||||
templateHadler({
|
||||
projectTemplateId: value.projectTemplateId,
|
||||
type: -1,
|
||||
});
|
||||
}}
|
||||
>
|
||||
删除
|
||||
</div>
|
||||
<div class="jc"
|
||||
onClick={() => { templateHadler({ "projectTemplateId": value.projectTemplateId, "type": -1 }) }}
|
||||
>删除</div>
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
@@ -210,67 +173,86 @@ export default defineComponent({
|
||||
});
|
||||
state.tableData = data;
|
||||
};
|
||||
const pagination = reactive({
|
||||
current: 1,
|
||||
total: 50,
|
||||
defaultPageSize: 10,
|
||||
onChange: (id) => { pagination.current = id; getLibraryList() },
|
||||
})
|
||||
getTableDate1();
|
||||
|
||||
onMounted(() => {
|
||||
getLibraryList();
|
||||
});
|
||||
})
|
||||
|
||||
// 获取模板列表
|
||||
const getLibraryList = () => {
|
||||
let obj = {
|
||||
beginTime: 0,
|
||||
endTime: 0,
|
||||
name: "",
|
||||
pageNo: 0,
|
||||
pageSize: 0,
|
||||
status: 0,
|
||||
};
|
||||
api
|
||||
.templateList(obj)
|
||||
.then((res) => {
|
||||
console.log(res);
|
||||
let resData = res.data.data.rows;
|
||||
if (resData.length) {
|
||||
for (let i in resData) {
|
||||
state.tableData1[i].id = i + 1;
|
||||
state.tableData1[i].projectTemplateId =
|
||||
resData[i].projectTemplateId;
|
||||
state.tableData1[i].status = resData[i].status
|
||||
? "已发布"
|
||||
: "未发布";
|
||||
state.tableData1[i].name = resData[i].name;
|
||||
state.tableData1[i].creator = resData[i].createName;
|
||||
state.tableData1[i].stutime = resData[i].publishTime;
|
||||
state.tableData1[i].operation = "operation";
|
||||
}
|
||||
} else {
|
||||
message.warning("获取的列表数据为空值");
|
||||
"beginTime": 0,
|
||||
"endTime": 0,
|
||||
"name": "",
|
||||
"pageNo": pagination.current,
|
||||
"pageSize": 10,
|
||||
"status": 0 || 1
|
||||
}
|
||||
api.templateList(obj).then((res) => {
|
||||
console.log(res);
|
||||
let resData = res.data.data.rows
|
||||
if (resData.length) {
|
||||
for (let i in resData) {
|
||||
state.tableData1[i].id = i + 1;
|
||||
state.tableData1[i].projectTemplateId = resData[i].projectTemplateId;
|
||||
state.tableData1[i].status = resData[i].status ? "已发布" : "未发布";
|
||||
state.tableData1[i].name = resData[i].name;
|
||||
state.tableData1[i].creator = resData[i].createName;
|
||||
state.tableData1[i].stutime = resData[i].publishTime;
|
||||
state.tableData1[i].operation = "operation";
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
message.error(`获取模板列表失败` + error);
|
||||
});
|
||||
|
||||
} else {
|
||||
message.warning("获取的列表数据为空值")
|
||||
}
|
||||
}).catch((error) => {
|
||||
message.error(`获取模板列表失败` + error)
|
||||
});
|
||||
};
|
||||
const templateHadler = (obj) => {
|
||||
api
|
||||
.templateHadle(obj)
|
||||
.then((res) => {
|
||||
if (res.data.success) {
|
||||
message.success(`模板操作成功`);
|
||||
getLibraryList();
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
message.error(`模板操作失败` + error);
|
||||
});
|
||||
};
|
||||
api.handleTemplates(obj).then((res) => {
|
||||
if (res.data.success) {
|
||||
message.success(`模板${obj.type == 1 ? '发布' : obj.type == 0 ? '撤回' : '删除'}成功`)
|
||||
getLibraryList();
|
||||
}
|
||||
}).catch((error) => {
|
||||
message.error(`模板${obj.type == 1 ? '发布' : obj.type == 0 ? '撤回' : '删除'}失败` + error)
|
||||
})
|
||||
}
|
||||
const searchLevel = () => {
|
||||
const result = state.tableData1.filter(
|
||||
(item) => item.name == state.value1
|
||||
);
|
||||
state.tableData1 = [
|
||||
{
|
||||
key: "1",
|
||||
name: "测试模板1",
|
||||
status: "已发布",
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
projectTemplateId: 1,
|
||||
},
|
||||
{
|
||||
key: "2",
|
||||
name: "测试模板2",
|
||||
status: "未发布",
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
projectTemplateId: 2,
|
||||
}
|
||||
];
|
||||
const result = state.tableData1.filter(item => item.name.includes(state.value1))
|
||||
state.tableData1 = result;
|
||||
getTableDate1()
|
||||
};
|
||||
const resetLevel = () => {
|
||||
state.value1 = "";
|
||||
state.value1 = '';
|
||||
// getLibraryList();
|
||||
state.tableData1 = [
|
||||
{
|
||||
@@ -280,6 +262,7 @@ export default defineComponent({
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
projectTemplateId: 1,
|
||||
},
|
||||
{
|
||||
key: "2",
|
||||
@@ -288,8 +271,10 @@ export default defineComponent({
|
||||
creator: "李部长",
|
||||
stutime: "2022-10-31 23:12:00",
|
||||
operation: "operation",
|
||||
},
|
||||
];
|
||||
projectTemplateId: 2,
|
||||
}
|
||||
]
|
||||
getTableDate1()
|
||||
};
|
||||
|
||||
return {
|
||||
@@ -298,6 +283,7 @@ export default defineComponent({
|
||||
templateHadler,
|
||||
searchLevel,
|
||||
resetLevel,
|
||||
pagination,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -305,8 +291,10 @@ export default defineComponent({
|
||||
<style lang="scss">
|
||||
.templatelibrary {
|
||||
width: 100%;
|
||||
|
||||
.tmpl {
|
||||
width: 100%;
|
||||
|
||||
.tmpl_header {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
@@ -315,25 +303,30 @@ export default defineComponent({
|
||||
|
||||
margin-left: 32px;
|
||||
margin-right: 32px;
|
||||
|
||||
.tmplh_inp {
|
||||
.inpbox {
|
||||
display: flex;
|
||||
margin-top: 32px;
|
||||
|
||||
.inpbox1 {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: 24px;
|
||||
|
||||
span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tmplh_btn {
|
||||
display: flex;
|
||||
margin-left: 38px;
|
||||
margin-top: 32px;
|
||||
|
||||
.btn {
|
||||
padding: 0px 26px 0px 26px;
|
||||
height: 38px;
|
||||
@@ -344,72 +337,90 @@ export default defineComponent({
|
||||
margin-left: 14px;
|
||||
cursor: pointer;
|
||||
flex-shrink: 0;
|
||||
|
||||
.search {
|
||||
background-size: 100%;
|
||||
}
|
||||
|
||||
.btnText {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 36px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.btnText1 {
|
||||
color: rgb(255, 255, 255);
|
||||
}
|
||||
|
||||
.btnText2 {
|
||||
color: rgba(64, 158, 255, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.btn1 {
|
||||
background: #409eff;
|
||||
|
||||
.search {
|
||||
width: 15px;
|
||||
height: 17px;
|
||||
background-image: url("../../assets/images/courseManage/search0.png");
|
||||
}
|
||||
}
|
||||
|
||||
.btn2 {
|
||||
background: #ffffff;
|
||||
border: 1px solid #388be1;
|
||||
|
||||
.search {
|
||||
width: 16px;
|
||||
height: 18px;
|
||||
background-image: url("../../assets/images/courseManage/reset1.png");
|
||||
}
|
||||
}
|
||||
|
||||
.btn1:hover {
|
||||
background: rgb(255, 255, 255);
|
||||
border: 1px solid #388be1;
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/search1.png");
|
||||
}
|
||||
|
||||
.btnText {
|
||||
color: rgba(64, 158, 255, 1);
|
||||
}
|
||||
}
|
||||
|
||||
.btn2:hover {
|
||||
background: rgba(64, 158, 255, 1);
|
||||
|
||||
.search {
|
||||
background-image: url("../../assets/images/courseManage/reset0.png");
|
||||
}
|
||||
|
||||
.btnText {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tmpl_body {
|
||||
padding: 0px 30px;
|
||||
|
||||
.tmpl_tabbox {
|
||||
.operation {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #4ea6ff;
|
||||
|
||||
.nselect {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
|
||||
.jc {
|
||||
margin-left: 20px;
|
||||
white-space: nowrap;
|
||||
|
||||
Reference in New Issue
Block a user