Explorar o código

课程表详情编辑和删除

liuyang %!s(int64=5) %!d(string=hai) anos
pai
achega
d652a3ffb0

+ 55 - 18
backend/src/dashoo.cn/modi_webapi/app/api/course/detail/detail.go

@@ -11,12 +11,10 @@ import (
 
 // 课程详情管理API
 type CourseDetailController struct {
-
 }
 
-
 // 分页查询课程详情
-func (c CourseDetailController)GetPageList(r *ghttp.Request)  {
+func (c CourseDetailController) GetPageList(r *ghttp.Request) {
 	// tenant 租户模式
 	tenant := r.Header.Get("Tenant")
 	page := request.GetPageInfo(r)
@@ -27,14 +25,14 @@ func (c CourseDetailController)GetPageList(r *ghttp.Request)  {
 	}
 	glog.Info(page)
 	pageInfo := detail.PageInfo{
-		Current:  page.Current,
+		Current:   page.Current,
 		PagesSize: page.Size,
 	}
 
 	selectPageReq := detail.SelectPageReq{
-		Tenant: tenant,
-		CourseName:   "",
-		Page:   &pageInfo,
+		Tenant:     tenant,
+		CourseName: "",
+		Page:       &pageInfo,
 		// 排序
 		Order: r.GetString("order"),
 	}
@@ -58,15 +56,14 @@ func (c CourseDetailController)GetPageList(r *ghttp.Request)  {
 
 }
 
-
-// 添加
-func (c CourseDetailController)Save(r *ghttp.Request)  {
+// 添加或编辑
+func (c CourseDetailController) Save(r *ghttp.Request) {
 	// tenant 租户模式
 	tenant := r.Header.Get("Tenant")
-	var entity  *detail.Entity
+	var entity *detail.Entity
 	// 赋值并校验参数
 	if err := r.Parse(&entity); err != nil {
-		response.Json(r,-1, err.Error())
+		response.Json(r, -1, err.Error())
 	}
 
 	// 初始化课程详情service
@@ -75,16 +72,56 @@ func (c CourseDetailController)Save(r *ghttp.Request)  {
 		response.Json(r, -1, err.Error())
 	}
 	// 判断是新增还是删除,获取的id为空新增,不为空则更新
+	if entity.Id > 0 {
+		if detail, err := service.Update(entity); err != nil {
+			response.Json(r, 1, err.Error())
+		} else {
+			response.Json(r, 0, "更新成功", detail)
+		}
+	} else {
+		if newId, err := service.Add(entity); err != nil {
+			response.Json(r, 1, err.Error())
+		} else {
+			response.Json(r, 0, "新增成功", newId)
+		}
+	}
 
+}
 
-	if newId, err := service.Add(entity); err != nil {
+// 获取详情
+func (c CourseDetailController) GetDetailById(r *ghttp.Request) {
+	// tenant 租户模式
+	tenant := r.Header.Get("Tenant")
+	// 详情id
+	Id := r.GetInt("Id")
+	// 初始化课程详情service
+	service, err := detailService.NewCourseDetailService(tenant)
+	if err != nil {
+		response.Json(r, -1, err.Error())
+	}
+	if detail, err := service.GetDetailById(Id); err != nil {
 		response.Json(r, 1, err.Error())
 	} else {
-		response.Json(r, 0,"success", newId)
+		response.Json(r, 0, "ok", detail)
 	}
-
 }
 
-func (c CourseDetailController) DeleteDetailById()  {
-
-}
+// 删除课程表详情
+func (c CourseDetailController) DeleteDetailById(r *ghttp.Request) {
+	// tenant 租户模式
+	tenant := r.Header.Get("Tenant")
+	// 详情id
+	Ids := r.GetInts("ids")
+	delReq := new(detail.DeleteReq)
+	delReq.Ids = Ids
+	// 初始化课程详情service
+	service, err := detailService.NewCourseDetailService(tenant)
+	if err != nil {
+		response.Json(r, -1, err.Error())
+	}
+	if err := service.DeleteById(delReq); err != nil {
+		response.Json(r, 1, err.Error())
+	} else {
+		response.Json(r, 0, "删除成功")
+	}
+}

+ 22 - 14
backend/src/dashoo.cn/modi_webapi/app/model/course/detail/detail.go

@@ -20,23 +20,31 @@ type PageInfo struct {
 }
 
 type SelectPageReq struct {
-	Tenant 			string		`protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
-	CourseName  	string    	`protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
-	Page   			*PageInfo 	`protobuf:"bytes,3,opt,name=page" json:"page,omitempty"`
-	CourseId 		int 		`protobuf:"varint,4,opt,name=CourseId,json=CourseId,proto3" json:"CourseId,omitempty"`
-	Prop   			string    	`json:prop`
-	Order  			string    	`json:order`
+	Tenant     string    `protobuf:"bytes,1,opt,name=tenant,proto3" json:"tenant,omitempty"`
+	CourseName string    `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+	Page       *PageInfo `protobuf:"bytes,3,opt,name=page" json:"page,omitempty"`
+	CourseId   int       `protobuf:"varint,4,opt,name=CourseId,json=CourseId,proto3" json:"CourseId,omitempty"`
+	Prop       string    `json:prop`
+	Order      string    `json:order`
 }
 
 // 查询信息
 type SearchEntity struct {
-	Id          int 		`xorm:"not null pk autoincr INT(10)"`
-	CourseId    int			`xorm:"INT(10)"`   		// 课程ID
-	CourseName  string		`xorm:"VARCHAR(32)"`	// 课程名
-	Teacher		int			`xorm:"INT(10)"`  		// 授课老师
-	TeacherName string		`xorm:"VARCHAR(32)"`    // 授课教师
-	Local 		int 		`xorm:"INT(10)"`  		// 实验地点
-	Num 		int 		`xorm:"INT(10)"`		// 人数
-	CreatedTime	*gtime.Time	`xorm:"DATETIME"`		// 创建时间
+	Id          int         `xorm:"not null pk autoincr INT(10)"`
+	CourseId    int         `xorm:"INT(10)"`     // 课程ID
+	CourseName  string      `xorm:"VARCHAR(32)"` // 课程名
+	Teacher     int         `xorm:"INT(10)"`     // 授课老师
+	TeacherName string      `xorm:"VARCHAR(32)"` // 授课教师
+	Local       int         `xorm:"INT(10)"`     // 实验地点
+	Num         int         `xorm:"INT(10)"`     // 人数
+	Status      int         `xorm:"INT(10)"`     // 发布状态
+	CreatedTime *gtime.Time `xorm:"DATETIME"`    // 创建时间
 }
 
+// 删除详情请求
+type DeleteReq struct {
+	Ids         []int       // 批量删除,id以逗号隔开
+	IsDel       int         `orm:"isDel"`       // 是否删除 0未删除 1已删除
+	UpdatedBy   string      `orm:"UpdatedBy"`   // 更新人
+	UpdatedTime *gtime.Time `orm:"UpdatedTime"` // 更新时间
+}

+ 40 - 7
backend/src/dashoo.cn/modi_webapi/app/service/course/detail/detail.go

@@ -14,7 +14,6 @@ type CourseDetailService struct {
 	db.ServiceBase
 }
 
-
 // NewCourseService 初始化CourseService
 func NewCourseDetailService(tenant string) (CourseDetailService, error) {
 	var service CourseDetailService
@@ -22,7 +21,6 @@ func NewCourseDetailService(tenant string) (CourseDetailService, error) {
 	return service, err
 }
 
-
 // Add 新增课程信息
 func (s CourseDetailService) Add(param *detail.Entity) (id int64, err error) {
 	param.CreatedTime = gtime.Now()
@@ -34,16 +32,31 @@ func (s CourseDetailService) Add(param *detail.Entity) (id int64, err error) {
 	return id, nil
 }
 
+// Update 编辑详情信息
+func (s CourseDetailService) Update(param *detail.Entity) (*detail.Entity, error) {
+	detail, err := s.GetDetailById(param.Id)
+	if err != nil {
+		return nil, err
+	}
+	// 设置更新时间
+	param.UpdatedTime = gtime.Now()
+	// todo 更新用户
+	if _, err = s.SafeModel.WherePri(param.Id).Update(param); err != nil {
+		return nil, err
+	}
+	return detail, nil
+
+}
+
 // 分页查询课程表详情
 func (s CourseDetailService) GetPageList(param *detail.SelectPageReq) (list []*detail.SearchEntity, total int, err error) {
-	s.DB.Table("student s").InnerJoin("class c", "s.class_id = c.id")
-	model := s.DB.Table(detail.Table).As("d").InnerJoin("base_itemdetails b", "d.Teacher = b.ItemValue").Where("b.ItemCode","Teacher")
+	model := s.DB.Table(detail.Table).As("d").InnerJoin("base_itemdetails b", "d.Teacher = b.ItemValue").Where("b.ItemCode", "Teacher")
 	if param != nil {
 		if param.CourseName != "" {
 			model = model.Where("CourseName like ?", "%"+param.CourseName+"%")
 		}
-		if param.CourseId !=0 {
-			model = model.Where("CourseId",param.CourseId)
+		if param.CourseId != 0 {
+			model = model.Where("CourseId", param.CourseId)
 		}
 		// todo more
 	}
@@ -73,4 +86,24 @@ func (s CourseDetailService) GetPageList(param *detail.SelectPageReq) (list []*d
 		return nil, 0, nil
 	}
 	return result, total, err
-}
+}
+
+// 查询课程详情
+func (s CourseDetailService) GetDetailById(id int) (res *detail.Entity, err error) {
+	model := s.DB.Table(detail.Table).Where("Id", id).Where("isDel", 0)
+	var result *detail.Entity
+	err = model.Struct(&result)
+	return result, nil
+}
+
+// 删除
+func (s CourseDetailService) DeleteById(param *detail.DeleteReq) error {
+	dIds := param.Ids
+	//设置更新时间
+	param.UpdatedTime = gtime.Now()
+	// todo 更新用户
+	if _, err := s.SafeModel.WherePri(dIds).Update("isDel = 1"); err != nil {
+		return err
+	}
+	return nil
+}

+ 16 - 16
frontend_web/src/api/course/detail.js

@@ -17,20 +17,20 @@ export default {
             data: formData
         })
     },
-    // // 获取学生详情
-    // getEntityById (params) {
-    //     return request({
-    //         url: process.env.VUE_APP_API + 'detail/getdetailbyid',
-    //         method: 'get',
-    //         params: params
-    //     })
-    // },
-    // // 删除学生
-    // delete (params) {
-    //     return request({
-    //         url: process.env.VUE_APP_API + 'detail/deletestudentbyid',
-    //         method: 'get',
-    //         params: params
-    //     })
-    // }
+    // 获取课程详情
+    getEntityById (params) {
+        return request({
+            url: process.env.VUE_APP_API + 'course/detail/getdetailbyid',
+            method: 'get',
+            params: params
+        })
+    },
+    // 删除学生
+    delete (params) {
+        return request({
+            url: process.env.VUE_APP_API + 'course/detail/deletedetailbyid',
+            method: 'get',
+            params: params
+        })
+    }
 }

+ 30 - 4
frontend_web/src/views/course/detail/components/command.vue

@@ -1,11 +1,37 @@
 <template>
-    
+    <div>
+        <el-button size="mini" type="primary" icon="el-icon-edit" circle @click="handleEdit"></el-button>
+        <el-button size="mini" type="danger" icon="el-icon-delete" circle @click="handleDelete()"></el-button>
+    </div>
 </template>
 
 <script>
-    export default {
-        name: "command"
-    }
+    import Vue from 'vue'
+    export default Vue.extend({
+        data () {
+            return {
+                tableHeight: 1
+            }
+        },
+        methods: {
+            handleEdit () {
+                let id = this.params.data['Id']
+                this.params.context.page.handleEdit(id)
+            },
+            handleDelete () {
+                let id = this.params.data['Id']
+                let _this = this
+                _this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                    confirmButtonText: '确定',
+                    cancelButtonText: '取消',
+                    type: 'warning'
+                }).then(() => {
+                    this.params.context.page.handleDelete(id)
+                }).catch(() => { })
+            }
+
+        }
+    })
 </script>
 
 <style scoped>

+ 154 - 153
frontend_web/src/views/course/detail/editForm.vue

@@ -63,7 +63,7 @@
             </el-form-item>
 
 
-            <el-form-item label="发布状态" prop="Graduate">
+            <el-form-item label="发布状态" prop="Status">
                 <el-switch style="width:100%;text-align:left" v-model="formdata.Status"></el-switch>
             </el-form-item>
 
@@ -81,164 +81,165 @@
     </el-dialog>
 </template>
 <script>
-    import studentApi from '@/api/course/detail'
-    import itemDetailApi from '@/api/sysadmin/itemdetail'
-    export default {
-        name: 'detailEditForm',
-        props: {
-            id: Number,
-            value: Boolean,
-            CourseId: Number,
-            Year: Number,
-            Term: Number,
-            ClassId: Number,
-        },
-        data () {
-            return {
-                loading: false,
-                dialogVisible: false,
-                classList: [],
-                subjectList: [],
-                selectSubject: [],
-                Teachers :[],
-                formdata: {
-                    Id: 0,
-                    CourseId : '',
-                    Year : '',
-                    Term : '',
-                    CourseName : '',
-                    Teacher : 1,
-                    Local : '',
-                    Class :'',
-                    Mark : '',
-                    Num :'',
-                    WeekTitle : '',
-                    DayOfWeek : '',
-                    Time : '',
-                    Status : '',
-                },
-                imageUrl: '',
-                rules: {
-                    CourseName: [{
-                        required: true,
-                        message: '课程名不能为空',
-                        trigger: 'blur'
-                    }],
-                    Mark: [{
-                        required: true,
-                        message: '学分不能为空',
-                        trigger: 'blur'
-                    }],
-                    Num: [{
-                        required: true,
-                        message: '人数不能为空',
-                        trigger: 'blur'
-                    }],
-                    WeekTitle: [{
-                        required: true,
-                        message: '教学周不能为空',
-                        trigger: 'blur'
-                    }],
-                    DayOfWeek: [{
-                        required: true,
-                        message: '周次不能为空',
-                        trigger: 'blur'
-                    }],
-                    Time: [{
-                        required: true,
-                        message: '节次不能为空',
-                        trigger: 'blur'
-                    }],
-                }
-            }
-        },
-        watch: {
-            value (val) {
-                this.dialogVisible = val
+import detailApi from '@/api/course/detail'
+import itemDetailApi from '@/api/sysadmin/itemdetail'
+export default {
+    name: 'detailEditForm',
+    props: {
+        id: Number,
+        value: Boolean,
+        CourseId: Number,
+        Year: Number,
+        Term: Number,
+        ClassId: Number,
+    },
+    data () {
+        return {
+            loading: false,
+            dialogVisible: false,
+            classList: [],
+            subjectList: [],
+            selectSubject: [],
+            Teachers :[],
+            formdata: {
+                Id: 0,
+                CourseId : '',
+                Year : '',
+                Term : '',
+                CourseName : '',
+                Teacher : 1,
+                Local : '',
+                Class :'',
+                Mark : '',
+                Num :'',
+                WeekTitle : '',
+                DayOfWeek : '',
+                Time : '',
+                Status : 0,
             },
-            dialogVisible (val) {
-                this.$emit('input', val)
+            imageUrl: '',
+            rules: {
+                CourseName: [{
+                    required: true,
+                    message: '课程名不能为空',
+                    trigger: 'blur'
+                }],
+                Mark: [{
+                    required: true,
+                    message: '学分不能为空',
+                    trigger: 'blur'
+                }],
+                Num: [{
+                    required: true,
+                    message: '人数不能为空',
+                    trigger: 'blur'
+                }],
+                WeekTitle: [{
+                    required: true,
+                    message: '教学周不能为空',
+                    trigger: 'blur'
+                }],
+                DayOfWeek: [{
+                    required: true,
+                    message: '周次不能为空',
+                    trigger: 'blur'
+                }],
+                Time: [{
+                    required: true,
+                    message: '节次不能为空',
+                    trigger: 'blur'
+                }],
             }
+        }
+    },
+    watch: {
+        value (val) {
+            this.dialogVisible = val
         },
-        mounted () {
-            itemDetailApi.getItemDetailByItemCode({ ItemCode: 'Teacher' })
-                .then(res => {
-                    this.Teachers = res
-                    this.initData()
-                })
-                .catch(err => {
-                    console.error(err)
-                })
-        },
-        methods: {
-            dialogOpen () {
-                this.$refs.form.resetFields()
+        dialogVisible (val) {
+            this.$emit('input', val)
+        }
+    },
+    mounted () {
+        itemDetailApi.getItemDetailByItemCode({ ItemCode: 'Teacher' })
+            .then(res => {
+                this.Teachers = res
                 this.initData()
-            },
-            initData () {
-                let _this = this
-                if (this.id > 0) {
-                    _this.formdata = {}
-                    const params = {
-                        id: this.id
-                    }
-                    studentApi.getEntityById(params)
-                        .then(res => {
-                            _this.formdata = res
-                            // 编辑时初始化表单数据,给字段赋值
-
-                        })
-                        .catch(err => {
-                            console.error(err)
-                        })
-                } else {
-                    console.log(_this)
-                    _this.formdata.Id = 0
-                    _this.formdata.CourseId = _this.CourseId
-                    _this.formdata.Year = _this.Year
-                    _this.formdata.Term = _this.Term
-                    _this.formdata.CourseName = ''
-                    _this.formdata.Teacher = ''
-                    _this.formdata.Local = ''
-                    _this.formdata.Class = _this.Class
-                    _this.formdata.Mark = ''
-                    _this.formdata.Num = ''
-                    _this.formdata.WeekTitle = ''
-                    _this.formdata.DayOfWeek = ''
-                    _this.formdata.Time = ''
-                    _this.formdata.Status = ''
+            })
+            .catch(err => {
+                console.error(err)
+            })
+    },
+    methods: {
+        dialogOpen () {
+            this.$refs.form.resetFields()
+            this.initData()
+        },
+        initData () {
+            let _this = this
+            if (this.id > 0) {
+                _this.formdata = {}
+                const params = {
+                    Id: this.id
                 }
-            },
-            saveEntity () {
-                let _this = this
-                _this.formdata.Id = this.Id
-                _this.$refs['form'].validate(valid => {
-                    if (valid) {
-                        _this.loading = true
-                        studentApi.save(_this.formdata)
-                            .then(data => {
-                                _this.loading = false
-                                _this.dialogVisible = false
-                                _this.$emit('submit')
-                            }).catch(err => {
+                detailApi.getEntityById(params)
+                    .then(res => {
+                        _this.formdata = res
+                        // 编辑时初始化表单数据,给字段赋值
+                        _this.formdata.Status = _this.formdata.Status === 1
+                    })
+                    .catch(err => {
+                        console.error(err)
+                    })
+            } else {
+                console.log(_this)
+                _this.formdata.Id = ''
+                _this.formdata.CourseId = _this.CourseId
+                _this.formdata.Year = _this.Year
+                _this.formdata.Term = _this.Term
+                _this.formdata.CourseName = ''
+                _this.formdata.Teacher = ''
+                _this.formdata.Local = ''
+                _this.formdata.Class = _this.Class
+                _this.formdata.Mark = ''
+                _this.formdata.Num = ''
+                _this.formdata.WeekTitle = ''
+                _this.formdata.DayOfWeek = ''
+                _this.formdata.Time = ''
+                _this.formdata.Status = 0
+            }
+        },
+        saveEntity () {
+            let _this = this
+            console.log(_this)
+            _this.formdata.Id = this.id
+            _this.$refs['form'].validate(valid => {
+                if (valid) {
+                    _this.formdata.Status = _this.formdata.Status ? 1 : 0
+                    _this.loading = true
+                    detailApi.save(_this.formdata)
+                        .then(data => {
                             _this.loading = false
-                            console.error(err)
-                        })
-                    } else {
-                        return false
-                    }
-                })
-            },
-            dialogClose () {
-                this.$refs['form'].resetFields()
-                this.getSubjectList()
-                this.dialogVisible = false
-            },
-            close () {
-                this.dialogClose()
-            },
-        }
-    }
+                            _this.dialogVisible = false
+                            _this.$emit('submit')
+                        }).catch(err => {
+                        _this.loading = false
+                        console.error(err)
+                    })
+                } else {
+                    return false
+                }
+            })
+        },
+        dialogClose () {
+            this.$refs['form'].resetFields()
+            this.dialogVisible = false
+        },
+        close () {
+            this.dialogClose()
+        },
+    },
+}
 </script>
 
 <style>

+ 8 - 10
frontend_web/src/views/course/detail/index.vue

@@ -140,17 +140,15 @@
                     cellRenderer: (params) => {
                         return params ? params.node.rowIndex + 1 + '' : ''
                     }
-                }, {
-                    headerName: '课程名称',
-                    field: 'CourseName',
-                    sortable: true
-                }, {
-                    headerName: '授课老师',
-                    field: 'TeacherName',
-                    sortable: true
-                 },
-                { headerName: '实验地点', field: 'Local', sortable: true },
+                },
+                {headerName: '课程名称', field: 'CourseName', sortable: true},
+                { headerName: '授课老师', field: 'TeacherName'},
+                { headerName: '实验地点', field: 'Local' },
                 { headerName: '人数', field: 'Num', sortable: true },
+                { headerName: '发布状态', field: 'Status',
+                    valueFormatter (params) {
+                        return params.value === 0 ? '未发布' : '已发布'
+                    },},
                 { headerName: '创建时间', field: 'CreatedTime', sortable: true },
                 { headerName: '操作', field: 'operation', width: 120, 'pinned': 'right', cellRendererFramework: command }
             ]