This commit is contained in:
闫晓茹 2023-05-05 16:37:05 +08:00
parent d6936c6254
commit a1db8818c3
3 changed files with 297 additions and 100 deletions

View File

@ -58,6 +58,12 @@ export function updateTrainingItem(data) {
data: data
})
}
export function selectSubordinateItem(trainingParentId) {
return request({
url: `/system/trainingItem/selectSubordinateItem?trainingParentId=${trainingParentId}`,
method: 'get',
})
}
// 删除学习培训项目信息
export function delTrainingItem(id) {

View File

@ -317,6 +317,11 @@ export default {
value: "HEALTH_NOUS",
label: "健康常识",
},
{
value: "NURSING_NEWS",
label: "护理新闻",
}
],
value: "",
//

View File

@ -40,8 +40,16 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item>
</el-form>
@ -54,7 +62,8 @@
size="mini"
@click="handleAdd"
v-hasPermi="['system:trainingItem:add']"
>新增</el-button>
>新增</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -65,7 +74,8 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:trainingItem:edit']"
>修改</el-button>
>修改</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -76,7 +86,8 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:trainingItem:remove']"
>删除</el-button>
>删除</el-button
>
</el-col>
<!-- <el-col :span="1.5">
<el-button
@ -89,33 +100,132 @@
>导出</el-button
>
</el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table
v-loading="loading"
:data="trainingItemList"
highlight-current-row
@selection-change="handleSelectionChange"
@expand-change="info"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="学习培训课程组名称" align="center" prop="trainingParentName" />
<el-table-column label="培训课程编号" align="center" prop="trainingItemCode" />
<el-table-column property="trainingItemTitle" label="培训课程名称" align="center" />
<el-table-column label="培训课程价格" align="center" prop="trainingItemPrice" />
<el-table-column label="培训课程类型" align="center" prop="trainingItemType">
<el-table-column type="expand">
<template slot-scope="props">
<el-table
:data="props.row.selectSubordinateItemlist"
style="width: 100%; padding-left: 120px"
>
<el-table-column
prop="trainingParentName"
label="培训课程组名称"
width="180"
>
</el-table-column>
<el-table-column
prop="trainingItemCode"
label="培训课程编号"
width="180"
>
</el-table-column>
<el-table-column
prop="trainingItemTitle"
label="培训课程名称"
width="180"
>
</el-table-column>
<el-table-column
prop="trainingItemType"
label="培训课程类型"
width="180"
>
<template slot-scope="scope">
{{
scope.row.trainingItemType == "VIDEO_LEARNING"
? "视频学习"
: ""
}}
{{
scope.row.trainingItemType == "GRAPHIC_LEARNING"
? "图文学习"
: ""
}}
{{
scope.row.trainingItemType == "LIVE_COURSES" ? "直播课程" : ""
}}
{{
scope.row.trainingItemType == "OFFLINE_TRAINING"
? "线下培训"
: ""
}}
{{
scope.row.trainingItemType == "LEARNING_ITEM_GROUP"
? "学习培训课程组"
: ""
}}
</template>
</el-table-column>
<el-table-column
prop="trainingShelfFlag"
label="上架状态"
width="180"
>
<template slot-scope="scope">
{{ scope.row.trainingShelfFlag == 1 ? "已下架" : "" }}
{{ scope.row.trainingShelfFlag == 0 ? "已上架" : "" }}
</template>
</el-table-column>
<el-table-column
prop="trainingItemSort"
label="培训课程排序"
width="180"
>
</el-table-column>
</el-table>
</template>
</el-table-column>
<el-table-column
label="学习培训课程组名称"
align="center"
prop="trainingParentName"
/>
<el-table-column
label="培训课程编号"
align="center"
prop="trainingItemCode"
/>
<el-table-column
property="trainingItemTitle"
label="培训课程名称"
align="center"
/>
<el-table-column
label="培训课程价格"
align="center"
prop="trainingItemPrice"
/>
<el-table-column
label="培训课程类型"
align="center"
prop="trainingItemType"
>
<template slot-scope="scope">
{{ scope.row.trainingItemType == "VIDEO_LEARNING" ? "视频学习" : "" }}
{{
scope.row.trainingItemType == "GRAPHIC_LEARNING" ? "图文学习" : ""
scope.row.trainingItemType == "GRAPHIC_LEARNING" ? "图文学习" : ""
}}
{{ scope.row.trainingItemType == "LIVE_COURSES" ? "直播课程" : "" }}
{{
scope.row.trainingItemType == "OFFLINE_TRAINING" ? "线下培训" : ""
scope.row.trainingItemType == "OFFLINE_TRAINING" ? "线下培训" : ""
}}
{{
scope.row.trainingItemType == "LEARNING_ITEM_GROUP"
? "学习培训课程组"
: ""
scope.row.trainingItemType == "LEARNING_ITEM_GROUP"
? "学习培训课程组"
: ""
}}
</template>
</el-table-column>
@ -156,8 +266,16 @@
width="180"
>
</el-table-column>-->
<el-table-column label="培训课程排序" align="center" prop="trainingItemSort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
label="培训课程排序"
align="center"
prop="trainingItemSort"
/>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
@ -165,14 +283,16 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:trainingItem:edit']"
>修改</el-button>
>修改</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:trainingItem:remove']"
>删除</el-button>
>删除</el-button
>
</template>
</el-table-column>
</el-table>
@ -199,14 +319,22 @@
label-width="80px"
:inline="true"
>
<el-form-item label="分类编码" prop="trainingItemCode" label-width="120">
<el-form-item
label="分类编码"
prop="trainingItemCode"
label-width="120"
>
<el-input
v-model="trainingParentqueryParams.trainingItemCode"
placeholder="请输入分类编码"
clearable
/>
</el-form-item>
<el-form-item label="培训课程组名称" prop="trainingParentName" label-width="120">
<el-form-item
label="培训课程组名称"
prop="trainingParentName"
label-width="120"
>
<el-input
v-model="trainingParentqueryParams.trainingParentName"
placeholder="请输入培训课程组名称"
@ -214,8 +342,16 @@
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="trainingParentinfo">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuerylist">重置</el-button>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="trainingParentinfo"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuerylist"
>重置</el-button
>
</el-form-item>
</el-form>
@ -247,8 +383,16 @@
align="center"
:show-overflow-tooltip="true"
></el-table-column>
<el-table-column property="trainingItemCode" label="培训分类编码" align="center"></el-table-column>
<el-table-column property="trainingItemPrice" label="价格" align="center"></el-table-column>
<el-table-column
property="trainingItemCode"
label="培训分类编码"
align="center"
></el-table-column>
<el-table-column
property="trainingItemPrice"
label="价格"
align="center"
></el-table-column>
<!-- <el-table-column
property="trainingItemType"
@ -388,7 +532,13 @@
width="1300px"
append-to-body
>
<el-form ref="form" :model="form" :rules="rules" label-width="140px" :inline="true">
<el-form
ref="form"
:model="form"
:rules="rules"
label-width="140px"
:inline="true"
>
<el-form-item label="培训课程名称" prop="trainingItemTitle">
<el-input
style="width: 250px"
@ -432,7 +582,8 @@
color: #c0c4cc;
overflow: hidden;
"
>{{ form.trainingParentName }}</el-button>
>{{ form.trainingParentName }}</el-button
>
<el-button
@click="trainingParentitem()"
type
@ -444,7 +595,8 @@
padding-left: -10px;
overflow: hidden;
"
>{{ form.trainingParentName }}</el-button>
>{{ form.trainingParentName }}</el-button
>
</el-form-item>
<!-- <el-form-item
label="所属培训课程分类"
@ -496,7 +648,12 @@
</el-form-item>
<el-form-item label="是否可以购买" prop="buyFlag">
<el-select v-model="form.buyFlag" placeholder="请选择" clearable style="width: 250px">
<el-select
v-model="form.buyFlag"
placeholder="请选择"
clearable
style="width: 250px"
>
<el-option
v-for="item in option"
:key="item.value"
@ -644,14 +801,21 @@
prop="trainingItemAddress"
v-if="form.trainingItemType == 'OFFLINE_TRAINING'"
>
<el-input v-model="form.trainingItemAddress" placeholder="请输入培训课程地址" />
<el-input
v-model="form.trainingItemAddress"
placeholder="请输入培训课程地址"
/>
</el-form-item>
<el-form-item
label="报名须知"
prop="trainingItemNotes"
v-if="form.trainingItemType == 'OFFLINE_TRAINING'"
>
<el-input style="width: 250px" v-model="form.trainingItemNotes" placeholder="请输入报名须知" />
<el-input
style="width: 250px"
v-model="form.trainingItemNotes"
placeholder="请输入报名须知"
/>
</el-form-item>
<el-table
v-if="form.trainingItemType == 'VIDEO_LEARNING'"
@ -771,8 +935,15 @@
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="addPictureUrl">新增</el-button>
<el-button size="mini" type="text" @click="delPictureUrl(scope.row)">删除</el-button>
<el-button size="mini" type="text" @click="addPictureUrl"
>新增</el-button
>
<el-button
size="mini"
type="text"
@click="delPictureUrl(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
@ -789,12 +960,13 @@
import {
listTrainingItem,
listTrainingCategory,
selectSubordinateItem,
selectTrainingParent,
getTrainingItem,
delTrainingItem,
addTrainingItem,
updateTrainingItem,
updateTrainingShelfFlag
updateTrainingShelfFlag,
} from "@/api/system/trainingItem";
import trainingAvatar from "../trainingAvatar/index.vue";
import stationAcatar from "../stationAvatar/index.vue";
@ -815,38 +987,38 @@ export default {
pageNum: 1,
pageSize: 10,
trainingItemCode: "",
trainingParentName: ""
trainingParentName: "",
},
trainingCategoryqueryParams: {
pageNum: 1,
pageSize: 10,
trainingCategoryCode: "",
trainingCategoryName: ""
trainingCategoryName: "",
},
option: [
{
value: 0,
label: "是"
label: "是",
},
{
value: 1,
label: "否"
}
label: "否",
},
],
value: "",
options: [
{
value: "GRAPHIC_LEARNING",
label: "图文学习"
label: "图文学习",
},
{
value: "LEARNING_ITEM_GROUP",
label: "学习培训课程组"
label: "学习培训课程组",
},
{
value: "VIDEO_LEARNING",
label: "视频学习"
}
label: "视频学习",
},
// {
// value: "LIVE_COURSES",
// label: "",
@ -892,7 +1064,7 @@ export default {
trainingItemEndTime: null,
trainingItemAddress: null,
trainingItemNotes: null,
trainingItemSort: null
trainingItemSort: null,
},
//
form: {
@ -902,9 +1074,9 @@ export default {
itemDirectoryTitle: null,
itemDirectoryUrl: null,
itemDirectoryIntroduce: null,
itemDirectorySort: null
}
]
itemDirectorySort: null,
},
],
},
imgtwo: "",
imgone: "",
@ -921,7 +1093,7 @@ export default {
// { required: true, message: "", trigger: "blur" },
// ],
trainingItemTitle: [
{ required: true, message: "请输入培训课程名称", trigger: "blur" }
{ required: true, message: "请输入培训课程名称", trigger: "blur" },
],
// trainingItemPrice: [
// { required: true, message: "", trigger: "blur" },
@ -941,44 +1113,55 @@ export default {
// },
// ],
trainingItemType: [
{ required: true, message: "请选择培训课程类型", trigger: "blur" }
{ required: true, message: "请选择培训课程类型", trigger: "blur" },
],
trainingItemDetails: [
{ required: true, message: "请输入培训课程详情", trigger: "blur" }
{ required: true, message: "请输入培训课程详情", trigger: "blur" },
],
trainingItemContent: [
{ required: true, message: "请输入培训课程内容", trigger: "blur" }
{ required: true, message: "请输入培训课程内容", trigger: "blur" },
],
trainingItemDate: [
{ required: true, message: "请输入培训课程日期", trigger: "blur" }
{ required: true, message: "请输入培训课程日期", trigger: "blur" },
],
trainingItemStartTime: [
{
required: true,
message: "请输入培训课程开始时间",
trigger: "blur"
}
trigger: "blur",
},
],
trainingItemEndTime: [
{
required: true,
message: "请输入培训课程结束时间",
trigger: "blur"
}
trigger: "blur",
},
],
trainingItemAddress: [
{ required: true, message: "请输入培训课程地址", trigger: "blur" }
]
{ required: true, message: "请输入培训课程地址", trigger: "blur" },
],
// trainingItemSort: [
// { required: true, message: "", trigger: "blur" },
// ],
}
},
};
},
created() {
this.getList();
},
methods: {
info(row) {
if (!row.expand) {
//
var trainingParentId = row.id;
selectSubordinateItem(trainingParentId).then((response) => {
row.selectSubordinateItemlist = response.data;
this.loading = false;
row.expand = true; //
});
}
},
/**只能输入数字且有小数点最多保留两位*/
checkPrice() {
let checkPlan = "" + this.form.trainingItemPrice;
@ -1006,7 +1189,7 @@ export default {
itemDirectoryUrl: null,
itemDirectoryIntroduce: null,
itemDirectorySort: null,
idd: this.idd
idd: this.idd,
};
if (this.form.trainingItemDirectoryList.length >= 5) {
this.$message.error("最多新增5条");
@ -1021,17 +1204,19 @@ export default {
if (this.form.trainingItemDirectoryList.length == 1) {
this.$message.error("最后一条不可删除");
} else {
this.form.trainingItemDirectoryList = this.form.trainingItemDirectoryList.filter(
e => e.idd != item.idd
);
this.form.trainingItemDirectoryList =
this.form.trainingItemDirectoryList.filter(
(e) => e.idd != item.idd
);
}
} else if (!item.idd && item.trainingItemDirectoryId) {
if (this.form.trainingItemDirectoryList.length == 1) {
this.$message.error("最后一条不可删除");
} else {
this.form.trainingItemDirectoryList = this.form.trainingItemDirectoryList.filter(
e => e.trainingItemDirectoryId != item.trainingItemDirectoryId
);
this.form.trainingItemDirectoryList =
this.form.trainingItemDirectoryList.filter(
(e) => e.trainingItemDirectoryId != item.trainingItemDirectoryId
);
}
}
console.log(this.form.trainingItemDirectoryList);
@ -1040,13 +1225,13 @@ export default {
itemDirectoryUrl(item) {
let items = JSON.parse(item);
if (items.idd && !items.trainingItemDirectoryId) {
this.form.trainingItemDirectoryList.forEach(e => {
this.form.trainingItemDirectoryList.forEach((e) => {
if (e.idd == items.idd) {
e.itemDirectoryUrl = items.itemDirectoryUrl;
}
});
} else if (!items.idd && items.attributeDetailsId) {
this.form.trainingItemDirectoryList.forEach(e => {
this.form.trainingItemDirectoryList.forEach((e) => {
if (e.attributeDetailsId == items.attributeDetailsId) {
e.itemDirectoryUrl = items.itemDirectoryUrl;
}
@ -1054,7 +1239,6 @@ export default {
}
},
imgs(item) {
console.log(item);
this.imgsurl.pictureUrlList.push(item);
},
//
@ -1073,7 +1257,7 @@ export default {
pageNum: 1,
pageSize: 10,
trainingCategoryCode: "",
trainingParentName: ""
trainingParentName: "",
};
this.trainingParentinfo();
},
@ -1117,7 +1301,7 @@ export default {
//
trainingParentinfo() {
this.loading = true;
selectTrainingParent(this.trainingParentqueryParams).then(response => {
selectTrainingParent(this.trainingParentqueryParams).then((response) => {
console.log(response);
this.trainingParentlist = response.rows;
this.total3 = response.total;
@ -1132,7 +1316,6 @@ export default {
this.form.trainingItemCoverUrl = imgUrl;
},
imgUrl3(imgUrl) {
console.log(imgUrl);
this.form.trainingItemPosterUrl = imgUrl;
},
//
@ -1141,15 +1324,15 @@ export default {
if (row.trainingShelfFlag == false) {
var obj = {
id: row.id,
trainingShelfFlag: 1
trainingShelfFlag: 1,
};
} else if (row.trainingShelfFlag == true) {
var obj = {
id: row.id,
trainingShelfFlag: 0
trainingShelfFlag: 0,
};
}
updateTrainingShelfFlag(obj).then(res => {
updateTrainingShelfFlag(obj).then((res) => {
if (obj.trainingShelfFlag == 0) {
this.$modal.msgSuccess("已修改上架状态为上架");
} else {
@ -1161,15 +1344,17 @@ export default {
/** 查询学习培训课程信息列表 */
getList() {
this.loading = true;
listTrainingItem(this.queryParams).then(response => {
this.trainingItemList = response.rows;
response.rows.forEach(e => {
listTrainingItem(this.queryParams).then((response) => {
response.rows.forEach((e) => {
e.selectSubordinateItemlist = []; //
e.expand = false; //
if (e.trainingShelfFlag == 0) {
e.trainingShelfFlag = true;
} else if (e.trainingShelfFlag == 1) {
e.trainingShelfFlag = false;
}
});
this.trainingItemList = response.rows;
this.total = response.total;
this.loading = false;
});
@ -1184,10 +1369,10 @@ export default {
obj.pictureUrlList.push(this.form.trainingItemPosterUrl);
}
if (obj.pictureUrlList.length > 0) {
updatePicture(obj).then(res => {});
updatePicture(obj).then((res) => {});
}
if (this.imgsurl.pictureUrlList.length > 0) {
updatePicture(this.imgsurl).then(res => {});
updatePicture(this.imgsurl).then((res) => {});
}
this.imgsurl = { pictureUrlList: [] };
@ -1204,8 +1389,8 @@ export default {
itemDirectoryUrl: null,
itemDirectoryIntroduce: null,
itemDirectorySort: null,
idd: this.idd
}
idd: this.idd,
},
],
trainingParentId: "",
id: null,
@ -1231,7 +1416,7 @@ export default {
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
updateTime: null,
};
this.resetForm("form");
},
@ -1248,7 +1433,7 @@ export default {
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id);
this.ids = selection.map((item) => item.id);
this.single = selection.length !== 1;
this.multiple = !selection.length;
},
@ -1262,9 +1447,9 @@ export default {
itemDirectoryTitle: null,
itemDirectoryUrl: null,
itemDirectoryIntroduce: null,
itemDirectorySort: null
}
]
itemDirectorySort: null,
},
],
};
this.reset();
this.open = true;
@ -1275,13 +1460,13 @@ export default {
handleUpdate(row) {
this.reset();
const id = row.id || this.ids;
getTrainingItem(id).then(response => {
getTrainingItem(id).then((response) => {
var obj = {
itemDirectoryName: null,
itemDirectoryTitle: null,
itemDirectoryUrl: null,
itemDirectoryIntroduce: null,
itemDirectorySort: null
itemDirectorySort: null,
};
if (response.data.trainingItemDirectoryList.length == 0) {
response.data.trainingItemDirectoryList.push(obj);
@ -1307,10 +1492,11 @@ export default {
if (this.form.buyFlag === "") {
this.form.buyFlag = null;
}
this.$refs["form"].validate(valid => {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.trainingItemStartTime) {
this.form.trainingItemStartTimeStr = this.form.trainingItemStartTime;
this.form.trainingItemStartTimeStr =
this.form.trainingItemStartTime;
} else {
this.form.trainingItemStartTimeStr = "00:00:00";
}
@ -1321,7 +1507,7 @@ export default {
this.form.trainingItemDirectoryList = [];
}
if (this.form.trainingItemId != null) {
updateTrainingItem(this.form).then(response => {
updateTrainingItem(this.form).then((response) => {
var obj = { pictureUrlList: [] };
if (this.imgone != this.form.trainingItemCoverUrl) {
obj.pictureUrlList.push(this.imgone);
@ -1331,7 +1517,7 @@ export default {
}
this.imgsurl = { pictureUrlList: [] };
if (obj.pictureUrlList.length > 0) {
updatePicture(obj).then(res => {});
updatePicture(obj).then((res) => {});
}
if (response.code == 200) {
this.$modal.msgSuccess("修改成功");
@ -1340,7 +1526,7 @@ export default {
}
});
} else {
addTrainingItem(this.form).then(response => {
addTrainingItem(this.form).then((response) => {
if (response.code == 200) {
this.$modal.msgSuccess("新增成功");
this.open = false;
@ -1360,7 +1546,7 @@ export default {
.confirm(
'是否确认删除培训课程名称为"' + trainingItemTitles + '"的数据项?'
)
.then(function() {
.then(function () {
return delTrainingItem(ids);
})
.then(() => {
@ -1374,12 +1560,12 @@ export default {
this.download(
"system/trainingItem/export",
{
...this.queryParams
...this.queryParams,
},
`trainingItem_${new Date().getTime()}.xlsx`
);
}
}
},
},
};
</script>
<style lang="scss" scoped>