Commit 858858ce authored by 528360026@qq.com's avatar 528360026@qq.com

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	pages/mes/qc/index.vue
parents 81d20bfc 2f09e3ed
<script> <script>
export default { export default {
onLaunch: function() { onLaunch: function () {
// console.log('App Launch') // #ifdef APP-PLUS
}, plus.navigator.setFullscreen(true);
onShow: function() { plus.screen.lockOrientation('landscape-primary');
// console.log('App Show') // #endif
}, },
onHide: function() { onShow: function () {
// console.log('App Hide') },
} onHide: function () {
} }
}
</script> </script>
<style lang="scss"> <style lang="scss">
/*每个页面公共css */ /*每个页面公共css */
@import "@/uview-ui/index.scss"; @import "@/uview-ui/index.scss";
</style> </style>
FROM nginx
MAINTAINER xin.lu
VOLUME /tmp
ENV LANG en_US.UTF-8
RUN echo "server { \
listen 81; \
client_max_body_size 50M; \
location /api/ { \
proxy_pass http://192.168.3.91:8084/; \
proxy_redirect off; \
proxy_set_header Host mes-pad; \
proxy_set_header X-Real-IP \$remote_addr; \
proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
} \
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
location / { \
root /var/mes/mes-pad/; \
index index.html index.htm; \
if (!-e \$request_filename) { \
rewrite ^(.*)\$ /index.html?s=\$1 last; \
break; \
} \
} \
access_log /var/log/nginx/access.log ; \
} " > /etc/nginx/conf.d/default.conf \
&& mkdir -p /var/mes \
&& mkdir -p /var/mes/mes-pad
ADD / /var/mes/mes-pad/
EXPOSE 80
EXPOSE 443
# ktg-mes-pad # mes-pad
#### Description #### Description
MES系统触控屏端 MES系统触控屏端
......
# ktg-mes-pad # mes-pad
#### 介绍 #### 介绍
MES系统触控屏端 MES系统触控屏端
......
const config = { const config = {
// 产品名称 // 产品名称
productName: 'ktg-mes-pad', productName: 'mes-pad',
// 公司名称 // 公司名称
companyName: 'ktg', companyName: '',
// 产品版本号 // 产品版本号
productVersion: 'V0.1.0', productVersion: 'V0.1.0',
// 版本检查标识 // 版本检查标识
appCode: 'android', appCode: 'android',
// 内部版本号码 // 内部版本号码
appVersion: 1, appVersion: 1,
// 管理基础路径 // 管理基础路径
adminPath: '' adminPath: ''
} }
// 设置后台接口服务的基础地址 // 设置后台接口服务的基础地址
// config.baseUrl = 'http://localhost:8080'; config.baseUrl = 'http://192.168.25.105:8080';
//config.baseUrl = "http://101.43.244.58:8080/"; //config.baseUrl = "http://101.43.244.58:8080/";
config.baseUrl = "/api"; //config.baseUrl = "/api";
//config.baseUrl = "http://101.200.162.168:8080";
export default config; export default config;
\ No newline at end of file
import Vue from 'vue' import Vue from 'vue'
import { mergeRecursive } from "@/utils/ruoyi"; import {
mergeRecursive
} from "@/utils/ruoyi";
import DictMeta from './DictMeta' import DictMeta from './DictMeta'
import DictData from './DictData' import DictData from './DictData'
const DEFAULT_DICT_OPTIONS = { const DEFAULT_DICT_OPTIONS = {
types: [], types: [],
} }
/** /**
...@@ -14,45 +16,47 @@ const DEFAULT_DICT_OPTIONS = { ...@@ -14,45 +16,47 @@ const DEFAULT_DICT_OPTIONS = {
* @property {Array.<DictMeta>} _dictMetas 字典元数据数组 * @property {Array.<DictMeta>} _dictMetas 字典元数据数组
*/ */
export default class Dict { export default class Dict {
constructor() { constructor() {
this.owner = null this.owner = null
this.label = {} this.label = {}
this.type = {} this.type = {}
} }
init(options) { init(options) {
if (options instanceof Array) { if (options instanceof Array) {
options = { types: options } options = {
} types: options
const opts = mergeRecursive(DEFAULT_DICT_OPTIONS, options) }
if (opts.types === undefined) { }
throw new Error('need dict types') const opts = mergeRecursive(DEFAULT_DICT_OPTIONS, options)
} if (opts.types === undefined) {
const ps = [] throw new Error('need dict types')
this._dictMetas = opts.types.map(t => DictMeta.parse(t)) }
this._dictMetas.forEach(dictMeta => { const ps = []
const type = dictMeta.type this._dictMetas = opts.types.map(t => DictMeta.parse(t))
Vue.set(this.label, type, {}) this._dictMetas.forEach(dictMeta => {
Vue.set(this.type, type, []) const type = dictMeta.type
if (dictMeta.lazy) { Vue.set(this.label, type, {})
return Vue.set(this.type, type, [])
} if (dictMeta.lazy) {
ps.push(loadDict(this, dictMeta)) return
}) }
return Promise.all(ps) ps.push(loadDict(this, dictMeta))
} })
return Promise.all(ps)
}
/** /**
* 重新加载字典 * 重新加载字典
* @param {String} type 字典类型 * @param {String} type 字典类型
*/ */
reloadDict(type) { reloadDict(type) {
const dictMeta = this._dictMetas.find(e => e.type === type) const dictMeta = this._dictMetas.find(e => e.type === type)
if (dictMeta === undefined) { if (dictMeta === undefined) {
return Promise.reject(`the dict meta of ${type} was not found`) return Promise.reject(`the dict meta of ${type} was not found`)
} }
return loadDict(this, dictMeta) return loadDict(this, dictMeta)
} }
} }
/** /**
...@@ -62,21 +66,24 @@ export default class Dict { ...@@ -62,21 +66,24 @@ export default class Dict {
* @returns {Promise} * @returns {Promise}
*/ */
function loadDict(dict, dictMeta) { function loadDict(dict, dictMeta) {
return dictMeta.request(dictMeta) return dictMeta.request(dictMeta)
.then(response => { .then(response => {
const type = dictMeta.type const type = dictMeta.type
let dicts = dictMeta.responseConverter(response, dictMeta) let dicts = dictMeta.responseConverter(response, dictMeta)
if (!(dicts instanceof Array)) { // #ifdef H5
console.error('the return of responseConverter must be Array.<DictData>') if (!(dicts instanceof Array)) {
dicts = [] console.error('the return of responseConverter must be Array.<DictData>')
} else if (dicts.filter(d => d instanceof DictData).length !== dicts.length) { dicts = []
console.error('the type of elements in dicts must be DictData') } else
dicts = [] // #endif
} if (dicts.filter(d => d instanceof DictData).length !== dicts.length) {
dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts) console.error('the type of elements in dicts must be DictData')
dicts.forEach(d => { dicts = []
Vue.set(dict.label[type], d.value, d.label) }
}) dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts)
return dicts dicts.forEach(d => {
}) Vue.set(dict.label[type], d.value, d.label)
} })
return dicts
})
}
\ No newline at end of file
import { mergeRecursive } from "@/utils/ruoyi"; import {
mergeRecursive
} from "@/utils/ruoyi";
import DictOptions from './DictOptions' import DictOptions from './DictOptions'
/** /**
...@@ -9,14 +11,14 @@ import DictOptions from './DictOptions' ...@@ -9,14 +11,14 @@ import DictOptions from './DictOptions'
* @property {String} value 值字段 * @property {String} value 值字段
*/ */
export default class DictMeta { export default class DictMeta {
constructor(options) { constructor(options) {
this.type = options.type this.type = options.type
this.request = options.request, this.request = options.request,
this.responseConverter = options.responseConverter this.responseConverter = options.responseConverter
this.labelField = options.labelField this.labelField = options.labelField
this.valueField = options.valueField this.valueField = options.valueField
this.lazy = options.lazy === true this.lazy = options.lazy === true
} }
} }
...@@ -25,14 +27,14 @@ export default class DictMeta { ...@@ -25,14 +27,14 @@ export default class DictMeta {
* @param {Object} options * @param {Object} options
* @returns {DictMeta} * @returns {DictMeta}
*/ */
DictMeta.parse= function(options) { DictMeta.parse = function(options) {
let opts = null let opts = null
if (typeof options === 'string') { if (typeof options === 'string') {
opts = DictOptions.metas[options] || {} opts = DictOptions.metas[options] || {}
opts.type = options opts.type = options
} else if (typeof options === 'object') { } else if (typeof options === 'object') {
opts = options opts = options
} }
opts = mergeRecursive(DictOptions.metas['*'], opts) opts = mergeRecursive(DictOptions.metas['*'], opts)
return new DictMeta(opts) return new DictMeta(opts)
} }
\ No newline at end of file
...@@ -26,6 +26,8 @@ const install = (Vue, vm) => { ...@@ -26,6 +26,8 @@ const install = (Vue, vm) => {
params), params),
getWorkstationList: (params = {}) => vm.$u.get(config.adminPath + getWorkstationList: (params = {}) => vm.$u.get(config.adminPath +
'/mobile/md/workstation/getWorkstationList', params), '/mobile/md/workstation/getWorkstationList', params),
getWorkUnitList: (params = {}) => vm.$u.get(config.adminPath +
'/md/workunit/getListByUser', params),
/** /**
* 生产管理相关API * 生产管理相关API
**/ **/
...@@ -64,6 +66,9 @@ const install = (Vue, vm) => { ...@@ -64,6 +66,9 @@ const install = (Vue, vm) => {
//根据字典类型查询字典数据信息 //根据字典类型查询字典数据信息
getDicts: (params = {}) => vm.$u.get(config.adminPath + '/system/dict/data/type/' + params), getDicts: (params = {}) => vm.$u.get(config.adminPath + '/system/dict/data/type/' + params),
//根据字典类型查询字典数据信息
getIssusLinebyWorkorderCodes: (params = {}) => vm.$u.post(config.adminPath + '/mobile/wm/issueline/listByWorkorderCodes', params),
/** /**
* 工艺工序相关API * 工艺工序相关API
...@@ -87,6 +92,26 @@ const install = (Vue, vm) => { ...@@ -87,6 +92,26 @@ const install = (Vue, vm) => {
'/mobile/pro/taskissue/getReserveIssueList', params), '/mobile/pro/taskissue/getReserveIssueList', params),
//打印流转单 //打印流转单
//投料验证
listFeedingInspection: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/listIssueLine', params),
validateFeedingInspection: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/validateFeedingInspection', params),
validateFeedingInspectionById: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/validateFeedingInspectionById', params),
//查询反冲料列表
recoilMaterialList: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/getRecoilMaterial', params),
//增加反冲料
addRecoilMaterial: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/addRecoilMaterial', params),
//删除反冲料
deleteRecoilMaterial: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/deleteRecoilMaterial', params),
//领料申请
listMaterialRequest: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/listMaterialRequest', params),
addMaterialRequest: (params = {}) => vm.$u.postJson(config.adminPath + '/mobile/pro/proMaterial/addMaterialRequest', params),
//退料申请
listMaterialReturn: (params = {}) => vm.$u.post(config.adminPath + '/mobile/pro/proMaterial/listIssueLine', params),
addMaterialReturn: (params = {}) => vm.$u.postJson(config.adminPath + '/mobile/pro/proMaterial/addMaterialReturn', params),
//质量相关api //质量相关api
//获取当前产品、当前质检类型的质检模板行信息 //获取当前产品、当前质检类型的质检模板行信息
...@@ -139,6 +164,12 @@ const install = (Vue, vm) => { ...@@ -139,6 +164,12 @@ const install = (Vue, vm) => {
office: { office: {
treeData: (params = {}) => vm.$u.get(config.adminPath + '/sys/office/treeData', params), treeData: (params = {}) => vm.$u.get(config.adminPath + '/sys/office/treeData', params),
}, },
//查看异常模块信息
abnormal: {
detail: (params = {}) => vm.$u.get(config.adminPath+'/qc/information/list',params),
newlyAdd: (params = {}) => vm.$u.postJson(config.adminPath+'/qc/report',params),
},
// 增删改查例子 // 增删改查例子
testData: { testData: {
...@@ -149,6 +180,16 @@ const install = (Vue, vm) => { ...@@ -149,6 +180,16 @@ const install = (Vue, vm) => {
enable: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/enable', params), enable: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/enable', params),
delete: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/delete', params), delete: (params = {}) => vm.$u.post(config.adminPath + '/test/testData/delete', params),
}, },
// 刀模版相关
dModel: {
// 获取领用单
getToolsByProcessIdAndArrangeCode: (params = {}) => vm.$u.putJson(config.adminPath + '/tm/tmToolRequestUse/getToolsByProcessIdAndArrangeCode', params),
// 获取上下机记录
getRecordsByProcessIdAndArrangeCode: (params = {}) => vm.$u.putJson(config.adminPath + '/tm/tmToolMachinesRecord/getRecordsByProcessIdAndArrangeCode', params),
// 新增
tmToolMachines: (params = {}) => vm.$u.postJson(config.adminPath + '/tm/tmToolMachines', params),
tmToolMachinesRecord: (params = {}) => vm.$u.putJson(config.adminPath + '/tm/tmToolMachinesRecord', params)
}
}; };
......
...@@ -79,6 +79,7 @@ const install = (Vue, vm) => { ...@@ -79,6 +79,7 @@ const install = (Vue, vm) => {
// 错误 // 错误
if (data.msg !== null) { if (data.msg !== null) {
uni.showToast({ uni.showToast({
icon: 'none',
title: data.msg, title: data.msg,
duration: 3000 duration: 3000
}) })
......
...@@ -2,21 +2,35 @@ ...@@ -2,21 +2,35 @@
import DataDict from '@/common/dict' import DataDict from '@/common/dict'
// import http from '@/common/http.api' // import http from '@/common/http.api'
const cache = {}; // 用于缓存已请求的字典数据
const install = (Vue, vm) => { const install = (Vue, vm) => {
Vue.use(DataDict, { Vue.use(DataDict, {
metas: { metas: {
'*': { '*': {
labelField: 'dictLabel', labelField: 'dictLabel',
valueField: 'dictValue', valueField: 'dictValue',
request(dictMeta) { request(dictMeta) {
return vm.$u.api.getDicts(dictMeta.type).then(res => res.data) if (cache[dictMeta.type]) {
return Promise.resolve(cache[dictMeta.type]);
} else {
// return vm.$u.api.getDicts(dictMeta.type).then(res => res.data)
return vm.$u.api.getDicts(dictMeta.type).then(res => {
cache[dictMeta.type] = res.data;
return res.data;
});
}
}, },
}, },
}, },
}) })
} }
const logout = () => {
Object.keys(cache).forEach(key => delete cache[key]);
};
export default { export default {
install, install,
logout
} }
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<div class="inputp"> <div class="inputp">
<div class="inputs"> <div class="inputs">
<u-icon name="search" size="35" class='searchimg' @click='search'/> <u-icon name="search" size="35" class='searchimg' @click='search'/>
<input type="text" v-model="searchval" :placeholder="placeholder" @blur="search" confirm-type="search" inputmode="search" ref='searchinput' :focus='isfocus' <input type="text" v-model="value" :placeholder="placeholder" confirm-type="search"
class='scaninput' @confirm='search' > inputmode="search" ref='searchinput' :focus='isfocus' class='scaninput' @input='search'>
<u-icon name="scan" size="35" class="scanimg" @click='clickscan'/> <u-icon name="scan" size="35" class="scanimg" @click='clickscan'/>
</div> </div>
</div> </div>
...@@ -13,27 +13,24 @@ ...@@ -13,27 +13,24 @@
export default { export default {
name: 'SearchInput', name: 'SearchInput',
props: { props: {
hasscanbtn: Boolean,//是否有扫码按钮 hasscanbtn: Boolean,
isfocus: Boolean,//是否默认focus isfocus: Boolean,
hasgosearch: Boolean,//是否要跳转到搜索界面 hasgosearch: Boolean,
types: Number,//跳转的时候的参数type值 types: Number,
placeholder: { placeholder: {
type: String, type: String,
default: '搜索车辆编号' default: '搜索车辆编号'
}, },
gourl: {//跳转的搜索页面 gourl: {
type: String, type: String,
default: '/pages/scan/scan' default: '/pages/scan/scan'
},
value: {
type: String,
default: ''
} }
}, },
data() {
return {
showsearchbtn: false,
searchval: ''
};
},
methods: { methods: {
// 点击input的时候
clickinput() { clickinput() {
// var me = this; // var me = this;
// if (me.hasgosearch) { // if (me.hasgosearch) {
...@@ -43,19 +40,17 @@ export default { ...@@ -43,19 +40,17 @@ export default {
// }) // })
// } // }
}, },
// 搜索
search() { search() {
var me = this; var me = this;
if (me.searchval === '') { if (me.value === '') {
uni.showToast({ uni.showToast({
icon: 'none', icon: 'none',
title: '请先输入搜索内容' title: '请先输入搜索内容'
}) })
return; return;
} }
me.$emit('serach', me.searchval) me.$emit('serach', me.value)
}, },
// 点击扫码的时候
clickscan() { clickscan() {
var me = this; var me = this;
if (me.hasscanbtn) { if (me.hasscanbtn) {
...@@ -75,25 +70,19 @@ export default { ...@@ -75,25 +70,19 @@ export default {
code = arr[1]; code = arr[1];
} }
}) })
me.searchval = code; me.$emit('inputchange', code);
} }
}) })
} }
}, },
watch: { watch: {
searchval(v) { value(v) {
var me = this; var me = this;
me.$emit('inputchange', v) me.$emit('input', v)
if (v != '') {
me.showsearchbtn = true;
} else {
me.showsearchbtn = false;
}
} }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.inputp { .inputp {
padding: 20upx; padding: 20upx;
......
...@@ -50,8 +50,15 @@ export default { ...@@ -50,8 +50,15 @@ export default {
text-align: center; text-align: center;
vertical-align: middle; vertical-align: middle;
padding: 0 15px; padding: 0 15px;
width: 100px; width: 120px;
height: 100px; height: 120px;
border-top: 1px solid #505462;
border-bottom: 1px solid #505462;
display: flex;
flex-wrap: wrap;
align-content: center;
flex-direction: column;
justify-content: center;
} }
.active { .active {
...@@ -59,7 +66,7 @@ export default { ...@@ -59,7 +66,7 @@ export default {
} }
.inActive { .inActive {
background-color: #0285ff; background-color: #4ea381;
} }
.tab-bar-item img { .tab-bar-item img {
......
{ {
"name" : "ktg-mes-pad", "name" : "mes-pad",
"appid" : "__UNI__ECAC3FC", "appid" : "__UNI__EA378AB",
"description" : "MES-PAD", "description" : "MES-PAD",
"versionName" : "1.0.0", "versionName" : "1.0.0",
"versionCode" : "100", "versionCode" : "100",
...@@ -10,6 +10,10 @@ ...@@ -10,6 +10,10 @@
"usingComponents" : true, "usingComponents" : true,
"nvueStyleCompiler" : "uni-app", "nvueStyleCompiler" : "uni-app",
"compilerVersion" : 3, "compilerVersion" : 3,
"screenOrientation" : [
"landscape-primary", //可选,字符串类型,支持横屏
"landscape-secondary" //可选,字符串类型,支持反向横屏
],
"splashscreen" : { "splashscreen" : {
"alwaysShowBeforeRender" : true, "alwaysShowBeforeRender" : true,
"waiting" : true, "waiting" : true,
...@@ -17,7 +21,14 @@ ...@@ -17,7 +21,14 @@
"delay" : 0 "delay" : 0
}, },
/* 模块配置 */ /* 模块配置 */
"modules" : {}, "modules" : {
"Barcode" : {},
"Webview-x5" : {},
"VideoPlayer" : {},
"Record" : {},
"Bluetooth" : {},
"Camera" : {}
},
/* 应用发布信息 */ /* 应用发布信息 */
"distribute" : { "distribute" : {
/* android打包配置 */ /* android打包配置 */
......
...@@ -28,6 +28,12 @@ ...@@ -28,6 +28,12 @@
"navigationBarBackgroundColor": "#F8F8F8", "navigationBarBackgroundColor": "#F8F8F8",
"enablePullDownRefresh": true, "enablePullDownRefresh": true,
"backgroundColor": "#F8F8F8", "backgroundColor": "#F8F8F8",
"rpxCalcMaxDeviceWidth": 750,
// rpx 计算所支持的最大设备宽度,单位 px,默认值为 960
"rpxCalcBaseDeviceWidth": 375,
// rpx 计算使用的基准设备宽度,设备实际宽度超出 rpx 计算所支持的最大设备宽度时将按基准宽度计算,单位 px,默认值为 375
"rpxCalcIncludeWidth": 750,
// rpx 计算特殊处理的值,始终按实际的设备宽度计算,单位 rpx,默认值为 750
"app-plus": { "app-plus": {
"titleNView": false "titleNView": false
} }
......
...@@ -83,7 +83,6 @@ export default { ...@@ -83,7 +83,6 @@ export default {
.hengxian { .hengxian {
width: 35px; width: 35px;
margin-top: 10px;
} }
.divider { .divider {
......
This diff is collapsed.
<template>
<view class="dmodel-table">
<u-button type="primary" size="mini" @click="commonClick('1')">上机</u-button>
<u-button style="margin-left: 20rpx;" type="success" size="mini" @click="commonClick('2')">下机</u-button>
<zb-table :columns="tableColumn" :data="tableData" :stripe="true" @toggleAllSelection="toggleAllSelection"
@toggleRowSelection="toggleRowSelection">
</zb-table>
</view>
</template>
<script>
export default {
props: {
data: {
type: Array,
default: () => []
}
},
data() {
return {
tableSelectData: [],
tableColumn: [{
type: 'selection',
width: 35
},
{
name: 'typeName',
label: '状态',
width: 80,
},
{
name: 'toolCode',
label: '刀模版sn码',
width: 140,
},
{
name: 'toolName',
label: '刀模版名称',
width: 140,
},
{
name: 'itemName',
label: '物料名称',
width: 140,
},
{
name: 'upDate',
label: '上机时间',
width: 140,
},
{
name: 'downDate',
label: '下机时间',
width: 140,
},
],
}
},
computed: {
tableData() {
return this.data || []
}
},
methods: {
async commonClick(type) {
if (this.tableSelectData.length == 0) {
return this.$u.toast('请选择一条数据!')
}
// 判断选中的类型是否一致
if (this.tableSelectData.length > 1) {
let flag = false
for (let i = 1; i < this.tableSelectData.length; i++) {
const pre = this.tableSelectData[i - 1]
const cur = this.tableSelectData[i]
flag = cur.type == pre.type
if (!flag) {
break;
}
}
if (!flag) {
return this.$u.toast('请选择状态相同的数据')
}
}
const params = {
toolMachinesRecordIdList: this.tableSelectData.map(v => v.toolMachinesRecordId),
type
}
const {code} = await this.$u.api.dModel.tmToolMachinesRecord(params)
if (code == 200) {
this.$emit('action')
}
},
toggleAllSelection(checked, arr) {
this.tableSelectData = arr
},
toggleRowSelection(checked, arr) {
this.tableSelectData = arr
},
}
}
</script>
<style scoped>
.dmodel-table {
height: 500rpx;
margin-top: 20rpx;
padding: 0 20rpx;
}
</style>
This diff is collapsed.
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<span v-else>登 录 中...</span> <span v-else>登 录 中...</span>
</button> </button>
</u-form-item> </u-form-item>
</u-form> </u-form>
</view> </view>
</template> </template>
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
{ required: true, trigger: "blur", errorMessage: "请输入您的账号" } { required: true, trigger: "blur", errorMessage: "请输入您的账号" }
], ],
}, },
password: { password: {
rules: [ rules: [
{ required: true, trigger: "blur", errorMessage: "请输入您的密码" } { required: true, trigger: "blur", errorMessage: "请输入您的密码" }
...@@ -91,8 +91,8 @@ ...@@ -91,8 +91,8 @@
} }
}); });
} }
}); });
} }
} }
} }
</script> </script>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
page { page {
background-image: url("@/static/images/login-background.jpg"); background-image: url("@/static/images/login-background.jpg");
background-size: 100% 100%; background-size: 100% 100%;
width: 100%; height: 100%; width: 100%; height: 100%;
} }
.login { .login {
......
static/icons/png/pro.png

7 KB | W: | H:

static/icons/png/pro.png

3.97 KB | W: | H:

static/icons/png/pro.png
static/icons/png/pro.png
static/icons/png/pro.png
static/icons/png/pro.png
  • 2-up
  • Swipe
  • Onion skin
static/icons/png/qc.png

7.49 KB | W: | H:

static/icons/png/qc.png

2.83 KB | W: | H:

static/icons/png/qc.png
static/icons/png/qc.png
static/icons/png/qc.png
static/icons/png/qc.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -12,7 +12,7 @@ try{ ...@@ -12,7 +12,7 @@ try{
// 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的 // 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
lifeData = uni.getStorageSync('lifeData'); lifeData = uni.getStorageSync('lifeData');
}catch(e){ }catch(e){
} }
// 需要永久存储,且下次APP启动需要取出的,在state中的变量名 // 需要永久存储,且下次APP启动需要取出的,在state中的变量名
...@@ -41,14 +41,15 @@ const store = new Vuex.Store({ ...@@ -41,14 +41,15 @@ const store = new Vuex.Store({
vuex_remember: lifeData.vuex_remember ? lifeData.vuex_remember : '', vuex_remember: lifeData.vuex_remember ? lifeData.vuex_remember : '',
vuex_locale: lifeData.vuex_locale ? lifeData.vuex_locale : '', vuex_locale: lifeData.vuex_locale ? lifeData.vuex_locale : '',
vuex_isAgent: lifeData.vuex_isAgent ? lifeData.vuex_isAgent : '', vuex_isAgent: lifeData.vuex_isAgent ? lifeData.vuex_isAgent : '',
// 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式 // 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
vuex_config: config, vuex_config: config,
//当前设备绑定的工作站 //当前设备绑定的工作站
vuex_workstation: null, vuex_workstation: null,
vuex_workunit: null,
//当前工作站正在进行的生产任务 //当前工作站正在进行的生产任务
vuex_task: null, vuex_task: null,
// 自定义tabbar数据 // 自定义tabbar数据
// vuex_tabbar: [{ // vuex_tabbar: [{
// iconPath: "/static/uview/example/component.png", // iconPath: "/static/uview/example/component.png",
......
## 2.2.32(2024-02-20)
- 修复 日历的close事件触发异常的bug [详情](https://github.com/dcloudio/uni-ui/issues/844)
## 2.2.31(2024-02-20)
- 修复 h5平台 右边日历的月份默认+1的bug [详情](https://github.com/dcloudio/uni-ui/issues/841)
## 2.2.30(2024-01-31)
- 修复 隐藏“秒”时,在IOS15及以下版本时出现 结束时间在开始时间之前 的bug [详情](https://github.com/dcloudio/uni-ui/issues/788)
## 2.2.29(2024-01-20)
- 新增 show事件,弹窗弹出时触发该事件 [详情](https://github.com/dcloudio/uni-app/issues/4694)
## 2.2.28(2024-01-18)
- 去除 noChange事件,当进行日期范围选择时,若只选了一天,则开始结束日期都为同一天 [详情](https://github.com/dcloudio/uni-ui/issues/815)
## 2.2.27(2024-01-10)
- 优化 增加noChange事件,当进行日期范围选择时,若有空值,则触发该事件 [详情](https://github.com/dcloudio/uni-ui/issues/815)
## 2.2.26(2024-01-08)
- 修复 字节小程序时间选择范围器失效问题 [详情](https://github.com/dcloudio/uni-ui/issues/834)
## 2.2.25(2023-10-18)
- 修复 PC端初次修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
## 2.2.24(2023-06-02)
- 修复 部分情况修改时间,开始、结束时间显示异常的Bug [详情](https://ask.dcloud.net.cn/question/171146)
- 优化 当前月可以选择上月、下月的日期的Bug
## 2.2.23(2023-05-02)
- 修复 部分情况修改时间,开始时间未更新的Bug [详情](https://github.com/dcloudio/uni-ui/issues/737)
- 修复 部分平台及设备第一次点击无法显示弹框的Bug
- 修复 ios 日期格式未补零显示及使用异常的Bug [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.22(2023-03-30)
- 修复 日历 picker 修改年月后,自动选中当月1日的Bug [详情](https://ask.dcloud.net.cn/question/165937)
- 修复 小程序端 低版本 ios NaN的Bug [详情](https://ask.dcloud.net.cn/question/162979)
## 2.2.21(2023-02-20)
- 修复 firefox 浏览器显示区域点击无法拉起日历弹框的Bug [详情](https://ask.dcloud.net.cn/question/163362)
## 2.2.20(2023-02-17)
- 优化 值为空依然选中当天问题
- 优化 提供 default-value 属性支持配置选择器打开时默认显示的时间
- 优化 非范围选择未选择日期时间,点击确认按钮选中当前日期时间
- 优化 字节小程序日期时间范围选择,底部日期换行的Bug
## 2.2.19(2023-02-09)
- 修复 2.2.18 引起范围选择配置 end 选择无效的Bug [详情](https://github.com/dcloudio/uni-ui/issues/686)
## 2.2.18(2023-02-08)
- 修复 移动端范围选择change事件触发异常的Bug [详情](https://github.com/dcloudio/uni-ui/issues/684)
- 优化 PC端输入日期格式错误时返回当前日期时间
- 优化 PC端输入日期时间超出 start、end 限制的Bug
- 优化 移动端日期时间范围用法时间展示不完整问题
## 2.2.17(2023-02-04)
- 修复 小程序端绑定 Date 类型报错的Bug [详情](https://github.com/dcloudio/uni-ui/issues/679)
- 修复 vue3 time-picker 无法显示绑定时分秒的Bug
## 2.2.16(2023-02-02)
- 修复 字节小程序报错的Bug
## 2.2.15(2023-02-02)
- 修复 某些情况切换月份错误的Bug
## 2.2.14(2023-01-30)
- 修复 某些情况切换月份错误的Bug [详情](https://ask.dcloud.net.cn/question/162033)
## 2.2.13(2023-01-10)
- 修复 多次加载组件造成内存占用的Bug
## 2.2.12(2022-12-01)
- 修复 vue3 下 i18n 国际化初始值不正确的Bug
## 2.2.11(2022-09-19)
- 修复 支付宝小程序样式错乱的Bug [详情](https://github.com/dcloudio/uni-app/issues/3861)
## 2.2.10(2022-09-19)
- 修复 反向选择日期范围,日期显示异常的Bug [详情](https://ask.dcloud.net.cn/question/153401?item_id=212892&rf=false)
## 2.2.9(2022-09-16)
- 可以使用 uni-scss 控制主题色
## 2.2.8(2022-09-08)
- 修复 close事件无效的Bug
## 2.2.7(2022-09-05)
- 修复 移动端 maskClick 无效的Bug [详情](https://ask.dcloud.net.cn/question/140824)
## 2.2.6(2022-06-30)
- 优化 组件样式,调整了组件图标大小、高度、颜色等,与uni-ui风格保持一致
## 2.2.5(2022-06-24)
- 修复 日历顶部年月及底部确认未国际化的Bug
## 2.2.4(2022-03-31)
- 修复 Vue3 下动态赋值,单选类型未响应的Bug
## 2.2.3(2022-03-28)
- 修复 Vue3 下动态赋值未响应的Bug
## 2.2.2(2021-12-10)
- 修复 clear-icon 属性在小程序平台不生效的Bug
## 2.2.1(2021-12-10)
- 修复 日期范围选在小程序平台,必须多点击一次才能取消选中状态的Bug
## 2.2.0(2021-11-19)
- 优化 组件UI,并提供设计资源 [详情](https://uniapp.dcloud.io/component/uniui/resource)
- 文档迁移 [https://uniapp.dcloud.io/component/uniui/uni-datetime-picker](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
## 2.1.5(2021-11-09)
- 新增 提供组件设计资源,组件样式调整
## 2.1.4(2021-09-10)
- 修复 hide-second 在移动端的Bug
- 修复 单选赋默认值时,赋值日期未高亮的Bug
- 修复 赋默认值时,移动端未正确显示时间的Bug
## 2.1.3(2021-09-09)
- 新增 hide-second 属性,支持只使用时分,隐藏秒
## 2.1.2(2021-09-03)
- 优化 取消选中时(范围选)直接开始下一次选择, 避免多点一次
- 优化 移动端支持清除按钮,同时支持通过 ref 调用组件的 clear 方法
- 优化 调整字号大小,美化日历界面
- 修复 因国际化导致的 placeholder 失效的Bug
## 2.1.1(2021-08-24)
- 新增 支持国际化
- 优化 范围选择器在 pc 端过宽的问题
## 2.1.0(2021-08-09)
- 新增 适配 vue3
## 2.0.19(2021-08-09)
- 新增 支持作为 uni-forms 子组件相关功能
- 修复 在 uni-forms 中使用时,选择时间报 NAN 错误的Bug
## 2.0.18(2021-08-05)
- 修复 type 属性动态赋值无效的Bug
- 修复 ‘确认’按钮被 tabbar 遮盖 bug
- 修复 组件未赋值时范围选左、右日历相同的Bug
## 2.0.17(2021-08-04)
- 修复 范围选未正确显示当前值的Bug
- 修复 h5 平台(移动端)报错 'cale' of undefined 的Bug
## 2.0.16(2021-07-21)
- 新增 return-type 属性支持返回 date 日期对象
## 2.0.15(2021-07-14)
- 修复 单选日期类型,初始赋值后不在当前日历的Bug
- 新增 clearIcon 属性,显示框的清空按钮可配置显示隐藏(仅 pc 有效)
- 优化 移动端移除显示框的清空按钮,无实际用途
## 2.0.14(2021-07-14)
- 修复 组件赋值为空,界面未更新的Bug
- 修复 start 和 end 不能动态赋值的Bug
- 修复 范围选类型,用户选择后再次选择右侧日历(结束日期)显示不正确的Bug
## 2.0.13(2021-07-08)
- 修复 范围选择不能动态赋值的Bug
## 2.0.12(2021-07-08)
- 修复 范围选择的初始时间在一个月内时,造成无法选择的bug
## 2.0.11(2021-07-08)
- 优化 弹出层在超出视窗边缘定位不准确的问题
## 2.0.10(2021-07-08)
- 修复 范围起始点样式的背景色与今日样式的字体前景色融合,导致日期字体看不清的Bug
- 优化 弹出层在超出视窗边缘被遮盖的问题
## 2.0.9(2021-07-07)
- 新增 maskClick 事件
- 修复 特殊情况日历 rpx 布局错误的Bug,rpx -> px
- 修复 范围选择时清空返回值不合理的bug,['', ''] -> []
## 2.0.8(2021-07-07)
- 新增 日期时间显示框支持插槽
## 2.0.7(2021-07-01)
- 优化 添加 uni-icons 依赖
## 2.0.6(2021-05-22)
- 修复 图标在小程序上不显示的Bug
- 优化 重命名引用组件,避免潜在组件命名冲突
## 2.0.5(2021-05-20)
- 优化 代码目录扁平化
## 2.0.4(2021-05-12)
- 新增 组件示例地址
## 2.0.3(2021-05-10)
- 修复 ios 下不识别 '-' 日期格式的Bug
- 优化 pc 下弹出层添加边框和阴影
## 2.0.2(2021-05-08)
- 修复 在 admin 中获取弹出层定位错误的bug
## 2.0.1(2021-05-08)
- 修复 type 属性向下兼容,默认值从 date 变更为 datetime
## 2.0.0(2021-04-30)
- 支持日历形式的日期+时间的范围选择
> 注意:此版本不向后兼容,不再支持单独时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)
## 1.0.6(2021-03-18)
- 新增 hide-second 属性,时间支持仅选择时、分
- 修复 选择跟显示的日期不一样的Bug
- 修复 chang事件触发2次的Bug
- 修复 分、秒 end 范围错误的Bug
- 优化 更好的 nvue 适配
<template>
<view class="uni-calendar-item__weeks-box" :class="{
'uni-calendar-item--disable':weeks.disable,
'uni-calendar-item--before-checked-x':weeks.beforeMultiple,
'uni-calendar-item--multiple': weeks.multiple,
'uni-calendar-item--after-checked-x':weeks.afterMultiple,
}" @click="choiceDate(weeks)" @mouseenter="handleMousemove(weeks)">
<view class="uni-calendar-item__weeks-box-item" :class="{
'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && (calendar.userChecked || !checkHover),
'uni-calendar-item--checked-range-text': checkHover,
'uni-calendar-item--before-checked':weeks.beforeMultiple,
'uni-calendar-item--multiple': weeks.multiple,
'uni-calendar-item--after-checked':weeks.afterMultiple,
'uni-calendar-item--disable':weeks.disable,
}">
<text v-if="selected && weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
<text class="uni-calendar-item__weeks-box-text uni-calendar-item__weeks-box-text-disable uni-calendar-item--checked-text">{{weeks.date}}</text>
</view>
<view :class="{'uni-calendar-item--today': weeks.isToday}"></view>
</view>
</template>
<script>
export default {
props: {
weeks: {
type: Object,
default () {
return {}
}
},
calendar: {
type: Object,
default: () => {
return {}
}
},
selected: {
type: Array,
default: () => {
return []
}
},
checkHover: {
type: Boolean,
default: false
}
},
methods: {
choiceDate(weeks) {
this.$emit('change', weeks)
},
handleMousemove(weeks) {
this.$emit('handleMouse', weeks)
}
}
}
</script>
<style lang="scss" >
$uni-primary: #007aff !default;
.uni-calendar-item__weeks-box {
flex: 1;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
margin: 1px 0;
position: relative;
}
.uni-calendar-item__weeks-box-text {
font-size: 14px;
// font-family: Lato-Bold, Lato;
font-weight: bold;
color: darken($color: $uni-primary, $amount: 40%);
}
.uni-calendar-item__weeks-box-item {
position: relative;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
/* #ifdef H5 */
cursor: pointer;
/* #endif */
}
.uni-calendar-item__weeks-box-circle {
position: absolute;
top: 5px;
right: 5px;
width: 8px;
height: 8px;
border-radius: 8px;
background-color: #dd524d;
}
.uni-calendar-item__weeks-box .uni-calendar-item--disable {
cursor: default;
}
.uni-calendar-item--disable .uni-calendar-item__weeks-box-text-disable {
color: #D1D1D1;
}
.uni-calendar-item--today {
position: absolute;
top: 10px;
right: 17%;
background-color: #dd524d;
width:6px;
height: 6px;
border-radius: 50%;
}
.uni-calendar-item--extra {
color: #dd524d;
opacity: 0.8;
}
.uni-calendar-item__weeks-box .uni-calendar-item--checked {
background-color: $uni-primary;
border-radius: 50%;
box-sizing: border-box;
border: 3px solid #fff;
}
.uni-calendar-item--checked .uni-calendar-item--checked-text {
color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--checked-range-text {
color: #333;
}
.uni-calendar-item--multiple {
background-color: #F6F7FC;
// color: #fff;
}
.uni-calendar-item--multiple .uni-calendar-item--before-checked,
.uni-calendar-item--multiple .uni-calendar-item--after-checked {
background-color: $uni-primary;
border-radius: 50%;
box-sizing: border-box;
border: 3px solid #F6F7FC;
}
.uni-calendar-item--before-checked .uni-calendar-item--checked-text,
.uni-calendar-item--after-checked .uni-calendar-item--checked-text {
color: #fff;
}
.uni-calendar-item--before-checked-x {
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
box-sizing: border-box;
background-color: #F6F7FC;
}
.uni-calendar-item--after-checked-x {
border-top-right-radius: 50px;
border-bottom-right-radius: 50px;
background-color: #F6F7FC;
}
</style>
{
"uni-datetime-picker.selectDate": "select date",
"uni-datetime-picker.selectTime": "select time",
"uni-datetime-picker.selectDateTime": "select date and time",
"uni-datetime-picker.startDate": "start date",
"uni-datetime-picker.endDate": "end date",
"uni-datetime-picker.startTime": "start time",
"uni-datetime-picker.endTime": "end time",
"uni-datetime-picker.ok": "ok",
"uni-datetime-picker.clear": "clear",
"uni-datetime-picker.cancel": "cancel",
"uni-datetime-picker.year": "-",
"uni-datetime-picker.month": "",
"uni-calender.MON": "MON",
"uni-calender.TUE": "TUE",
"uni-calender.WED": "WED",
"uni-calender.THU": "THU",
"uni-calender.FRI": "FRI",
"uni-calender.SAT": "SAT",
"uni-calender.SUN": "SUN",
"uni-calender.confirm": "confirm"
}
import en from './en.json'
import zhHans from './zh-Hans.json'
import zhHant from './zh-Hant.json'
export default {
en,
'zh-Hans': zhHans,
'zh-Hant': zhHant
}
{
"uni-datetime-picker.selectDate": "选择日期",
"uni-datetime-picker.selectTime": "选择时间",
"uni-datetime-picker.selectDateTime": "选择日期时间",
"uni-datetime-picker.startDate": "开始日期",
"uni-datetime-picker.endDate": "结束日期",
"uni-datetime-picker.startTime": "开始时间",
"uni-datetime-picker.endTime": "结束时间",
"uni-datetime-picker.ok": "确定",
"uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月",
"uni-calender.SUN": "日",
"uni-calender.MON": "一",
"uni-calender.TUE": "二",
"uni-calender.WED": "三",
"uni-calender.THU": "四",
"uni-calender.FRI": "五",
"uni-calender.SAT": "六",
"uni-calender.confirm": "确认"
}
\ No newline at end of file
{
"uni-datetime-picker.selectDate": "選擇日期",
"uni-datetime-picker.selectTime": "選擇時間",
"uni-datetime-picker.selectDateTime": "選擇日期時間",
"uni-datetime-picker.startDate": "開始日期",
"uni-datetime-picker.endDate": "結束日期",
"uni-datetime-picker.startTime": "開始时间",
"uni-datetime-picker.endTime": "結束时间",
"uni-datetime-picker.ok": "確定",
"uni-datetime-picker.clear": "清除",
"uni-datetime-picker.cancel": "取消",
"uni-datetime-picker.year": "年",
"uni-datetime-picker.month": "月",
"uni-calender.SUN": "日",
"uni-calender.MON": "一",
"uni-calender.TUE": "二",
"uni-calender.WED": "三",
"uni-calender.THU": "四",
"uni-calender.FRI": "五",
"uni-calender.SAT": "六",
"uni-calender.confirm": "確認"
}
\ No newline at end of file
{
"id": "uni-datetime-picker",
"displayName": "uni-datetime-picker 日期选择器",
"version": "2.2.32",
"description": "uni-datetime-picker 日期时间选择器,支持日历,支持范围选择",
"keywords": [
"uni-datetime-picker",
"uni-ui",
"uniui",
"日期时间选择器",
"日期时间"
],
"repository": "https://github.com/dcloudio/uni-ui",
"engines": {
"HBuilderX": ""
},
"directories": {
"example": "../../temps/example_temps"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": "https://www.npmjs.com/package/@dcloudio/uni-ui",
"type": "component-vue"
},
"uni_modules": {
"dependencies": [
"uni-scss",
"uni-icons"
],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "n"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
}
}
}
> `重要通知:组件升级更新 2.0.0 后,支持日期+时间范围选择,组件 ui 将使用日历选择日期,ui 变化较大,同时支持 PC 和 移动端。此版本不向后兼容,不再支持单独的时间选择(type=time)及相关的 hide-second 属性(时间选可使用内置组件 picker)。若仍需使用旧版本,可在插件市场下载*非uni_modules版本*,旧版本将不再维护`
## DatetimePicker 时间选择器
> **组件名:uni-datetime-picker**
> 代码块: `uDatetimePicker`
该组件的优势是,支持**时间戳**输入和输出(起始时间、终止时间也支持时间戳),可**同时选择**日期和时间。
若只是需要单独选择日期和时间,不需要时间戳输入和输出,可使用原生的 picker 组件。
**_点击 picker 默认值规则:_**
- 若设置初始值 value, 会显示在 picker 显示框中
- 若无初始值 value,则初始值 value 为当前本地时间 Date.now(), 但不会显示在 picker 显示框中
### [查看文档](https://uniapp.dcloud.io/component/uniui/uni-datetime-picker)
#### 如使用过程中有任何问题,或者您对uni-ui有一些好的建议,欢迎加入 uni-ui 交流群:871950839
\ No newline at end of file
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<script> <script>
import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js' import mpMixin from '@/uni_modules/uv-ui-tools/libs/mixin/mpMixin.js'
import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js' import mixin from '@/uni_modules/uv-ui-tools/libs/mixin/mixin.js'
import props from './props.js';; import props from './props.js';
/** /**
* sticky 吸顶 * sticky 吸顶
* @description 该组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。 * @description 该组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。
......
...@@ -20,4 +20,5 @@ ...@@ -20,4 +20,5 @@
// H5特有的样式 // H5特有的样式
/* #ifdef H5 */ /* #ifdef H5 */
@import "./libs/css/style.h5.scss"; @import "./libs/css/style.h5.scss";
/* #endif */ /* #endif */
\ No newline at end of file
...@@ -17,8 +17,7 @@ module.exports = { ...@@ -17,8 +17,7 @@ module.exports = {
devServer: { devServer: {
proxy: { proxy: {
'/api': { '/api': {
//target: 'http://101.43.244.58:8080/', target: 'http://localhost:8080/',
target: 'http://192.168.3.91:8080/',
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
'^/api': '' '^/api': ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment