merge: 合并 origin/zhoushang,保留远程 1.1.20 及相关改动

This commit is contained in:
2026-11-06 15:31:10 +08:00
10 changed files with 207 additions and 182 deletions
+27 -43
View File
@@ -16,16 +16,17 @@ export const PHONE_SCAN_CONFIG = {
/** 内置扫码配置:补 needSetup,并在字典拉不到时兜底 */ /** 内置扫码配置:补 needSetup,并在字典拉不到时兜底 */
export const BUILTIN_SCANNER_CONFIGS = [ export const BUILTIN_SCANNER_CONFIGS = [
{ {
brand: 'newland', brand: 'seuic',
name: '东大集成', name: '东大集成(AUTOID)',
action: 'com.android.server.scannerservice.broadcast', action: 'com.android.server.scannerservice.broadcast',
dataKey: 'scannerdata', dataKey: 'scannerdata',
needSetup: true, needSetup: true,
setupAction: 'com.android.scanner.service_settings', setupAction: 'com.android.scanner.service_settings',
setupParams: { setupParams: {
barcode_send_mode: 'BROADCAST',
action_barcode_broadcast: 'com.android.server.scannerservice.broadcast', action_barcode_broadcast: 'com.android.server.scannerservice.broadcast',
key_barcode_broadcast: 'scannerdata', key_barcode_broadcast: 'scannerdata',
endchar: 'ENTER', endchar: 'NONE',
}, },
}, },
{ {
@@ -35,13 +36,6 @@ export const BUILTIN_SCANNER_CONFIGS = [
dataKey: 'data', dataKey: 'data',
needSetup: false, needSetup: false,
}, },
{
brand: 'nlscan',
name: '新大陆',
action: 'nlscan.action.SCANNER_RESULT',
dataKey: 'SCAN_BARCODE1',
needSetup: false,
},
{ {
brand: 'urovo', brand: 'urovo',
name: '优博讯', name: '优博讯',
@@ -50,17 +44,10 @@ export const BUILTIN_SCANNER_CONFIGS = [
needSetup: false, needSetup: false,
}, },
{ {
brand: 'idata', brand: 'nlscan',
name: '盈达', name: '新大陆',
action: 'android.intent.action.SCANRESULT', action: 'nlscan.action.SCANNER_RESULT',
dataKey: 'value', dataKey: 'SCAN_BARCODE1',
needSetup: false,
},
{
brand: 'iData',
name: '海雅达',
action: 'com.android.scanner.broadcast',
dataKey: 'scandata',
needSetup: false, needSetup: false,
}, },
{ ...PHONE_SCAN_CONFIG }, { ...PHONE_SCAN_CONFIG },
@@ -83,31 +70,32 @@ const DETECT_RULES = [
{ {
matchNames: ['优博讯'], matchNames: ['优博讯'],
matchActions: ['android.intent.ACTION_DECODE_DATA'], matchActions: ['android.intent.ACTION_DECODE_DATA'],
keywords: ['urovo'], keywords: ['urovo', 'ubx'],
packages: ['com.urovo', 'com.ubx'], packages: ['com.urovo', 'com.ubx'],
}, },
{ {
matchNames: ['盈达'], matchNames: ['盈达'],
matchActions: ['android.intent.action.SCANRESULT'], matchActions: ['android.intent.action.SCANRESULT'],
keywords: ['idata', 'yingda'], keywords: ['idata', 'yingda'],
packages: ['com.idata', 'com.android.scanner'], packages: ['com.idata'],
}, },
{ {
matchNames: ['海雅达'], matchNames: ['海雅达'],
matchActions: ['com.android.scanner.broadcast'], matchActions: ['com.android.scanner.broadcast'],
keywords: ['iData', 'seui', 'haiyada'], keywords: ['haiyada'],
packages: ['com.android.scanner'], packages: [],
}, },
{ {
matchNames: ['东大集成', '东集'], matchNames: ['东大集成(AUTOID)', '东大集成', '东集'],
matchActions: ['com.android.server.scannerservice.broadcast'], matchActions: ['com.android.server.scannerservice.broadcast'],
keywords: ['seuic', 'eastcom', 'newland', 'nls'], keywords: ['seuic', 'autoid', 'eastcom', '东集', '东大'],
packages: ['com.android.scanner', 'com.seuic.scanner'], packages: ['com.seuic.scanner'],
}, },
]; ];
const PDA_DEVICE_KEYWORDS = [ const PDA_DEVICE_KEYWORDS = [
'newland', 'nls', 'sunmi', 'urovo', 'honeywell', 'idata', 'seuic', 'zebra', 'ubx', 'newland', 'nls', 'nlscan', 'sunmi', 'urovo', 'ubx', 'zebra', 'honeywell',
'idata', 'seuic', 'autoid', '东集', '东大',
]; ];
const NO_SETUP_HINT_KEY = 'pda_scan_config_hint_shown'; const NO_SETUP_HINT_KEY = 'pda_scan_config_hint_shown';
@@ -161,13 +149,13 @@ function enrichFromBuiltinConfig(config, builtinConfigs = []) {
return { return {
...config, ...config,
needSetup: config.needSetup != null ? config.needSetup : builtin.needSetup, needSetup: builtin.needSetup,
setupAction: config.setupAction || builtin.setupAction || '', setupAction: builtin.setupAction || '',
setupParams: config.setupParams || builtin.setupParams || null, setupParams: builtin.setupParams || null,
}; };
} }
export function normalizeConfig(raw, builtinConfigs = BUILTIN_SCANNER_CONFIGS) { export function normalizeConfig(raw, builtinConfigs = []) {
if (!raw || typeof raw !== 'object') return null; if (!raw || typeof raw !== 'object') return null;
const brand = String(raw.brand || raw.id || raw.dictionary_detail_id || raw.name || ''); const brand = String(raw.brand || raw.id || raw.dictionary_detail_id || raw.name || '');
@@ -197,11 +185,11 @@ export function normalizeConfig(raw, builtinConfigs = BUILTIN_SCANNER_CONFIGS) {
return config; return config;
} }
export function mapDictionaryToScannerConfig(raw, builtinConfigs = BUILTIN_SCANNER_CONFIGS) { export function mapDictionaryToScannerConfig(raw, builtinConfigs = []) {
return normalizeConfig(raw, builtinConfigs); return normalizeConfig(raw, builtinConfigs);
} }
export function getScanConfig(builtinConfigs = BUILTIN_SCANNER_CONFIGS) { export function getScanConfig(builtinConfigs = []) {
try { try {
const data = uni.getStorageSync(STORAGE_KEY); const data = uni.getStorageSync(STORAGE_KEY);
const normalized = normalizeConfig(data, builtinConfigs); const normalized = normalizeConfig(data, builtinConfigs);
@@ -220,10 +208,6 @@ export function getScanConfig(builtinConfigs = BUILTIN_SCANNER_CONFIGS) {
} }
} }
export function hasLocalScanConfig(builtinConfigs = BUILTIN_SCANNER_CONFIGS) {
return !!getScanConfig(builtinConfigs);
}
export function saveScanConfig(config) { export function saveScanConfig(config) {
const normalized = normalizeConfig(config); const normalized = normalizeConfig(config);
if (!normalized) { if (!normalized) {
@@ -262,7 +246,7 @@ export function mergeScannerConfigs(remoteConfigs = []) {
} }
}); });
(remoteConfigs || []).forEach((raw) => { (remoteConfigs || []).forEach((raw) => {
const normalized = mapDictionaryToScannerConfig(raw); const normalized = mapDictionaryToScannerConfig(raw, BUILTIN_SCANNER_CONFIGS);
if (!normalized || isPhoneScanConfig(normalized)) return; if (!normalized || isPhoneScanConfig(normalized)) return;
configMap.set(normalized.action || normalized.brand, normalized); configMap.set(normalized.action || normalized.brand, normalized);
}); });
@@ -290,7 +274,7 @@ export function getDeviceIdentity() {
export function isPdaDevice() { export function isPdaDevice() {
const identity = getDeviceIdentity(); const identity = getDeviceIdentity();
const text = `${identity.manufacturer} ${identity.model} ${identity.brand}`; const text = `${identity.manufacturer} ${identity.model} ${identity.brand}`;
return PDA_DEVICE_KEYWORDS.some((keyword) => text.includes(keyword.toLowerCase())); return PDA_DEVICE_KEYWORDS.some((keyword) => text.includes(String(keyword).toLowerCase()));
} }
function findDetectRule(config) { function findDetectRule(config) {
@@ -365,7 +349,7 @@ function scoreScannerConfig(config, identity) {
*/ */
export function matchBestScanConfig(candidateConfigs = []) { export function matchBestScanConfig(candidateConfigs = []) {
const configs = (candidateConfigs || []) const configs = (candidateConfigs || [])
.map((item) => normalizeConfig(item)) .map((item) => normalizeConfig(item, BUILTIN_SCANNER_CONFIGS))
.filter(Boolean); .filter(Boolean);
const pdaConfigs = configs.filter((item) => !isPhoneScanConfig(item)); const pdaConfigs = configs.filter((item) => !isPhoneScanConfig(item));
const identity = getDeviceIdentity(); const identity = getDeviceIdentity();
@@ -396,7 +380,7 @@ export function matchBestScanConfig(candidateConfigs = []) {
* @returns {{ saved: boolean, config: object|null, skipped: boolean, reason?: string }} * @returns {{ saved: boolean, config: object|null, skipped: boolean, reason?: string }}
*/ */
export function autoConfigureScanSettings({ remoteConfigs = [] } = {}) { export function autoConfigureScanSettings({ remoteConfigs = [] } = {}) {
const existing = getScanConfig(); const existing = getScanConfig(BUILTIN_SCANNER_CONFIGS);
if (existing) { if (existing) {
return { return {
saved: false, saved: false,
+1 -1
View File
@@ -25,7 +25,7 @@ export default {
methods: { methods: {
getScannerConfigs() { getScannerConfigs() {
return BUILTIN_SCANNER_CONFIGS.map((item) => ({ ...item })); return BUILTIN_SCANNER_CONFIGS;
}, },
getPhoneScanConfig() { getPhoneScanConfig() {
@@ -19,9 +19,16 @@
v-for="item in filteredList" v-for="item in filteredList"
:key="String(item.value)" :key="String(item.value)"
class="search-select__item" class="search-select__item"
@click="confirm(item)" :class="{ 'is-selected': multiple && isPicked(item) }"
>{{ item.label }}</view> @click="onItemClick(item)"
>
<text class="search-select__item-label">{{ item.label }}</text>
<text v-if="multiple && isPicked(item)" class="search-select__check">已选</text>
</view>
</scroll-view> </scroll-view>
<view v-if="multiple" class="search-select__footer">
<view class="search-select__ok" @click="confirmMultiple">确定</view>
</view>
</view> </view>
</u-popup> </u-popup>
</template> </template>
@@ -33,12 +40,15 @@ export default {
title: { type: String, default: '请选择' }, title: { type: String, default: '请选择' },
placeholder: { type: String, default: '请输入名称搜索' }, placeholder: { type: String, default: '请输入名称搜索' },
list: { type: Array, default: () => [] }, list: { type: Array, default: () => [] },
multiple: { type: Boolean, default: false },
selected: { type: Array, default: () => [] },
}, },
data() { data() {
return { return {
keyword: '', keyword: '',
panelMaxHeight: 520, panelMaxHeight: 520,
listHeight: 360, listHeight: 360,
picked: [],
}; };
}, },
computed: { computed: {
@@ -56,6 +66,7 @@ export default {
show(val) { show(val) {
if (val) { if (val) {
this.keyword = ''; this.keyword = '';
this.picked = (this.selected || []).map((item) => String(item));
this.calcHeight(); this.calcHeight();
} }
}, },
@@ -70,16 +81,37 @@ export default {
const winH = sys.windowHeight || 600; const winH = sys.windowHeight || 600;
// 弹层约占屏高 65%,列表为弹层去掉标题+搜索后的剩余高度 // 弹层约占屏高 65%,列表为弹层去掉标题+搜索后的剩余高度
this.panelMaxHeight = Math.floor(winH * 0.65); this.panelMaxHeight = Math.floor(winH * 0.65);
this.listHeight = Math.max(220, this.panelMaxHeight - 140); const chrome = this.multiple ? 230 : 140;
this.listHeight = Math.max(220, this.panelMaxHeight - chrome);
} catch (e) { } catch (e) {
this.panelMaxHeight = 520; this.panelMaxHeight = 520;
this.listHeight = 360; this.listHeight = this.multiple ? 280 : 360;
} }
}, },
isPicked(item) {
return this.picked.includes(String(item.value));
},
onItemClick(item) {
if (!this.multiple) {
this.confirm(item);
return;
}
const key = String(item.value);
if (this.picked.includes(key)) {
this.picked = this.picked.filter((value) => value !== key);
return;
}
this.picked = this.picked.concat(key);
},
confirm(item) { confirm(item) {
this.visible = false; this.visible = false;
this.$emit('confirm', item); this.$emit('confirm', item);
}, },
confirmMultiple() {
const selected = (this.list || []).filter((item) => this.isPicked(item));
this.visible = false;
this.$emit('confirm', selected);
},
}, },
}; };
</script> </script>
@@ -126,9 +158,42 @@ export default {
font-size: $pda-font-popup-sub; font-size: $pda-font-popup-sub;
} }
.search-select__item { .search-select__item {
padding: 32rpx 30rpx; display: flex;
align-items: center;
justify-content: space-between;
min-height: $pda-row-min-height;
padding: 20rpx 30rpx;
box-sizing: border-box;
font-size: $pda-font-popup-item; font-size: $pda-font-popup-item;
color: #202328; color: #202328;
border-bottom: 1px solid #f2f2f2; border-bottom: 1px solid #f2f2f2;
} }
.search-select__item-label {
flex: 1;
min-width: 0;
font-size: $pda-font-popup-item;
color: #202328;
}
.search-select__item.is-selected .search-select__item-label {
color: #2f78e6;
}
.search-select__check {
flex-shrink: 0;
margin-left: 16rpx;
font-size: $pda-font-action;
color: #2f78e6;
}
.search-select__footer {
flex-shrink: 0;
padding: 16rpx 30rpx 8rpx;
}
.search-select__ok {
height: $pda-button-height;
line-height: $pda-button-height;
text-align: center;
font-size: $pda-font-button;
color: #fff;
background: #2979ff;
border-radius: 46rpx;
}
</style> </style>
+2 -2
View File
@@ -2,8 +2,8 @@
"name" : "浩拓织厂", "name" : "浩拓织厂",
"appid" : "__UNI__F79F300", "appid" : "__UNI__F79F300",
"description" : "周尚-浩拓织厂", "description" : "周尚-浩拓织厂",
"versionName" : "1.1.19", "versionName" : "1.1.20",
"versionCode" : 119, "versionCode" : 120,
"transformPx" : false, "transformPx" : false,
"app-plus" : { "app-plus" : {
"optimization" : { "optimization" : {
+1 -2
View File
@@ -58,11 +58,10 @@
} }
.u-cell_title { .u-cell_title {
flex: 1;
min-width: 0;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
min-width: 655rpx;
} }
.u-border-bottom:last-child:after { .u-border-bottom:last-child:after {
+40 -11
View File
@@ -109,6 +109,8 @@
title="选择等级" title="选择等级"
placeholder="请输入等级名称" placeholder="请输入等级名称"
:list="levelOptions" :list="levelOptions"
multiple
:selected="detail.grey_fabric_level_id"
@confirm="onLevelConfirm" @confirm="onLevelConfirm"
/> />
<SearchSelectPopup <SearchSelectPopup
@@ -199,7 +201,14 @@ export default {
}, },
computed: { computed: {
levelDisplayName() { levelDisplayName() {
return this.detail.grey_fabric_level_name || ''; if (this.detail.grey_fabric_level_name) return this.detail.grey_fabric_level_name;
const ids = normalizeLevelIds(this.detail.grey_fabric_level_id);
if (!ids.length) return '';
const nameMap = {};
this.levelOptions.forEach((item) => {
nameMap[String(item.value)] = item.label;
});
return ids.map((id) => nameMap[String(id)]).filter(Boolean).join('、');
}, },
}, },
onLoad() { onLoad() {
@@ -272,10 +281,15 @@ export default {
} }
this.levelPickerShow = true; this.levelPickerShow = true;
}, },
onLevelConfirm(item) { onLevelConfirm(items) {
if (!item) return; const list = Array.isArray(items) ? items : (items ? [items] : []);
this.detail.grey_fabric_level_id = [Number(item.value)]; this.detail.grey_fabric_level_id = list
this.detail.grey_fabric_level_name = item.label || ''; .map((item) => Number(item.value))
.filter((item) => Number.isFinite(item));
this.detail.grey_fabric_level_name = list
.map((item) => item.label)
.filter(Boolean)
.join('、');
}, },
async loadInspectorOptions() { async loadInspectorOptions() {
try { try {
@@ -338,6 +352,8 @@ export default {
this.detail = { this.detail = {
...emptyDetail(), ...emptyDetail(),
fabric_piece_code: code, fabric_piece_code: code,
inspector_id: this.detail.inspector_id,
inspector_name: this.detail.inspector_name,
}; };
this.weightKg = ''; this.weightKg = '';
} finally { } finally {
@@ -347,6 +363,8 @@ export default {
applyScanDetail(res, fallbackCode) { applyScanDetail(res, fallbackCode) {
const data = res || {}; const data = res || {};
const levelIds = normalizeLevelIds(data.grey_fabric_level_id); const levelIds = normalizeLevelIds(data.grey_fabric_level_id);
const hasIncomingInspector = data.inspector_id != null && data.inspector_id !== ''
|| String(data.inspector_name || '').trim();
this.detail = { this.detail = {
...emptyDetail(), ...emptyDetail(),
fabric_piece_code: data.fabric_piece_code || fallbackCode || '', fabric_piece_code: data.fabric_piece_code || fallbackCode || '',
@@ -356,9 +374,15 @@ export default {
grey_fabric_code: data.grey_fabric_code || '', grey_fabric_code: data.grey_fabric_code || '',
inspection_weight: formatDisplayWeightKg(data.inspection_weight) ? data.inspection_weight : null, inspection_weight: formatDisplayWeightKg(data.inspection_weight) ? data.inspection_weight : null,
grey_fabric_level_id: levelIds, grey_fabric_level_id: levelIds,
grey_fabric_level_name: data.grey_fabric_level_name || '', grey_fabric_level_name: Array.isArray(data.grey_fabric_level_name)
inspector_id: data.inspector_id != null ? data.inspector_id : null, ? data.grey_fabric_level_name.filter(Boolean).join('、')
inspector_name: data.inspector_name || '', : (data.grey_fabric_level_name || ''),
inspector_id: hasIncomingInspector && data.inspector_id != null && data.inspector_id !== ''
? data.inspector_id
: this.detail.inspector_id,
inspector_name: hasIncomingInspector
? (data.inspector_name || this.detail.inspector_name || '')
: (this.detail.inspector_name || ''),
}; };
this.weightKg = formatDisplayWeightKg(data.inspection_weight); this.weightKg = formatDisplayWeightKg(data.inspection_weight);
this.scanCode = this.detail.fabric_piece_code; this.scanCode = this.detail.fabric_piece_code;
@@ -421,11 +445,15 @@ export default {
} }
}, },
resetForNextScan() { resetForNextScan() {
const inspectorId = this.detail.inspector_id;
const inspectorName = this.detail.inspector_name;
this.scanCode = ''; this.scanCode = '';
this.detail = emptyDetail(); this.detail = {
...emptyDetail(),
inspector_id: inspectorId,
inspector_name: inspectorName,
};
this.weightKg = ''; this.weightKg = '';
this.warehouseBinId = null;
this.warehouseBinName = '';
this.$nextTick(() => { this.$nextTick(() => {
this.scanFocus = false; this.scanFocus = false;
this.$nextTick(() => { this.$nextTick(() => {
@@ -525,6 +553,7 @@ export default {
text-align: right; text-align: right;
font-size: $pda-font-body; font-size: $pda-font-body;
color: #202328; color: #202328;
word-break: break-all;
} }
.manual-in__unit { .manual-in__unit {
+21 -31
View File
@@ -126,6 +126,15 @@ import manifest from '@/manifest.json';
import { mapState } from 'vuex' import { mapState } from 'vuex'
import app_upgrade from '@/uni_modules/app-upgrade/js_sdk/index.js' import app_upgrade from '@/uni_modules/app-upgrade/js_sdk/index.js'
import { ensureScanConfigAfterLogin } from '@/common/scanAutoConfig.js' import { ensureScanConfigAfterLogin } from '@/common/scanAutoConfig.js'
function isDefaultPassword(data) {
if (!data || typeof data !== 'object') return false;
const value = data.is_default_password != null
? data.is_default_password
: (data.user && data.user.is_default_password);
return value === true || value === 1 || value === '1' || value === 'true';
}
export default { export default {
data() { data() {
return { return {
@@ -357,12 +366,19 @@ export default {
getApp().globalData.StoreNameID = aLoginUserData.default_physical_warehouse_id; getApp().globalData.StoreNameID = aLoginUserData.default_physical_warehouse_id;
getApp().globalData.StoreName = aLoginUserData.default_physical_warehouse_name; getApp().globalData.StoreName = aLoginUserData.default_physical_warehouse_name;
getApp().globalData.StoreTypeNo = ''; getApp().globalData.StoreTypeNo = '';
try { try {
await ensureScanConfigAfterLogin(this.$u.api); await ensureScanConfigAfterLogin(this.$u.api);
} catch (scanError) { } catch (scanError) {
console.log('自动匹配扫码设置失败', scanError); console.log('自动匹配扫码设置失败', scanError);
} }
const workbenchUrl = isDefaultPassword(aLoginUserData)
? '/pages/sys/workbench/index?defaultPassword=1'
: '/pages/sys/workbench/index';
setTimeout(() => {
uni.reLaunch({
url: workbenchUrl
});
}, 500);
var that = this var that = this
if (that.remember == true) { if (that.remember == true) {
@@ -375,40 +391,14 @@ export default {
} }
this.$store.dispatch('initNotification');
setTimeout(function () {
uni.hideLoading();
}, 1000);
const goWorkbench = () => {
uni.reLaunch({
url: '/pages/sys/workbench/index'
});
};
if (aLoginUserData.is_default_password) {
uni.showModal({
title: '提示',
content: '检测到当前为默认密码,建议修改后再使用',
confirmText: '去修改',
cancelText: '取消',
success: (modalRes) => {
if (modalRes.confirm) {
uni.reLaunch({
url: '/pages/sys/user/pwd?from=login'
});
} else {
goWorkbench();
}
}
});
} else {
uni.showToast({ uni.showToast({
icon: 'none', icon: 'none',
title: '登录成功!' title: '登录成功!'
}); });
setTimeout(goWorkbench, 500); this.$store.dispatch('initNotification');
} setTimeout(function () {
uni.hideLoading();
}, 1000);
}).catch((error) => { }).catch((error) => {
console.log('login error', error) console.log('login error', error)
uni.showToast({ uni.showToast({
+19 -49
View File
@@ -36,20 +36,22 @@
!--> !-->
</view> </view>
<view class="list"> <view class="list">
<view>
<u-cell-group class="personal-list">
<u-gap height="20" bg-color="#f5f5f5"></u-gap> <u-gap height="20" bg-color="#f5f5f5"></u-gap>
<u-cell-group class="personal-list" :border="false"> <u-cell-item icon="question-circle" :iconStyle="{ color: '#ff8d06' }" title="常见问题" @click="navTo('problem')"></u-cell-item>
<u-cell-item icon="question-circle" :iconStyle="{ color: '#ff8d06' }" title="常见问题" :center="true" @click="navTo('problem')"></u-cell-item> <u-cell-item icon="kefu-ermai" :iconStyle="{ color: '#5f8dff' }" title="意见反馈" @click="navTo('comment')"></u-cell-item>
<u-cell-item icon="kefu-ermai" :iconStyle="{ color: '#5f8dff' }" title="意见反馈" :center="true" @click="navTo('comment')"></u-cell-item> <u-cell-item icon="map" :iconStyle="{ color: '#316ede' }" title="账号安全" @click="navTo('pwd')"></u-cell-item>
<u-cell-item icon="map" :iconStyle="{ color: '#316ede' }" title="账号安全" :center="true" @click="navTo('pwd')"></u-cell-item> <u-cell-item icon="scan" :iconStyle="{ color: '#36cfc9' }" title="扫描设置" @click="navTo('scan-settings')"></u-cell-item>
<u-cell-item icon="scan" :iconStyle="{ color: '#36cfc9' }" title="扫描设置" :center="true" @click="navTo('scan-settings')"></u-cell-item> <u-cell-item icon="order" :iconStyle="{ color: '#59bdf9' }" title="清除缓存" @click="navTo('clear-cache')"></u-cell-item>
<u-cell-item icon="order" :iconStyle="{ color: '#59bdf9' }" title="清除缓存" :center="true" @click="navTo('clear-cache')"></u-cell-item> <!--<u-cell-item icon="account" :iconStyle="{ color: '#27c0dc' }" title="关于我们" @click="navTo('about')"></u-cell-item>
</u-cell-group> <u-cell-item icon="kefu-ermai" :iconStyle="{ color: '#ff8a00' }" title="联系客服" @click="navTo('service')"></u-cell-item>!-->
<u-gap height="20" bg-color="#f5f5f5"></u-gap> <u-gap height="20" bg-color="#f5f5f5"></u-gap>
<u-cell-group class="personal-list" :border="false"> <u-cell-item icon="reload" :iconStyle="{ color: '#19be6b' }" title="版本更新" @click="upgrade"></u-cell-item>
<u-cell-item icon="reload" :iconStyle="{ color: '#19be6b' }" title="版本更新" :center="true" @click="upgrade"></u-cell-item> <u-cell-item icon="setting" :iconStyle="{ color: '#2767dc' }" title="系统设置" @click="navTo('setting')"></u-cell-item>
<u-cell-item icon="setting" :iconStyle="{ color: '#2767dc' }" title="系统设置" :center="true" @click="navTo('setting')"></u-cell-item>
</u-cell-group> </u-cell-group>
</view> </view>
</view>
<view class="app-meta"> <view class="app-meta">
<text class="app-name">{{ appName }}</text> <text class="app-name">{{ appName }}</text>
<text class="app-version">版本 {{ appVersion }}</text> <text class="app-version">版本 {{ appVersion }}</text>
@@ -144,52 +146,20 @@ export default {
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
@import '@/common/pda-typography.scss';
@import 'index.scss'; @import 'index.scss';
page { page {
background-color: #f5f5f5; background-color: #f5f5f5;
} }
.header { .wrap .u-cell-box .u-cell_title{
.userinfo {
position: relative;
padding: 20rpx 30rpx 24rpx;
align-items: center;
}
.info {
flex: 1;
min-width: 0;
align-items: center;
}
.username {
font-size: $pda-font-body;
line-height: 1.3;
}
}
.list {
.personal-list {
::v-deep .u-cell {
min-height: $pda-row-min-height;
padding: 24rpx 30rpx;
box-sizing: border-box;
}
::v-deep .u-cell_title {
color:#202328; color:#202328;
font-size: $pda-font-body;
line-height: 1.3;
}
::v-deep .u-cell__left-icon-wrap {
margin-right: 20rpx;
}
::v-deep .u-cell__right-icon-wrap {
flex-shrink: 0;
}
}
} }
.sign-in-images{ .sign-in-images{
width: 125rpx; width: 125rpx;
height:50rpx; height:50rpx;
flex-shrink: 0; position: absolute;
uni-image, image { right: 0;
top:5px;
uni-image{
width: 125rpx; width: 125rpx;
height:50rpx; height:50rpx;
} }
@@ -201,7 +171,7 @@ page {
.app-name { .app-name {
display: block; display: block;
color: #242820; color: #242820;
font-size: $pda-font-body; font-size: 36rpx;
font-weight: 700; font-weight: 700;
line-height: 1.4; line-height: 1.4;
} }
@@ -209,7 +179,7 @@ page {
display: block; display: block;
margin-top: 8rpx; margin-top: 8rpx;
color: #8a8f86; color: #8a8f86;
font-size: $pda-font-nav-sub; font-size: 32rpx;
line-height: 1.3; line-height: 1.3;
} }
</style> </style>
+4 -33
View File
@@ -30,11 +30,10 @@ import base64 from '@/common/base64.js';
export default { export default {
data() { data() {
return { return {
fromLogin: false,
model: { model: {
oldPassword: '', oldPassword: '',
newPassword: '', newPassword: '',
confirmPassword: '' confirmNewPassword: ''
}, },
rules: { rules: {
oldPassword: [ oldPassword: [
@@ -73,31 +72,10 @@ export default {
} }
}; };
}, },
onLoad(options) {
this.fromLogin = options && options.from === 'login';
},
onReady() { onReady() {
this.$refs.uForm.setRules(this.rules); this.$refs.uForm.setRules(this.rules);
}, },
onBackPress() {
if (this.fromLogin) {
uni.reLaunch({
url: '/pages/sys/workbench/index'
});
return true;
}
return false;
},
methods: { methods: {
goAfterSuccess() {
if (this.fromLogin) {
uni.reLaunch({
url: '/pages/sys/workbench/index'
});
return;
}
uni.navigateBack();
},
submit() { submit() {
this.$refs.uForm.validate(valid => { this.$refs.uForm.validate(valid => {
if (valid) { if (valid) {
@@ -106,19 +84,12 @@ export default {
newPassword: this.model.newPassword newPassword: this.model.newPassword
}).then(res => { }).then(res => {
if(res.code == '200'){ if(res.code == '200'){
const userInfo = uni.getStorageSync('UserInfo');
if (userInfo && typeof userInfo === 'object') {
uni.setStorageSync('UserInfo', {
...userInfo,
password: this.model.newPassword
});
}
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
content: res.msg, content: res.msg,
showCancel: false, showCancel: false,
success: () => { success: function () {
this.goAfterSuccess(); uni.navigateBack();
} }
}); });
}else{ }else{
@@ -135,7 +106,7 @@ export default {
}); });
}, },
cancel() { cancel() {
this.goAfterSuccess(); uni.navigateBack();
} }
} }
}; };
+18 -1
View File
@@ -76,9 +76,12 @@ export default {
}; };
}, },
onLoad() { onLoad(options) {
const sys = uni.getSystemInfoSync(); const sys = uni.getSystemInfoSync();
this.statusBarHeight = sys.statusBarHeight || 20; this.statusBarHeight = sys.statusBarHeight || 20;
if (options && String(options.defaultPassword) === '1') {
this.promptChangePassword();
}
// #ifdef APP-PLUS // #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, (inf) => { plus.runtime.getProperty(plus.runtime.appid, (inf) => {
if (inf && inf.version) { if (inf && inf.version) {
@@ -90,6 +93,20 @@ export default {
}, },
methods: { methods: {
promptChangePassword() {
setTimeout(() => {
uni.showModal({
title: '提示',
content: '当前使用的是默认密码,请修改密码',
confirmText: '去修改',
cancelText: '稍后',
success: (res) => {
if (!res.confirm) return;
uni.navigateTo({ url: '/pages/sys/user/pwd' });
},
});
}, 400);
},
handleScanCode(scanResult) { handleScanCode(scanResult) {
const cleanResult = scanResult.trim().replace(/[\r\n]/g, ''); const cleanResult = scanResult.trim().replace(/[\r\n]/g, '');
uni.navigateTo({ uni.navigateTo({