@ -0,0 +1,29 @@
|
||||
{
|
||||
"hash": "99c6afa7",
|
||||
"browserHash": "cd41f883",
|
||||
"optimized": {
|
||||
"vue": {
|
||||
"src": "../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
||||
"file": "vue.js",
|
||||
"fileHash": "89e69c76",
|
||||
"needsInterop": false
|
||||
},
|
||||
"pinia": {
|
||||
"src": "../../node_modules/pinia/dist/pinia.mjs",
|
||||
"file": "pinia.js",
|
||||
"fileHash": "73db4f45",
|
||||
"needsInterop": false
|
||||
},
|
||||
"pinia-plugin-persistedstate": {
|
||||
"src": "../../node_modules/pinia-plugin-persistedstate/dist/index.mjs",
|
||||
"file": "pinia-plugin-persistedstate.js",
|
||||
"fileHash": "e1c37dbb",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"chunk-IH3XMDLU": {
|
||||
"file": "chunk-IH3XMDLU.js"
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
@ -0,0 +1,138 @@
|
||||
// node_modules/pinia-plugin-persistedstate/dist/index.mjs
|
||||
function isObject(v) {
|
||||
return typeof v === "object" && v !== null;
|
||||
}
|
||||
function normalizeOptions(options, factoryOptions) {
|
||||
options = isObject(options) ? options : /* @__PURE__ */ Object.create(null);
|
||||
return new Proxy(options, {
|
||||
get(target, key, receiver) {
|
||||
if (key === "key")
|
||||
return Reflect.get(target, key, receiver);
|
||||
return Reflect.get(target, key, receiver) || Reflect.get(factoryOptions, key, receiver);
|
||||
}
|
||||
});
|
||||
}
|
||||
function get(state, path) {
|
||||
return path.reduce((obj, p) => {
|
||||
return obj == null ? void 0 : obj[p];
|
||||
}, state);
|
||||
}
|
||||
function set(state, path, val) {
|
||||
return path.slice(0, -1).reduce((obj, p) => {
|
||||
if (/^(__proto__)$/.test(p))
|
||||
return {};
|
||||
else
|
||||
return obj[p] = obj[p] || {};
|
||||
}, state)[path[path.length - 1]] = val, state;
|
||||
}
|
||||
function pick(baseState, paths) {
|
||||
return paths.reduce((substate, path) => {
|
||||
const pathArray = path.split(".");
|
||||
return set(substate, pathArray, get(baseState, pathArray));
|
||||
}, {});
|
||||
}
|
||||
function parsePersistence(factoryOptions, store) {
|
||||
return (o) => {
|
||||
var _a;
|
||||
try {
|
||||
const {
|
||||
storage = localStorage,
|
||||
beforeRestore = void 0,
|
||||
afterRestore = void 0,
|
||||
serializer = {
|
||||
serialize: JSON.stringify,
|
||||
deserialize: JSON.parse
|
||||
},
|
||||
key = store.$id,
|
||||
paths = null,
|
||||
debug = false
|
||||
} = o;
|
||||
return {
|
||||
storage,
|
||||
beforeRestore,
|
||||
afterRestore,
|
||||
serializer,
|
||||
key: ((_a = factoryOptions.key) != null ? _a : (k) => k)(typeof key == "string" ? key : key(store.$id)),
|
||||
paths,
|
||||
debug
|
||||
};
|
||||
} catch (e) {
|
||||
if (o.debug)
|
||||
console.error("[pinia-plugin-persistedstate]", e);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
function hydrateStore(store, { storage, serializer, key, debug }) {
|
||||
try {
|
||||
const fromStorage = storage == null ? void 0 : storage.getItem(key);
|
||||
if (fromStorage)
|
||||
store.$patch(serializer == null ? void 0 : serializer.deserialize(fromStorage));
|
||||
} catch (e) {
|
||||
if (debug)
|
||||
console.error("[pinia-plugin-persistedstate]", e);
|
||||
}
|
||||
}
|
||||
function persistState(state, { storage, serializer, key, paths, debug }) {
|
||||
try {
|
||||
const toStore = Array.isArray(paths) ? pick(state, paths) : state;
|
||||
storage.setItem(key, serializer.serialize(toStore));
|
||||
} catch (e) {
|
||||
if (debug)
|
||||
console.error("[pinia-plugin-persistedstate]", e);
|
||||
}
|
||||
}
|
||||
function createPersistedState(factoryOptions = {}) {
|
||||
return (context) => {
|
||||
const { auto = false } = factoryOptions;
|
||||
const {
|
||||
options: { persist = auto },
|
||||
store,
|
||||
pinia
|
||||
} = context;
|
||||
if (!persist)
|
||||
return;
|
||||
if (!(store.$id in pinia.state.value)) {
|
||||
const original_store = pinia._s.get(store.$id.replace("__hot:", ""));
|
||||
if (original_store)
|
||||
Promise.resolve().then(() => original_store.$persist());
|
||||
return;
|
||||
}
|
||||
const persistences = (Array.isArray(persist) ? persist.map((p) => normalizeOptions(p, factoryOptions)) : [normalizeOptions(persist, factoryOptions)]).map(parsePersistence(factoryOptions, store)).filter(Boolean);
|
||||
store.$persist = () => {
|
||||
persistences.forEach((persistence) => {
|
||||
persistState(store.$state, persistence);
|
||||
});
|
||||
};
|
||||
store.$hydrate = ({ runHooks = true } = {}) => {
|
||||
persistences.forEach((persistence) => {
|
||||
const { beforeRestore, afterRestore } = persistence;
|
||||
if (runHooks)
|
||||
beforeRestore == null ? void 0 : beforeRestore(context);
|
||||
hydrateStore(store, persistence);
|
||||
if (runHooks)
|
||||
afterRestore == null ? void 0 : afterRestore(context);
|
||||
});
|
||||
};
|
||||
persistences.forEach((persistence) => {
|
||||
const { beforeRestore, afterRestore } = persistence;
|
||||
beforeRestore == null ? void 0 : beforeRestore(context);
|
||||
hydrateStore(store, persistence);
|
||||
afterRestore == null ? void 0 : afterRestore(context);
|
||||
store.$subscribe(
|
||||
(_mutation, state) => {
|
||||
persistState(state, persistence);
|
||||
},
|
||||
{
|
||||
detached: true
|
||||
}
|
||||
);
|
||||
});
|
||||
};
|
||||
}
|
||||
var src_default = createPersistedState();
|
||||
export {
|
||||
createPersistedState,
|
||||
src_default as default
|
||||
};
|
||||
//# sourceMappingURL=pinia-plugin-persistedstate.js.map
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": ["../../node_modules/pinia-plugin-persistedstate/dist/index.mjs"],
|
||||
"sourcesContent": ["// src/normalize.ts\nfunction isObject(v) {\n return typeof v === \"object\" && v !== null;\n}\nfunction normalizeOptions(options, factoryOptions) {\n options = isObject(options) ? options : /* @__PURE__ */ Object.create(null);\n return new Proxy(options, {\n get(target, key, receiver) {\n if (key === \"key\")\n return Reflect.get(target, key, receiver);\n return Reflect.get(target, key, receiver) || Reflect.get(factoryOptions, key, receiver);\n }\n });\n}\n\n// src/pick.ts\nfunction get(state, path) {\n return path.reduce((obj, p) => {\n return obj == null ? void 0 : obj[p];\n }, state);\n}\nfunction set(state, path, val) {\n return path.slice(0, -1).reduce((obj, p) => {\n if (/^(__proto__)$/.test(p))\n return {};\n else\n return obj[p] = obj[p] || {};\n }, state)[path[path.length - 1]] = val, state;\n}\nfunction pick(baseState, paths) {\n return paths.reduce((substate, path) => {\n const pathArray = path.split(\".\");\n return set(substate, pathArray, get(baseState, pathArray));\n }, {});\n}\n\n// src/plugin.ts\nfunction parsePersistence(factoryOptions, store) {\n return (o) => {\n var _a;\n try {\n const {\n storage = localStorage,\n beforeRestore = void 0,\n afterRestore = void 0,\n serializer = {\n serialize: JSON.stringify,\n deserialize: JSON.parse\n },\n key = store.$id,\n paths = null,\n debug = false\n } = o;\n return {\n storage,\n beforeRestore,\n afterRestore,\n serializer,\n key: ((_a = factoryOptions.key) != null ? _a : (k) => k)(typeof key == \"string\" ? key : key(store.$id)),\n paths,\n debug\n };\n } catch (e) {\n if (o.debug)\n console.error(\"[pinia-plugin-persistedstate]\", e);\n return null;\n }\n };\n}\nfunction hydrateStore(store, { storage, serializer, key, debug }) {\n try {\n const fromStorage = storage == null ? void 0 : storage.getItem(key);\n if (fromStorage)\n store.$patch(serializer == null ? void 0 : serializer.deserialize(fromStorage));\n } catch (e) {\n if (debug)\n console.error(\"[pinia-plugin-persistedstate]\", e);\n }\n}\nfunction persistState(state, { storage, serializer, key, paths, debug }) {\n try {\n const toStore = Array.isArray(paths) ? pick(state, paths) : state;\n storage.setItem(key, serializer.serialize(toStore));\n } catch (e) {\n if (debug)\n console.error(\"[pinia-plugin-persistedstate]\", e);\n }\n}\nfunction createPersistedState(factoryOptions = {}) {\n return (context) => {\n const { auto = false } = factoryOptions;\n const {\n options: { persist = auto },\n store,\n pinia\n } = context;\n if (!persist)\n return;\n if (!(store.$id in pinia.state.value)) {\n const original_store = pinia._s.get(store.$id.replace(\"__hot:\", \"\"));\n if (original_store)\n Promise.resolve().then(() => original_store.$persist());\n return;\n }\n const persistences = (Array.isArray(persist) ? persist.map((p) => normalizeOptions(p, factoryOptions)) : [normalizeOptions(persist, factoryOptions)]).map(parsePersistence(factoryOptions, store)).filter(Boolean);\n store.$persist = () => {\n persistences.forEach((persistence) => {\n persistState(store.$state, persistence);\n });\n };\n store.$hydrate = ({ runHooks = true } = {}) => {\n persistences.forEach((persistence) => {\n const { beforeRestore, afterRestore } = persistence;\n if (runHooks)\n beforeRestore == null ? void 0 : beforeRestore(context);\n hydrateStore(store, persistence);\n if (runHooks)\n afterRestore == null ? void 0 : afterRestore(context);\n });\n };\n persistences.forEach((persistence) => {\n const { beforeRestore, afterRestore } = persistence;\n beforeRestore == null ? void 0 : beforeRestore(context);\n hydrateStore(store, persistence);\n afterRestore == null ? void 0 : afterRestore(context);\n store.$subscribe(\n (_mutation, state) => {\n persistState(state, persistence);\n },\n {\n detached: true\n }\n );\n });\n };\n}\n\n// src/index.ts\nvar src_default = createPersistedState();\nexport {\n createPersistedState,\n src_default as default\n};\n"],
|
||||
"mappings": ";AACA,SAAS,SAAS,GAAG;AACnB,SAAO,OAAO,MAAM,YAAY,MAAM;AACxC;AACA,SAAS,iBAAiB,SAAS,gBAAgB;AACjD,YAAU,SAAS,OAAO,IAAI,UAA0B,uBAAO,OAAO,IAAI;AAC1E,SAAO,IAAI,MAAM,SAAS;AAAA,IACxB,IAAI,QAAQ,KAAK,UAAU;AACzB,UAAI,QAAQ;AACV,eAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ;AAC1C,aAAO,QAAQ,IAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI,gBAAgB,KAAK,QAAQ;AAAA,IACxF;AAAA,EACF,CAAC;AACH;AAGA,SAAS,IAAI,OAAO,MAAM;AACxB,SAAO,KAAK,OAAO,CAAC,KAAK,MAAM;AAC7B,WAAO,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,EACrC,GAAG,KAAK;AACV;AACA,SAAS,IAAI,OAAO,MAAM,KAAK;AAC7B,SAAO,KAAK,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,MAAM;AAC1C,QAAI,gBAAgB,KAAK,CAAC;AACxB,aAAO,CAAC;AAAA;AAER,aAAO,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;AAAA,EAC/B,GAAG,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK;AAC1C;AACA,SAAS,KAAK,WAAW,OAAO;AAC9B,SAAO,MAAM,OAAO,CAAC,UAAU,SAAS;AACtC,UAAM,YAAY,KAAK,MAAM,GAAG;AAChC,WAAO,IAAI,UAAU,WAAW,IAAI,WAAW,SAAS,CAAC;AAAA,EAC3D,GAAG,CAAC,CAAC;AACP;AAGA,SAAS,iBAAiB,gBAAgB,OAAO;AAC/C,SAAO,CAAC,MAAM;AACZ,QAAI;AACJ,QAAI;AACF,YAAM;AAAA,QACJ,UAAU;AAAA,QACV,gBAAgB;AAAA,QAChB,eAAe;AAAA,QACf,aAAa;AAAA,UACX,WAAW,KAAK;AAAA,UAChB,aAAa,KAAK;AAAA,QACpB;AAAA,QACA,MAAM,MAAM;AAAA,QACZ,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV,IAAI;AACJ,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO,KAAK,eAAe,QAAQ,OAAO,KAAK,CAAC,MAAM,GAAG,OAAO,OAAO,WAAW,MAAM,IAAI,MAAM,GAAG,CAAC;AAAA,QACtG;AAAA,QACA;AAAA,MACF;AAAA,IACF,SAAS,GAAG;AACV,UAAI,EAAE;AACJ,gBAAQ,MAAM,iCAAiC,CAAC;AAClD,aAAO;AAAA,IACT;AAAA,EACF;AACF;AACA,SAAS,aAAa,OAAO,EAAE,SAAS,YAAY,KAAK,MAAM,GAAG;AAChE,MAAI;AACF,UAAM,cAAc,WAAW,OAAO,SAAS,QAAQ,QAAQ,GAAG;AAClE,QAAI;AACF,YAAM,OAAO,cAAc,OAAO,SAAS,WAAW,YAAY,WAAW,CAAC;AAAA,EAClF,SAAS,GAAG;AACV,QAAI;AACF,cAAQ,MAAM,iCAAiC,CAAC;AAAA,EACpD;AACF;AACA,SAAS,aAAa,OAAO,EAAE,SAAS,YAAY,KAAK,OAAO,MAAM,GAAG;AACvE,MAAI;AACF,UAAM,UAAU,MAAM,QAAQ,KAAK,IAAI,KAAK,OAAO,KAAK,IAAI;AAC5D,YAAQ,QAAQ,KAAK,WAAW,UAAU,OAAO,CAAC;AAAA,EACpD,SAAS,GAAG;AACV,QAAI;AACF,cAAQ,MAAM,iCAAiC,CAAC;AAAA,EACpD;AACF;AACA,SAAS,qBAAqB,iBAAiB,CAAC,GAAG;AACjD,SAAO,CAAC,YAAY;AAClB,UAAM,EAAE,OAAO,MAAM,IAAI;AACzB,UAAM;AAAA,MACJ,SAAS,EAAE,UAAU,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAI,CAAC;AACH;AACF,QAAI,EAAE,MAAM,OAAO,MAAM,MAAM,QAAQ;AACrC,YAAM,iBAAiB,MAAM,GAAG,IAAI,MAAM,IAAI,QAAQ,UAAU,EAAE,CAAC;AACnE,UAAI;AACF,gBAAQ,QAAQ,EAAE,KAAK,MAAM,eAAe,SAAS,CAAC;AACxD;AAAA,IACF;AACA,UAAM,gBAAgB,MAAM,QAAQ,OAAO,IAAI,QAAQ,IAAI,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,iBAAiB,SAAS,cAAc,CAAC,GAAG,IAAI,iBAAiB,gBAAgB,KAAK,CAAC,EAAE,OAAO,OAAO;AACjN,UAAM,WAAW,MAAM;AACrB,mBAAa,QAAQ,CAAC,gBAAgB;AACpC,qBAAa,MAAM,QAAQ,WAAW;AAAA,MACxC,CAAC;AAAA,IACH;AACA,UAAM,WAAW,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC,MAAM;AAC7C,mBAAa,QAAQ,CAAC,gBAAgB;AACpC,cAAM,EAAE,eAAe,aAAa,IAAI;AACxC,YAAI;AACF,2BAAiB,OAAO,SAAS,cAAc,OAAO;AACxD,qBAAa,OAAO,WAAW;AAC/B,YAAI;AACF,0BAAgB,OAAO,SAAS,aAAa,OAAO;AAAA,MACxD,CAAC;AAAA,IACH;AACA,iBAAa,QAAQ,CAAC,gBAAgB;AACpC,YAAM,EAAE,eAAe,aAAa,IAAI;AACxC,uBAAiB,OAAO,SAAS,cAAc,OAAO;AACtD,mBAAa,OAAO,WAAW;AAC/B,sBAAgB,OAAO,SAAS,aAAa,OAAO;AACpD,YAAM;AAAA,QACJ,CAAC,WAAW,UAAU;AACpB,uBAAa,OAAO,WAAW;AAAA,QACjC;AAAA,QACA;AAAA,UACE,UAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAGA,IAAI,cAAc,qBAAqB;",
|
||||
"names": []
|
||||
}
|
@ -0,0 +1,323 @@
|
||||
import {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBaseVNode,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
} from "./chunk-IH3XMDLU.js";
|
||||
export {
|
||||
BaseTransition,
|
||||
BaseTransitionPropsValidators,
|
||||
Comment,
|
||||
DeprecationTypes,
|
||||
EffectScope,
|
||||
ErrorCodes,
|
||||
ErrorTypeStrings,
|
||||
Fragment,
|
||||
KeepAlive,
|
||||
ReactiveEffect,
|
||||
Static,
|
||||
Suspense,
|
||||
Teleport,
|
||||
Text,
|
||||
TrackOpTypes,
|
||||
Transition,
|
||||
TransitionGroup,
|
||||
TriggerOpTypes,
|
||||
VueElement,
|
||||
assertNumber,
|
||||
callWithAsyncErrorHandling,
|
||||
callWithErrorHandling,
|
||||
camelize,
|
||||
capitalize,
|
||||
cloneVNode,
|
||||
compatUtils,
|
||||
compile,
|
||||
computed,
|
||||
createApp,
|
||||
createBlock,
|
||||
createCommentVNode,
|
||||
createElementBlock,
|
||||
createBaseVNode as createElementVNode,
|
||||
createHydrationRenderer,
|
||||
createPropsRestProxy,
|
||||
createRenderer,
|
||||
createSSRApp,
|
||||
createSlots,
|
||||
createStaticVNode,
|
||||
createTextVNode,
|
||||
createVNode,
|
||||
customRef,
|
||||
defineAsyncComponent,
|
||||
defineComponent,
|
||||
defineCustomElement,
|
||||
defineEmits,
|
||||
defineExpose,
|
||||
defineModel,
|
||||
defineOptions,
|
||||
defineProps,
|
||||
defineSSRCustomElement,
|
||||
defineSlots,
|
||||
devtools,
|
||||
effect,
|
||||
effectScope,
|
||||
getCurrentInstance,
|
||||
getCurrentScope,
|
||||
getTransitionRawChildren,
|
||||
guardReactiveProps,
|
||||
h,
|
||||
handleError,
|
||||
hasInjectionContext,
|
||||
hydrate,
|
||||
initCustomFormatter,
|
||||
initDirectivesForSSR,
|
||||
inject,
|
||||
isMemoSame,
|
||||
isProxy,
|
||||
isReactive,
|
||||
isReadonly,
|
||||
isRef,
|
||||
isRuntimeOnly,
|
||||
isShallow,
|
||||
isVNode,
|
||||
markRaw,
|
||||
mergeDefaults,
|
||||
mergeModels,
|
||||
mergeProps,
|
||||
nextTick,
|
||||
normalizeClass,
|
||||
normalizeProps,
|
||||
normalizeStyle,
|
||||
onActivated,
|
||||
onBeforeMount,
|
||||
onBeforeUnmount,
|
||||
onBeforeUpdate,
|
||||
onDeactivated,
|
||||
onErrorCaptured,
|
||||
onMounted,
|
||||
onRenderTracked,
|
||||
onRenderTriggered,
|
||||
onScopeDispose,
|
||||
onServerPrefetch,
|
||||
onUnmounted,
|
||||
onUpdated,
|
||||
openBlock,
|
||||
popScopeId,
|
||||
provide,
|
||||
proxyRefs,
|
||||
pushScopeId,
|
||||
queuePostFlushCb,
|
||||
reactive,
|
||||
readonly,
|
||||
ref,
|
||||
registerRuntimeCompiler,
|
||||
render,
|
||||
renderList,
|
||||
renderSlot,
|
||||
resolveComponent,
|
||||
resolveDirective,
|
||||
resolveDynamicComponent,
|
||||
resolveFilter,
|
||||
resolveTransitionHooks,
|
||||
setBlockTracking,
|
||||
setDevtoolsHook,
|
||||
setTransitionHooks,
|
||||
shallowReactive,
|
||||
shallowReadonly,
|
||||
shallowRef,
|
||||
ssrContextKey,
|
||||
ssrUtils,
|
||||
stop,
|
||||
toDisplayString,
|
||||
toHandlerKey,
|
||||
toHandlers,
|
||||
toRaw,
|
||||
toRef,
|
||||
toRefs,
|
||||
toValue,
|
||||
transformVNodeArgs,
|
||||
triggerRef,
|
||||
unref,
|
||||
useAttrs,
|
||||
useCssModule,
|
||||
useCssVars,
|
||||
useModel,
|
||||
useSSRContext,
|
||||
useSlots,
|
||||
useTransitionState,
|
||||
vModelCheckbox,
|
||||
vModelDynamic,
|
||||
vModelRadio,
|
||||
vModelSelect,
|
||||
vModelText,
|
||||
vShow,
|
||||
version,
|
||||
warn,
|
||||
watch,
|
||||
watchEffect,
|
||||
watchPostEffect,
|
||||
watchSyncEffect,
|
||||
withAsyncContext,
|
||||
withCtx,
|
||||
withDefaults,
|
||||
withDirectives,
|
||||
withKeys,
|
||||
withMemo,
|
||||
withModifiers,
|
||||
withScopeId
|
||||
};
|
||||
//# sourceMappingURL=vue.js.map
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
@ -0,0 +1,923 @@
|
||||
/*
|
||||
* @Author: 王文杰
|
||||
* @Date: 2019-03-05 14:39:24
|
||||
* @LastEditors: 王文杰
|
||||
* @LastEditTime: 2024-01-30 16:59:47
|
||||
* @FilePath: /app-nx-recycle/src/libs/qqmap-wx-jssdk1.2/qqmap-wx-jssdk.min.js
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
var ERROR_CONF = {
|
||||
KEY_ERR: 311,
|
||||
KEY_ERR_MSG: 'key格式错误',
|
||||
PARAM_ERR: 310,
|
||||
PARAM_ERR_MSG: '请求参数信息有误',
|
||||
SYSTEM_ERR: 600,
|
||||
SYSTEM_ERR_MSG: '系统错误',
|
||||
WX_ERR_CODE: 1000,
|
||||
WX_OK_CODE: 200,
|
||||
}
|
||||
var BASE_URL = 'https://apis.map.qq.com/ws/'
|
||||
var URL_SEARCH = BASE_URL + 'place/v1/search'
|
||||
var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'
|
||||
var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'
|
||||
var URL_CITY_LIST = BASE_URL + 'district/v1/list'
|
||||
var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'
|
||||
var URL_DISTANCE = BASE_URL + 'distance/v1/'
|
||||
var URL_DIRECTION = BASE_URL + 'direction/v1/'
|
||||
var MODE = { driving: 'driving', transit: 'transit' }
|
||||
var EARTH_RADIUS = 6378136.49
|
||||
var Utils = {
|
||||
safeAdd(x, y) {
|
||||
var lsw = (x & 0xffff) + (y & 0xffff)
|
||||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16)
|
||||
return (msw << 16) | (lsw & 0xffff)
|
||||
},
|
||||
bitRotateLeft(num, cnt) {
|
||||
return (num << cnt) | (num >>> (32 - cnt))
|
||||
},
|
||||
md5cmn(q, a, b, x, s, t) {
|
||||
return this.safeAdd(
|
||||
this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s),
|
||||
b,
|
||||
)
|
||||
},
|
||||
md5ff(a, b, c, d, x, s, t) {
|
||||
return this.md5cmn((b & c) | (~b & d), a, b, x, s, t)
|
||||
},
|
||||
md5gg(a, b, c, d, x, s, t) {
|
||||
return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t)
|
||||
},
|
||||
md5hh(a, b, c, d, x, s, t) {
|
||||
return this.md5cmn(b ^ c ^ d, a, b, x, s, t)
|
||||
},
|
||||
md5ii(a, b, c, d, x, s, t) {
|
||||
return this.md5cmn(c ^ (b | ~d), a, b, x, s, t)
|
||||
},
|
||||
binlMD5(x, len) {
|
||||
x[len >> 5] |= 0x80 << len % 32
|
||||
x[(((len + 64) >>> 9) << 4) + 14] = len
|
||||
var i
|
||||
var olda
|
||||
var oldb
|
||||
var oldc
|
||||
var oldd
|
||||
var a = 1732584193
|
||||
var b = -271733879
|
||||
var c = -1732584194
|
||||
var d = 271733878
|
||||
for (i = 0; i < x.length; i += 16) {
|
||||
olda = a
|
||||
oldb = b
|
||||
oldc = c
|
||||
oldd = d
|
||||
a = this.md5ff(a, b, c, d, x[i], 7, -680876936)
|
||||
d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586)
|
||||
c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819)
|
||||
b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330)
|
||||
a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897)
|
||||
d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426)
|
||||
c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341)
|
||||
b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983)
|
||||
a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416)
|
||||
d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417)
|
||||
c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063)
|
||||
b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162)
|
||||
a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682)
|
||||
d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101)
|
||||
c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290)
|
||||
b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329)
|
||||
a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510)
|
||||
d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632)
|
||||
c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713)
|
||||
b = this.md5gg(b, c, d, a, x[i], 20, -373897302)
|
||||
a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691)
|
||||
d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083)
|
||||
c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335)
|
||||
b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848)
|
||||
a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438)
|
||||
d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690)
|
||||
c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961)
|
||||
b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501)
|
||||
a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467)
|
||||
d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784)
|
||||
c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473)
|
||||
b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734)
|
||||
a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558)
|
||||
d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463)
|
||||
c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562)
|
||||
b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556)
|
||||
a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060)
|
||||
d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353)
|
||||
c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632)
|
||||
b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640)
|
||||
a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174)
|
||||
d = this.md5hh(d, a, b, c, x[i], 11, -358537222)
|
||||
c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979)
|
||||
b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189)
|
||||
a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487)
|
||||
d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835)
|
||||
c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520)
|
||||
b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651)
|
||||
a = this.md5ii(a, b, c, d, x[i], 6, -198630844)
|
||||
d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415)
|
||||
c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905)
|
||||
b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055)
|
||||
a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571)
|
||||
d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606)
|
||||
c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523)
|
||||
b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799)
|
||||
a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359)
|
||||
d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744)
|
||||
c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380)
|
||||
b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649)
|
||||
a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070)
|
||||
d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379)
|
||||
c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259)
|
||||
b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551)
|
||||
a = this.safeAdd(a, olda)
|
||||
b = this.safeAdd(b, oldb)
|
||||
c = this.safeAdd(c, oldc)
|
||||
d = this.safeAdd(d, oldd)
|
||||
}
|
||||
return [a, b, c, d]
|
||||
},
|
||||
binl2rstr(input) {
|
||||
var i
|
||||
var output = ''
|
||||
var length32 = input.length * 32
|
||||
for (i = 0; i < length32; i += 8) {
|
||||
output += String.fromCharCode((input[i >> 5] >>> i % 32) & 0xff)
|
||||
}
|
||||
return output
|
||||
},
|
||||
rstr2binl(input) {
|
||||
var i
|
||||
var output = []
|
||||
output[(input.length >> 2) - 1] = undefined
|
||||
for (i = 0; i < output.length; i += 1) {
|
||||
output[i] = 0
|
||||
}
|
||||
var length8 = input.length * 8
|
||||
for (i = 0; i < length8; i += 8) {
|
||||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << i % 32
|
||||
}
|
||||
return output
|
||||
},
|
||||
rstrMD5(s) {
|
||||
return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8))
|
||||
},
|
||||
rstrHMACMD5(key, data) {
|
||||
var i
|
||||
var bkey = this.rstr2binl(key)
|
||||
var ipad = []
|
||||
var opad = []
|
||||
var hash
|
||||
ipad[15] = opad[15] = undefined
|
||||
if (bkey.length > 16) {
|
||||
bkey = this.binlMD5(bkey, key.length * 8)
|
||||
}
|
||||
for (i = 0; i < 16; i += 1) {
|
||||
ipad[i] = bkey[i] ^ 0x36363636
|
||||
opad[i] = bkey[i] ^ 0x5c5c5c5c
|
||||
}
|
||||
hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8)
|
||||
return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128))
|
||||
},
|
||||
rstr2hex(input) {
|
||||
var hexTab = '0123456789abcdef'
|
||||
var output = ''
|
||||
var x
|
||||
var i
|
||||
for (i = 0; i < input.length; i += 1) {
|
||||
x = input.charCodeAt(i)
|
||||
output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f)
|
||||
}
|
||||
return output
|
||||
},
|
||||
str2rstrUTF8(input) {
|
||||
return unescape(encodeURIComponent(input))
|
||||
},
|
||||
rawMD5(s) {
|
||||
return this.rstrMD5(this.str2rstrUTF8(s))
|
||||
},
|
||||
hexMD5(s) {
|
||||
return this.rstr2hex(this.rawMD5(s))
|
||||
},
|
||||
rawHMACMD5(k, d) {
|
||||
return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d))
|
||||
},
|
||||
hexHMACMD5(k, d) {
|
||||
return this.rstr2hex(this.rawHMACMD5(k, d))
|
||||
},
|
||||
md5(string, key, raw) {
|
||||
if (!key) {
|
||||
if (!raw) {
|
||||
return this.hexMD5(string)
|
||||
}
|
||||
return this.rawMD5(string)
|
||||
}
|
||||
if (!raw) {
|
||||
return this.hexHMACMD5(key, string)
|
||||
}
|
||||
return this.rawHMACMD5(key, string)
|
||||
},
|
||||
getSig(requestParam, sk, feature, mode) {
|
||||
var sig = null
|
||||
var requestArr = []
|
||||
Object.keys(requestParam)
|
||||
.sort()
|
||||
.forEach(function (key) {
|
||||
requestArr.push(key + '=' + requestParam[key])
|
||||
})
|
||||
if (feature == 'search') {
|
||||
sig = '/ws/place/v1/search?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'suggest') {
|
||||
sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'reverseGeocoder') {
|
||||
sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'geocoder') {
|
||||
sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'getCityList') {
|
||||
sig = '/ws/district/v1/list?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'getDistrictByCityId') {
|
||||
sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'calculateDistance') {
|
||||
sig = '/ws/distance/v1/?' + requestArr.join('&') + sk
|
||||
}
|
||||
if (feature == 'direction') {
|
||||
sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk
|
||||
}
|
||||
sig = this.md5(sig)
|
||||
return sig
|
||||
},
|
||||
location2query(data) {
|
||||
if (typeof data == 'string') {
|
||||
return data
|
||||
}
|
||||
var query = ''
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var d = data[i]
|
||||
if (query) {
|
||||
query += ';'
|
||||
}
|
||||
if (d.location) {
|
||||
query = query + d.location.lat + ',' + d.location.lng
|
||||
}
|
||||
if (d.latitude && d.longitude) {
|
||||
query = query + d.latitude + ',' + d.longitude
|
||||
}
|
||||
}
|
||||
return query
|
||||
},
|
||||
rad(d) {
|
||||
return (d * Math.PI) / 180.0
|
||||
},
|
||||
getEndLocation(location) {
|
||||
var to = location.split(';')
|
||||
var endLocation = []
|
||||
for (var i = 0; i < to.length; i++) {
|
||||
endLocation.push({
|
||||
lat: parseFloat(to[i].split(',')[0]),
|
||||
lng: parseFloat(to[i].split(',')[1]),
|
||||
})
|
||||
}
|
||||
return endLocation
|
||||
},
|
||||
getDistance(latFrom, lngFrom, latTo, lngTo) {
|
||||
var radLatFrom = this.rad(latFrom)
|
||||
var radLatTo = this.rad(latTo)
|
||||
var a = radLatFrom - radLatTo
|
||||
var b = this.rad(lngFrom) - this.rad(lngTo)
|
||||
var distance =
|
||||
2 *
|
||||
Math.asin(
|
||||
Math.sqrt(
|
||||
Math.pow(Math.sin(a / 2), 2) +
|
||||
Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2),
|
||||
),
|
||||
)
|
||||
distance = distance * EARTH_RADIUS
|
||||
distance = Math.round(distance * 10000) / 10000
|
||||
return parseFloat(distance.toFixed(0))
|
||||
},
|
||||
getWXLocation(success, fail, complete) {
|
||||
wx.getLocation({ type: 'gcj02', success: success, fail: fail, complete: complete })
|
||||
},
|
||||
getLocationParam(location) {
|
||||
if (typeof location == 'string') {
|
||||
var locationArr = location.split(',')
|
||||
if (locationArr.length === 2) {
|
||||
location = { latitude: location.split(',')[0], longitude: location.split(',')[1] }
|
||||
} else {
|
||||
location = {}
|
||||
}
|
||||
}
|
||||
return location
|
||||
},
|
||||
polyfillParam(param) {
|
||||
param.success = param.success || function () {}
|
||||
param.fail = param.fail || function () {}
|
||||
param.complete = param.complete || function () {}
|
||||
},
|
||||
checkParamKeyEmpty(param, key) {
|
||||
if (!param[key]) {
|
||||
var errconf = this.buildErrorConfig(
|
||||
ERROR_CONF.PARAM_ERR,
|
||||
ERROR_CONF.PARAM_ERR_MSG + key + '参数格式有误',
|
||||
)
|
||||
param.fail(errconf)
|
||||
param.complete(errconf)
|
||||
return true
|
||||
}
|
||||
return false
|
||||
},
|
||||
checkKeyword(param) {
|
||||
return !this.checkParamKeyEmpty(param, 'keyword')
|
||||
},
|
||||
checkLocation(param) {
|
||||
var location = this.getLocationParam(param.location)
|
||||
if (!location || !location.latitude || !location.longitude) {
|
||||
var errconf = this.buildErrorConfig(
|
||||
ERROR_CONF.PARAM_ERR,
|
||||
ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误',
|
||||
)
|
||||
param.fail(errconf)
|
||||
param.complete(errconf)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
buildErrorConfig(errCode, errMsg) {
|
||||
return { status: errCode, message: errMsg }
|
||||
},
|
||||
handleData(param, data, feature) {
|
||||
if (feature == 'search') {
|
||||
var searchResult = data.data
|
||||
var searchSimplify = []
|
||||
for (var i = 0; i < searchResult.length; i++) {
|
||||
searchSimplify.push({
|
||||
id: searchResult[i].id || null,
|
||||
title: searchResult[i].title || null,
|
||||
latitude: (searchResult[i].location && searchResult[i].location.lat) || null,
|
||||
longitude: (searchResult[i].location && searchResult[i].location.lng) || null,
|
||||
address: searchResult[i].address || null,
|
||||
category: searchResult[i].category || null,
|
||||
tel: searchResult[i].tel || null,
|
||||
adcode: (searchResult[i].ad_info && searchResult[i].ad_info.adcode) || null,
|
||||
city: (searchResult[i].ad_info && searchResult[i].ad_info.city) || null,
|
||||
district: (searchResult[i].ad_info && searchResult[i].ad_info.district) || null,
|
||||
province: (searchResult[i].ad_info && searchResult[i].ad_info.province) || null,
|
||||
})
|
||||
}
|
||||
param.success(data, { searchResult: searchResult, searchSimplify: searchSimplify })
|
||||
} else if (feature == 'suggest') {
|
||||
var suggestResult = data.data
|
||||
var suggestSimplify = []
|
||||
for (var i = 0; i < suggestResult.length; i++) {
|
||||
suggestSimplify.push({
|
||||
adcode: suggestResult[i].adcode || null,
|
||||
address: suggestResult[i].address || null,
|
||||
category: suggestResult[i].category || null,
|
||||
city: suggestResult[i].city || null,
|
||||
district: suggestResult[i].district || null,
|
||||
id: suggestResult[i].id || null,
|
||||
latitude: (suggestResult[i].location && suggestResult[i].location.lat) || null,
|
||||
longitude: (suggestResult[i].location && suggestResult[i].location.lng) || null,
|
||||
province: suggestResult[i].province || null,
|
||||
title: suggestResult[i].title || null,
|
||||
type: suggestResult[i].type || null,
|
||||
})
|
||||
}
|
||||
param.success(data, { suggestResult: suggestResult, suggestSimplify: suggestSimplify })
|
||||
} else if (feature == 'reverseGeocoder') {
|
||||
var reverseGeocoderResult = data.result
|
||||
var reverseGeocoderSimplify = {
|
||||
address: reverseGeocoderResult.address || null,
|
||||
latitude: (reverseGeocoderResult.location && reverseGeocoderResult.location.lat) || null,
|
||||
longitude: (reverseGeocoderResult.location && reverseGeocoderResult.location.lng) || null,
|
||||
adcode: (reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode) || null,
|
||||
city:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.city) ||
|
||||
null,
|
||||
district:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.district) ||
|
||||
null,
|
||||
nation:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.nation) ||
|
||||
null,
|
||||
province:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.province) ||
|
||||
null,
|
||||
street:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.street) ||
|
||||
null,
|
||||
street_number:
|
||||
(reverseGeocoderResult.address_component &&
|
||||
reverseGeocoderResult.address_component.street_number) ||
|
||||
null,
|
||||
recommend:
|
||||
(reverseGeocoderResult.formatted_addresses &&
|
||||
reverseGeocoderResult.formatted_addresses.recommend) ||
|
||||
null,
|
||||
rough:
|
||||
(reverseGeocoderResult.formatted_addresses &&
|
||||
reverseGeocoderResult.formatted_addresses.rough) ||
|
||||
null,
|
||||
}
|
||||
if (reverseGeocoderResult.pois) {
|
||||
var pois = reverseGeocoderResult.pois
|
||||
var poisSimplify = []
|
||||
for (var i = 0; i < pois.length; i++) {
|
||||
poisSimplify.push({
|
||||
id: pois[i].id || null,
|
||||
title: pois[i].title || null,
|
||||
latitude: (pois[i].location && pois[i].location.lat) || null,
|
||||
longitude: (pois[i].location && pois[i].location.lng) || null,
|
||||
address: pois[i].address || null,
|
||||
category: pois[i].category || null,
|
||||
adcode: (pois[i].ad_info && pois[i].ad_info.adcode) || null,
|
||||
city: (pois[i].ad_info && pois[i].ad_info.city) || null,
|
||||
district: (pois[i].ad_info && pois[i].ad_info.district) || null,
|
||||
province: (pois[i].ad_info && pois[i].ad_info.province) || null,
|
||||
})
|
||||
}
|
||||
param.success(data, {
|
||||
reverseGeocoderResult: reverseGeocoderResult,
|
||||
reverseGeocoderSimplify: reverseGeocoderSimplify,
|
||||
pois: pois,
|
||||
poisSimplify: poisSimplify,
|
||||
})
|
||||
} else {
|
||||
param.success(data, {
|
||||
reverseGeocoderResult: reverseGeocoderResult,
|
||||
reverseGeocoderSimplify: reverseGeocoderSimplify,
|
||||
})
|
||||
}
|
||||
} else if (feature == 'geocoder') {
|
||||
var geocoderResult = data.result
|
||||
var geocoderSimplify = {
|
||||
title: geocoderResult.title || null,
|
||||
latitude: (geocoderResult.location && geocoderResult.location.lat) || null,
|
||||
longitude: (geocoderResult.location && geocoderResult.location.lng) || null,
|
||||
adcode: (geocoderResult.ad_info && geocoderResult.ad_info.adcode) || null,
|
||||
province:
|
||||
(geocoderResult.address_components && geocoderResult.address_components.province) || null,
|
||||
city: (geocoderResult.address_components && geocoderResult.address_components.city) || null,
|
||||
district:
|
||||
(geocoderResult.address_components && geocoderResult.address_components.district) || null,
|
||||
street:
|
||||
(geocoderResult.address_components && geocoderResult.address_components.street) || null,
|
||||
street_number:
|
||||
(geocoderResult.address_components && geocoderResult.address_components.street_number) ||
|
||||
null,
|
||||
level: geocoderResult.level || null,
|
||||
}
|
||||
param.success(data, { geocoderResult: geocoderResult, geocoderSimplify: geocoderSimplify })
|
||||
} else if (feature == 'getCityList') {
|
||||
var provinceResult = data.result[0]
|
||||
var cityResult = data.result[1]
|
||||
var districtResult = data.result[2]
|
||||
param.success(data, {
|
||||
provinceResult: provinceResult,
|
||||
cityResult: cityResult,
|
||||
districtResult: districtResult,
|
||||
})
|
||||
} else if (feature == 'getDistrictByCityId') {
|
||||
var districtByCity = data.result[0]
|
||||
param.success(data, districtByCity)
|
||||
} else if (feature == 'calculateDistance') {
|
||||
var calculateDistanceResult = data.result.elements
|
||||
var distance = []
|
||||
for (var i = 0; i < calculateDistanceResult.length; i++) {
|
||||
distance.push(calculateDistanceResult[i].distance)
|
||||
}
|
||||
param.success(data, { calculateDistanceResult: calculateDistanceResult, distance: distance })
|
||||
} else if (feature == 'direction') {
|
||||
var direction = data.result.routes
|
||||
param.success(data, direction)
|
||||
} else {
|
||||
param.success(data)
|
||||
}
|
||||
},
|
||||
buildWxRequestConfig(param, options, feature) {
|
||||
var that = this
|
||||
options.header = { 'content-type': 'application/json' }
|
||||
options.method = 'GET'
|
||||
options.success = function (res) {
|
||||
var data = res.data
|
||||
if (data.status === 0) {
|
||||
that.handleData(param, data, feature)
|
||||
} else {
|
||||
param.fail(data)
|
||||
}
|
||||
}
|
||||
options.fail = function (res) {
|
||||
res.statusCode = ERROR_CONF.WX_ERR_CODE
|
||||
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
|
||||
}
|
||||
options.complete = function (res) {
|
||||
var statusCode = +res.statusCode
|
||||
switch (statusCode) {
|
||||
case ERROR_CONF.WX_ERR_CODE: {
|
||||
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
|
||||
break
|
||||
}
|
||||
case ERROR_CONF.WX_OK_CODE: {
|
||||
var data = res.data
|
||||
if (data.status === 0) {
|
||||
param.complete(data)
|
||||
} else {
|
||||
param.complete(that.buildErrorConfig(data.status, data.message))
|
||||
}
|
||||
break
|
||||
}
|
||||
default: {
|
||||
param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG))
|
||||
}
|
||||
}
|
||||
}
|
||||
return options
|
||||
},
|
||||
locationProcess(param, locationsuccess, locationfail, locationcomplete) {
|
||||
var that = this
|
||||
locationfail =
|
||||
locationfail ||
|
||||
function (res) {
|
||||
res.statusCode = ERROR_CONF.WX_ERR_CODE
|
||||
param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
|
||||
}
|
||||
locationcomplete =
|
||||
locationcomplete ||
|
||||
function (res) {
|
||||
if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
|
||||
param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg))
|
||||
}
|
||||
}
|
||||
if (!param.location) {
|
||||
that.getWXLocation(locationsuccess, locationfail, locationcomplete)
|
||||
} else if (that.checkLocation(param)) {
|
||||
var location = Utils.getLocationParam(param.location)
|
||||
locationsuccess(location)
|
||||
}
|
||||
},
|
||||
}
|
||||
class QQMapWX {
|
||||
constructor(options) {
|
||||
if (!options.key) {
|
||||
throw Error('key值不能为空')
|
||||
}
|
||||
this.key = options.key
|
||||
}
|
||||
search(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (!Utils.checkKeyword(options)) {
|
||||
return
|
||||
}
|
||||
var requestParam = {
|
||||
keyword: options.keyword,
|
||||
orderby: options.orderby || '_distance',
|
||||
page_size: options.page_size || 10,
|
||||
page_index: options.page_index || 1,
|
||||
output: 'json',
|
||||
key: that.key,
|
||||
}
|
||||
if (options.address_format) {
|
||||
requestParam.address_format = options.address_format
|
||||
}
|
||||
if (options.filter) {
|
||||
requestParam.filter = options.filter
|
||||
}
|
||||
var distance = options.distance || '1000'
|
||||
var auto_extend = options.auto_extend || 1
|
||||
var region = null
|
||||
var rectangle = null
|
||||
if (options.region) {
|
||||
region = options.region
|
||||
}
|
||||
if (options.rectangle) {
|
||||
rectangle = options.rectangle
|
||||
}
|
||||
var locationsuccess = function (result) {
|
||||
if (region && !rectangle) {
|
||||
requestParam.boundary =
|
||||
'region(' +
|
||||
region +
|
||||
',' +
|
||||
auto_extend +
|
||||
',' +
|
||||
result.latitude +
|
||||
',' +
|
||||
result.longitude +
|
||||
')'
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
|
||||
}
|
||||
} else if (rectangle && !region) {
|
||||
requestParam.boundary = 'rectangle(' + rectangle + ')'
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
|
||||
}
|
||||
} else {
|
||||
requestParam.boundary =
|
||||
'nearby(' +
|
||||
result.latitude +
|
||||
',' +
|
||||
result.longitude +
|
||||
',' +
|
||||
distance +
|
||||
',' +
|
||||
auto_extend +
|
||||
')'
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'search')
|
||||
}
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(options, { url: URL_SEARCH, data: requestParam }, 'search'),
|
||||
)
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
}
|
||||
getSuggestion(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (!Utils.checkKeyword(options)) {
|
||||
return
|
||||
}
|
||||
var requestParam = {
|
||||
keyword: options.keyword,
|
||||
region: options.region || '全国',
|
||||
region_fix: options.region_fix || 0,
|
||||
policy: options.policy || 0,
|
||||
page_size: options.page_size || 10,
|
||||
page_index: options.page_index || 1,
|
||||
get_subpois: options.get_subpois || 0,
|
||||
output: 'json',
|
||||
key: that.key,
|
||||
}
|
||||
if (options.address_format) {
|
||||
requestParam.address_format = options.address_format
|
||||
}
|
||||
if (options.filter) {
|
||||
requestParam.filter = options.filter
|
||||
}
|
||||
if (options.location) {
|
||||
var locationsuccess = function (result) {
|
||||
requestParam.location = result.latitude + ',' + result.longitude
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_SUGGESTION, data: requestParam },
|
||||
'suggest',
|
||||
),
|
||||
)
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
} else {
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(options, { url: URL_SUGGESTION, data: requestParam }, 'suggest'),
|
||||
)
|
||||
}
|
||||
}
|
||||
reverseGeocoder(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
var requestParam = {
|
||||
coord_type: options.coord_type || 5,
|
||||
get_poi: options.get_poi || 0,
|
||||
output: 'json',
|
||||
key: that.key,
|
||||
}
|
||||
if (options.poi_options) {
|
||||
requestParam.poi_options = options.poi_options
|
||||
}
|
||||
var locationsuccess = function (result) {
|
||||
requestParam.location = result.latitude + ',' + result.longitude
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_GET_GEOCODER, data: requestParam },
|
||||
'reverseGeocoder',
|
||||
),
|
||||
)
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
}
|
||||
geocoder(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (Utils.checkParamKeyEmpty(options, 'address')) {
|
||||
return
|
||||
}
|
||||
var requestParam = { address: options.address, output: 'json', key: that.key }
|
||||
if (options.region) {
|
||||
requestParam.region = options.region
|
||||
}
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_GET_GEOCODER, data: requestParam },
|
||||
'geocoder',
|
||||
),
|
||||
)
|
||||
}
|
||||
getCityList(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
var requestParam = { output: 'json', key: that.key }
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_CITY_LIST, data: requestParam },
|
||||
'getCityList',
|
||||
),
|
||||
)
|
||||
}
|
||||
getDistrictByCityId(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (Utils.checkParamKeyEmpty(options, 'id')) {
|
||||
return
|
||||
}
|
||||
var requestParam = { id: options.id || '', output: 'json', key: that.key }
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_AREA_LIST, data: requestParam },
|
||||
'getDistrictByCityId',
|
||||
),
|
||||
)
|
||||
}
|
||||
calculateDistance(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (Utils.checkParamKeyEmpty(options, 'to')) {
|
||||
return
|
||||
}
|
||||
var requestParam = {
|
||||
mode: options.mode || 'walking',
|
||||
to: Utils.location2query(options.to),
|
||||
output: 'json',
|
||||
key: that.key,
|
||||
}
|
||||
if (options.from) {
|
||||
options.location = options.from
|
||||
}
|
||||
if (requestParam.mode == 'straight') {
|
||||
var locationsuccess = function (result) {
|
||||
var locationTo = Utils.getEndLocation(requestParam.to)
|
||||
var data = { message: 'query ok', result: { elements: [] }, status: 0 }
|
||||
for (var i = 0; i < locationTo.length; i++) {
|
||||
data.result.elements.push({
|
||||
distance: Utils.getDistance(
|
||||
result.latitude,
|
||||
result.longitude,
|
||||
locationTo[i].lat,
|
||||
locationTo[i].lng,
|
||||
),
|
||||
duration: 0,
|
||||
from: { lat: result.latitude, lng: result.longitude },
|
||||
to: { lat: locationTo[i].lat, lng: locationTo[i].lng },
|
||||
})
|
||||
}
|
||||
var calculateResult = data.result.elements
|
||||
var distanceResult = []
|
||||
for (var i = 0; i < calculateResult.length; i++) {
|
||||
distanceResult.push(calculateResult[i].distance)
|
||||
}
|
||||
return options.success(data, {
|
||||
calculateResult: calculateResult,
|
||||
distanceResult: distanceResult,
|
||||
})
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
} else {
|
||||
var locationsuccess = function (result) {
|
||||
requestParam.from = result.latitude + ',' + result.longitude
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance')
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: URL_DISTANCE, data: requestParam },
|
||||
'calculateDistance',
|
||||
),
|
||||
)
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
}
|
||||
}
|
||||
direction(options) {
|
||||
var that = this
|
||||
options = options || {}
|
||||
Utils.polyfillParam(options)
|
||||
if (Utils.checkParamKeyEmpty(options, 'to')) {
|
||||
return
|
||||
}
|
||||
var requestParam = { output: 'json', key: that.key }
|
||||
if (typeof options.to == 'string') {
|
||||
requestParam.to = options.to
|
||||
} else {
|
||||
requestParam.to = options.to.latitude + ',' + options.to.longitude
|
||||
}
|
||||
var SET_URL_DIRECTION = null
|
||||
options.mode = options.mode || MODE.driving
|
||||
SET_URL_DIRECTION = URL_DIRECTION + options.mode
|
||||
if (options.from) {
|
||||
options.location = options.from
|
||||
}
|
||||
if (options.mode == MODE.driving) {
|
||||
if (options.from_poi) {
|
||||
requestParam.from_poi = options.from_poi
|
||||
}
|
||||
if (options.heading) {
|
||||
requestParam.heading = options.heading
|
||||
}
|
||||
if (options.speed) {
|
||||
requestParam.speed = options.speed
|
||||
}
|
||||
if (options.accuracy) {
|
||||
requestParam.accuracy = options.accuracy
|
||||
}
|
||||
if (options.road_type) {
|
||||
requestParam.road_type = options.road_type
|
||||
}
|
||||
if (options.to_poi) {
|
||||
requestParam.to_poi = options.to_poi
|
||||
}
|
||||
if (options.from_track) {
|
||||
requestParam.from_track = options.from_track
|
||||
}
|
||||
if (options.waypoints) {
|
||||
requestParam.waypoints = options.waypoints
|
||||
}
|
||||
if (options.policy) {
|
||||
requestParam.policy = options.policy
|
||||
}
|
||||
if (options.plate_number) {
|
||||
requestParam.plate_number = options.plate_number
|
||||
}
|
||||
}
|
||||
if (options.mode == MODE.transit) {
|
||||
if (options.departure_time) {
|
||||
requestParam.departure_time = options.departure_time
|
||||
}
|
||||
if (options.policy) {
|
||||
requestParam.policy = options.policy
|
||||
}
|
||||
}
|
||||
var locationsuccess = function (result) {
|
||||
requestParam.from = result.latitude + ',' + result.longitude
|
||||
if (options.sig) {
|
||||
requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction', options.mode)
|
||||
}
|
||||
wx.request(
|
||||
Utils.buildWxRequestConfig(
|
||||
options,
|
||||
{ url: SET_URL_DIRECTION, data: requestParam },
|
||||
'direction',
|
||||
),
|
||||
)
|
||||
}
|
||||
Utils.locationProcess(options, locationsuccess)
|
||||
}
|
||||
}
|
||||
export default QQMapWX
|
@ -1,122 +1,135 @@
|
||||
{
|
||||
"name": "",
|
||||
"appid": "__UNI__265C604",
|
||||
"description": "",
|
||||
"versionName": "1.0.0",
|
||||
"versionCode": "100",
|
||||
"transformPx": false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus": {
|
||||
// 忽略版本检查提示框
|
||||
"compatible": {
|
||||
"ignoreVersion": true
|
||||
"name" : "",
|
||||
"appid" : "__UNI__265C604",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
// 忽略版本检查提示框
|
||||
"compatible" : {
|
||||
"ignoreVersion" : true
|
||||
},
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {
|
||||
"dSYMs" : false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {
|
||||
"ad" : {}
|
||||
},
|
||||
"icons" : {
|
||||
"android" : {
|
||||
"hdpi" : "unpackage/res/icons/72x72.png",
|
||||
"xhdpi" : "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi" : "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi" : "unpackage/res/icons/192x192.png"
|
||||
},
|
||||
"ios" : {
|
||||
"appstore" : "unpackage/res/icons/1024x1024.png",
|
||||
"ipad" : {
|
||||
"app" : "unpackage/res/icons/76x76.png",
|
||||
"app@2x" : "unpackage/res/icons/152x152.png",
|
||||
"notification" : "unpackage/res/icons/20x20.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x" : "unpackage/res/icons/167x167.png",
|
||||
"settings" : "unpackage/res/icons/29x29.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"spotlight" : "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone" : {
|
||||
"app@2x" : "unpackage/res/icons/120x120.png",
|
||||
"app@3x" : "unpackage/res/icons/180x180.png",
|
||||
"notification@2x" : "unpackage/res/icons/40x40.png",
|
||||
"notification@3x" : "unpackage/res/icons/60x60.png",
|
||||
"settings@2x" : "unpackage/res/icons/58x58.png",
|
||||
"settings@3x" : "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x" : "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x" : "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"usingComponents": true,
|
||||
"nvueStyleCompiler": "uni-app",
|
||||
"compilerVersion": 3,
|
||||
"splashscreen": {
|
||||
"alwaysShowBeforeRender": true,
|
||||
"waiting": true,
|
||||
"autoclose": true,
|
||||
"delay": 0
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 网页端特有配置 */
|
||||
"h5" : {
|
||||
"router" : {
|
||||
// 路由基础路径。默认为 /
|
||||
"base" : "./"
|
||||
}
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules": {},
|
||||
/* 应用发布信息 */
|
||||
"distribute": {
|
||||
/* android打包配置 */
|
||||
"android": {
|
||||
"permissions": [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios": {
|
||||
"dSYMs": false
|
||||
},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs": {
|
||||
"ad": {}
|
||||
},
|
||||
"icons": {
|
||||
"android": {
|
||||
"hdpi": "unpackage/res/icons/72x72.png",
|
||||
"xhdpi": "unpackage/res/icons/96x96.png",
|
||||
"xxhdpi": "unpackage/res/icons/144x144.png",
|
||||
"xxxhdpi": "unpackage/res/icons/192x192.png"
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "wxf82bcc798891a29d",
|
||||
"setting" : {
|
||||
"minified" : true,
|
||||
"urlCheck" : false,
|
||||
"es6" : true,
|
||||
"postcss" : true
|
||||
},
|
||||
// 启用组件按需注入
|
||||
"lazyCodeLoading" : "requiredComponents",
|
||||
"usingComponents" : true,
|
||||
"permission" : {
|
||||
"scope.userLocation" : {
|
||||
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
|
||||
}
|
||||
},
|
||||
"ios": {
|
||||
"appstore": "unpackage/res/icons/1024x1024.png",
|
||||
"ipad": {
|
||||
"app": "unpackage/res/icons/76x76.png",
|
||||
"app@2x": "unpackage/res/icons/152x152.png",
|
||||
"notification": "unpackage/res/icons/20x20.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"proapp@2x": "unpackage/res/icons/167x167.png",
|
||||
"settings": "unpackage/res/icons/29x29.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"spotlight": "unpackage/res/icons/40x40.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png"
|
||||
},
|
||||
"iphone": {
|
||||
"app@2x": "unpackage/res/icons/120x120.png",
|
||||
"app@3x": "unpackage/res/icons/180x180.png",
|
||||
"notification@2x": "unpackage/res/icons/40x40.png",
|
||||
"notification@3x": "unpackage/res/icons/60x60.png",
|
||||
"settings@2x": "unpackage/res/icons/58x58.png",
|
||||
"settings@3x": "unpackage/res/icons/87x87.png",
|
||||
"spotlight@2x": "unpackage/res/icons/80x80.png",
|
||||
"spotlight@3x": "unpackage/res/icons/120x120.png"
|
||||
}
|
||||
"requiredPrivateInfos": [
|
||||
"getLocation"
|
||||
],
|
||||
"uniStatistics" : {
|
||||
"enable" : true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp": {},
|
||||
/* 网页端特有配置 */
|
||||
"h5": {
|
||||
"router": {
|
||||
// 路由基础路径。默认为 /
|
||||
"base": "./"
|
||||
}
|
||||
},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin": {
|
||||
"appid": "wx26729f20b9efae3a",
|
||||
"setting": {
|
||||
"minified": true,
|
||||
"urlCheck": true
|
||||
},
|
||||
// 启用组件按需注入
|
||||
"lazyCodeLoading": "requiredComponents",
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-alipay": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-baidu": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"mp-toutiao": {
|
||||
"usingComponents": true
|
||||
},
|
||||
"uniStatistics": {
|
||||
"enable": false
|
||||
},
|
||||
"vueVersion": "3"
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "3"
|
||||
}
|
||||
|
@ -1,13 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import CartMain from './components/CartMain.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<CartMain />
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
@ -1,14 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import CartMain from './components/CartMain.vue'
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- 适配底部安全区 -->
|
||||
<CartMain safe-area-inset-bottom />
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
@ -1,36 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import type { CategoryItem } from '@/types/home'
|
||||
|
||||
// 定义 props 接收数据
|
||||
defineProps<{
|
||||
list: CategoryItem[]
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<view class="category">
|
||||
<view class="module-title"> 预约上门回收 </view>
|
||||
|
||||
<view class="cont">
|
||||
<navigator
|
||||
class="category-item"
|
||||
hover-class="none"
|
||||
url="/pages/index/index"
|
||||
v-for="item in list"
|
||||
:key="item.id"
|
||||
>
|
||||
<view class="left">
|
||||
<view class="title">{{ item.name }}</view>
|
||||
<view class="desc">{{ item.desc }}</view>
|
||||
</view>
|
||||
<view class="right">
|
||||
<image class="icon" :src="item.icon"></image>
|
||||
</view>
|
||||
</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '../styles/category.scss';
|
||||
</style>
|
@ -1,63 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
type item = { desc: string; name: string; id: Number }
|
||||
|
||||
const dataList: item[] = [
|
||||
{
|
||||
id: 1,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
{
|
||||
id: 122,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
]
|
||||
const handleMore = () => {}
|
||||
const actionsClick = (type) => {}
|
||||
</script>
|
||||
<template>
|
||||
<view class="class">
|
||||
<view class="hd">
|
||||
<view class="module-title">知识大课堂</view>
|
||||
<view class="module-more" @tab="handleMore">更多 > </view>
|
||||
</view>
|
||||
<view class="module-cont">
|
||||
<view class="section" v-for="item in dataList" :key="item.id">
|
||||
<image
|
||||
class="left"
|
||||
src="https://yanxuan-item.nosdn.127.net/ef56a7139fffe2650a7cd74deafd08da.png"
|
||||
></image>
|
||||
<view class="right">
|
||||
<view class="desc">{{ item.desc }}</view>
|
||||
<view class="footer">
|
||||
<view class="num">4.2w人浏览</view>
|
||||
<view class="action">
|
||||
<view class="item">
|
||||
<uni-icons type="redo" size="18" color="#999"></uni-icons>
|
||||
<text class="text">分享</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<uni-icons type="hand-up-filled" size="18" color="#999"></uni-icons>
|
||||
<text class="text">点赞</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<uni-icons type="chat" size="18" color="#999"></uni-icons>
|
||||
<text class="text">评论</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '../styles/class.scss';
|
||||
</style>
|
@ -1,59 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
type item = { desc: string; name: string; id: Number }
|
||||
|
||||
const dataList: item[] = [
|
||||
{
|
||||
id: 1,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
{
|
||||
id: 122,
|
||||
name: '',
|
||||
desc: '公司风采一标题占用两行',
|
||||
},
|
||||
]
|
||||
const handleMore = () => {}
|
||||
const actionsClick = (type) => {}
|
||||
</script>
|
||||
<template>
|
||||
<view class="community">
|
||||
<view class="hd">
|
||||
<view class="module-title">精彩社区</view>
|
||||
<view class="module-more" @tab="handleMore">更多 > </view>
|
||||
</view>
|
||||
<view class="module-cont">
|
||||
<view class="section" v-for="item in dataList" :key="item.id">
|
||||
<image
|
||||
class="img"
|
||||
src="https://yanxuan-item.nosdn.127.net/ef56a7139fffe2650a7cd74deafd08da.png"
|
||||
></image>
|
||||
|
||||
<view class="desc">{{ item.desc }}</view>
|
||||
<view class="action">
|
||||
<view class="item">
|
||||
<uni-icons type="redo" size="18" color="#999"></uni-icons>
|
||||
<text class="text">分享</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<uni-icons type="hand-up-filled" size="18" color="#999"></uni-icons>
|
||||
<text class="text">点赞</text>
|
||||
</view>
|
||||
<view class="item">
|
||||
<uni-icons type="chat" size="18" color="#999"></uni-icons>
|
||||
<text class="text">评论</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '../styles/community.scss';
|
||||
</style>
|
@ -1,71 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
// 获取屏幕边界到安全区域距离
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<view class="navbar" :style="{ paddingTop: safeAreaInsets!.top + 10 + 'px' }">
|
||||
<!-- logo文字 -->
|
||||
<view class="logo">
|
||||
<image class="logo-image" src="@/static/images/logo.png"></image>
|
||||
<!-- <text class="logo-text">新鲜 · 亲民 · 快捷</text> -->
|
||||
</view>
|
||||
<!-- 搜索条 -->
|
||||
<view class="search">
|
||||
<text class="icon-search">搜索商品</text>
|
||||
<text class="icon-scan"></text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* 自定义导航条 */
|
||||
.navbar {
|
||||
background-image: url(@/static/images/navigator_bg.png);
|
||||
background-size: cover;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 20px;
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 64rpx;
|
||||
padding-left: 30rpx;
|
||||
.logo-image {
|
||||
width: 166rpx;
|
||||
height: 39rpx;
|
||||
}
|
||||
.logo-text {
|
||||
flex: 1;
|
||||
line-height: 28rpx;
|
||||
color: #fff;
|
||||
margin: 2rpx 0 0 20rpx;
|
||||
padding-left: 20rpx;
|
||||
border-left: 1rpx solid #fff;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
}
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 10rpx 0 26rpx;
|
||||
height: 64rpx;
|
||||
margin: 16rpx 20rpx;
|
||||
color: #fff;
|
||||
font-size: 28rpx;
|
||||
border-radius: 32rpx;
|
||||
background-color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
.icon-search {
|
||||
&::before {
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.icon-scan {
|
||||
font-size: 30rpx;
|
||||
padding: 15rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,33 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import type { HotItem } from '@/types/home'
|
||||
|
||||
// 定义 props 接收数据
|
||||
defineProps<{
|
||||
list: HotItem[]
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- 推荐专区 -->
|
||||
<view class="panel hot">
|
||||
<view class="item" v-for="item in list" :key="item.id">
|
||||
<view class="title">
|
||||
<text class="title-text">{{ item.title }}</text>
|
||||
<text class="title-desc">{{ item.alt }}</text>
|
||||
</view>
|
||||
<navigator hover-class="none" :url="`/pages/hot/hot?type=${item.type}`" class="cards">
|
||||
<image
|
||||
v-for="src in item.pictures"
|
||||
:key="src"
|
||||
class="image"
|
||||
mode="aspectFit"
|
||||
:src="src"
|
||||
></image>
|
||||
</navigator>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
@import '../styles/hot.scss';
|
||||
</style>
|
@ -1,17 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
const handlePhone = () => {
|
||||
uni.makePhoneCall({
|
||||
phoneNumber: '400-123-000', //仅为示例
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<view class="phone-contact">
|
||||
<view class="module-title">电话预约回收</view>
|
||||
<view class="module-action" @tap="handlePhone">400-123-000</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '../styles/phoneContact.scss';
|
||||
</style>
|
@ -1,49 +0,0 @@
|
||||
/* 前台类目 */
|
||||
|
||||
.category {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
.module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
.cont {
|
||||
// margin: 20rpx 0 0;
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
min-height: 328rpx;
|
||||
.category-item {
|
||||
width: 46%;
|
||||
border-radius: 16rpx;
|
||||
margin: 8rpx;
|
||||
padding: 16rpx 0;
|
||||
display: flex;
|
||||
justify-content: center; // flex-direction: row;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
background: #FCF4FB;
|
||||
.left {
|
||||
.title {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
.desc {
|
||||
font-size: 24rpx;
|
||||
color: #7BAFBD;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
.icon {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
@charset "UTF-8";
|
||||
/* 前台类目 */
|
||||
.category {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.category .module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
|
||||
.category .cont {
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
min-height: 328rpx;
|
||||
}
|
||||
|
||||
.category .cont .category-item {
|
||||
width: 46%;
|
||||
border-radius: 16rpx;
|
||||
margin: 8rpx;
|
||||
padding: 16rpx 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
background: #FCF4FB;
|
||||
}
|
||||
|
||||
.category .cont .category-item .left .title {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.category .cont .category-item .left .desc {
|
||||
font-size: 24rpx;
|
||||
color: #7BAFBD;
|
||||
}
|
||||
|
||||
.category .cont .category-item .right .icon {
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
}
|
@ -1,71 +0,0 @@
|
||||
/* 前台类目 */
|
||||
|
||||
.class {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
border-radius: 4rpx;
|
||||
.hd {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.module-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
.module-more {
|
||||
color: #95969D;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
.module-cont {
|
||||
// margin: 20rpx 0 0;
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
flex-wrap: wrap;
|
||||
min-height: 328rpx;
|
||||
.section {
|
||||
width: 100%;
|
||||
border-radius: 16rpx;
|
||||
margin: 8rpx;
|
||||
padding: 16rpx 0;
|
||||
display: flex;
|
||||
justify-content: center; // flex-direction: row;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
.left {
|
||||
width: 240rpx;
|
||||
height: 216rpx;
|
||||
}
|
||||
.right {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
.desc {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.footer {
|
||||
margin: 80rpx 0 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
.num {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.action {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 10rpx;
|
||||
font-size: 24rpx;
|
||||
.item {
|
||||
margin: 0 4rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
@charset "UTF-8";
|
||||
/* 前台类目 */
|
||||
.class {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.class .hd {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.class .hd .module-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.class .hd .module-more {
|
||||
color: #95969D;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.class .module-cont {
|
||||
padding: 10rpx 0;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
flex-wrap: wrap;
|
||||
min-height: 328rpx;
|
||||
}
|
||||
|
||||
.class .module-cont .section {
|
||||
width: 100%;
|
||||
border-radius: 16rpx;
|
||||
margin: 8rpx;
|
||||
padding: 16rpx 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.class .module-cont .section .left {
|
||||
width: 240rpx;
|
||||
height: 216rpx;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right {
|
||||
flex: 1;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right .desc {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right .footer {
|
||||
margin: 80rpx 0 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right .footer .num {
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right .footer .action {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
margin-left: 10rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.class .module-cont .section .right .footer .action .item {
|
||||
margin: 0 4rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
@ -1,48 +0,0 @@
|
||||
.community {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
border-radius: 4rpx;
|
||||
.hd {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
.module-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
.module-more {
|
||||
color: #95969D;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
.module-cont {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
.section {
|
||||
width: 47%;
|
||||
height: auto;
|
||||
margin: 10rpx 10rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 4rpx 10rpx;
|
||||
background-color: #fff;
|
||||
.img {
|
||||
height: 200rpx;
|
||||
}
|
||||
.desc {
|
||||
color: #0D0D26;
|
||||
}
|
||||
.action {
|
||||
margin: 20rpx 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
.item {
|
||||
flex: 1;
|
||||
color: #95969D;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
.community {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.community .hd {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.community .hd .module-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
}
|
||||
|
||||
.community .hd .module-more {
|
||||
color: #95969D;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.community .module-cont {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.community .module-cont .section {
|
||||
width: 47%;
|
||||
height: auto;
|
||||
margin: 10rpx 10rpx;
|
||||
border-radius: 10rpx;
|
||||
padding: 4rpx 10rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.community .module-cont .section .img {
|
||||
height: 200rpx;
|
||||
}
|
||||
|
||||
.community .module-cont .section .desc {
|
||||
color: #0D0D26;
|
||||
}
|
||||
|
||||
.community .module-cont .section .action {
|
||||
margin: 20rpx 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.community .module-cont .section .action .item {
|
||||
flex: 1;
|
||||
color: #95969D;
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
/* 热门推荐 */
|
||||
|
||||
.hot {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
min-height: 508rpx;
|
||||
margin: 20rpx 20rpx 0;
|
||||
border-radius: 10rpx;
|
||||
background-color: #fff;
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 24rpx 24rpx 0;
|
||||
font-size: 32rpx;
|
||||
color: #262626;
|
||||
position: relative;
|
||||
.title-desc {
|
||||
font-size: 24rpx;
|
||||
color: #7f7f7f;
|
||||
margin-left: 18rpx;
|
||||
}
|
||||
}
|
||||
.item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 50%;
|
||||
height: 254rpx;
|
||||
border-right: 1rpx solid #eee;
|
||||
border-top: 1rpx solid #eee;
|
||||
.title {
|
||||
justify-content: start;
|
||||
}
|
||||
&:nth-child(2n) {
|
||||
border-right: 0 none;
|
||||
}
|
||||
&:nth-child(-n + 2) {
|
||||
border-top: 0 none;
|
||||
}
|
||||
.image {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
}
|
||||
}
|
||||
.cards {
|
||||
flex: 1;
|
||||
padding: 15rpx 20rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
@charset "UTF-8";
|
||||
/* 热门推荐 */
|
||||
.hot {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
min-height: 508rpx;
|
||||
margin: 20rpx 20rpx 0;
|
||||
border-radius: 10rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.hot .title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 24rpx 24rpx 0;
|
||||
font-size: 32rpx;
|
||||
color: #262626;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.hot .title .title-desc {
|
||||
font-size: 24rpx;
|
||||
color: #7f7f7f;
|
||||
margin-left: 18rpx;
|
||||
}
|
||||
|
||||
.hot .item {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 50%;
|
||||
height: 254rpx;
|
||||
border-right: 1rpx solid #eee;
|
||||
border-top: 1rpx solid #eee;
|
||||
}
|
||||
|
||||
.hot .item .title {
|
||||
justify-content: start;
|
||||
}
|
||||
|
||||
.hot .item:nth-child(2n) {
|
||||
border-right: 0 none;
|
||||
}
|
||||
|
||||
.hot .item:nth-child(-n + 2) {
|
||||
border-top: 0 none;
|
||||
}
|
||||
|
||||
.hot .item .image {
|
||||
width: 150rpx;
|
||||
height: 150rpx;
|
||||
}
|
||||
|
||||
.hot .cards {
|
||||
flex: 1;
|
||||
padding: 15rpx 20rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
@ -1,82 +0,0 @@
|
||||
.neighborhood-site {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
.module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
.module-cont {
|
||||
padding: 20rpx 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
.left {
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
.md {
|
||||
flex: 1;
|
||||
margin: 0 10rpx;
|
||||
font-size: 24rpx;
|
||||
color: #0D0D26;
|
||||
.name {
|
||||
font-size: 30rpx;
|
||||
.zuijin {
|
||||
font-size: 24rpx;
|
||||
color: #FF7D00;
|
||||
background: #FFF7E8;
|
||||
padding: 4rpx 4rpx;
|
||||
margin-right: 6rpx;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
}
|
||||
.time {
|
||||
color: #95969D;
|
||||
margin: 8rpx 0;
|
||||
}
|
||||
.loction {
|
||||
color: #0D0D26;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
.num {
|
||||
font-size: 28rpx;
|
||||
color: #95969D
|
||||
}
|
||||
.img {
|
||||
width: 72rpx;
|
||||
height: 72rpx;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.md-tag {
|
||||
background: #E8FFFB;
|
||||
color: #0FC6C2;
|
||||
margin: 10rpx 0;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
padding: 6rpx 0rpx;
|
||||
.tag-before {
|
||||
background: #0FC6C2;
|
||||
color: #fff;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
padding: 4rpx 8rpx;
|
||||
border-radius: 4rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
}
|
||||
.foot-desc {
|
||||
.item {
|
||||
font-size: 24rpx;
|
||||
color: #95969D;
|
||||
margin: 10rpx 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
.neighborhood-site {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont {
|
||||
padding: 20rpx 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .left {
|
||||
width: 140rpx;
|
||||
height: 140rpx;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .md {
|
||||
flex: 1;
|
||||
margin: 0 10rpx;
|
||||
font-size: 24rpx;
|
||||
color: #0D0D26;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .md .name {
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .md .name .zuijin {
|
||||
font-size: 24rpx;
|
||||
color: #FF7D00;
|
||||
background: #FFF7E8;
|
||||
padding: 4rpx 4rpx;
|
||||
margin-right: 6rpx;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .md .time {
|
||||
color: #95969D;
|
||||
margin: 8rpx 0;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .md .loction {
|
||||
color: #0D0D26;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .right .num {
|
||||
font-size: 28rpx;
|
||||
color: #95969D;
|
||||
}
|
||||
|
||||
.neighborhood-site .module-cont .right .img {
|
||||
width: 72rpx;
|
||||
height: 72rpx;
|
||||
margin-top: 20rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .md-tag {
|
||||
background: #E8FFFB;
|
||||
color: #0FC6C2;
|
||||
margin: 10rpx 0;
|
||||
font-weight: 400;
|
||||
font-size: 24rpx;
|
||||
padding: 6rpx 0rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .md-tag .tag-before {
|
||||
background: #0FC6C2;
|
||||
color: #fff;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
padding: 4rpx 8rpx;
|
||||
border-radius: 4rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.neighborhood-site .foot-desc .item {
|
||||
font-size: 24rpx;
|
||||
color: #95969D;
|
||||
margin: 10rpx 0;
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
/* 热门推荐 */
|
||||
|
||||
.phone-contact {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
.module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
.module-action {
|
||||
width: 486rpx;
|
||||
margin: 40rpx auto 0;
|
||||
border-radius: 50px;
|
||||
background: #5386E4;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
font-size: 32rpx;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 20rpx 100rpx;
|
||||
}
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
@charset "UTF-8";
|
||||
/* 热门推荐 */
|
||||
.phone-contact {
|
||||
padding: 32rpx 20rpx;
|
||||
margin: 16rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
||||
.phone-contact .module-title {
|
||||
font-size: 30rpx;
|
||||
color: #0D0D26;
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: 2rpx solid #F2F2F2;
|
||||
}
|
||||
|
||||
.phone-contact .module-action {
|
||||
width: 486rpx;
|
||||
margin: 40rpx auto 0;
|
||||
border-radius: 50px;
|
||||
background: #5386E4;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
font-size: 32rpx;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 20rpx 100rpx;
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
import newsItem from './components/newsItem.vue'
|
||||
import noticeItem from './components/noticeItem.vue'
|
||||
// 获取屏幕边界到安全区域距离
|
||||
const { safeAreaInsets } = uni.getSystemInfoSync()
|
||||
|
||||
// tabs 数据
|
||||
const orderTabs = ref([
|
||||
{ orderState: 0, title: '通知', isRender: false },
|
||||
{ orderState: 1, title: '私信', isRender: false },
|
||||
])
|
||||
// 高亮下标
|
||||
const activeIndex = ref(orderTabs.value.findIndex((v) => v.orderState === Number(0)))
|
||||
|
||||
// 默认渲染容器
|
||||
orderTabs.value[activeIndex.value].isRender = true
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<!-- <CartMain /> -->
|
||||
<view class="viewport">
|
||||
<!-- 自定义导航栏: 默认透明不可见, scroll-view 滚动到 50 时展示 -->
|
||||
<view class="navbar" :style="{ paddingTop: safeAreaInsets?.top + 'px' }">
|
||||
<view class="wrap">
|
||||
<navigator open-type="navigateBack" class="back icon-left"></navigator>
|
||||
<view class="title"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tabs">
|
||||
<text
|
||||
class="item"
|
||||
:class="{ active: activeIndex == index }"
|
||||
v-for="(item, index) in orderTabs"
|
||||
:key="item.title"
|
||||
@tap="
|
||||
() => {
|
||||
activeIndex = index
|
||||
item.isRender = true
|
||||
}
|
||||
"
|
||||
>
|
||||
{{ item.title }}
|
||||
</text>
|
||||
<!-- 游标 -->
|
||||
<view class="cursor" :style="{ left: activeIndex ? '65%' : '14%' }"></view>
|
||||
</view>
|
||||
<!-- 滑动容器 -->
|
||||
<swiper class="swiper" :current="activeIndex" @change="activeIndex = $event.detail.current">
|
||||
<!-- 滑动项 -->
|
||||
<swiper-item v-for="item in orderTabs" :key="item.title">
|
||||
<newsItem v-if="activeIndex" />
|
||||
<noticeItem v-else />
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
}
|
||||
.viewport {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// background-color: #3775F6;
|
||||
.navbar {
|
||||
width: 750rpx;
|
||||
color: #000;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9;
|
||||
/* background-color: #f8f8f8; */
|
||||
background-color: #3775f6;
|
||||
.wrap {
|
||||
position: relative;
|
||||
background-color: #3775f6;
|
||||
.title {
|
||||
height: 44px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 32rpx;
|
||||
/* color: #000; */
|
||||
color: #fff;
|
||||
}
|
||||
.back {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: 44px;
|
||||
width: 44px;
|
||||
font-size: 44rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
/* color: #000; */
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
line-height: 60rpx;
|
||||
background-color: #3775f6;
|
||||
position: relative;
|
||||
z-index: 9;
|
||||
margin-top: 128rpx;
|
||||
width: 100%;
|
||||
|
||||
.item {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 20rpx;
|
||||
font-size: 28rpx;
|
||||
color: #fff;
|
||||
// &.active {
|
||||
// border-bottom: 2rpx solid #5386e4;
|
||||
// }
|
||||
}
|
||||
|
||||
.cursor {
|
||||
position: absolute;
|
||||
left: 13%;
|
||||
bottom: 0;
|
||||
width: 20%;
|
||||
height: 6rpx;
|
||||
padding: 0 50rpx;
|
||||
background-color: #fff;
|
||||
/* 过渡效果 */
|
||||
transition: all 0.4s;
|
||||
}
|
||||
}
|
||||
// swiper
|
||||
.swiper {
|
||||
background-color: #f7f7f8;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,121 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
|
||||
const handleSubmit = async () => {}
|
||||
</script>
|
||||
<template>
|
||||
<view class="viewport">
|
||||
<view class="section-auto">
|
||||
<view class="left">
|
||||
<view class="title">自动接单</view>
|
||||
<view class="desc">开启后将根据配置情况自动接单</view>
|
||||
</view>
|
||||
<view class="switch">
|
||||
<switch checked color="#3775F6" style="transform: scale(0.7)" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="section-time">
|
||||
<view class="start-time item">
|
||||
<view class="left">
|
||||
<view class="title">开始接单时间</view>
|
||||
<view class="val">2024-01-16 13:25:22</view>
|
||||
</view>
|
||||
<view class="edit">修改</view>
|
||||
</view>
|
||||
<view class="end-time item">
|
||||
<view class="left">
|
||||
<view class="title">结束接单时间</view>
|
||||
<view class="val">2024-01-16 13:25:22</view>
|
||||
</view>
|
||||
<view class="edit">修改</view>
|
||||
</view>
|
||||
<view class="auto-num item">
|
||||
<view class="left">
|
||||
<view class="title">自动接单范围</view>
|
||||
<view class="val">4km</view>
|
||||
</view>
|
||||
<view class="edit">修改</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="action" @click="handleSubmit"> 保存修改 </view>
|
||||
</view>
|
||||
</template>
|
||||
<style lang="scss">
|
||||
page {
|
||||
height: 100%;
|
||||
background-color: #fafafd;
|
||||
}
|
||||
.viewport {
|
||||
padding: 10rpx;
|
||||
|
||||
.section-auto {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 30rpx 0rpx;
|
||||
margin: 20rpx 0;
|
||||
border-radius: 16rpx;
|
||||
background: #ffffff;
|
||||
box-shadow: 0px 0px 8px 0px rgba(164, 182, 203, 0.33);
|
||||
|
||||
.left {
|
||||
margin-left: 30rpx;
|
||||
.title {
|
||||
color: #3d3d3d;
|
||||
font-size: 34rpx;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.desc {
|
||||
color: #999a9f;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.section-time {
|
||||
padding: 30rpx 30rpx;
|
||||
margin: 20rpx 0;
|
||||
background: #ffffff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0px 0px 8px 0px rgba(164, 182, 203, 0.33);
|
||||
.item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 20rpx 0;
|
||||
padding-bottom: 10rpx;
|
||||
border-bottom: 2rpx solid #f2f2f2;
|
||||
.left {
|
||||
.title {
|
||||
font-size: 34rpx;
|
||||
color: #3d3d3d;
|
||||
margin-bottom: 20rpx;
|
||||
}
|
||||
.val {
|
||||
color: #999a9f;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
}
|
||||
.edit {
|
||||
color: #3775f6;
|
||||
font-size: 40rpx;
|
||||
text-decoration: underline;
|
||||
}
|
||||
&:last-child {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.action {
|
||||
width: 344rpx;
|
||||
margin: 100rpx auto 0;
|
||||
border-radius: 100rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 30rpx 30rpx;
|
||||
color: #fff;
|
||||
font-size: 36rpx;
|
||||
background: linear-gradient(152deg, #51b6ff 16%, #3775f6 86%);
|
||||
}
|
||||
}
|
||||
</style>
|
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 1.4 KiB |
@ -1,44 +1,33 @@
|
||||
/*
|
||||
* @Author: 王文杰
|
||||
* @Date: 2024-01-04 12:54:56
|
||||
* @LastEditors: 王文杰
|
||||
* @LastEditTime: 2024-02-22 10:12:46
|
||||
* @FilePath: /app-nx-recycle/src/stores/modules/member.ts
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import type { LoginResult } from '@/types/member'
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
|
||||
// 定义 Store
|
||||
export const useMemberStore = defineStore(
|
||||
'member',
|
||||
() => {
|
||||
// 会员信息
|
||||
const profile = ref<LoginResult>()
|
||||
export const useMemberStore = defineStore('member', () => {
|
||||
// 会员信息
|
||||
const profile = ref<LoginResult>()
|
||||
|
||||
// 保存会员信息,登录时使用
|
||||
const setProfile = (val: LoginResult) => {
|
||||
profile.value = val
|
||||
}
|
||||
// 保存会员信息,登录时使用
|
||||
const setProfile = (val: LoginResult) => {
|
||||
profile.value = val
|
||||
}
|
||||
|
||||
// 清理会员信息,退出时使用
|
||||
const clearProfile = () => {
|
||||
profile.value = undefined
|
||||
}
|
||||
// 清理会员信息,退出时使用
|
||||
const clearProfile = () => {
|
||||
profile.value = undefined
|
||||
}
|
||||
|
||||
// 记得 return
|
||||
return {
|
||||
profile,
|
||||
setProfile,
|
||||
clearProfile,
|
||||
}
|
||||
},
|
||||
{
|
||||
// 网页端配置
|
||||
// persist: true,
|
||||
// 小程序端配置
|
||||
persist: {
|
||||
storage: {
|
||||
getItem(key) {
|
||||
return uni.getStorageSync(key)
|
||||
},
|
||||
setItem(key, value) {
|
||||
uni.setStorageSync(key, value)
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
)
|
||||
// 记得 return
|
||||
return {
|
||||
profile,
|
||||
setProfile,
|
||||
clearProfile,
|
||||
}
|
||||
})
|
||||
|