状态1 没有key
状态2 输入key待确认
状态3 有key了。
状态4 修改key
状态5 修改确认key
状态3
其实一共就5个状态。
每个状态对应的视图不一样。
<script setup> import requestUtil from "@/util/request"; import store from '@/store' import {ref, computed , onMounted,nextTick , reactive,onBeforeMount, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted} from 'vue' import {ElMessage} from 'element-plus' const state = ref("unbind") //unbind awaitBind binded changing awaitChange const now = ref("") const pre = ref("456") const form = ref() const strageObj = { unbind: { firstLabel: "输入key值", firstType: "input", buttonText: "确认", buttonFn: () => { state.value = "awaitBind" } } , awaitBind: { secondLabel: "待确认key值:", secondType: "span", buttonText: "我已确认无误,使用该kay", buttonFn: () => { saveKey(); } } , binded: { firstLabel: "你的key值", firstType: "span", buttonText: "修改", buttonFn: () => { state.value = "changing" } } , changing: { firstLabel: "当前key值", firstType: "span", secondLabel: "要修改为", secondType: "input", buttonText: "确认修改", buttonFn: () => { if(!now.value){ alert("输入key"); return; } state.value = "awaitChange" } } , awaitChange: { firstLabel: "当前key值", firstType: "span", secondLabel: "要修改为", secondType: "span", buttonText: "确认使用新key", buttonFn: () => { saveKey(); } } } const stateobj = computed(()=>{ return strageObj[state.value] }) const queryForm=ref({ query:'', pageNum:1, pageSize:100 }) const getKey =async()=>{ console.log(queryForm.value); const res=await requestUtil.get("api/key/get"); console.log(res.data.key); if(res.data.key){ //有key state.value = "binded"; pre.value = res.data.key; }else{ //没有key 不用管 默认就行了 } } const saveKey = async ()=>{ const res=await requestUtil.post("api/key/save",{key:now.value} ); now.value="" getKey(); } getKey(); </script> <style scoped> </style> <template> <div style="padding: 15px; max-width: 400px; "> <el-form :model="form" label-width="auto" > <el-form-item v-if="stateobj.firstLabel&&stateobj.firstType" :label="stateobj.firstLabel"> <el-input v-model="now" v-if="stateobj.firstType==='input'" /> <span v-if="stateobj.firstType==='span'">{{pre}}</span> </el-form-item> <el-form-item v-if="stateobj.secondLabel&&stateobj.secondType" :label="stateobj.secondLabel"> <el-input v-model="now" v-if="stateobj.secondType==='input'" /> <span v-if="stateobj.secondType==='span'">{{now}}</span> </el-form-item> <el-form-item> <el-button type="primary" @click="()=>{ stateobj.buttonFn() }">{{stateobj.buttonText}}</el-button> </el-form-item> </el-form> </div> </template>
package java456.com.controller_demo4; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java456.com.entity.BigType; import java456.com.entity.PageBean; import java456.com.entity.R; import java456.com.entity_demo1.People; import java456.com.entity_demo1.Project; import java456.com.service.PeopleService; import java456.com.service.ProjectService; import java456.com.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.ServletContext; import java.util.*; @RestController @RequestMapping("/api/key") public class KeytController { @Autowired private ServletContext servletContext; /** * /api/key/get * 添加或者修改 * @return */ @RequestMapping("/get") public R get(){ Map<String, Object> resultMap = new HashMap<>(); String key = (String) servletContext.getAttribute("key"); resultMap.put("key",key); //servletContext.setAttribute("config", config); return R.ok(resultMap); } @PostMapping("/save") public R save(@RequestBody Map<String, String> params ){ String key= params.get("key"); servletContext.setAttribute("key", key); return R.ok(); } }
站长微信:xiaomao0055
站长QQ:14496453