博客列表 >1、安装axios。 2、封装axios。 3、编写php管理员接口。 4、获取管理员接口数据。。 5、编写php添加管理员接口。6、请求添加管理员接口

1、安装axios。 2、封装axios。 3、编写php管理员接口。 4、获取管理员接口数据。。 5、编写php添加管理员接口。6、请求添加管理员接口

P粉314265155
P粉314265155原创
2022年09月19日 21:59:24360浏览

安装axios

  1. npm i axios -S

封装axios

  1. network/index.js
  2. import { request } from "./request";
  3. // 所有请求放到一个目录里面
  4. export function index(){
  5. return request({
  6. url:"Api/index",
  7. method :"get",
  8. })
  9. }
  10. export function UserLists(){
  11. return request({
  12. url:"Api/UserLists",
  13. method :"post",
  14. })
  15. }
  16. // 接收穿过来的值 data
  17. export function UserSave(data){
  18. return request({
  19. url:"Api/UserSave",
  20. method :"post",
  21. data:data,
  22. })
  23. }
  1. network/request.js
  2. import axios from "axios";
  3. // config 就是下列参数
  4. // instan({
  5. // method :"get",
  6. // url :"Index.php/index/Api/index"
  7. // })
  8. export function request(config) {
  9. // # 1.3、创建axios
  10. const instance = axios.create({
  11. baseURL: "http://bite.com/Index.php/index/",
  12. timeout: 5000,
  13. });
  14. //请求拦截
  15. instance.interceptors.request.use(
  16. (config) => {
  17. // 如果API需要认证, 在这统一设置
  18. return config;
  19. },
  20. (err) => {
  21. }
  22. );
  23. //响应拦截
  24. instance.interceptors.response.use(
  25. (res) => {
  26. // return res.data ? res.data : res;
  27. if(!res){
  28. alert ('未找到数据');
  29. return false;
  30. }else{
  31. // alert ('找到数据');
  32. // return res;
  33. return res.data? res.data :res;
  34. }
  35. },
  36. (err) => {
  37. // 如果没有授权, 去login
  38. // 如果有错误, 在这里可以提示
  39. }
  40. );
  41. return instance(config);
  42. }

编写php管理员接口 和获取管理员接口数据

  1. user.vue
  2. <template>
  3. <div style="margin: 0 0 20px 10px">
  4. <!-- 增加点击事件,打开表单 -->
  5. <el-button type="success" size="large" @click="add(0)">添加</el-button>
  6. </div>
  7. <!-- <el-form label-width = "120px"> -->
  8. <!-- <el-form-item label="姓名"> -->
  9. <!-- 填写数据双向绑定 -->
  10. <!-- <el-input /> -->
  11. <!-- </el-form-item> -->
  12. <!-- <el-form-item > -->
  13. <!-- <el-button type="primary" @click="onSubmit" >搜索</el-button> -->
  14. <!-- </el-form-item> -->
  15. <!-- </el-form> -->
  16. <el-table :data="tableData.lists" border style="width: 100%" size="large">
  17. <el-table-column prop="uid" label="ID" />
  18. <el-table-column prop="account" label="用户账户" />
  19. <el-table-column prop="name" label="姓名" />
  20. <el-table-column prop="phone" label="手机号" />
  21. <el-table-column prop="status" label="状态" />
  22. <el-table-column prop="add_time" label="添加时间" />
  23. <el-table-column prop="last_time" label="最后登录时间" />
  24. <el-table-column label="操作">
  25. <!-- default 这个是默认的插槽 -->
  26. <!-- scope 是传值给这个插槽,这个值是什么呢?就是当前这条数据 -->
  27. <!-- 当数据有多条时,放el-table 这个标签里,它会自动循环,每次循环都会把当前的循环值给到el-table-column -->
  28. <template #default="scope">
  29. <!-- @click="handleEdit(scope.$index, scope.row)" -->
  30. <!-- <el-button size="small" type="primary" @click ="add(1)">修改1</el-button> -->
  31. <!-- <el-button size="small" type="primary" @click="add(scope.$index, scope.row)>修改2</el-button> -->
  32. <el-button size="small" type="primary" @click="add(scope.row)">修改</el-button>
  33. <el-button size="small" type="danger" >删除</el-button>
  34. </template>
  35. </el-table-column>
  36. </el-table>
  37. <!-- 增加 弹框 默认不显示 点击添加事件显示 -->
  38. <el-dialog
  39. v-model="xsfrom.is_from"
  40. :title="xsfrom.title"
  41. width="70%">
  42. <!-- 添加 页面表单 填写数据双向绑定 与添加按钮关联,判断是否显示 -->
  43. <el-form :model="fromData" label-width="120px" size="large" >
  44. <el-form-item label="账户">
  45. <!-- 填写数据双向绑定 -->
  46. <el-input v-model="fromData.account" />
  47. </el-form-item>
  48. <el-form-item label="姓名">
  49. <el-input v-model="fromData.name" />
  50. </el-form-item>
  51. <el-form-item label="手机号">
  52. <el-input v-model="fromData.phone" />
  53. </el-form-item>
  54. <el-form-item label="密码">
  55. <el-input v-model="fromData.password" type = "password" show-password />
  56. </el-form-item>
  57. <!-- 注意位置 -->
  58. <el-form-item label="状态">
  59. <el-select v-model="fromData.status" placeholder="请选择状态">
  60. <el-option label="开启" :value="1" />
  61. <el-option label="关闭" :value="2" />
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item label="入职时间">
  65. <el-date-picker
  66. v-model="fromData.add_time"
  67. type="date"
  68. placeholder="请选择日期"
  69. :size="size"
  70. />
  71. </el-form-item>
  72. <el-button type="success" size="large" @click="fun">确定</el-button>
  73. </el-form>
  74. </el-dialog>
  75. </template>
  76. <script setup>
  77. import { reactive } from 'vue';
  78. import axios from 'axios';
  79. import { index } from '../../../network/index.js';
  80. import { UserLists, UserSave} from '../../../network/index.js';
  81. import { ElMessage } from 'element-plus';
  82. const xsfrom= reactive({
  83. is_from : false,
  84. title : "添加",
  85. }) ;
  86. const fromData= reactive( {
  87. account :'',
  88. name : '',
  89. phone : '',
  90. add_time : '',
  91. status: 1,
  92. password:'',
  93. });
  94. // const instan = axios.create({
  95. // baseURL : "http://bite.com",
  96. // timeout :5000,
  97. // });
  98. // instan({
  99. // method :"get",
  100. // url :"Index.php/index/Api/index"
  101. // }).then((e)=>{
  102. // console.log(e.data);
  103. // }).catch((e)=>{
  104. // console.log(e);
  105. // })
  106. // 常量不允许赋值 这样是错误的 const tableData = [];
  107. // 正确的应该: 改为响应式的 ,注意lists给表单 匹配
  108. const tableData = reactive ({
  109. lists : [ ]
  110. });
  111. // 更换方法名称
  112. // index().then((e)=>{
  113. UserLists().then( (e)=>{
  114. // console.log(e.data);
  115. console.log(e);
  116. tableData.lists = e;
  117. });
  118. // const tableData = [
  119. // {
  120. // uid: "1",
  121. // account:'xiaogou',
  122. // name: '小狗',
  123. // phone:'18963300000',
  124. // status: '在职',
  125. // add_time: '2022年09月1日',
  126. // last_time: '2022年09月2日',
  127. // },
  128. // ];
  129. // 添加修改确定按钮
  130. const fun = () =>{
  131. console.log(fromData);
  132. // 有返回值
  133. // 传值 fromData
  134. UserSave(fromData).then((e)=>{
  135. console.log(e);
  136. // 方式一
  137. // alert('成功');
  138. // 方式二
  139. // ElMessage(e.ms);
  140. // 方式三
  141. if(e.code == 0){
  142. ElMessage({
  143. message: e.msg,
  144. type: 'success'
  145. });
  146. }else{
  147. ElMessage({
  148. message: e.msg,
  149. type: 'error'
  150. });
  151. }
  152. // if(e.code == 0){
  153. // }else{
  154. // }
  155. // 成功后关闭对话框
  156. xsfrom.is_from = false;
  157. })
  158. };
  159. // const add = (e,ee) =>{
  160. const add = (e) =>{
  161. xsfrom.is_from = true;
  162. console.log(e);
  163. // console.log(ee);
  164. if (e !=0){
  165. xsfrom.title ="修改";
  166. fromData.account = e.account;
  167. fromData.phone = e.phone;
  168. fromData.name = e.name;
  169. fromData.status = e.status;
  170. fromData.add_time = e.add_time;
  171. fromData.password = '';
  172. }else{
  173. xsfrom.title ="添加";
  174. fromData.account = '';
  175. fromData.phone ='';
  176. fromData.name = '';
  177. fromData.password = '';
  178. }
  179. };
  180. </script>

编写php添加管理员接口和请求添加管理员接口

  1. api.js接口
  2. <?php
  3. namespace app\index\controller;
  4. use app\BaseController;
  5. // 引入数据库门面类
  6. use think\facade\Db;
  7. // 普通类 不能跟门面类一起使用
  8. // use think\Db;
  9. // 引入请求门面类 request
  10. use think\facade\Request;
  11. // 每个文件必有一个class 不会有多个class
  12. // 类名要与文件名保持一致
  13. class Api extends BaseController
  14. {
  15. // public function index(){
  16. public function UserLists(){
  17. // 如果 是跨域问题,就两步
  18. // 1、设置 header
  19. // 2\、设置中间件
  20. // 是否允许跨域 中间件 middleware.php文件
  21. // \thinkl\middleware\AllowCrossDomain::class
  22. header("Access-Control-Allow-Origin:*");
  23. // echo 111;
  24. // 在thinkphp写接口
  25. // 第一步: 接收传值,如果没有传值或者你需要传值,就把数据返回
  26. // 第二步: 把数据获取出来,进行整理
  27. // 第三步: 把数据返回回去,使用统一格式(xml \json)
  28. // 第四步 :当我们把数据从数据库读取出来之后 ,整理成新数组,然后使用函数转为json格式,返回给调用者
  29. //--------------------------------
  30. // 拓展知识
  31. // JSON 是一种数据格式,并不是编程语言,在小程序中,JSON扮演的静态配置的角色
  32. // JSON文件都是被包裹在一个大括号中 {},通过key-value的方式来表达数据。
  33. // JSON的Key必须包裹在一个双引号中,在实践中,编写 JSON 的时候,忘了给 Key 值加双引号或者是把双引号写成单引号是常见错误。
  34. // JSON的值只能是以下几种数据格式,其他任何格式都会触发报错。
  35. // 1, 数字,包含浮点数和整数
  36. // 2, 字符串,需要包裹在双引号中
  37. // 3, Bool值,true 或者 false
  38. // 4, 数组,需要包裹在方括号中 []
  39. // 5, 对象,需要包裹在大括号中 {}
  40. // 6, Null
  41. // 还需要注意的是 JSON 文件中无法使用注释,添加注释将会引发报错。
  42. // json数据最后一个元素,不能有,号。数组和对象里的最后一个元素,也不能有,号。
  43. //--------------------------------
  44. // json 格式为主 但是在PHP中不方便,要先创建
  45. // 数组然后转为json格式
  46. // $json =' {
  47. // oy =>"欧阳";
  48. // }';
  49. // echo $json;
  50. // echo "<hr>";
  51. // $arr = [
  52. // json 里面有 整邢、浮点型、字符串数据、布尔
  53. // [
  54. // 'uid' => 1,
  55. // 'name' => '欧阳',
  56. // ],
  57. // [
  58. // 'uid' => 2,
  59. // 'name' => '欧阳',
  60. // ],
  61. // ];
  62. // Array ( [0] => Array ( [uid] => 1 [name] => 欧阳 ) [1] => Array ( [uid] => 2 [name] => 欧阳 ) )
  63. // print_r($arr);
  64. // echo '<hr>';
  65. // 将数组 转为 json 格式
  66. // $json =json_encode($arr);
  67. // [{"uid":1,"name":"\u6b27\u9633"},{"uid":2,"name":"\u6b27\u9633"}]
  68. // print_r($json);
  69. // echo'<hr>';
  70. // 打印的是 字符串 string(65) "[{"uid":1,"name":"\u6b27\u9633"},{"uid":2,"name":"\u6b27\u9633"}]"
  71. // var_dump($json);
  72. // echo '<hr>';
  73. // 将json 改为 数组格式
  74. // $arr2 = json_decode($json,true);
  75. // Array ( [0] => Array ( [uid] => 1 [name] => 欧阳 ) [1] => Array ( [uid] => 2 [name] => 欧阳 ) )
  76. // print_r($arr2);
  77. // echo '<hr>';
  78. $user =Db::table('lh_kds')->select()->toArray();
  79. // 输出数组
  80. // print_r($user);
  81. // echo '<hr>';
  82. // 注意顺序
  83. if(!empty($user)){
  84. // 注意加上& 符号,不然不能修改 $user 属性值
  85. foreach($user as &$user_v){
  86. if($user_v['status'] ==1){
  87. $user_v['status'] = '开启';
  88. }else{
  89. $user_v['status'] = '关闭';
  90. }
  91. $user_v['add_time'] = date('Y-m-d H:i:s', $user_v['add_time']);
  92. $user_v['last_time'] = date('Y-m-d H:i:s', $user_v['last_time'] );
  93. }
  94. }
  95. // print_r( $user_v);
  96. // 数组转为字符串
  97. $json=json_encode($user);
  98. // 输出字符串
  99. echo $json;
  100. // 接口这里面的返回数据一定要注意共用性
  101. // 提前见附返回的数据转义
  102. }
  103. public function UserSave(){
  104. // 比如账户,传mysql 原生语句
  105. // 链式Db类已经做了放置注入sql语句了
  106. // header("Access-Control-Allow-Origin:*");
  107. // 助手函数
  108. $post = input ('post.');
  109. // print_r($post);
  110. $data = [
  111. 'account' =>$post['account'],
  112. // 'password' =>md5($post['password']),
  113. 'name' =>$post['name'],
  114. 'status' =>$post['status'],
  115. 'phone' =>$post['phone'],
  116. 'add_time'=>time(),
  117. ];
  118. $insert = Db::table('lh_kds')->insert($data);
  119. if(empty( $insert)){
  120. $arr = [
  121. 'code' => 1,
  122. 'msg' => '失败'
  123. ];
  124. }else{
  125. $arr = [
  126. 'code' => 0,
  127. 'msg' => '成功'
  128. ];
  129. }
  130. json_encode($arr);
  131. }
  132. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议