Commit e84d0674 authored by 李苏's avatar 李苏 💬

DL新增移入移除

parent e705739e
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version": "0.0",
"configurations": [{
"app-plus" :
{
"launchtype" : "local"
},
"default" :
{
"launchtype" : "local"
},
"mp-weixin" :
{
"launchtype" : "local"
},
"type" : "uniCloud"
}
{
// launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
"version" : "0.0",
"configurations" : [
{
"app-plus" : {
"launchtype" : "local"
},
"default" : {
"launchtype" : "local"
},
"mp-weixin" : {
"launchtype" : "local"
},
"type" : "uniCloud"
},
{
"playground" : "standard",
"type" : "uni-app:app-android"
}
]
}
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="cad3b532-20c9-45b5-a856-e17039c7e45a" name="Default Changelist" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/common/util/appUpdate.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="27">
<caret line="19" column="30" selection-start-line="19" selection-start-column="30" selection-end-line="19" selection-end-column="30" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindInProjectRecents">
<findStrings>
<find>olor2.0/index.jpg</find>
<find>https://www.baidu.com</find>
<find>Date.prot</find>
<find>push</find>
<find>versionStringCompare</find>
<find>sqlPort</find>
<find>config.baseUrl</find>
</findStrings>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
<component name="JsFlowSettings">
<service-enabled>true</service-enabled>
<exe-path />
<other-services-enabled>true</other-services-enabled>
<auto-save>true</auto-save>
</component>
<component name="JsGulpfileManager">
<detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting>
</component>
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="mavenHome" value="D:/apache-maven-3.3.9" />
<option name="userSettingsFile" value="D:\apache-maven-3.3.9\conf\settings.xml" />
</MavenGeneralSettings>
</option>
</component>
<component name="NodePackageJsonFileManager">
<packageJsonPaths>
<path value="$PROJECT_DIR$/plugin/uni-simple-router/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-collapse/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-datetime-picker/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-icons/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-number-box/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-scss/package.json" />
<path value="$PROJECT_DIR$/uni_modules/uni-table/package.json" />
</packageJsonPaths>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-10" />
<option name="y" value="-10" />
<option name="width" value="1555" />
<option name="height" value="840" />
</component>
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="xgdlapp" type="b2602c69:ProjectViewProjectNode" />
<item name="xgdlapp" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="xgdlapp" type="b2602c69:ProjectViewProjectNode" />
<item name="xgdlapp" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="xgdlapp" type="b2602c69:ProjectViewProjectNode" />
<item name="xgdlapp" type="462c0819:PsiDirectoryNode" />
<item name="common" type="462c0819:PsiDirectoryNode" />
<item name="util" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
<pane id="PackagesPane" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="D:/webproject/gavel-iotapp" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="settings.editor.selected.configurable" value="configurable.group.language" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="cad3b532-20c9-45b5-a856-e17039c7e45a" name="Default Changelist" comment="" />
<created>1652260779210</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1652260779210</updated>
<workItem from="1652260780513" duration="679000" />
<workItem from="1652858961610" duration="96000" />
<workItem from="1653038323993" duration="1823000" />
<workItem from="1653300489719" duration="430000" />
<workItem from="1653355585471" duration="16000" />
<workItem from="1653381288169" duration="716000" />
<workItem from="1653442848773" duration="2114000" />
<workItem from="1653528214313" duration="1566000" />
<workItem from="1654676810962" duration="1247000" />
<workItem from="1654739434821" duration="1612000" />
<workItem from="1655195226166" duration="1243000" />
<workItem from="1655276612178" duration="1259000" />
<workItem from="1657014781993" duration="637000" />
<workItem from="1657070864029" duration="25000" />
<workItem from="1658368298411" duration="1304000" />
<workItem from="1675070266476" duration="852000" />
<workItem from="1675071940989" duration="1039000" />
<workItem from="1675127156851" duration="1210000" />
<workItem from="1675238189379" duration="1820000" />
</task>
<task id="LOCAL-00001" summary="徐工道路app初始化">
<created>1652260852330</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1652260852330</updated>
</task>
<task id="LOCAL-00002" summary="徐工道路新增界面。修改">
<created>1653038386332</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1653038386332</updated>
</task>
<task id="LOCAL-00003" summary="删除假数据">
<created>1653040205708</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1653040205708</updated>
</task>
<task id="LOCAL-00004" summary="入库作业对接">
<created>1653300517070</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1653300517070</updated>
</task>
<task id="LOCAL-00005" summary="APP入库出库地图接口对接,api防space">
<created>1653467637761</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1653467637761</updated>
</task>
<task id="LOCAL-00006" summary="优化界面&#10;组件化">
<created>1653546325728</created>
<option name="number" value="00006" />
<option name="presentableId" value="LOCAL-00006" />
<option name="project" value="LOCAL" />
<updated>1653546325728</updated>
</task>
<task id="LOCAL-00007" summary="徐工道路APP">
<created>1655195267246</created>
<option name="number" value="00007" />
<option name="presentableId" value="LOCAL-00007" />
<option name="project" value="LOCAL" />
<updated>1655195267246</updated>
</task>
<task id="LOCAL-00008" summary="徐工道路APP">
<created>1655198626920</created>
<option name="number" value="00008" />
<option name="presentableId" value="LOCAL-00008" />
<option name="project" value="LOCAL" />
<updated>1655198626920</updated>
</task>
<task id="LOCAL-00009" summary="1">
<created>1658368997354</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1658368997354</updated>
</task>
<task id="LOCAL-00010" summary="baseUrl设置修改">
<created>1675070714996</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1675070714996</updated>
</task>
<task id="LOCAL-00011" summary="Gtoken">
<created>1675134408849</created>
<option name="number" value="00011" />
<option name="presentableId" value="LOCAL-00011" />
<option name="project" value="LOCAL" />
<updated>1675134408849</updated>
</task>
<task id="LOCAL-00012" summary="修改个人组件,修改密码+base64">
<created>1675238223455</created>
<option name="number" value="00012" />
<option name="presentableId" value="LOCAL-00012" />
<option name="project" value="LOCAL" />
<updated>1675238223455</updated>
</task>
<task id="LOCAL-00013" summary="超级用户特殊处理">
<created>1675238701480</created>
<option name="number" value="00013" />
<option name="presentableId" value="LOCAL-00013" />
<option name="project" value="LOCAL" />
<updated>1675238701480</updated>
</task>
<option name="localTasksCounter" value="14" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="19688000" />
</component>
<component name="ToolWindowManager">
<frame x="-7" y="-7" width="1550" height="830" extended-state="6" />
<editor active="true" />
<layout>
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.15817694" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Image Layers" order="2" />
<window_info id="Designer" order="3" />
<window_info id="UI Designer" order="4" />
<window_info id="Capture Tool" order="5" />
<window_info id="Favorites" order="6" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Version Control" order="7" weight="0.8204748" />
<window_info anchor="bottom" id="Database Changes" order="8" show_stripe_button="false" />
<window_info anchor="bottom" id="TypeScript" order="9" />
<window_info anchor="bottom" id="Terminal" order="10" weight="0.3837037" />
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="right" id="Palette" order="3" />
<window_info anchor="right" id="Capture Analysis" order="4" />
<window_info anchor="right" id="Theme Preview" order="5" />
<window_info anchor="right" id="Palette&#9;" order="6" />
<window_info anchor="right" id="Database" order="7" />
<window_info anchor="right" id="Maven Projects" order="8" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State>
<option name="RECENTLY_FILTERED_USER_GROUPS">
<collection />
</option>
<option name="RECENTLY_FILTERED_BRANCH_GROUPS">
<collection />
</option>
<option name="COLUMN_ORDER">
<list>
<option value="0" />
<option value="1" />
<option value="2" />
<option value="3" />
</list>
</option>
</State>
</value>
</entry>
</map>
</option>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="徐工道路app初始化" />
<MESSAGE value="徐工道路新增界面。修改" />
<MESSAGE value="删除假数据" />
<MESSAGE value="入库作业对接" />
<MESSAGE value="APP入库出库地图接口对接" />
<MESSAGE value="APP入库出库地图接口对接,api防space" />
<MESSAGE value="优化界面&#10;组件化" />
<MESSAGE value="徐工道路APP" />
<MESSAGE value="1" />
<MESSAGE value="baseUrl设置修改" />
<MESSAGE value="Gtoken" />
<MESSAGE value="修改个人组件,修改密码+base64" />
<MESSAGE value="超级用户特殊处理" />
<option name="LAST_COMMIT_MESSAGE" value="超级用户特殊处理" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/pages/dl_cmaterial/index.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="38">
<caret line="2" column="60" selection-start-line="2" selection-start-column="60" selection-end-line="2" selection-end-column="60" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/util/date.js">
<provider selected="true" editor-type-id="text-editor">
<state>
<caret selection-end-line="21" selection-end-column="4" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/common/util/appUpdate.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="27">
<caret line="19" column="30" selection-start-line="19" selection-start-column="30" selection-end-line="19" selection-end-column="30" />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>
\ No newline at end of file
......@@ -195,4 +195,30 @@ export function backWarehouse(params) {
return http.post("/xgwcs/gwjl/doBack ", filterSpace(params) || {}).then(e => {
return filter(e)
})
}
\ No newline at end of file
}
// 移库计划
export function apiGetjhList(params){
return http.post("/xgwcs/ykjh/query", filterSpace(params) || {}).then(e => {
return filter(e)
})
}
/* 计划扫描库位码 */
export function apijhPptzdByKw(params){
return http.post("/xgwcs/ykjh/queryPptzdByKw", filterSpace(params) || {}).then(e => {
return filter(e)
})
}
/* 移出库位 */
export function apiYckw(params){
return http.post("/xgwcs/ykjh/yckw", filterSpace(params) || {}).then(e => {
return filter(e)
})
}
// 移入库位
export function apiYrkw(params){
return http.post("/xgwcs/ykjh/yrkw", filterSpace(params) || {}).then(e => {
return filter(e)
})
}
......@@ -10,7 +10,7 @@ const router = new Router({
routes: [...modules]//路由表
});
const whiteList = ['/pages/login/login','/pages/login/fwqsz']
const whiteList = ['/pages/login/update','/pages/login/login','/pages/login/fwqsz']
//全局路由前置守卫
router.beforeEach((to, from, next) => {
let token=uni.getStorageSync(ACCESS_TOKEN);
......
const routes = [
{
path: '/pages/login/update',
name: 'update',
meta: {
title: '检查更新',
},
},
{
path: "/pages/login/login",
name: 'login',
......@@ -139,6 +146,14 @@ const routes = [
title: '托盘清空',
},
},
/* 移入移出 */
{
path: '/pages/dl_outin/index',
name: 'outIn',
meta: {
title: '移入移出',
},
}
]
......
//APP更新
import api from 'api/api.js'
export default function appUpdate() {
/* let url="http://119.3.92.249:17007/app/download/datacenter.apk";
plus.runtime.openURL(url, function(ress) {
console.log(ress);
}); */
api.postData('/getAppVersion',{
/* version: plus.runtime.version,
imei: plus.device.imei, */
apptype:"0",
// appid: plus.runtime.appid,
appid:"__UNI__79C58F0"
}).then((res) => {
if(res){
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
let client_version = wgtinfo.version;
var flag_update_v =Number(client_version.split(".")[0]);
var flag_update_v2=Number(res.data.version);
console.log(flag_update_v)
console.log("getAppVersion")
console.log(res)
console.log(flag_update_v2)
var flag_hot =false;
if (flag_update_v<flag_update_v2) {
// 提醒用户更新
uni.showModal({
title: '更新提示',
content: "请进行版本更新,当前版本-"+flag_update_v+",更新版本-"+flag_update_v2,
success: (showResult) => {
if (showResult.confirm) {
plus.nativeUI.toast("正在准备环境,请稍后! ");
uni.showModal({
content:res.data.url
})
plus.runtime.openURL(res.data.url, function(ress) {
console.log(ress);
});
/* var dtask = plus.downloader.createDownload(res.data.url, {
method: 'GET',
filename: '_doc/update/'
}, function(d, status) {
if (status == 200) {
var path = d.filename; //下载apk
plus.runtime.install(path); // 自动安装apk文件
} else {
plus.nativeUI.alert('版本更新失败:' + status);
}
}); */
dtask.start();
}
}
})
} else if (flag_hot) {
uni.downloadFile({
url: res.data.url,
success: (downloadResult) => {
console.log(downloadResult.tempFilePath)
if (downloadResult.statusCode === 200) {
plus.nativeUI.toast(`正在热更新!${res.data.versionCode}`);
plus.runtime.install(downloadResult.tempFilePath, {
force: false
}, function() {
plus.nativeUI.toast("热更新成功");
plus.runtime.restart();
}, function(e) {
console.log(e)
plus.nativeUI.toast(`热更新失败:${e.message}`);
});
}
}
});
}
});
}
}).catch((err) => {
}).finally(()=>{
import api from 'api/api.js';
function versionStringCompare(preVersion, lastVersion) {
console.log(preVersion, lastVersion)
var sources = preVersion.split('.');
var dests = lastVersion.split('.');
if (dests.length == 2) {
if (dests[1].length >= 2) {
dests[2] = dests[1][dests[1].length - 1]
dests[1] = dests[1].slice(0, dests[1].length - 1)
}
}
console.log(sources,dests);
var maxL = Math.max(sources.length, dests.length);
var result = 0;
for (let i = 0; i < maxL; i++) {
let preValue = sources.length > i ? sources[i] : 0;
let preNum = isNaN(Number(preValue)) ? preValue.charCodeAt() : Number(preValue);
let lastValue = dests.length > i ? dests[i] : 0;
let lastNum = isNaN(Number(lastValue)) ? lastValue.charCodeAt() : Number(lastValue);
if (preNum < lastNum) {
result = -1;
break;
} else if (preNum > lastNum) {
result = 1;
break;
}
}
console.log(result);
return result;
}
export default function appUpdate(loginApp) {
loginApp.showProcess('正在检测版本更新', 10)
/* 0-安卓 1-ios*/
let appType = null;
let platform = uni.getSystemInfoSync().platform;
let hasLogin=loginApp.$store.state.hasLogin;
console.log(loginApp.$store.state.hasLogin);
if (platform == 'android') {
try {
appType = "0";
api.postData('/getAppVersion', {
apptype: appType,
appid: '__UNI__79C58F0',
}).then((res) => {
if (res) {
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
let client_version = parseInt(wgtinfo.version);
let now_version = parseInt(res.data.version);
/* 提示版本更新 */
loginApp.showProcess(('客户端版本:' + client_version + '。'), 30)
loginApp.showProcess(('最新版本:' + now_version + '。'), 40)
let verC = versionStringCompare(wgtinfo.version, res.data.version + '');
var flag_hot = true;
console.log(verC)
if (verC >=0) {
loginApp.showProcess('无版本更新,欢迎使用', 100)
uni.hideLoading()
loginApp.$Router.replaceAll({
name: 'login'
})
// if(!hasLogin){
// }
}
if (verC < 0) {
var downUrl=res.data.url;
if(downUrl&&downUrl.includes(".wgt")){
flag_hot=true;
}else{
flag_hot=false
}
loginApp.showProcess('检测到最新版本', 90)
uni.hideLoading()
if (flag_hot) {
downWgt(res.data.url, loginApp,hasLogin)
} else {
// 提醒用户更新
uni.showModal({
title: '更新提示',
content: "当前存在最新版本,建议进行版本更新",
success: (showResult) => {
if (showResult.confirm) {
loginApp.downLoad = true
var dtask = plus.downloader.createDownload(res.data.url, {
method: 'GET',
filename: '_doc/update/'
},
function(d, status) {
if (status == 200) {
var path = d.filename; //下载apk
plus.runtime.install(
path); // 自动安装apk文件
} else {
plus.nativeUI.alert('版本更新失败:' +
status);
loginApp.downLoad = false
}
});
dtask.addEventListener("statechanged", function(
task, status) {
if (!task) {
return;
}
switch (task.state) {
case 1:
loginApp.showProcess(
'开始下载资源包', 0)
break;
case 2:
loginApp.showProcess(
'已经连接到服务器', 0)
break;
case 3:
// 已接收到数据
let progress = Math.floor(
dtask
.downloadedSize *
100 / dtask
.totalSize);
loginApp.showProcess('正在下载',
progress)
break;
case 4:
// 下载完成,打开文件完成更新动作.
plus.runtime.install(task
.filename);
plus.runtime.quit()
break;
}
}, false);
dtask.start();
} else {
if(!hasLogin){
loginApp.$Router.replaceAll({
name: 'login'
})
}
}
}
})
}
}
});
}
}).catch((err) => {
loginApp.$Router.replaceAll({
name: 'login'
})
})
}).finally(() => {
})
} catch (e) {
uni.hideLoading()
if(!hasLogin){
loginApp.$Router.replaceAll({
name: 'login'
})
}
// loginApp.$Router.replaceAll({name:'login'})
// alert("error:" + e.message);
}
} else {
appType = "1";
try {
api.postData('/getAppVersion', {
apptype: appType,
appid: '__UNI__D72040A',
}).then((res) => {
if (res) {
plus.runtime.getProperty(plus.runtime.appid, function(wgtinfo) {
let client_version = parseInt(wgtinfo.version);
let now_version = parseInt(res.data.version)
console.log(client_version, res.data.version)
let verC = versionStringCompare(wgtinfo.version, res.data.version + '');
var flag_hot = true;
if (verC >=0) {
loginApp.showProcess('无版本更新,欢迎使用金属科技安全云', 100)
// if(!hasLogin){
// }
loginApp.$Router.replaceAll({
name: 'login'
})
}
if (verC < 0) {
var downUrl=res.data.url;
if(downUrl&&downUrl.includes(".wgt")){
flag_hot=true;
}else{
flag_hot=false
}
if (flag_hot) {
downWgt(res.data.url, loginApp,hasLogin)
} else {
uni.showModal({
title: '更新提示',
content: "当前存在最新版本,建议进行版本更新",
success: (showResult) => {
if (showResult.confirm) {
let appurl =
"https://itunes.apple.com/cn/app/com.gavelinfo.aqgl/1658958556"
plus.runtime.openURL(appurl, function(res) {
console.log(res);
});
} else {
if(!hasLogin){
loginApp.$Router.replaceAll({
name: 'login'
})
}
}
}
})
}
}
});
}
}).catch((err) => {
}).catch((err) => {
loginApp.$Router.replaceAll({
name: 'login'
})
}).finally(() => {
})
} catch (e) {
uni.hideLoading()
loginApp.$Router.replaceAll({name:'login'})
}
}
}
function downWgt(wgtUrl, loginApp,hasLogin) {
// plus.nativeUI.showWaiting("下载最新资源...");
uni.hideLoading()
uni.showLoading({
title: '开始热更新'
})
loginApp.showProcess('开始版本热更新', 5)
var dtasks = plus.downloader.createDownload(wgtUrl, {
filename: "_doc/update/"
}, function(d, status) {
uni.hideLoading()
if (status == 200) {
console.log("下载资源成功:"+d.filename);
} else {
plus.nativeUI.alert("下载资源失败!");
// loginApp.$Router.replaceAll({name:'login'})
}
plus.nativeUI.closeWaiting();
})
if(!dtasks){
uni.hideLoading()
if(!hasLogin){
loginApp.$Router.replaceAll({name:'login'})
}
}
dtasks.addEventListener("statechanged", function(task, status) {
if (!task) {
return;
}
switch (task.state) {
case 1:
loginApp.showProcess('开始下载资源包', 0)
break;
case 2:
loginApp.showProcess('已经连接到服务器', 0)
break;
case 3:
// 已接收到数据
let progress = Math.floor(dtasks.downloadedSize * 100 / dtasks.totalSize);
loginApp.showProcess('正在下载', progress)
break;
case 4:
installWgt(task.filename,loginApp);
break;
}
}, false);
dtasks.start();
}
// 更新应用资源
function installWgt(path,loginApp) {
plus.nativeUI.showWaiting("正在更新...");
plus.runtime.install(path,{},function(){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件成功!");
plus.nativeUI.alert("应用资源更新完成!",function(){
plus.runtime.restart();
});
},function(e){
plus.nativeUI.closeWaiting();
console.log("安装wgt文件失败["+e.code+"]:"+e.message);
plus.nativeUI.alert("安装wgt文件失败["+e.code+"]:"+e.message);
loginApp.$Router.replaceAll({name:'login'})
});
}
......@@ -41,7 +41,9 @@
]
},
/* ios打包配置 */
"ios" : {},
"ios" : {
"dSYMs" : false
},
/* SDK配置 */
"sdkConfigs" : {
"ad" : {}
......
{
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
"pages": [
{
"path": "pages/login/update",
"style": {
"app-plus": {
"bounce": "none"
}
}
},
{
"path" : "pages/login/login",
"style" :
......@@ -109,6 +117,16 @@
"enablePullDownRefresh": false
}
},
/* 移入移出 */
{
"path" : "pages/dl_outin/index",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
},
/* 修改密码界面 */
{
......
<template>
<view class="bg-white" style="height: 100vh;">
<cu-custom bgColor="bg-gradual-blue" :isBack="true" >
<block slot="backText">返回</block>
<block slot="content">移入/移出</block>
</cu-custom>
<view class="padding-xs bg-white">
<v-tabs v-model="current" :tabs="tabs" @change="changeTab">
</v-tabs>
</view>
<view class="padding-xs bg-white" style="height: 60vh;overflow: auto;">
<!-- 移入移出数据 -->
<!-- title -->
<view class="tbtit">
<view class="tbtit_son">配盘单号</view>
<view class="tbtit_son">批号</view>
<view style="flex: 1;">仓库</view>
</view>
<view class="tbtit_row " :class="item.selected?'selected':''" v-for="(item,index) in jhList" :key="index" @tap="selectTb(item,index)" @longtap="longtapTb(item,index)">
<view class="tbtit_row_son1">{{item.djid}}</view>
<view style="flex: 1">{{item.ph}}</view>
<view class="tbtit_row_son3">{{item.ckName||'未知'}}</view>
</view>
<view class="tbtit_row " style="display: flex;" v-if="!jhList[0]" >
<span style="flex: 1;">
暂无数据
</span>
</view>
</view>
<!-- 库位码 -->
<view class="padding-xs bg-white" >
<view class="cu-form-group " v-show="current==0" >
<view class="title">扫库位码</view>
<input v-model="code" :focus="stpmFocus" @confirm="searchKwm" placeholder="请扫描库位码"></input>
<Scan :app="app" :params="'code'" :do="'searchKwm'" ></Scan>
</view>
<view v-show="apiCode" style="width: 100%;height: 20px;line-height: 20px;text-align: center;margin-top: 10px;">
已扫库位码:{{apiCode}}
<br>
配送单号:{{apiShow.djid}}
<br>
批号:{{apiShow.ph}}
</view>
</view>
<!-- 移入库位 -->
<!-- <view class="padding-xs bg-white" v-show="index!=null&&code!=''" > -->
<view v-show="index!=null&&apiCode!=''" class="padding-xs bg-white" style="display: flex;justify-content: center;align-items: center;" >
<button @tap="apiYcjh()" class="cu-btn bg-gradual-green xs " style="width: 50%;margin-top:10px;">移入库位</button>
</view>
</view>
</view>
</view>
</template>
<script>
import {apiGetjhList,apijhPptzdByKw,apiYckw,apiYrkw} from '@/api/dlapi.js';
export default {
data() {
return {
index:null,
app:this,
current: 0,
tabs: ['待移出', '待移入'],
jhList:[],
code:'',
apiCode:'',
apiShow:{
djid:'',
ph:''
},
/* 扫码 */
stpmFocus:false
}
},
filters: {
formatTime: function(time) {
if (time != null && time != "") {
var date = new Date(time);
return date.Format("MM-dd hh:mm")
} else {
return "";
}
}
},
watch:{
apiCode(val){
if(!val){
this.clearShow()
}
},
current(val){
let ztArry=['I','O']
// let ztArry=['I','I']
apiGetjhList({zt:ztArry[val]}).then(res=>{
let jhList=res.records||[]
jhList.forEach(item=>{
item['selected']=false
})
this.jhList=jhList
/* 自动选中 */
if(ztArry[val]=='O'&&this.jhList.length>0){
this.jhList[0].selected=true
this.index=0
}else{
this.index=null
}
console.log(this.jhList)
})
//监听计划
}
},
methods: {
clearShow(){
this.apiShow.djid=''
this.apiShow.ph=''
},
/* 移入计划 */
apiYcjh(){
if(!this.apiCode){
this.$tip.toast("请先扫描库位码")
return
}
if(!this.jhList[this.index]){
this.$tip.toast("请先选中一条计划")
return
}
let params={
code:this.apiCode,
ykjhid:this.jhList[this.index].id
}
apiYrkw(params).then(res=>{
this.current=0
this.code=''
this.apiCode=''
this.$tip.toast('操作成功')
})
},
/* api扫描库位码 */
searchKwm(){
if(!this.code){
this.$tip.toast("请先扫描库位码")
return
}
let params={code:this.code}
apijhPptzdByKw(params).then(res=>{
console.log(res)
/* 如果成功 */
this.apiCode=this.code
this.apiShow.djid=res.records.djid
this.apiShow.ph=res.records.ph
apiYckw({code:this.code}).then(res=>{
this.current=1
})
}).catch(res=>{
/* */
this.code=''
this.apiCode=''
})
},
/* 改变tab选项 */
changeTab(index) {
console.log('当前选中的项:' + index)
},
/* 扫码赋值方法 */
scan(e){
this.djid=e.result
console.log(e.result)
},
comfirmStpm(){
this.djidFocus=true
this.stpmFocus=false
},
selectTb(item,index){
if(this.current==0){
this.index=null
return
}
console.log(item)
if(this.jhList[index].selected==true){
this.jhList[index].selected=false
this.index=-1
/* 清除选中值 */
}else{
this.jhList[index].selected=true
this.index=index
/* 存储选中值 */
}
/* 清除其他选中值 */
this.jhList.forEach((e,eindex)=>{
if(index!=eindex){
this.jhList[eindex].selected=false
}
})
},
// 确认按钮
hideModal(e) {
this.modalName = null
},
},
onLoad(e) {
/* 移库计划 */
apiGetjhList({zt:'I'}).then(res=>{
let jhList=res.records||[]
jhList.forEach(item=>{
item['selected']=false
})
this.jhList=jhList
})
/* 左i 右o */
}
}
</script>
<style scoped>
input{
border-bottom: #EEEEEE 1px solid;
}
.disable {
background-color: #EEEEEE;
}
.b-right {
position: relative;
}
.wid50 {
width: 50%;
}
/* 表格 */
.selected{
background-color: deepskyblue;
color: #fff;
}
.tbtit{
display: flex;border: 1px solid #EEEEEE;height: 30px;width: 100%;line-height: 30px;text-align: center;
}
.tbtit_row{
display: flex;border-bottom: 1px solid #EEEEEE;height: 30px;width: 100%;line-height: 30px;text-align: center;
}
.tbtit_son{
flex: 1;border-right: 1px solid #EEEEEE;
}
.tbtit_row_son1{
flex: 1;border-right: 1px solid #EEEEEE;border-left: #EEEEEE 1px solid;
}
.tbtit_row_son3{
flex: 1;border-right: 1px solid #EEEEEE;border-left: #EEEEEE 1px solid;
}
</style>
......@@ -61,6 +61,26 @@
</view>
</view>
</view>
<!-- 移入移出 -->
<view class="padding-sm" v-if="yrycList.length!=0">
<view class="cu-bar bg-white solid-bottom" >
<view class="action text-bold">
<text class='cuIcon-title text-blue'></text>移入/移出
</view>
</view>
<view class="grid col-2 bg-white">
<view class="padding-sm" v-for="(item,index) in yrycList" :key="index" @tap="goPage(item.page)">
<view class="radius text-center shadow-blur ">
<view class="cu-avatar lg "
:style="{background: 'url('+ item.icon + ') no-repeat',backgroundSize:'56upx 56upx'}">
<view class="cu-tag badge" v-if="getTtemDotInfo(item)">{{getTtemDotInfo(item)}}</view>
</view>
<view class="text-lg margin-top">{{item.title}}</view>
</view>
</view>
</view>
</view>
<!-- 常用服务 -->
<view class="cu-tabbar-height">
</view>
......@@ -103,7 +123,7 @@
icon:"/static/icon/work3.png",
useCount:1000,
page:"putout_storage"
},
}
],
newckglList:[],
gwjlList:[
......@@ -130,6 +150,15 @@
}
],
newtpglList:[],
/* 移入移出 */
yrycList:[
{
title:"移入/移出",
icon:"/static/icon/work5.png",
useCount:1000,
page:"outIn"
},
],
// icon:"/wcs/apps/static/icon/work.png",pc端图标路径
//手机端去除/wcs/xgapps
websock:'',
......
<template>
<view class="page uodateMain">
<!-- 升级模态框 -->
<view class="text-center">
<!-- <image :src="imgsrc" mode='aspectFit' class="zai-logo "></image> -->
<view class="zai-title text-shadow">欢迎使用徐工WCS</view>
</view>
<!-- 进度条 -->
<view class="progress">
<view class="tips">
tips:{{text}}
</view>
<view class="">
<view class="uni-padding-wrap uni-common-mt">
<view class="progress-box">
<progress :percent="percent" activeColor="#10AEFF" stroke-width="8" />
</view>
<view class="percent">
{{percent}}%
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import appUpdate from 'common/util/appUpdate.js'
export default {
onLoad() {
// this.showLoading()
this.$Router.replaceAll({name:'login'})
// setTimeout(()=>{
// appUpdate(this)
// },500)
// #ifdef H5
this.$Router.replaceAll({name:'login'})
// #endif
},
data() {
return {
downLoad:false,
imgsrc: "/static/image/logon.png",
percent:0,
text:'正在检测版本'
}
},
methods: {
/* 修改进度 */
showProcess(text,percent){
this.text=text
this.percent=percent
},
showLoading(){
uni.showLoading({
title: this.text
})
},
hideLoading(){
uni.hideLoading()
}
}
}
</script>
<style>
.percent{
height: 25px;line-height: 25px;text-align: center;
font-size: 12px;
}
.tips{
height: 30px;
font-size: 12px;
}
.progress {
width: 100%;
position: absolute;
bottom: 4vh;
padding: 20px;
}
.zai-title {
font-size: 20px;
color: #000000;
text-align: center;
}
.uodateMain {
height: 100vh;
width: 100vw;
padding-top: 80px;
background-color: #fff;
}
.zai-logo {
/* width: 200upx; */
height: 200upx;
}
</style>
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