Blogger Information
Blog 46
fans 2
comment 0
visits 19129
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1、安装axios。 2、封装axios。 3、编写php管理员接口。 4、获取管理员接口数据。。 5、编写php添加管理员接口。6、请求添加管理员接口
P粉314265155
Original
361 people have browsed it

安装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. }
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!