【前端】实习随笔1 - 老师二维码2.0 - 类型配置

一切都是最好的安排。

 需求描述

老师管理中添加【类型配置】页面 包括:

1. 类型展示的列表字段:类型名称/创建时间/编辑(导入现有类型数据)

2. 编辑只可删除。 点击删除时,校验该类型关联老师二维码个数n,

    n>0,toast提示:该类型已关联老师二维码,无法删除;  n=0,弹窗提示:确认删除此类型

3. 支持新建类型,点击【新建类型】按钮,出现弹窗(类型名称:限制15字符,字符类型不做限制)

   点击确认,和已有类型排重校验, 若名称重复,toast提示:该类型名称已存在,请修改;

   新建成功,返回类型列表页,toast提示:建立成功

4. 新建的类型,创建时间即为创建时间,并按时间倒序排入列表中

5. 新建成功后,新建的类型实时同步到1.1二维码管理编辑页、1.3修改页面和1.4商品编辑页调取 的类型下拉单里面,

实现思路

1. HTML部分

<template>
  <div>
    <el-button
      type="primary"
      @click="dialogFormVisible = true"
      style="float:right;margin-bottom:20px;margin-right:100px"
    >新建类型</el-button>
    <el-dialog title="新建类型" :visible.sync="dialogFormVisible" width="400px" center>
      <el-form>
        <el-form-item label="类型名称" :label-width="formLabelWidth">
          <el-input
            v-model="typeName"
            autocomplete="off"
            maxlength="15"
            placeholder="点击输入"
            clearable
            style="width:200px"
          ></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="addType">确 定</el-button>
      </div>
    </el-dialog>

    <div class="layout-list">
      <el-table :data="typeData" border style="width:600px">
        <el-table-column label="类型名称" align="center" width="200px" prop="name"></el-table-column>
        <el-table-column label="创建时间" align="center" width="200px" prop="createTime">
          <template slot-scope="scope">{{scope.row.createTime}}</template>
        </el-table-column>
        <el-table-column label="操作" align="center">
          <template slot-scope="scope">
            <el-button size="normal" type="text" @click="deleteType(scope.row)">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div class="dialog">
        <el-dialog title="提示" :visible.sync="centerDialogVisible" width="30%" center>
          <span>确认删除此类型?</span>
          <span slot="footer" class="dialog-footer">
            <el-button @click="centerDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="sureDelete">确 定</el-button>
          </span>
        </el-dialog>
      </div>
    </div>
  </div>
</template>

2. JS思路

(1)获取列表数据

在created中添加getData,使得每次页面刷新都获取数据

async getData() {
      const result = await this.$ajax.get('/admin/teacher/getAllTeacherType')
      this.typeData = result.data.data
      //处理时间格式
      this.typeData = this.typeData.map(item => {
        const time = item['createTime']
        item['createTime'] = this.format(new Date(time), 'yyyy-MM-dd hh:mm:ss')
        return item
      })
      console.log(result)
    },

(2)删除某类型

首先调用接口判断关联二维码个数是否为0,如果不为零toast提示,如果为零,弹出对话框再次确认删除

async deleteType(row) {
      // 删除类型 *校验关联二维码个数n
      console.log('删除')
      this.currentTypeId = row.id
      let res = await this.$ajax.get(`${this.api.linkUrl}?id=${row.id}`)
      if (res.data && res.data.retcode == 10000) {
        console.log(res.data.data)
        if (res.data.data > 0) {
          this.$message({
            message: '该类型已关联老师二维码,无法删除',
            type: 'error',
          })
        } else {
          this.centerDialogVisible = true
        }
      } else {
        this.$message({
          message: '网络错误,请稍后再试',
          type: 'error',
        })
      }
      this.getData()
    },
async sureDelete() {
      console.log('sureDelete')
      if (!this.currentTypeId) return
      let res = await this.$ajax.get(
        `${this.api.deleteUrl}?id=${this.currentTypeId}`
      )
      if (res.data.retcode === 10000) {
        this.$message({
          message: '删除成功',
          type: 'success',
        })
        this.getData() // 刷新页面数据
      } else {
        this.$message({
          message: '删除失败',
          type: 'error',
        })
      }
      this.centerDialogVisible = false
    },
warning(message, type = 'warning') {
      this.$message({
        message,
        type,
      })
    },

(3)新建类型

addType() {
      // 新建类型 *校验类型是否已经存在
      console.log('新建类型')
      console.log(this.typeName)
      this.$ajax
        .post(`${this.api.addUrl}?name=${this.typeName}`)
        .then(res => {
          if (res.data && res.data.retcode === 10000) {
            this.warning('建立成功', 'success')
            console.log(this.typeName)
          } else if (res.data && res.data.retcode === 20001) {
            this.warning(res.data.retdesc,'error')
            console.log(this.typeName)
          } else {
            this.warning('建立失败', 'error')
          }
          this.getData() // 刷新页面
        })
        .catch(() => {
          this.warning('建立失败', 'error')
        })
      this.dialogFormVisible = false
      this.typeName = ''
    },

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ThinkPHP 是一个优秀的PHP框架,可以帮助我们快速开发高质量的 Web 应用程序。因此,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。下面我们来讨论一下如何使用 ThinkPHP 来开发一个人力资源管理系统。 1. 创建数据库 首先,我们需要创建一个数据库来存储我们的数据。在该数据库中,我们需要创建一些表来存储员工信息、部门信息、职位信息、薪资信息等等。我们可以使用 MySQL 数据库来创建这些表。 2. 创建 ThinkPHP 项目 在创建完数据库之后,我们需要创建一个 ThinkPHP 项目来实现我们的 OA 系统。我们可以使用 ThinkPHP 官方提供的命令行工具来创建项目,具体命令如下: ``` composer create-project topthink/think oa ``` 执行完上述命令后,会在当前目录下创建一个名为 oa 的 ThinkPHP 项目。 3. 配置数据库 在项目创建好之后,我们需要配置数据库连接信息。在项目的 `.env` 文件中,我们可以配置数据库的相关信息,如下所示: ``` # 数据库类型 DB_CONNECTION=mysql # 数据库地址 DB_HOST=127.0.0.1 # 数据库端口 DB_PORT=3306 # 数据库名 DB_DATABASE=oa # 数据库用户名 DB_USERNAME=root # 数据库密码 DB_PASSWORD= ``` 我们需要根据自己的实际情况来修改这些配置项。 4. 创建控制器和模型 在 ThinkPHP 中,我们可以通过创建控制器和模型来实现 OA 系统的功能。我们可以使用命令行工具来快速创建控制器和模型,具体命令如下: ``` # 创建控制器 php think make:controller Index # 创建模型 php think make:model User ``` 执行完上述命令后,会在项目中生成一个名为 Index 的控制器和一个名为 User 的模型。 5. 实现功能 在创建好控制器和模型之后,我们就可以开始实现 OA 系统的功能了。比如,我们可以实现员工信息的添加、修改、删除、查询等操作,部门信息的添加、修改、删除、查询等操作,职位信息的添加、修改、删除、查询等操作,薪资信息的添加、修改、删除、查询等操作等等。我们可以在控制器中编写处理逻辑,在模型中编写数据库操作。最后,我们可以使用视图来展示数据。 6. 测试系统 在实现完功能之后,我们需要对系统进行测试。我们可以使用浏览器或者 Postman 等工具来测试系统的功能是否正常。如果有问题,我们可以根据错误提示来进行调试和修复。 总之,使用 ThinkPHP 来开发 OA 系统是非常方便和实用的。我们可以根据自己的实际情况来定制系统的功能和界面,从而更好地管理公司的人力资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白Rachel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值