目录
(1)在系统管理菜单中——》参数设置——》找到账户自助-验证码开关——》修改键值为false。

(2)在移动端前端将login.vue的captchaEnabled改为false,关闭验证码开关

(3)在移动端login.vue注释掉此段。主要原因不注释的话,是在本机验证正常,上传服务器后显示不正常。



在根目录下config.js文件进行修改

(1)将config.js的baseUrl换成/prod-api

(2)点击发布——》网站PC web或手机h5,然后填好标题及域名,点击发行按钮,即可成功打包。

(3)在控制台打开此目录

将此目录下的index文件和static文件夹上传到服务器前端目录下 
(4)配置Nginx
在nginx添加如下代码,
a. 注意前端端口号9090需要没有被其他程序占用,否则无法启动。
b. 后端端口地址此代码中是http://localhost:8085。如需修改后端代码,参照上面内容
c. 前端端口号9090需要防火墙设置所有ip都可以访问
d. /prod-api和移动端config.js的baseUrl内容/prod-api要一致
e.root /home/ptc/whale_sys/dist_h5此目录是移动端index和static文件上传的目录
server {
listen 9090;
location / {
root /home/ptc/whale_sys/dist_h5;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
location /prod-api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:8085/;
}
}
配置完后 ngnix -s reload热启动ngnix
(5)在浏览器预览如下

(1)使用@RequestParam 传参数
使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值
前端:
let url=‘张三'
let params={'url':url}
getJsapiSignature(params).then(res => {....})
api:
export function getJsapiSignature(query) {
return request({
url: '/system/qywx/signature/',
method: 'get',
params: query
})
}
后端:
@GetMapping(value = "/system/qywx/signature/")
public WxJsapiSignature getJsapiSignature(@RequestParam("url") String url) {
System.out.println(url);
}
(2)使用@PathVariable 传参数
使用@PathVariable时,URL是这样的:http://host:port/path/参数值
前端:
getGoodDataByCode(codeContent).then(res => {....})
api:
// 通过二维码查询物资信息
export function getGoodDataByCode(goodCode) {
return request({
url: '/feedback/goods/code/'+goodCode,
method: 'get',
})
}
后端:
@GetMapping(value = "code/{goodCode}")
public AjaxResult getInfo(@PathVariable("goodCode") String goodCode)
{
return AjaxResult.success(fGoodsService.selectFGoodsByCode(goodCode));
}
(1)join方法用来将数组转化为字符串,并用顿号隔开
用法1: aaList:["aaa“,”bbb", "ccc"]
aaList.join(',')后就是aaa,bbb,ccc
用法提升: let images = []
this.fileList1.forEach((item) => {
images.push(item.url)
})
this.form.problemPhotos=images.join(',');
(2)splice方法用来替换/删除/添加数组内某一个值或几个值,该方法会改变初始数组。
删除:
let arr = ['1','2','3','4'];
arr.splice(0,2);
console.log(arr.toString());
//3,4
替换:
let arr = ['1','2','3','4'];
arr.splice(0,2,['5','6','7']);
console.log(arr.toString());
//5,6,7,3,4
新增:
let arr = ['1','2','3','4'];
arr.splice(0,0,['5','6','7']);
console.log(arr.toString());
//5,6,7,1,2,3,4, (1)Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。用法:
Object.assign(target, ...sources)
参数: target--->目标对象
source--->源对象
返回值:target,即目标对象
var target={name:'guxin',age:25};
var source={state:'single'}
var result=Object.assign(target,source);
console.log(target,target==result);
结果:{name: 'guxin',age:25,state:'single'}
(2)JSON.parse格式转化,将字符串转换为对象
let res = JSON.parse(uploadRes.data) //最终传给的是字符串,这里需要转换格式
console.log(res.file)
需使用uview
var date = new Date();
this.form.problemDate = this.$u.timeFormat(date, 'yyyy-mm-dd hh:MM:ss')

需求:有些数据注定需要转化之后才能给人看,但是又不想每次都反复写三目或很长的转化表达式
比如:性别,状态
<!-- 性别 -->
<view >
<text class="text-grey">性别</text>
</view>
<view >
<text class="text-grey">{{info.sex | formatSex}}</text></view>
</view>
export default {
data(){
return{
}
},
//和computed,watch等同级别
filters: {
// 格式化性别
formatSex: function(str) {
const sexEnum = {
"1": "男",
"2": "女",
}
return sexEnum[str];
}
},
methods: {
}
}
(1)在页面中引入方法
import { getDicts } from "@/api/system/dict/data";
(2)加载数据字典
export default {
data() {
return {
statusOptions: [],
.....
...
onLoad(option) {
this.getDicts("status_type").then(response => {
this.statusOptions= response.data;
});
},
(3)前端
<span>{{statusType}}</span>
(4)读取数据字典显示内容
//使用find遍历查找,并显示字典值
let status=app.statusOptions.find(item=>item.dictValue==res.data.status);
this.statusType=status .dictLabel
(5)列表显示
将列表中的数字,遍历直接替换成字典值
this.dataList.forEach((self,index) => {
let status=this.statusOptions.find(item=>item.dictValue==self.status);
self.statusType=status.dictLabel
});
import { getUserProfile } from "@/api/system/user"
getUserProfile().then(response => {
app.form.problemUsername = response.data.nickName
app.form.problemUsernum = response.data.userName
});
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt