Kaynağa Gözat

值班主页的增删改查

liuyang 5 yıl önce
ebeveyn
işleme
80f3c7fb46

+ 21 - 44
backend/src/dashoo.cn/modi_webapi/app/api/duty/duty.go

@@ -59,11 +59,11 @@ func (c *DutyController) GetPageList(r *ghttp.Request) {
 	}
 }
 
-// 添加值班
-func (c *DutyController) AddDuty(r *ghttp.Request) {
+// 保存值班
+func (c *DutyController) SaveDuty(r *ghttp.Request) {
 	// tenant 租户模式
 	tenant := r.Header.Get("Tenant")
-	var entity *duty.AddDateReq
+	var entity *duty.Entity
 	// 赋值并校验参数
 	if err := r.Parse(&entity); err != nil {
 		response.Json(r, -1, err.Error())
@@ -75,11 +75,21 @@ func (c *DutyController) AddDuty(r *ghttp.Request) {
 	}
 	// 获取操作人
 	realName := r.GetParamVar("realname").String()
-	entity.CreatedBy = realName
-	if newId, err := service.Add(entity); err != nil {
-		response.Json(r, 1, err.Error())
+	// 编辑
+	if entity.Id > 0 {
+		entity.UpdatedBy = realName
+		if duty, err := service.Save(entity.Id, entity); err != nil {
+			response.Json(r, 1, err.Error())
+		} else {
+			response.Json(r, 0, "更新成功", duty)
+		}
 	} else {
-		response.Json(r, 0, "新增成功", newId)
+		entity.CreatedBy = realName
+		if newId, err := service.Add(entity); err != nil {
+			response.Json(r, 1, err.Error())
+		} else {
+			response.Json(r, 0, "新增成功", newId)
+		}
 	}
 
 }
@@ -105,49 +115,16 @@ func (c *DutyController) GetDutyById(r *ghttp.Request) {
 
 }
 
-// 更新
-func (c *DutyController) UpdateDuty(r *ghttp.Request) {
-	// tenant 租户模式
-	tenant := r.Header.Get("Tenant")
-	var entity *duty.UpdDateReq
-	// 赋值并校验参数
-	if err := r.Parse(&entity); err != nil {
-		response.Json(r, -1, err.Error())
-	}
-	Id := r.GetInt("Id")
-	if Id == 0 {
-		response.Json(r, -1, "Id不能为空")
-	}
-
-	// 初始化课程详情service
-	service, err := dutyService.NewDutyService(tenant)
-	if err != nil {
-		response.Json(r, -1, err.Error())
-	}
-	// 获取操作人
-	realName := r.GetParamVar("realname").String()
-	entity.UpdatedBy = realName
-
-	if duty, err := service.Save(Id, entity); err != nil {
-		response.Json(r, 1, err.Error())
-	} else {
-		response.Json(r, 0, "更新成功", duty)
-	}
-
-}
-
 // 删除
 func (c *DutyController) DeleteDuty(r *ghttp.Request) {
 	// tenant 租户模式
 	tenant := r.Header.Get("Tenant")
 	// 详情id
-	Ids := r.GetInts("ids")
-	if len(Ids) == 0 {
-		response.Json(r, -1, "ids不能为空")
+	Id := r.GetInt("id")
+	if Id == 0 {
+		response.Json(r, -1, "Id不能为空")
 	}
-	delIdsReq := new(common.DeleteIdsReq)
 	delUpdReq := new(common.DeleteUpdReq)
-	delIdsReq.Id = Ids
 	// 获取操作人
 	realName := r.GetParamVar("realname").String()
 	delUpdReq.UpdatedBy = realName
@@ -156,7 +133,7 @@ func (c *DutyController) DeleteDuty(r *ghttp.Request) {
 	if err != nil {
 		response.Json(r, -1, err.Error())
 	}
-	if err := service.DeleteById(delIdsReq, delUpdReq); err != nil {
+	if err := service.DeleteById(Id, delUpdReq); err != nil {
 		response.Json(r, 1, err.Error())
 	} else {
 		response.Json(r, 0, "删除成功")

+ 0 - 11
backend/src/dashoo.cn/modi_webapi/app/model/duty/duty.go

@@ -27,14 +27,3 @@ type AddDateReq struct {
 	CreatedTime *gtime.Time `xorm:"DATETIME created"`         // 创建时间
 	IsDel       int         `xorm:"INT(10)"`                  // 删除标志
 }
-
-// 修改
-type UpdDateReq struct {
-	Year        int         `xorm:"INT(10)"`          // 学年
-	Term        string      `xorm:"VARCHAR(32)"`      // 学期
-	Title       string      `xorm:"VARCHAR(32)"`      // 标题
-	Status      string      `xorm:"VARCHAR(32)"`      // 状态
-	UpdatedBy   string      `xorm:"VARCHAR(32)"`      // 更新人
-	UpdatedTime *gtime.Time `xorm:"DATETIME updated"` // 更新时间
-	IsDel       int         `xorm:"INT(10)"`          // 删除标志
-}

+ 4 - 4
backend/src/dashoo.cn/modi_webapi/app/model/duty/duty_entity.go

@@ -13,10 +13,10 @@ import (
 // Entity is the golang structure for table instrument.
 type Entity struct {
 	Id          int         `xorm:"not null pk autoincr INT(10)"` // id
-	Year        int         `xorm:"INT(10)"`                      // 学年
-	Term        string      `xorm:"VARCHAR(32)"`                  // 学期
-	Title       string      `xorm:"VARCHAR(32)"`                  // 标题
-	Status      string      `xorm:"VARCHAR(32)"`                  // 状态
+	Year        int         `xorm:"INT(10)" v:"required"`         // 学年
+	Term        string      `xorm:"VARCHAR(32)" v:"required"`     // 学期
+	Title       string      `xorm:"VARCHAR(32)" v:"required"`     // 标题
+	Status      string      `xorm:"VARCHAR(32)" v:"required"`     // 状态
 	CreatedBy   string      `xorm:"VARCHAR(32)"`                  // 创建人
 	CreatedTime *gtime.Time `xorm:"DATETIME created"`             // 创建时间
 	UpdatedBy   string      `xorm:"VARCHAR(32)"`                  // 更新人

+ 4 - 4
backend/src/dashoo.cn/modi_webapi/app/service/duty/duty.go

@@ -55,7 +55,7 @@ func (s DutyService) GetPageList(param *duty.SelectPageReq) (list []*duty.Entity
 }
 
 // 新增
-func (s DutyService) Add(param *duty.AddDateReq) (id int64, err error) {
+func (s DutyService) Add(param *duty.Entity) (id int64, err error) {
 	param.CreatedTime = gtime.Now()
 	if result, err := s.SafeModel.Insert(param); err != nil {
 		return 0, err
@@ -74,19 +74,19 @@ func (s DutyService) GetDutyById(id int) (res *duty.Entity, err error) {
 }
 
 // 删除
-func (s DutyService) DeleteById(Ids *common.DeleteIdsReq, param *common.DeleteUpdReq) error {
+func (s DutyService) DeleteById(Id int, param *common.DeleteUpdReq) error {
 	//设置更新时间
 	param.UpdatedTime = gtime.Now()
 	// 修改删除状态
 	param.IsDel = 1
-	if _, err := s.SafeModel.WherePri(Ids).Update(param); err != nil {
+	if _, err := s.SafeModel.Where("Id", Id).Update(param); err != nil {
 		return err
 	}
 	return nil
 }
 
 // 更新
-func (s DutyService) Save(Id int, param *duty.UpdDateReq) (*duty.Entity, error) {
+func (s DutyService) Save(Id int, param *duty.Entity) (*duty.Entity, error) {
 	duty, err := s.GetDutyById(Id)
 	if err != nil {
 		return nil, err

+ 14 - 22
frontend_web/src/api/duty.js

@@ -1,47 +1,39 @@
 import request from '@/plugin/axios'
 
 export default {
-   // 获取值班列表
-   getPageList (params) {
+  // 获取值班列表
+  getPageList (params) {
     return request({
       url: process.env.VUE_APP_API + 'duty/getpagelist',
-      method: 'get', 
+      method: 'get',
       params: params
     })
   },
 
   // 删除值班信息
-   deleteDuty (params) {
+  deleteDuty (params) {
     return request({
       url: process.env.VUE_APP_API + 'duty/deleteduty',
       method: 'delete',
       params: params
     })
   },
-  
-   // 保存值班信息
-  addDuty (data) {
-    return request({
-      url: process.env.VUE_APP_API + 'duty/addduty',
-      method: 'post',
-      data: data
-    })
-  },
-  // 修改保存编辑信息
-  updateDuty (data) {
+
+  // 保存值班信息
+  saveDuty (data) {
     return request({
-      url: process.env.VUE_APP_API + 'duty/updateduty',
+      url: process.env.VUE_APP_API + 'duty/saveduty',
       method: 'post',
       data: data
     })
   },
   // 获取一条值班信息
-  getOneDuty (params) {
+  getDutyById (params) {
     return request({
-      url: process.env.VUE_APP_API + 'duty/getoneduty',
-      method: 'get', 
+      url: process.env.VUE_APP_API + 'duty/getdutybyid',
+      method: 'get',
       params: params
     })
-  },
-  
-}
+  }
+
+}

+ 49 - 43
frontend_web/src/views/duty/components/dutyEdit.vue

@@ -1,26 +1,22 @@
 <template>
-    <el-dialog title="新增课程表信息"
+    <el-dialog title="新增值班表信息"
                :visible.sync="dialogvisible"
                @opened="dialogOpen"
                @closed="dialogClose"
                width="30%">
         <el-form size="mini"
-                 :model="course"
+                 :model="detail"
                  label-width="80px"
-                 ref="courseForm">
+                 :rules="rules"
+                 ref="dutyForm">
             <el-form-item label="标题"
                           prop="Title">
-                <el-input v-model="course.Title"
-                          placeholder="请输入"></el-input>
-            </el-form-item>
-            <el-form-item label="教学周"
-                          prop="title">
-                <el-input v-model="course.CourseWeek"
+                <el-input v-model="detail.Title"
                           placeholder="请输入"></el-input>
             </el-form-item>
             <el-form-item label="学年"
                           prop="Year">
-                <el-select v-model="course.Year"
+                <el-select v-model="detail.Year"
                            placeholder="请选择年级学年">
                     <el-option v-for="item in years"
                                :key="item.value"
@@ -29,21 +25,9 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="班级"
-                          prop="title">
-                <el-select v-model="course.Class"
-                           placeholder="请选择班级"
-                           filterable="true">
-                    <el-option v-for="item in classList"
-                               :key="item.Id"
-                               :label="item.Name"
-                               :value="item.Id">
-                    </el-option>
-                </el-select>
-            </el-form-item>
             <el-form-item label="学期"
-                          prop="title">
-                <el-select v-model="course.Term">
+                          prop="Term">
+                <el-select v-model="detail.Term">
                     <el-option v-for="item in term"
                                :key="item.ItemValue"
                                :label="item.ItemName"
@@ -51,8 +35,9 @@
                     </el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="状态">
-                <el-radio-group v-model="course.Status">
+
+            <el-form-item label="状态" prop="Status">
+                <el-radio-group v-model="detail.Status">
 
                     <el-radio class="radio"
                               v-for="item in statusList"
@@ -74,16 +59,15 @@
 
 <script>
 
-import CourseApi from '@/api/course'
+import DutyApi from '@/api/duty'
 import itemDetailApi from '@/api/sysadmin/itemdetail'
 
 export default {
-  name: 'courseInfoDialog',
+  name: 'dutyEdit',
   props: {
-    courseId: Number,
-    statusList: Array,
     term: Array,
-    classList: Array
+    statusList: Array,
+    dutyId: Number
   },
   data () {
     return {
@@ -91,7 +75,29 @@ export default {
       checkAll: false,
       dialogvisible: false,
       fileList: [],
-      course: {}
+      detail: {},
+      rules: {
+        Title: [{
+          required: true,
+          message: '标题不能为空',
+          trigger: 'blur'
+        }],
+        Year: [{
+          required: true,
+          message: '学年不能为空',
+          trigger: 'blur'
+        }],
+        Term: [{
+          required: true,
+          message: '学期不能为空',
+          trigger: 'blur'
+        }],
+        Status: [{
+          required: true,
+          message: '状态不能为空',
+          trigger: 'blur'
+        }]
+      }
     }
   },
   created () {
@@ -119,20 +125,20 @@ export default {
       }
     },
     dialogOpen () {
-      this.course = {}
-      this.$refs.courseForm.resetFields()
+      this.detail = {}
+      this.$refs.dutyForm.resetFields()
       this.getData()
     },
     dialogClose () {
-      this.course = {}
-      this.$refs.courseForm.resetFields()
+      this.detail = {}
+      this.$refs.dutyForm.resetFields()
       this.$emit('handleClose')
       this.dialogVisible = false
     },
     save () {
-      this.$refs.courseForm.validate(valid => {
+      this.$refs.dutyForm.validate(valid => {
         if (valid) {
-          CourseApi.addCourse(this.course, {})
+          DutyApi.saveDuty(this.detail, {})
             .then(res => {
               this.$emit('handleClose')
               this.dialogvisible = false
@@ -149,13 +155,13 @@ export default {
     },
     // 编辑修改
     getData () {
-      if (this.courseId > 0) {
-        var id = {
-          id: this.courseId
+      if (this.dutyId > 0) {
+        let params = {
+          Id: this.dutyId
         }
-        CourseApi.getById(id)
+        DutyApi.getDutyById(params)
           .then(res => {
-            this.course = res
+            this.detail = res
           })
       }
     }

+ 60 - 9
frontend_web/src/views/duty/index.vue

@@ -50,13 +50,13 @@
           <el-button size="mini"
                      title="编辑"
                      type="primary"
-                     @click="edit()"
+                     @click="edit(scope.row.Id)"
                      icon="el-icon-edit"
                      circle></el-button>
           <el-button size="mini"
                      type="danger"
                      title="删除"
-                     @click="deleteduty(scope.row)"
+                     @click="deleteduty(scope.row.Id)"
                      style="margin-left:5px;"
                      icon="el-icon-delete"
                      circle></el-button>
@@ -77,7 +77,9 @@
                        label="学期"
                        align="center"
                        min-width="120px"
-                       show-overflow-tooltip></el-table-column>
+                       show-overflow-tooltip
+                       :formatter="formatTerm"
+      ></el-table-column>
       <el-table-column prop="Title"
                        label="标题"
                        align="center"
@@ -87,7 +89,9 @@
                        label="状态"
                        align="center"
                        min-width="120px"
-                       show-overflow-tooltip></el-table-column>
+                       show-overflow-tooltip
+                       :formatter="formatStatus"
+      ></el-table-column>
       <el-table-column prop="CreatedTime"
                        label="创建日期"
                        align="center"
@@ -96,8 +100,11 @@
     </el-table>
 
     <dutyEditDialog ref="editDialog"
-                      @handleClose="handleCloseAdd"
-                      width="75"></dutyEditDialog>
+                    @handleClose="handleCloseAdd"
+                    :dutyId="dutyId"
+                    :term="term"
+                    :statusList="statusList"
+                    width="75"></dutyEditDialog>
 
     <template slot="footer">
       <el-pagination style="margin: -10px;"
@@ -116,6 +123,7 @@
 <script>
 import DutyApi from '@/api/duty'
 import dutyEditDialog from './components/dutyEdit'
+import itemDetailApi from '@/api/sysadmin/itemdetail'
 
 export default {
   name: 'duty',
@@ -127,7 +135,9 @@ export default {
       selectedInstrumentId: 0,
       dialogvisible: false,
       name: '',
+      dutyId: -1,
       details: false,
+      statusList: [],
       totalsize: 0,
       currpage: 1,
       size: 10,
@@ -169,15 +179,56 @@ export default {
     }
   },
   mounted () {
+    this.getTerm()
+    this.getStatus()
     this.initDatas()
   },
   methods: {
+    // 获取学期
+    getTerm () {
+      itemDetailApi.getItemDetailByItemCode({ ItemCode: 'Term' })
+        .then(res => {
+          this.term = res
+        })
+        .catch(err => {
+          console.error(err)
+        })
+    },
+    // 匹配学期
+    formatTerm (row, column) {
+      for (var i = 0; i < this.term.length; i++) {
+        if (parseInt(this.term[i].ItemValue) === parseInt(row.Term)) {
+          return this.term[i].ItemName
+        }
+      }
+    },
+    // 获取发布状态
+    getStatus () {
+      let _this = this
+      itemDetailApi.getItemDetailByItemCode({ ItemCode: 'PublishStatus' })
+        .then(res => {
+          _this.statusList = res
+          this.initDatas()
+        })
+        .catch(err => {
+          console.error(err)
+        })
+    },
+    // 匹配状态
+    formatStatus (row, column) {
+      for (var i = 0; i < this.statusList.length; i++) {
+        if (parseInt(this.statusList[i].ItemValue) === parseInt(row.Status)) {
+          return this.statusList[i].ItemName
+        }
+      }
+    },
     // 打开 添加弹窗
     add () {
       this.$refs.editDialog.dialogvisible = true
     },
     // 打开 编辑弹窗
-    edit () {
+    edit (dutyId) {
+      this.dutyId = dutyId
       this.$refs.editDialog.dialogvisible = true
     },
     // 打开二级页面
@@ -244,10 +295,10 @@ export default {
       return parseInt(date)
     },
     //  删除值班管理
-    deleteduty (val) {
+    deleteduty (Id) {
       let _this = this
       let params = {
-        id: val.Id
+        id: Id
       }
       _this.$confirm('此操作将永久删除该值班信息, 是否继续?', '提示', {
         confirmButtonText: '确定',