This commit is contained in:
lanzhihui 2026-03-30 10:23:03 +08:00
commit db39464670
208 changed files with 42436 additions and 0 deletions

5
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/

View File

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EslintConfiguration">
<option name="fix-on-save" value="true" />
</component>
</project>

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MaterialThemeProjectNewConfig">
<option name="metadata">
<MTProjectMetadataState>
<option name="migrated" value="true" />
<option name="pristineConfig" value="false" />
<option name="userId" value="-15b39f1f:197abca9a0e:-8000" />
<option name="version" value="8.12.6" />
</MTProjectMetadataState>
</option>
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/vuepress-starter.iml" filepath="$PROJECT_DIR$/.idea/vuepress-starter.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,138 @@
import "./chunk-PZ5AY32C.js";
// node_modules/@vuepress/shared/dist/index.js
var isLinkWithProtocol = (link) => /^[a-z][a-z0-9+.-]*:/.test(link) || link.startsWith("//");
var markdownLinkRegexp = /.md((\?|#).*)?$/;
var isLinkExternal = (link, base = "/") => isLinkWithProtocol(link) || // absolute link that does not start with `base` and does not end with `.md`
link.startsWith("/") && !link.startsWith(base) && !markdownLinkRegexp.test(link);
var isLinkHttp = (link) => /^(https?:)?\/\//.test(link);
var inferRoutePath = (rawPath) => {
if (!rawPath || rawPath.endsWith("/")) return rawPath;
let routePath = rawPath.replace(/(^|\/)README.md$/i, "$1index.html");
if (routePath.endsWith(".md")) {
routePath = `${routePath.substring(0, routePath.length - 3)}.html`;
} else if (!routePath.endsWith(".html")) {
routePath = `${routePath}.html`;
}
if (routePath.endsWith("/index.html")) {
routePath = routePath.substring(0, routePath.length - 10);
}
return routePath;
};
var FAKE_HOST = "http://.";
var normalizeRoutePath = (pathname, current) => {
if (!pathname.startsWith("/") && current) {
const loc = current.slice(0, current.lastIndexOf("/"));
return inferRoutePath(new URL(`${loc}/${pathname}`, FAKE_HOST).pathname);
}
return inferRoutePath(pathname);
};
var resolveLocalePath = (locales, routePath) => {
const localePaths = Object.keys(locales).sort((a, b) => {
const levelDelta = b.split("/").length - a.split("/").length;
if (levelDelta !== 0) {
return levelDelta;
}
return b.length - a.length;
});
for (const localePath of localePaths) {
if (routePath.startsWith(localePath)) {
return localePath;
}
}
return "/";
};
var resolveRoutePathFromUrl = (url, base = "/") => {
const pathname = url.replace(/^(?:https?:)?\/\/[^/]*/, "");
return pathname.startsWith(base) ? `/${pathname.slice(base.length)}` : pathname;
};
var SPLIT_CHAR_REGEXP = /(#|\?)/;
var splitPath = (path) => {
const [pathname, ...hashAndQueries] = path.split(SPLIT_CHAR_REGEXP);
return {
pathname,
hashAndQueries: hashAndQueries.join("")
};
};
var TAGS_ALLOWED = ["link", "meta", "script", "style", "noscript", "template"];
var TAGS_UNIQUE = ["title", "base"];
var resolveHeadIdentifier = ([tag, attrs, content]) => {
if (TAGS_UNIQUE.includes(tag)) {
return tag;
}
if (!TAGS_ALLOWED.includes(tag)) {
return null;
}
if (tag === "meta" && attrs.name) {
return `${tag}.${attrs.name}`;
}
if (tag === "template" && attrs.id) {
return `${tag}.${attrs.id}`;
}
return JSON.stringify([
tag,
Object.entries(attrs).map(([key, value]) => {
if (typeof value === "boolean") {
return value ? [key, ""] : null;
}
return [key, value];
}).filter((item) => item != null).sort(([keyA], [keyB]) => keyA.localeCompare(keyB)),
content
]);
};
var dedupeHead = (head) => {
const identifierSet = /* @__PURE__ */ new Set();
const result = [];
head.forEach((item) => {
const identifier = resolveHeadIdentifier(item);
if (identifier && !identifierSet.has(identifier)) {
identifierSet.add(identifier);
result.push(item);
}
});
return result;
};
var ensureLeadingSlash = (str) => str.startsWith("/") ? str : `/${str}`;
var ensureEndingSlash = (str) => str.endsWith("/") || str.endsWith(".html") ? str : `${str}/`;
var formatDateString = (str, defaultDateString = "") => {
const dateMatch = str.match(/\b(\d{4})-(\d{1,2})-(\d{1,2})\b/);
if (dateMatch === null) {
return defaultDateString;
}
const [, yearStr, monthStr, dayStr] = dateMatch;
return [yearStr, monthStr.padStart(2, "0"), dayStr.padStart(2, "0")].join("-");
};
var omit = (obj, ...keys) => {
const result = { ...obj };
for (const key of keys) {
delete result[key];
}
return result;
};
var removeEndingSlash = (str) => str.endsWith("/") ? str.slice(0, -1) : str;
var removeLeadingSlash = (str) => str.startsWith("/") ? str.slice(1) : str;
var isFunction = (val) => typeof val === "function";
var isPlainObject = (val) => Object.prototype.toString.call(val) === "[object Object]";
var isString = (val) => typeof val === "string";
export {
dedupeHead,
ensureEndingSlash,
ensureLeadingSlash,
formatDateString,
inferRoutePath,
isFunction,
isLinkExternal,
isLinkHttp,
isLinkWithProtocol,
isPlainObject,
isString,
normalizeRoutePath,
omit,
removeEndingSlash,
removeLeadingSlash,
resolveHeadIdentifier,
resolveLocalePath,
resolveRoutePathFromUrl,
splitPath
};
//# sourceMappingURL=@vuepress_shared.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,61 @@
{
"hash": "dbfb4ebf",
"configHash": "f19bc6d0",
"lockfileHash": "3f2b08de",
"browserHash": "913e5fce",
"optimized": {
"@vue/devtools-api": {
"src": "../../../../node_modules/@vuepress/client/node_modules/@vue/devtools-api/dist/index.js",
"file": "@vue_devtools-api.js",
"fileHash": "edf09bec",
"needsInterop": false
},
"@vuepress/shared": {
"src": "../../../../node_modules/@vuepress/shared/dist/index.js",
"file": "@vuepress_shared.js",
"fileHash": "699ebd3d",
"needsInterop": false
},
"vue": {
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "c41e6cb4",
"needsInterop": false
},
"vue-router": {
"src": "../../../../node_modules/vue-router/dist/vue-router.mjs",
"file": "vue-router.js",
"fileHash": "a66ef908",
"needsInterop": false
},
"pinia": {
"src": "../../../../node_modules/pinia/dist/pinia.mjs",
"file": "pinia.js",
"fileHash": "ac20dbc2",
"needsInterop": false
},
"axios": {
"src": "../../../../node_modules/axios/index.js",
"file": "axios.js",
"fileHash": "589b1bb8",
"needsInterop": false
},
"medium-zoom": {
"src": "../../../../node_modules/medium-zoom/dist/medium-zoom.esm.js",
"file": "medium-zoom.js",
"fileHash": "cee69026",
"needsInterop": false
}
},
"chunks": {
"chunk-IIQZHHRC": {
"file": "chunk-IIQZHHRC.js"
},
"chunk-S2UQT6C7": {
"file": "chunk-S2UQT6C7.js"
},
"chunk-PZ5AY32C": {
"file": "chunk-PZ5AY32C.js"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,213 @@
// node_modules/hookable/dist/index.mjs
function flatHooks(configHooks, hooks = {}, parentName) {
for (const key in configHooks) {
const subHook = configHooks[key];
const name = parentName ? `${parentName}:${key}` : key;
if (typeof subHook === "object" && subHook !== null) {
flatHooks(subHook, hooks, name);
} else if (typeof subHook === "function") {
hooks[name] = subHook;
}
}
return hooks;
}
var defaultTask = { run: (function_) => function_() };
var _createTask = () => defaultTask;
var createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask;
function serialTaskCaller(hooks, args) {
const name = args.shift();
const task = createTask(name);
return hooks.reduce(
(promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))),
Promise.resolve()
);
}
function parallelTaskCaller(hooks, args) {
const name = args.shift();
const task = createTask(name);
return Promise.all(hooks.map((hook) => task.run(() => hook(...args))));
}
function callEachWith(callbacks, arg0) {
for (const callback of [...callbacks]) {
callback(arg0);
}
}
var Hookable = class {
constructor() {
this._hooks = {};
this._before = void 0;
this._after = void 0;
this._deprecatedMessages = void 0;
this._deprecatedHooks = {};
this.hook = this.hook.bind(this);
this.callHook = this.callHook.bind(this);
this.callHookWith = this.callHookWith.bind(this);
}
hook(name, function_, options = {}) {
if (!name || typeof function_ !== "function") {
return () => {
};
}
const originalName = name;
let dep;
while (this._deprecatedHooks[name]) {
dep = this._deprecatedHooks[name];
name = dep.to;
}
if (dep && !options.allowDeprecated) {
let message = dep.message;
if (!message) {
message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : "");
}
if (!this._deprecatedMessages) {
this._deprecatedMessages = /* @__PURE__ */ new Set();
}
if (!this._deprecatedMessages.has(message)) {
console.warn(message);
this._deprecatedMessages.add(message);
}
}
if (!function_.name) {
try {
Object.defineProperty(function_, "name", {
get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb",
configurable: true
});
} catch {
}
}
this._hooks[name] = this._hooks[name] || [];
this._hooks[name].push(function_);
return () => {
if (function_) {
this.removeHook(name, function_);
function_ = void 0;
}
};
}
hookOnce(name, function_) {
let _unreg;
let _function = (...arguments_) => {
if (typeof _unreg === "function") {
_unreg();
}
_unreg = void 0;
_function = void 0;
return function_(...arguments_);
};
_unreg = this.hook(name, _function);
return _unreg;
}
removeHook(name, function_) {
if (this._hooks[name]) {
const index = this._hooks[name].indexOf(function_);
if (index !== -1) {
this._hooks[name].splice(index, 1);
}
if (this._hooks[name].length === 0) {
delete this._hooks[name];
}
}
}
deprecateHook(name, deprecated) {
this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated;
const _hooks = this._hooks[name] || [];
delete this._hooks[name];
for (const hook of _hooks) {
this.hook(name, hook);
}
}
deprecateHooks(deprecatedHooks) {
Object.assign(this._deprecatedHooks, deprecatedHooks);
for (const name in deprecatedHooks) {
this.deprecateHook(name, deprecatedHooks[name]);
}
}
addHooks(configHooks) {
const hooks = flatHooks(configHooks);
const removeFns = Object.keys(hooks).map(
(key) => this.hook(key, hooks[key])
);
return () => {
for (const unreg of removeFns.splice(0, removeFns.length)) {
unreg();
}
};
}
removeHooks(configHooks) {
const hooks = flatHooks(configHooks);
for (const key in hooks) {
this.removeHook(key, hooks[key]);
}
}
removeAllHooks() {
for (const key in this._hooks) {
delete this._hooks[key];
}
}
callHook(name, ...arguments_) {
arguments_.unshift(name);
return this.callHookWith(serialTaskCaller, name, ...arguments_);
}
callHookParallel(name, ...arguments_) {
arguments_.unshift(name);
return this.callHookWith(parallelTaskCaller, name, ...arguments_);
}
callHookWith(caller, name, ...arguments_) {
const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0;
if (this._before) {
callEachWith(this._before, event);
}
const result = caller(
name in this._hooks ? [...this._hooks[name]] : [],
arguments_
);
if (result instanceof Promise) {
return result.finally(() => {
if (this._after && event) {
callEachWith(this._after, event);
}
});
}
if (this._after && event) {
callEachWith(this._after, event);
}
return result;
}
beforeEach(function_) {
this._before = this._before || [];
this._before.push(function_);
return () => {
if (this._before !== void 0) {
const index = this._before.indexOf(function_);
if (index !== -1) {
this._before.splice(index, 1);
}
}
};
}
afterEach(function_) {
this._after = this._after || [];
this._after.push(function_);
return () => {
if (this._after !== void 0) {
const index = this._after.indexOf(function_);
if (index !== -1) {
this._after.splice(index, 1);
}
}
};
}
};
function createHooks() {
return new Hookable();
}
// node_modules/birpc/dist/index.mjs
var { clearTimeout, setTimeout } = globalThis;
var random = Math.random.bind(Math);
export {
createHooks
};
//# sourceMappingURL=chunk-IIQZHHRC.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
var __defProp = Object.defineProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
export {
__export
};

View File

@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,471 @@
import "./chunk-PZ5AY32C.js";
// node_modules/medium-zoom/dist/medium-zoom.esm.js
var _extends = Object.assign || function(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i];
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
return target;
};
var isSupported = function isSupported2(node) {
return node.tagName === "IMG";
};
var isNodeList = function isNodeList2(selector) {
return NodeList.prototype.isPrototypeOf(selector);
};
var isNode = function isNode2(selector) {
return selector && selector.nodeType === 1;
};
var isSvg = function isSvg2(image) {
var source = image.currentSrc || image.src;
return source.substr(-4).toLowerCase() === ".svg";
};
var getImagesFromSelector = function getImagesFromSelector2(selector) {
try {
if (Array.isArray(selector)) {
return selector.filter(isSupported);
}
if (isNodeList(selector)) {
return [].slice.call(selector).filter(isSupported);
}
if (isNode(selector)) {
return [selector].filter(isSupported);
}
if (typeof selector === "string") {
return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);
}
return [];
} catch (err) {
throw new TypeError("The provided selector is invalid.\nExpects a CSS selector, a Node element, a NodeList or an array.\nSee: https://github.com/francoischalifour/medium-zoom");
}
};
var createOverlay = function createOverlay2(background) {
var overlay = document.createElement("div");
overlay.classList.add("medium-zoom-overlay");
overlay.style.background = background;
return overlay;
};
var cloneTarget = function cloneTarget2(template) {
var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top, left = _template$getBounding.left, width = _template$getBounding.width, height = _template$getBounding.height;
var clone = template.cloneNode();
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
clone.removeAttribute("id");
clone.style.position = "absolute";
clone.style.top = top + scrollTop + "px";
clone.style.left = left + scrollLeft + "px";
clone.style.width = width + "px";
clone.style.height = height + "px";
clone.style.transform = "";
return clone;
};
var createCustomEvent = function createCustomEvent2(type, params) {
var eventParams = _extends({
bubbles: false,
cancelable: false,
detail: void 0
}, params);
if (typeof window.CustomEvent === "function") {
return new CustomEvent(type, eventParams);
}
var customEvent = document.createEvent("CustomEvent");
customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);
return customEvent;
};
var mediumZoom = function mediumZoom2(selector) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
var Promise2 = window.Promise || function Promise3(fn) {
function noop() {
}
fn(noop, noop);
};
var _handleClick = function _handleClick2(event) {
var target = event.target;
if (target === overlay) {
close();
return;
}
if (images.indexOf(target) === -1) {
return;
}
toggle({ target });
};
var _handleScroll = function _handleScroll2() {
if (isAnimating || !active.original) {
return;
}
var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {
setTimeout(close, 150);
}
};
var _handleKeyUp = function _handleKeyUp2(event) {
var key = event.key || event.keyCode;
if (key === "Escape" || key === "Esc" || key === 27) {
close();
}
};
var update = function update2() {
var options2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
var newOptions = options2;
if (options2.background) {
overlay.style.background = options2.background;
}
if (options2.container && options2.container instanceof Object) {
newOptions.container = _extends({}, zoomOptions.container, options2.container);
}
if (options2.template) {
var template = isNode(options2.template) ? options2.template : document.querySelector(options2.template);
newOptions.template = template;
}
zoomOptions = _extends({}, zoomOptions, newOptions);
images.forEach(function(image) {
image.dispatchEvent(createCustomEvent("medium-zoom:update", {
detail: { zoom }
}));
});
return zoom;
};
var clone = function clone2() {
var options2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
return mediumZoom2(_extends({}, zoomOptions, options2));
};
var attach = function attach2() {
for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {
selectors[_key] = arguments[_key];
}
var newImages = selectors.reduce(function(imagesAccumulator, currentSelector) {
return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
}, []);
newImages.filter(function(newImage) {
return images.indexOf(newImage) === -1;
}).forEach(function(newImage) {
images.push(newImage);
newImage.classList.add("medium-zoom-image");
});
eventListeners.forEach(function(_ref) {
var type = _ref.type, listener = _ref.listener, options2 = _ref.options;
newImages.forEach(function(image) {
image.addEventListener(type, listener, options2);
});
});
return zoom;
};
var detach = function detach2() {
for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
selectors[_key2] = arguments[_key2];
}
if (active.zoomed) {
close();
}
var imagesToDetach = selectors.length > 0 ? selectors.reduce(function(imagesAccumulator, currentSelector) {
return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));
}, []) : images;
imagesToDetach.forEach(function(image) {
image.classList.remove("medium-zoom-image");
image.dispatchEvent(createCustomEvent("medium-zoom:detach", {
detail: { zoom }
}));
});
images = images.filter(function(image) {
return imagesToDetach.indexOf(image) === -1;
});
return zoom;
};
var on = function on2(type, listener) {
var options2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
images.forEach(function(image) {
image.addEventListener("medium-zoom:" + type, listener, options2);
});
eventListeners.push({ type: "medium-zoom:" + type, listener, options: options2 });
return zoom;
};
var off = function off2(type, listener) {
var options2 = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
images.forEach(function(image) {
image.removeEventListener("medium-zoom:" + type, listener, options2);
});
eventListeners = eventListeners.filter(function(eventListener) {
return !(eventListener.type === "medium-zoom:" + type && eventListener.listener.toString() === listener.toString());
});
return zoom;
};
var open = function open2() {
var _ref2 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, target = _ref2.target;
var _animate = function _animate2() {
var container = {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
left: 0,
top: 0,
right: 0,
bottom: 0
};
var viewportWidth = void 0;
var viewportHeight = void 0;
if (zoomOptions.container) {
if (zoomOptions.container instanceof Object) {
container = _extends({}, container, zoomOptions.container);
viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;
viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;
} else {
var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);
var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height, _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top;
container = _extends({}, container, {
width: _width,
height: _height,
left: _left,
top: _top
});
}
}
viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;
viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;
var zoomTarget = active.zoomedHd || active.original;
var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;
var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;
var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top, left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width, height = _zoomTarget$getBoundi.height;
var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;
var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;
var scale = Math.min(scaleX, scaleY);
var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;
var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;
var transform = "scale(" + scale + ") translate3d(" + translateX + "px, " + translateY + "px, 0)";
active.zoomed.style.transform = transform;
if (active.zoomedHd) {
active.zoomedHd.style.transform = transform;
}
};
return new Promise2(function(resolve) {
if (target && images.indexOf(target) === -1) {
resolve(zoom);
return;
}
var _handleOpenEnd = function _handleOpenEnd2() {
isAnimating = false;
active.zoomed.removeEventListener("transitionend", _handleOpenEnd2);
active.original.dispatchEvent(createCustomEvent("medium-zoom:opened", {
detail: { zoom }
}));
resolve(zoom);
};
if (active.zoomed) {
resolve(zoom);
return;
}
if (target) {
active.original = target;
} else if (images.length > 0) {
var _images = images;
active.original = _images[0];
} else {
resolve(zoom);
return;
}
active.original.dispatchEvent(createCustomEvent("medium-zoom:open", {
detail: { zoom }
}));
scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
isAnimating = true;
active.zoomed = cloneTarget(active.original);
document.body.appendChild(overlay);
if (zoomOptions.template) {
var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);
active.template = document.createElement("div");
active.template.appendChild(template.content.cloneNode(true));
document.body.appendChild(active.template);
}
if (active.original.parentElement && active.original.parentElement.tagName === "PICTURE" && active.original.currentSrc) {
active.zoomed.src = active.original.currentSrc;
}
document.body.appendChild(active.zoomed);
window.requestAnimationFrame(function() {
document.body.classList.add("medium-zoom--opened");
});
active.original.classList.add("medium-zoom-image--hidden");
active.zoomed.classList.add("medium-zoom-image--opened");
active.zoomed.addEventListener("click", close);
active.zoomed.addEventListener("transitionend", _handleOpenEnd);
if (active.original.getAttribute("data-zoom-src")) {
active.zoomedHd = active.zoomed.cloneNode();
active.zoomedHd.removeAttribute("srcset");
active.zoomedHd.removeAttribute("sizes");
active.zoomedHd.removeAttribute("loading");
active.zoomedHd.src = active.zoomed.getAttribute("data-zoom-src");
active.zoomedHd.onerror = function() {
clearInterval(getZoomTargetSize);
console.warn("Unable to reach the zoom image target " + active.zoomedHd.src);
active.zoomedHd = null;
_animate();
};
var getZoomTargetSize = setInterval(function() {
if (active.zoomedHd.complete) {
clearInterval(getZoomTargetSize);
active.zoomedHd.classList.add("medium-zoom-image--opened");
active.zoomedHd.addEventListener("click", close);
document.body.appendChild(active.zoomedHd);
_animate();
}
}, 10);
} else if (active.original.hasAttribute("srcset")) {
active.zoomedHd = active.zoomed.cloneNode();
active.zoomedHd.removeAttribute("sizes");
active.zoomedHd.removeAttribute("loading");
var loadEventListener = active.zoomedHd.addEventListener("load", function() {
active.zoomedHd.removeEventListener("load", loadEventListener);
active.zoomedHd.classList.add("medium-zoom-image--opened");
active.zoomedHd.addEventListener("click", close);
document.body.appendChild(active.zoomedHd);
_animate();
});
} else {
_animate();
}
});
};
var close = function close2() {
return new Promise2(function(resolve) {
if (isAnimating || !active.original) {
resolve(zoom);
return;
}
var _handleCloseEnd = function _handleCloseEnd2() {
active.original.classList.remove("medium-zoom-image--hidden");
document.body.removeChild(active.zoomed);
if (active.zoomedHd) {
document.body.removeChild(active.zoomedHd);
}
document.body.removeChild(overlay);
active.zoomed.classList.remove("medium-zoom-image--opened");
if (active.template) {
document.body.removeChild(active.template);
}
isAnimating = false;
active.zoomed.removeEventListener("transitionend", _handleCloseEnd2);
active.original.dispatchEvent(createCustomEvent("medium-zoom:closed", {
detail: { zoom }
}));
active.original = null;
active.zoomed = null;
active.zoomedHd = null;
active.template = null;
resolve(zoom);
};
isAnimating = true;
document.body.classList.remove("medium-zoom--opened");
active.zoomed.style.transform = "";
if (active.zoomedHd) {
active.zoomedHd.style.transform = "";
}
if (active.template) {
active.template.style.transition = "opacity 150ms";
active.template.style.opacity = 0;
}
active.original.dispatchEvent(createCustomEvent("medium-zoom:close", {
detail: { zoom }
}));
active.zoomed.addEventListener("transitionend", _handleCloseEnd);
});
};
var toggle = function toggle2() {
var _ref3 = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, target = _ref3.target;
if (active.original) {
return close();
}
return open({ target });
};
var getOptions = function getOptions2() {
return zoomOptions;
};
var getImages = function getImages2() {
return images;
};
var getZoomedImage = function getZoomedImage2() {
return active.original;
};
var images = [];
var eventListeners = [];
var isAnimating = false;
var scrollTop = 0;
var zoomOptions = options;
var active = {
original: null,
zoomed: null,
zoomedHd: null,
template: null
// If the selector is omitted, it's replaced by the options
};
if (Object.prototype.toString.call(selector) === "[object Object]") {
zoomOptions = selector;
} else if (selector || typeof selector === "string") {
attach(selector);
}
zoomOptions = _extends({
margin: 0,
background: "#fff",
scrollOffset: 40,
container: null,
template: null
}, zoomOptions);
var overlay = createOverlay(zoomOptions.background);
document.addEventListener("click", _handleClick);
document.addEventListener("keyup", _handleKeyUp);
document.addEventListener("scroll", _handleScroll);
window.addEventListener("resize", close);
var zoom = {
open,
close,
toggle,
update,
clone,
attach,
detach,
on,
off,
getOptions,
getImages,
getZoomedImage
};
return zoom;
};
function styleInject(css2, ref) {
if (ref === void 0) ref = {};
var insertAt = ref.insertAt;
if (!css2 || typeof document === "undefined") {
return;
}
var head = document.head || document.getElementsByTagName("head")[0];
var style = document.createElement("style");
style.type = "text/css";
if (insertAt === "top") {
if (head.firstChild) {
head.insertBefore(style, head.firstChild);
} else {
head.appendChild(style);
}
} else {
head.appendChild(style);
}
if (style.styleSheet) {
style.styleSheet.cssText = css2;
} else {
style.appendChild(document.createTextNode(css2));
}
}
var css = ".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}";
styleInject(css);
var medium_zoom_esm_default = mediumZoom;
export {
medium_zoom_esm_default as default
};
/*! Bundled license information:
medium-zoom/dist/medium-zoom.esm.js:
(*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom *)
*/
//# sourceMappingURL=medium-zoom.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,3 @@
{
"type": "module"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,347 @@
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,
getCurrentWatcher,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
hydrateOnIdle,
hydrateOnInteraction,
hydrateOnMediaQuery,
hydrateOnVisible,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
nodeOps,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
onWatcherCleanup,
openBlock,
patchProp,
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,
useHost,
useId,
useModel,
useSSRContext,
useShadowRoot,
useSlots,
useTemplateRef,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
} from "./chunk-S2UQT6C7.js";
import "./chunk-PZ5AY32C.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,
getCurrentWatcher,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
hydrateOnIdle,
hydrateOnInteraction,
hydrateOnMediaQuery,
hydrateOnVisible,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
nodeOps,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
onWatcherCleanup,
openBlock,
patchProp,
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,
useHost,
useId,
useModel,
useSSRContext,
useShadowRoot,
useSlots,
useTemplateRef,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
};

View File

@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

View File

@ -0,0 +1,9 @@
import { GitContributors } from "D:/xue/dma_handbook/node_modules/@vuepress/plugin-git/lib/client/components/GitContributors.js";
import { GitChangelog } from "D:/xue/dma_handbook/node_modules/@vuepress/plugin-git/lib/client/components/GitChangelog.js";
export default {
enhance: ({ app }) => {
app.component("GitContributors", GitContributors);
app.component("GitChangelog", GitChangelog);
},
};

View File

@ -0,0 +1,29 @@
import * as clientConfig0 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-active-header-links/lib/client/config.js'
import * as clientConfig1 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-back-to-top/lib/client/config.js'
import * as clientConfig2 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-copy-code/lib/client/config.js'
import * as clientConfig3 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-markdown-hint/lib/client/config.js'
import * as clientConfig4 from 'D:/xue/dma_handbook/docs/.vuepress/.temp/git/config.js'
import * as clientConfig5 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-medium-zoom/lib/client/config.js'
import * as clientConfig6 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-nprogress/lib/client/config.js'
import * as clientConfig7 from 'D:/xue/dma_handbook/docs/.vuepress/.temp/prismjs/config.js'
import * as clientConfig8 from 'D:/xue/dma_handbook/docs/.vuepress/.temp/markdown-tab/config.js'
import * as clientConfig9 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-theme-data/lib/client/config.js'
import * as clientConfig10 from 'D:/xue/dma_handbook/node_modules/@vuepress/theme-default/lib/client/config.js'
import * as clientConfig11 from 'D:/xue/dma_handbook/node_modules/@vuepress/plugin-search/lib/client/config.js'
import * as clientConfig12 from 'D:/xue/dma_handbook/docs/.vuepress/client.js'
export const clientConfigs = [
clientConfig0,
clientConfig1,
clientConfig2,
clientConfig3,
clientConfig4,
clientConfig5,
clientConfig6,
clientConfig7,
clientConfig8,
clientConfig9,
clientConfig10,
clientConfig11,
clientConfig12,
].map((m) => m.default).filter(Boolean)

View File

@ -0,0 +1,23 @@
export const redirects = JSON.parse("{}")
export const routes = Object.fromEntries([
["/login.html", { loader: () => import(/* webpackChunkName: "login.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/login.html.js"), meta: {"title":"DMA手册 - 登录"} }],
["/", { loader: () => import(/* webpackChunkName: "index.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/index.html.js"), meta: {"title":"首页"} }],
["/posts/administrative.html", { loader: () => import(/* webpackChunkName: "posts_administrative.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/administrative.html.js"), meta: {"title":"行政"} }],
["/posts/agent.html", { loader: () => import(/* webpackChunkName: "posts_agent.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/agent.html.js"), meta: {"title":"代理商添加方式说明"} }],
["/posts/appCorrelation.html", { loader: () => import(/* webpackChunkName: "posts_appCorrelation.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/appCorrelation.html.js"), meta: {"title":""} }],
["/posts/assistantCoach.html", { loader: () => import(/* webpackChunkName: "posts_assistantCoach.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/assistantCoach.html.js"), meta: {"title":"副教练"} }],
["/posts/behaviorRecord.html", { loader: () => import(/* webpackChunkName: "posts_behaviorRecord.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/behaviorRecord.html.js"), meta: {"title":"服务人员行为记录"} }],
["/posts/changelog.html", { loader: () => import(/* webpackChunkName: "posts_changelog.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/changelog.html.js"), meta: {"title":"更新日志"} }],
["/posts/changelogV2.html", { loader: () => import(/* webpackChunkName: "posts_changelogV2.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/changelogV2.html.js"), meta: {"title":"更新日志"} }],
["/posts/chiefCoach.html", { loader: () => import(/* webpackChunkName: "posts_chiefCoach.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/chiefCoach.html.js"), meta: {"title":"主教练"} }],
["/posts/DMAModule.html", { loader: () => import(/* webpackChunkName: "posts_DMAModule.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/DMAModule.html.js"), meta: {"title":""} }],
["/posts/examReservation.html", { loader: () => import(/* webpackChunkName: "posts_examReservation.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/examReservation.html.js"), meta: {"title":"🧾 健康DMA人体驾照考试报名操作指南"} }],
["/posts/helpCenter.html", { loader: () => import(/* webpackChunkName: "posts_helpCenter.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/helpCenter.html.js"), meta: {"title":"常见问题"} }],
["/posts/overview.html", { loader: () => import(/* webpackChunkName: "posts_overview.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/overview.html.js"), meta: {"title":"核心操作流程"} }],
["/posts/service.html", { loader: () => import(/* webpackChunkName: "posts_service.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/service.html.js"), meta: {"title":"客服"} }],
["/posts/shareBenefit.html", { loader: () => import(/* webpackChunkName: "posts_shareBenefit.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/shareBenefit.html.js"), meta: {"title":"分润提现操作说明"} }],
["/posts/teacher.html", { loader: () => import(/* webpackChunkName: "posts_teacher.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/teacher.html.js"), meta: {"title":"健康管理师"} }],
["/posts/userServiceProcess.html", { loader: () => import(/* webpackChunkName: "posts_userServiceProcess.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/userServiceProcess.html.js"), meta: {"title":"用户服务流程说明"} }],
["/404.html", { loader: () => import(/* webpackChunkName: "404.html" */"D:/xue/dma_handbook/docs/.vuepress/.temp/pages/404.html.js"), meta: {"title":""} }],
]);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
export const siteData = JSON.parse("{\"base\":\"/dma_handbook/\",\"lang\":\"zh-CN\",\"title\":\"DMA服务人员服务操作手册\",\"description\":\"DMA服务人员服务操作手册\",\"head\":[[\"meta\",{\"name\":\"og:type\",\"content\":\"website\"}],[\"meta\",{\"property\":\"og:title\",\"content\":\"DMA服务人员操作手册\"}],[\"meta\",{\"name\":\"description\",\"content\":\"DMA服务操作手册\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"DMA服务全流程操作指南\"}],[\"meta\",{\"property\":\"og:image\",\"content\":\"https://images.health.ufutx.com/202503/12/1f227399ffc2ddbf6c58eafa80627d19.png?v=1774594211470\"}],[\"link\",{\"rel\":\"icon\",\"href\":\"https://images.health.ufutx.com/202503/12/1f227399ffc2ddbf6c58eafa80627d19.png?v=1774594211470\"}]],\"locales\":{}}")

View File

@ -0,0 +1 @@
export const themeData = JSON.parse("{\"navbar\":[\"/\",{\"text\":\"核心操作\",\"link\":\"/posts/overview\",\"activeMatch\":\"^/posts/overview\"},{\"text\":\"角色文档\",\"children\":[{\"text\":\"主教练\",\"link\":\"/posts/chiefCoach.html\"},{\"text\":\"副教练\",\"link\":\"/posts/assistantCoach.html\"},{\"text\":\"客服\",\"link\":\"/posts/service.html\"},{\"text\":\"健康管理师\",\"link\":\"/posts/teacher.html\"}]},{\"text\":\"操作指南\",\"children\":[{\"text\":\"分润提现\",\"link\":\"/posts/shareBenefit\"},{\"text\":\"APP相关\",\"link\":\"/posts/appCorrelation\"},{\"text\":\"DMA模块\",\"link\":\"/posts/DMAModule\"},{\"text\":\"考试预约\",\"link\":\"/posts/examReservation\"},{\"text\":\"代理商\",\"link\":\"/posts/agent\"},{\"text\":\"用户服务流程\",\"link\":\"/posts/userServiceProcess\"},{\"text\":\"行为记录\",\"link\":\"/posts/behaviorRecord\"}]},{\"text\":\"常见问题\",\"link\":\"/posts/helpCenter\"},{\"text\":\"更新日志\",\"link\":\"/posts/changelogV2\"}],\"locales\":{\"/\":{\"selectLanguageName\":\"English\"}},\"colorMode\":\"auto\",\"colorModeSwitch\":true,\"logo\":null,\"repo\":null,\"selectLanguageText\":\"Languages\",\"selectLanguageAriaLabel\":\"Select language\",\"sidebarDepth\":2,\"editLink\":true,\"editLinkText\":\"Edit this page\",\"lastUpdated\":true,\"contributors\":true,\"contributorsText\":\"Contributors\",\"notFound\":[\"There's nothing here.\",\"How did we get here?\",\"That's a Four-Oh-Four.\",\"Looks like we've got some broken links.\"],\"backToHome\":\"Take me home\",\"openInNewWindow\":\"open in new window\",\"toggleColorMode\":\"toggle color mode\",\"toggleSidebar\":\"toggle sidebar\"}")

View File

@ -0,0 +1,10 @@
import { CodeTabs } from "D:/xue/dma_handbook/node_modules/@vuepress/plugin-markdown-tab/lib/client/components/CodeTabs.js";
import { Tabs } from "D:/xue/dma_handbook/node_modules/@vuepress/plugin-markdown-tab/lib/client/components/Tabs.js";
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-markdown-tab/lib/client/styles/vars.css";
export default {
enhance: ({ app }) => {
app.component("CodeTabs", CodeTabs);
app.component("Tabs", Tabs);
},
};

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/404.html.vue"
const data = JSON.parse("{\"path\":\"/404.html\",\"title\":\"\",\"lang\":\"zh-CN\",\"frontmatter\":{\"layout\":\"NotFound\"},\"git\":{},\"filePathRelative\":null}")
export { comp, data }

View File

@ -0,0 +1,4 @@
<template><div><p>404 Not Found</p>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/index.html.vue"
const data = JSON.parse("{\"path\":\"/\",\"title\":\"首页\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1774516081000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":6}],\"changelog\":[{\"hash\":\"a7258d9980759323c9eba6e62638cab1c17523f3\",\"time\":1774516081000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"长图裁剪和查看\"},{\"hash\":\"118aab4f3bb5c4790ce2ecfc3c5897cfd7146161\",\"time\":1770258280000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加登录功能和权限验证\"},{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"169908d04e7a4ef15ffea1d8ca58004c9c7451c4\",\"time\":1762222814000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"7799842e4c8bfd3bbd24d9cbc89c8ac4c28c918b\",\"time\":1761103662000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"README.md\"}")
export { comp, data }

View File

@ -0,0 +1,254 @@
<template><div><h1 id="首页" tabindex="-1"><a class="header-anchor" href="#首页"><span>首页</span></a></h1>
<h2 id="一、手册目的" tabindex="-1"><a class="header-anchor" href="#一、手册目的"><span>手册目的</span></a></h2>
<p>本手册旨在明确 DMA 服务全流程中各岗位服务人员的工作规范操作流程及注意事项确保服务高效有序开展提升客户满意度与服务质量</p>
<img src="https://images.health.ufutx.com/202512/23/13436ad291528078f59fc005904f2960.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="二、适用范围" tabindex="-1"><a class="header-anchor" href="#二、适用范围"><span>适用范围</span></a></h2>
<p>本手册适用于参与 DMA 服务的行政客服健康管理师系统审核员主教练副教练等所有服务人员</p>
<img alt="" src="https://images.health.ufutx.com/202512/23/53298d3707ebe157d633384bafe7462d.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="三、核心原则" tabindex="-1"><a class="header-anchor" href="#三、核心原则"><span>核心原则</span></a></h2>
<ol>
<li>客户至上以客户需求为导向积极响应客户诉求提供优质服务</li>
<li>流程合规严格按照既定流程操作确保各项工作符合规范保障服务质量与数据准确性</li>
<li>高效协同各岗位人员需密切配合及时沟通确保流程顺畅衔接</li>
<li>信息保密妥善保管客户信息不得泄露客户隐私及服务相关敏感数据</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/2d20f6d13e4f21a04ee802b0d03f5c38.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="四、岗位权责" tabindex="-1"><a class="header-anchor" href="#四、岗位权责"><span>岗位权责</span></a></h2>
<h3 id="一-行政" tabindex="-1"><a class="header-anchor" href="#一-行政"><span>行政</span></a></h3>
<ol>
<li>主要职责负责合同相关处理服务团队进群邀请配货物流跟进及发货确认记录等工作</li>
<li>关键权限可在后台系统进行合同状态确认发起服务团队进群邀请录入物流信息等操作</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/c57324096c9f64637ba121c38b4e82f7.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="二-客服" tabindex="-1"><a class="header-anchor" href="#二-客服"><span>客服</span></a></h3>
<ol>
<li>主要职责负责健康档案引导与跟进审核及闭环处理方案与收货衔接收货状态跟进等工作</li>
<li>关键权限可审核健康档案与客户沟通确认收货方式跟进客户收货状态等</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/c898f51a24c2247a7ebe4932ea56e2f9.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="三-健康管理师" tabindex="-1"><a class="header-anchor" href="#三-健康管理师"><span>健康管理师</span></a></h3>
<ol>
<li>主要职责深度解读客户健康档案健康评估表及相关健康数据结合 AI 健康方案工具制定个性化可落地的健康方案涵盖饮食运动作息心理等维度</li>
<li>关键权限查看客户健康档案在系统中提交制定的健康方案</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/9ef373b5336e95fd0fa1221b8b578391.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="四-系统审核员" tabindex="-1"><a class="header-anchor" href="#四-系统审核员"><span>系统审核员</span></a></h3>
<ol>
<li>主要职责审核客户提交的方案前健康评估表</li>
<li>关键权限对健康评估表进行审核反馈审核结果</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/0823f09de9e474fc4735cdb1f187a51d.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="五-主教练、副教练" tabindex="-1"><a class="header-anchor" href="#五-主教练、副教练"><span>主教练副教练</span></a></h3>
<ol>
<li>主要职责查看客户信息协助开展健康方案执行相关工作</li>
<li>关键权限在客服确认健康信息完善后可查看客户信息</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/fbd3591f80c55c2404822f198df93d9a.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="五、服务规范与沟通话术" tabindex="-1"><a class="header-anchor" href="#五、服务规范与沟通话术"><span>服务规范与沟通话术</span></a></h2>
<h3 id="一-仪容仪表规范" tabindex="-1"><a class="header-anchor" href="#一-仪容仪表规范"><span>仪容仪表规范</span></a></h3>
<ol>
<li>着装整洁得体保持良好精神面貌</li>
<li>言行举止文明礼貌态度热情诚恳</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/f2e3617bc15333e8d9642b539ee67f0d.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="二-沟通话术规范" tabindex="-1"><a class="header-anchor" href="#二-沟通话术规范"><span>沟通话术规范</span></a></h3>
<ol>
<li>首次接待客户您好我是您的专属服务人员 [姓名]很高兴为您提供 DMA 健康服务有任何问题都可以找我哦</li>
<li>处理客户投诉非常抱歉给您带来不好的体验您先消消气能详细说一下具体情况吗我会尽快为您解决</li>
<li>结束服务沟通感谢您选择我们的 DMA 健康服务后续有任何健康相关的问题欢迎随时联系我们祝您健康愉快</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/38ea89ce387c01a1133e1e98b987eccd.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="六、系统工具使用说明" tabindex="-1"><a class="header-anchor" href="#六、系统工具使用说明"><span>系统工具使用说明</span></a></h2>
<h3 id="一-后台系统常用功能" tabindex="-1"><a class="header-anchor" href="#一-后台系统常用功能"><span>后台系统常用功能</span></a></h3>
<ol>
<li>订单管理模块查看订单信息确认合同类型等</li>
<li>合同管理模块处理合同签署查看合同状态等</li>
<li>客户群聊管理模块邀请成员进群查看群聊记录等</li>
<li>健康档案管理模块审核健康档案查看健康信息等</li>
<li>方案设置模块制定提交健康方案等</li>
<li>配送管理模块确认收货方式录入配送信息等</li>
<li>物流管理模块录入快递单号跟踪物流信息等</li>
<li>发货记录模块上传发货照片确认发货等</li>
<li>收货管理模块跟进收货状态处理收货确认等</li>
<li>方案管理模块标记方案状态转发调查问卷等</li>
</ol>
<img alt="" src="/images/home/后台系统常用功能.jpg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="二-群聊管理工具使用" tabindex="-1"><a class="header-anchor" href="#二-群聊管理工具使用"><span>群聊管理工具使用</span></a></h3>
<ol>
<li>发送消息在群聊界面输入文字图片链接等内容点击发送即可</li>
<li>查看已读状态发送消息后可查看群成员的已读情况</li>
<li>邀请成员通过后台系统群聊管理模块或群聊界面的邀请功能添加成员</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/05646d55936cdc15a47d4f62dcb3269a.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="七、考核与反馈机制" tabindex="-1"><a class="header-anchor" href="#七、考核与反馈机制"><span>考核与反馈机制</span></a></h2>
<h3 id="一-考核指标" tabindex="-1"><a class="header-anchor" href="#一-考核指标"><span>考核指标</span></a></h3>
<ol>
<li>流程执行时效性各环节操作是否在规定时间内完成</li>
<li>工作准确性如合同类型确认健康档案审核等是否准确无误</li>
<li>客户满意度通过客户调查问卷投诉情况等进行评估</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/cdee4f1644682551bd7a9ae744213301.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="二-反馈渠道" tabindex="-1"><a class="header-anchor" href="#二-反馈渠道"><span>反馈渠道</span></a></h3>
<ol>
<li>内部反馈服务人员在工作中遇到问题可向直属上级反馈</li>
<li>客户反馈客户可通过群聊客服电话等渠道反馈服务问题</li>
</ol>
<img alt="" src="https://images.health.ufutx.com/202512/23/47eb804b453608113442bebfc525cdf7.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="八、更新日志" tabindex="-1"><a class="header-anchor" href="#八、更新日志"><span>更新日志</span></a></h2>
<p>为了方便服务人员了解手册的最新更新内容我们提供了详细的更新日志您可以通过以下方式查看</p>
<ol>
<li>点击顶部导航栏中的更新日志选项</li>
<li>直接访问 <RouteLink to="/posts/changelog.html">更新日志页面</RouteLink></li>
</ol>
<h2 id="附录-流程节点时效汇总表" tabindex="-1"><a class="header-anchor" href="#附录-流程节点时效汇总表"><span>附录流程节点时效汇总表</span></a></h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程节点版本2026/3/25</td>
<td>时效要求</td>
</tr>
<tr>
<td>行政确认合同类型</td>
<td>收到支付成功通知后 1 个工作日内</td>
</tr>
<tr>
<td>行政邀请服务团队进群</td>
<td>合同类型确认后 2 小时内</td>
</tr>
<tr>
<td>客服确认用户使用电子或纸质版本<br>客服跟进电子版用户端合同签署</td>
<td>电子版合同3 个工作日内完成</td>
</tr>
<tr>
<td>行政代表公司端签署合同</td>
<td>收到 待公司签署 通知后 1 个工作日内</td>
</tr>
<tr>
<td>行政跟进线下纸质合同附上操作指引邮寄签署</td>
<td>客服通知合同版本后 1 个工作日内</td>
</tr>
<tr>
<td>审核团队审核用户方案前问卷</td>
<td>1个工作日内完成</td>
</tr>
<tr>
<td>客服审核健康档案是否完善</td>
<td>收到健康档案待确认通知后 1 个工作日内</td>
</tr>
<tr>
<td>健康管理师制定健康方案</td>
<td>收到 健康档案已确认 通知后 3 个工作日内</td>
</tr>
<tr>
<td>客服确认收货方式自提或是邮寄</td>
<td>收到方案完成通知后 1 小时内完成</td>
</tr>
<tr>
<td>行政配货(手环统一配送测试版本</td>
<td>收到配送发货通知后1个工作日内</td>
</tr>
<tr>
<td>行政发货确认与记录</td>
<td>发货后 1 小时内</td>
</tr>
<tr>
<td>客服跟进收货状态首次提醒<br>服务群通知用户包裹发出预计到达的大约时间</td>
<td>系统触发 已发货 通知后 24 小时内</td>
</tr>
<tr>
<td>客服跟进收货状态超期提醒</td>
<td> 48 小时未确认收货时</td>
</tr>
<tr>
<td>副教练核对用户包裹物料是否齐全</td>
<td>方案启动前1个工作日内</td>
</tr>
<tr>
<td>副教练填写方案启动和结束时间</td>
<td>用户确认方案启动时间后1个工作日内</td>
</tr>
<tr>
<td>客服/主教练/副教练 标记方案开始</td>
<td>用户方案开启前1个工作日至当日</td>
</tr>
<tr>
<td>方案前视频沟通第一次<br>副教练发起会议<br>/副教练/客服参会</td>
<td>系统通知后 24 小时内完成</td>
</tr>
<tr>
<td>副教练跟进体脂称使用指导</td>
<td>客户收货确认后 24 小时内完成</td>
</tr>
<tr>
<td>副教练跟进手环使用指导 <br>建议收到后先充电10小时以上再操作绑定连接</td>
<td>客户收货确认后 24 小时内完成</td>
</tr>
<tr>
<td>副教练每日餐单发送与解读</td>
<td>每日 18:00 前完成</td>
</tr>
<tr>
<td>方案中视频沟通第二次<br>副教练发起会议<br>/副教练/客服参会</td>
<td>方案第三周结束后 24 小时内完成</td>
</tr>
<tr>
<td>主教练指引用户是否需要做身体复检<br>当不需要时主教练需在内部沟通群留言</td>
<td> 49 方案后第三次视频会议沟通前</td>
</tr>
<tr>
<td>方案后视频沟通第三次<br>副教练发起会议<br>/副教练/客服参会</td>
<td>方案结束的最后一天第49天完成教练团队需要提前5分钟进入会议室先内部沟通会议内容与用户是否需要去体检</td>
</tr>
<tr>
<td>方案后毕业结束语<br>第一发送人副教练巩固期生活指导<br>第二发送人客服邀请填写系统问卷及上传照片<br>第三发送人主教练查缺补漏</td>
<td> 50 12:00 前完成</td>
</tr>
<tr>
<td>客服处理方案结束事宜教练团队一起跟进用户完成<br>1邀请用户填写方案后用户调查问卷<br>2邀请用户上传方案后身体照片链接</td>
<td> 50 11:00 前完成</td>
</tr>
<tr>
<td>客服/主教练/副教练标记方案结束</td>
<td>用户方案结束第50天</td>
</tr>
<tr>
<td>/副教练/客服填写内部教练复盘服务评价表</td>
<td>方案结束后 3 个工作日内完成</td>
</tr>
<tr>
<td>/副教练/客服第一次对用户做方案后评估表</td>
<td>方案结束后第 3 18:00 前完成</td>
</tr>
<tr>
<td>系统通知提醒主教练和副教练提醒用户每周做清洁日</td>
<td>周日晚上2000</td>
</tr>
<tr>
<td>系统通知提醒主教练和副教练提醒用户做复检</td>
<td>方案结束后第 232629 天发送</td>
</tr>
<tr>
<td>主教练和副教练根据实际情况在服务群提醒用户做复检并上传报告</td>
<td>副教练/主教练在第28天在服务群里提醒用户做体检</td>
</tr>
<tr>
<td>/副教练/客服第二次对用户做方案后评估表</td>
<td>方案结束后第 60 18:00 前完成</td>
</tr>
<tr>
<td>副教练方案后巩固期不定时问候</td>
<td>方案结束后3个月内 <code v-pre> </code></td>
</tr>
</tbody>
</table>
<div v-auth="'coach'">
</div>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/login.html.vue"
const data = JSON.parse("{\"path\":\"/login.html\",\"title\":\"DMA手册 - 登录\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"DMA手册 - 登录\",\"layout\":\"LoginLayout\"},\"git\":{\"updatedTime\":1770258280000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"118aab4f3bb5c4790ce2ecfc3c5897cfd7146161\",\"time\":1770258280000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加登录功能和权限验证\"}]},\"filePathRelative\":\"login.md\"}")
export { comp, data }

View File

@ -0,0 +1,3 @@
<template><div></div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/DMAModule.html.vue"
const data = JSON.parse("{\"path\":\"/posts/DMAModule.html\",\"title\":\"\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1764209898000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":2}],\"changelog\":[{\"hash\":\"0d2f55f94a3eee13f09e8cc2505c98c31ef6437a\",\"time\":1764209898000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"6e27dcce01edcc47b1f9ceaf1fe1ec4485400ef7\",\"time\":1763004968000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/DMAModule.md\"}")
export { comp, data }

View File

@ -0,0 +1,39 @@
<template><div><h2 id="一、特殊价格购买-20000及25800" tabindex="-1"><a class="header-anchor" href="#一、特殊价格购买-20000及25800"><span>特殊价格购买20000及25800</span></a></h2>
<h3 id="_1-设置特定的sku" tabindex="-1"><a class="header-anchor" href="#_1-设置特定的sku"><span>1. 设置特定的sku</span></a></h3>
<h4 id="扫描下面二维码后-通过选择一个sku-生成二维码发送给用户-用户通过扫码后-只能选择购买设置的sku-无法选择其他sku" tabindex="-1"><a class="header-anchor" href="#扫描下面二维码后-通过选择一个sku-生成二维码发送给用户-用户通过扫码后-只能选择购买设置的sku-无法选择其他sku"><span>扫描下面二维码后通过选择一个sku生成二维码发送给用户用户通过扫码后只能选择购买设置的sku无法选择其他sku</span></a></h4>
<p><img src="https://images.health.ufutx.com/202511/13/d65ead6595ba330b5795d71cf645358e.png" alt="img.png"></p>
<h3 id="_2-通用页面" tabindex="-1"><a class="header-anchor" href="#_2-通用页面"><span>2. 通用页面</span></a></h3>
<h4 id="用户扫描以下二维码-可自由选择sku进行购买" tabindex="-1"><a class="header-anchor" href="#用户扫描以下二维码-可自由选择sku进行购买"><span>用户扫描以下二维码可自由选择sku进行购买</span></a></h4>
<p><img src="https://images.health.ufutx.com/202511/13/070b2d87bc78fb37563466265cb1e41e.png" alt="img.png"></p>
<h2 id="二、-营养素使用方法-快捷图片查找与发送" tabindex="-1"><a class="header-anchor" href="#二、-营养素使用方法-快捷图片查找与发送"><span>营养素使用方法快捷图片查找与发送</span></a></h2>
<h4 id="操作方法如下" tabindex="-1"><a class="header-anchor" href="#操作方法如下"><span>操作方法如下</span></a></h4>
<p>友福商务端进入用户群底部胶囊快捷回复找到营养素搜索或选择需要产品名称点击转发图片返回当前用户群查看</p>
<p><img src="@source/.vuepress/public/images/dmaModule/nature1.png" alt="img.png">
<img src="@source/.vuepress/public/images/dmaModule/nature2.png" alt="img.png"></p>
<h2 id="三、复盘评估" tabindex="-1"><a class="header-anchor" href="#三、复盘评估"><span>复盘评估</span></a></h2>
<h4 id="用户方案结束后-我们需要对用户进行-复盘评估-分别是3天和60天的评估表。" tabindex="-1"><a class="header-anchor" href="#用户方案结束后-我们需要对用户进行-复盘评估-分别是3天和60天的评估表。"><span>用户方案结束后我们需要对用户进行复盘评估分别是3天和60天的评估表</span></a></h4>
<p>操作方法
友福商务端 进入需要评估的用户群 点击右下脚 +图标 复盘评估选择方案结束3天后或6天后</p>
<p><img src="@source/.vuepress/public/images/dmaModule/pan1.jpg" alt="img.png">
<img src="@source/.vuepress/public/images/dmaModule/pan2.jpg" alt="img.png"></p>
<h2 id="四、设置用户方案起始日与结束日" tabindex="-1"><a class="header-anchor" href="#四、设置用户方案起始日与结束日"><span>设置用户方案起始日与结束日</span></a></h2>
<h4 id="与服务费挂钩。" tabindex="-1"><a class="header-anchor" href="#与服务费挂钩。"><span>与服务费挂钩</span></a></h4>
<h4 id="操作人-副教练" tabindex="-1"><a class="header-anchor" href="#操作人-副教练"><span>操作人副教练</span></a></h4>
<p>操作方法
进入需要设置的用户群 点击右上角... 点击并输入方案开始与结束时间</p>
<p>作用用于分配教练服务费</p>
<p><img src="@source/.vuepress/public/images/dmaModule/time1.jpg" alt="img.png">
<img src="@source/.vuepress/public/images/dmaModule/time2.jpg" alt="img.png"></p>
<h2 id="五、用户上传数据查看" tabindex="-1"><a class="header-anchor" href="#五、用户上传数据查看"><span>用户上传数据查看</span></a></h2>
<p>如果用户上传体脂数据服务群里查阅只能看到体重及BMI是什么原因见图1</p>
<p>用户在体脂秤上的时间太短</p>
<p>建议用户在体脂秤上站20-30秒左右听到测量完毕再下秤
完整的体脂数据见图2</p>
<p><img src="@source/.vuepress/public/images/dmaModule/data1.jpg" alt="img.png">
<img src="@source/.vuepress/public/images/dmaModule/data2.jpg" alt="img.png"></p>
<h2 id="六、dma价格更新" tabindex="-1"><a class="header-anchor" href="#六、dma价格更新"><span>DMA价格更新</span></a></h2>
<h4 id="dma价格调整-11月24日起-价格变更" tabindex="-1"><a class="header-anchor" href="#dma价格调整-11月24日起-价格变更"><span>dma价格调整11月24日起价格变更</span></a></h4>
<p><img src="https://images.health.ufutx.com/202511/26/3128241111cfde73418faaff8618ed61.jpeg" alt="img.png"></p>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/administrative.html.vue"
const data = JSON.parse("{\"path\":\"/posts/administrative.html\",\"title\":\"行政\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1759135896000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/administrative.md\"}")
export { comp, data }

View File

@ -0,0 +1,45 @@
<template><div><h1 id="行政" tabindex="-1"><a class="header-anchor" href="#行政"><span>行政</span></a></h1>
<h2 id="dma方案前" tabindex="-1"><a class="header-anchor" href="#dma方案前"><span>DMA方案前</span></a></h2>
<h3 id="一-用户下单缴费阶段" tabindex="-1"><a class="header-anchor" href="#一-用户下单缴费阶段"><span>用户下单缴费阶段</span></a></h3>
<ol>
<li>
<p>行政确认合同类型</p>
<p>收到用户线上 / 线下支付成功通知后1 个工作日内登录后台系统 - 订单管理模块根据支付渠道线上订单显示 APP 支付线下订单显示 线下转账确认合同类型线上 / 线下并在系统中勾选对应类型完成同步
仔细核对支付信息与订单信息的一致性确保合同类型判断准确</p>
<p><img src="@source/.vuepress/public/images/operatorImage/xz1.png" alt="img.png"></p>
<p>若支付信息与订单信息不一致立即联系技术核实待确认后再进行合同类型确认</p>
</li>
</ol>
<h3 id="二-合同签署与群聊搭建阶段" tabindex="-1"><a class="header-anchor" href="#二-合同签署与群聊搭建阶段"><span>合同签署与群聊搭建阶段</span></a></h3>
<ol>
<li>
<p>行政处理线下合同签署</p>
<p>若用户选择线下合同在收到线下合同原件后登录后台系统 - 订单管理模块找到对应订单的合同点击线下合同签署按钮</p>
<p><img src="@source/.vuepress/public/images/operatorImage/xz2.png" alt="img.png"></p>
<p>仔细核对合同内容及用户签字是否完整清晰扫描件需清晰可辨</p>
<p>若合同内容有误或用户签字不清晰联系客服与用户沟通重新签署待收到正确合同后再进行确认签署操作</p>
</li>
<li>
<p>行政处理线上合同签署跟进</p>
<p>用户签署线上合同后系统会发送 待公司签署 通知行政需在 1 个工作日内登录后台系统 - 订单管理模块找到对应订单点击 线上合同签署完成电子签名确认</p>
<p><img src="@source/.vuepress/public/images/operatorImage/img_2.png" alt="img.png"></p>
<p>签署前再次核对合同条款确保无误</p>
<p>若电子签名无法正常使用检查系统设置或联系技术支持解决</p>
</li>
<li>
<p>行政邀请服务团队进群</p>
<p>合同类型确认后2 小时内登录后台系统 - 客户合同类型确认后2 小时内登录后台系统 - 订单管理模块选择对应客户订单点击 详情设置中选择对应的 主教练副教练客服 角色系统自动发送进群邀请</p>
<p><img src="@source/.vuepress/public/images/operatorImage/img_1.png" alt="img.png"></p>
<p>对应客户订单详情点击 设置勾选 主教练副教练客服 角色系统自动发送进群邀请</p>
<p>确保邀请的人员角色准确避免遗漏或误邀 若系统发送邀请失败检查网络连接重新操作若仍失败联系技术支持处理</p>
</li>
</ol>
<h3 id="三-配货" tabindex="-1"><a class="header-anchor" href="#三-配货"><span>配货</span></a></h3>
<p>收到健康管理师设置完方案信息后4 小时内根据方案内容进行配货核对货物数量种类与方案一致后登录商务端APP找到对应群聊用户信息中选择健康档案点击标记配送已完成若为配送订单录入快递单号物流公司需选择合作物流和产品照片若为自提订单上传产品照片</p>
<p><img src="@source/.vuepress/public/images/operatorImage/wuliu.png" alt="img.png"></p>
<p>照片需清晰完整能作为发货凭证</p>
<p>配货时轻拿轻放避免货物损坏确保包装完好</p>
<p>若发现货物短缺或损坏及时联系仓库补充或更换延迟发货需提前告知客服由客服向客户说明情况</p>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/agent.html.vue"
const data = JSON.parse("{\"path\":\"/posts/agent.html\",\"title\":\"代理商添加方式说明\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"代理商添加方式说明\",\"sidebarDepth\":2},\"git\":{\"updatedTime\":1765358621000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/agent.md\"}")
export { comp, data }

View File

@ -0,0 +1,129 @@
<template><div><h1 id="代理商添加方式说明" tabindex="-1"><a class="header-anchor" href="#代理商添加方式说明"><span>代理商添加方式说明</span></a></h1>
<p>商务端用户管理模块中支持通过以下两种方式为用户添加代理商身份</p>
<ol>
<li><strong>新增用户并设置角色</strong></li>
<li><strong>从已有用户列表中选择并分配角色</strong></li>
</ol>
<p>所有角色设置均支持填写推荐人信息非必填项可用于追溯关系链</p>
<hr>
<h2 id="📌-添加方式一-新增用户注册" tabindex="-1"><a class="header-anchor" href="#📌-添加方式一-新增用户注册"><span>📌 添加方式一新增用户注册</span></a></h2>
<p>点击顶部按钮 <code v-pre>+ 添加新用户</code>弹出商务端注册对话框</p>
<p><img src="https://images.health.ufutx.com/202512/01/8c5e943135013233ee1ee53902f89612.png" alt="商务端注册"></p>
<h4 id="字段说明" tabindex="-1"><a class="header-anchor" href="#字段说明"><span>字段说明</span></a></h4>
<table>
<thead>
<tr>
<th>字段</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>姓名</td>
<td>输入用户真实姓名</td>
</tr>
<tr>
<td>手机号</td>
<td>输入手机号用于登录和通知</td>
</tr>
<tr>
<td>选择角色</td>
<td>多选框可勾选多个角色包括<br> - 主教练<br> - 副教练<br> - 客服<br> - 委员会<br> - 行政<br> - 推荐人<br> - 助攻人<br> - 助教<br> - <strong>标准代理商</strong><br> - <strong>高级代理商</strong></td>
</tr>
<tr>
<td>选择推荐人</td>
<td>可输入用户名或手机号进行搜索选择推荐人非必填</td>
</tr>
</tbody>
</table>
<blockquote>
<p> <strong>提示</strong></p>
<ul>
<li>标准代理商高级代理商是核心代理身份可在权限和收益上有所区分</li>
</ul>
</blockquote>
<hr>
<h2 id="📌-添加方式二-选择已有用户" tabindex="-1"><a class="header-anchor" href="#📌-添加方式二-选择已有用户"><span>📌 添加方式二选择已有用户</span></a></h2>
<p>点击顶部按钮 <code v-pre>+ 选择已有用户</code>系统展示当前所有已注册用户列表</p>
<p>用户可通过筛选条件如角色手机号等快速查找目标用户</p>
<p><img src="https://images.health.ufutx.com/202512/01/38099601eed3b76222c2ed623d21311e.png" alt="用户列表"></p>
<ol start="4">
<li>点击确定完成角色分配</li>
</ol>
<hr>
<h2 id="📌-添加方式三-从列表中选择" tabindex="-1"><a class="header-anchor" href="#📌-添加方式三-从列表中选择"><span>📌 添加方式三从列表中选择</span></a></h2>
<ol>
<li>在用户列表中找到目标用户</li>
<li>勾选其对应的角色列例如标准代理商高级代理商</li>
<li>点击确定系统将弹出确认提示</li>
</ol>
<p><img src="https://images.health.ufutx.com/202512/01/c60b20c319dd3c1d9f18653b82f1732f.png" alt="确认提示"></p>
<p>确认后会提示是否添加推荐人
<img src="https://images.health.ufutx.com/202512/01/92ad43d9c03e996af013998010cba6d6.png" alt="选择推荐人"></p>
<hr>
<h2 id="🔍-注意事项" tabindex="-1"><a class="header-anchor" href="#🔍-注意事项"><span>🔍 注意事项</span></a></h2>
<ul>
<li><strong>角色可多选</strong>一个用户可同时拥有多个角色如既是客服又是标准代理商</li>
<li><strong>推荐人非必填</strong>但建议填写以完善组织架构</li>
<li><strong>权限生效</strong>角色变更后系统将自动同步相关权限与功能访问</li>
</ul>
<hr>
<h2 id="🎯-代理商身份生效后-用户端功能展示" tabindex="-1"><a class="header-anchor" href="#🎯-代理商身份生效后-用户端功能展示"><span>🎯 代理商身份生效后用户端功能展示</span></a></h2>
<p>成功设置代理商身份后用户可在 <strong>商务端 App 我的页面</strong> 查看以下信息例如
<img src="https://images.health.ufutx.com/202512/03/7a5529227f1a52e181b019ae07c50459.jpeg" alt="我的邀请"></p>
<h3 id="_1-我的邀请-已邀请用户" tabindex="-1"><a class="header-anchor" href="#_1-我的邀请-已邀请用户"><span>1. 我的邀请已邀请用户</span></a></h3>
<p>点击我的邀请可查看自己已成功邀请的代理商名单包含</p>
<ul>
<li>用户姓名</li>
<li>手机号部分隐藏</li>
<li>代理级别标准代理商</li>
<li>邀请时间</li>
</ul>
<p><img src="https://images.health.ufutx.com/202512/03/69136f49e9b25d51566e3d1d4d6ebfd7.jpeg" alt="我的邀请"></p>
<hr>
<h3 id="_2-代理商邀请码-二维码分享" tabindex="-1"><a class="header-anchor" href="#_2-代理商邀请码-二维码分享"><span>2. 代理商邀请码二维码分享</span></a></h3>
<p>我的页面右上角点击 <strong>代理商邀请码</strong>可进入二维码页面</p>
<p><img src="https://images.health.ufutx.com/202512/03/2b285f72ba0e78c4ea17fef35c6b6ebc.jpeg" alt="代理商邀请码"></p>
<ul>
<li>显示专属二维码扫码后跳转至 <strong>成为代理商申请页面</strong></li>
<li>用户可保存二维码用于推广邀请他人</li>
</ul>
<hr>
<h3 id="_3-成为代理商申请页面" tabindex="-1"><a class="header-anchor" href="#_3-成为代理商申请页面"><span>3. 成为代理商申请页面</span></a></h3>
<p>被邀请人扫描二维码后将进入以下页面</p>
<h4 id="理创业计划介绍" tabindex="-1"><a class="header-anchor" href="#理创业计划介绍"><span>理创业计划介绍</span></a></h4>
<p><img src="https://images.health.ufutx.com/202512/03/f71766460a9998f6640edd73e887322a.jpeg" alt="代理创业计划"></p>
<ul>
<li>展示项目核心亮点
<ul>
<li>全球首创AI+七维生命力模型健康服务系统</li>
<li>万亿级健康市场机会</li>
<li>49天周期化改善</li>
<li>多重收益保障</li>
</ul>
</li>
</ul>
<h4 id="联系咨询表单" tabindex="-1"><a class="header-anchor" href="#联系咨询表单"><span>联系咨询表单</span></a></h4>
<p><img src="https://images.health.ufutx.com/202512/03/664d6a71e2ef4e38b54c0a44383dec24.jpeg" alt="联系我们"></p>
<ul>
<li>填写信息后提交咨询
<ul>
<li>姓名</li>
<li>手机号</li>
<li>意向代理类型如标准/高级</li>
</ul>
</li>
<li>提交后客服团队将第一时间联系对接</li>
</ul>
<hr>
<h2 id="🔍-注意事项-1" tabindex="-1"><a class="header-anchor" href="#🔍-注意事项-1"><span>🔍 注意事项</span></a></h2>
<ul>
<li> <strong>角色可多选</strong>一个用户可同时拥有多个角色如既是客服又是高级代理商</li>
<li> <strong>推荐人非必填</strong>但建议填写以完善组织架构与分润关系</li>
<li>🔄 <strong>权限即时同步</strong>角色变更后系统将自动更新用户权限与功能访问范围</li>
<li>📱 <strong>商务端可见性</strong>仅当用户被设置为代理商后才会在我的页面显示相关功能</li>
</ul>
<hr>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/appCorrelation.html.vue"
const data = JSON.parse("{\"path\":\"/posts/appCorrelation.html\",\"title\":\"\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1766471007000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":4}],\"changelog\":[{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"acc531138f97433b765b2d0a43f9edb90f646da1\",\"time\":1765524799000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"第一版\"},{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"6e27dcce01edcc47b1f9ceaf1fe1ec4485400ef7\",\"time\":1763004968000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/appCorrelation.md\"}")
export { comp, data }

View File

@ -0,0 +1,127 @@
<template><div><h2 id="一、app消息通知" tabindex="-1"><a class="header-anchor" href="#一、app消息通知"><span>APP消息通知</span></a></h2>
<h3 id="_1-app通知消息开启及平台支持" tabindex="-1"><a class="header-anchor" href="#_1-app通知消息开启及平台支持"><span>1. app通知消息开启及平台支持</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="7700" :max-width="700" src="https://images.health.ufutx.com/202511/11/be87f925a3bd08b158c0438c38aed69b.png" loading="lazy"></LongPicSplit>
<h2 id="二、app下载" tabindex="-1"><a class="header-anchor" href="#二、app下载"><span>APP下载</span></a></h2>
<h3 id="_1-用户端app下载" tabindex="-1"><a class="header-anchor" href="#_1-用户端app下载"><span>1. 用户端APP下载</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="6800" :max-width="700" src="https://images.health.ufutx.com/202509/28/9a0f61ee335842d45cf2ccf193fa527a.png" loading="lazy"></LongPicSplit>
<h3 id="_2-商务端app下载" tabindex="-1"><a class="header-anchor" href="#_2-商务端app下载"><span>2. 商务端APP下载</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="8400" :max-width="700" src="https://images.health.ufutx.com/202509/28/7c4df7f12f9a92f88de77e38209be83f.png" loading="lazy"></LongPicSplit>
<h2 id="三、华为纯血鸿蒙" tabindex="-1"><a class="header-anchor" href="#三、华为纯血鸿蒙"><span>华为纯血鸿蒙</span></a></h2>
<h3 id="_1-app安装及体脂称使用说明" tabindex="-1"><a class="header-anchor" href="#_1-app安装及体脂称使用说明"><span>1.app安装及体脂称使用说明</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="7520" src="https://images.health.ufutx.com/202512/22/dcf5fbf55ab4859c92222d8436e778a1.png" loading="lazy"></LongPicSplit>
<h2 id="四、其他业务类" tabindex="-1"><a class="header-anchor" href="#四、其他业务类"><span>其他业务类</span></a></h2>
<h3 id="_1-安装app时提示恶意应用怎么办" tabindex="-1"><a class="header-anchor" href="#_1-安装app时提示恶意应用怎么办"><span>1. 安装app时提示恶意应用怎么办</span></a></h3>
<p>若安装友福同享APP时提示恶意应用可按以下步骤处理</p>
<ul>
<li>确认下载渠道确保从手机官方应用商店如苹果App Store华为应用市场等下载避免第三方渠道</li>
<li>检查APP版本确认下载的是最新版本旧版本可能存在误报</li>
<li>信任应用部分安卓手机可在设置安全中开启未知来源应用安装注意仅信任官方渠道下载的APP</li>
<li>反馈客服若仍有问题截图提示信息并联系客服XXX-XXXXXXX协助解决</li>
<li>我们现在属于测试阶段不能频繁更新到应用市场由于个别类型手机有外来应用特殊管控非应用商城安装包安装属于正常的风险提示我们公司提供的下载链接和二维码本身不会携带病毒可以放心下载安装</li>
<li>处理方式如下正常情况下按照提示确认已了解风险并点击继续安装即可安装成功有些手机系统中途可能会出现验证锁屏密码等隐私验证信息来确保本人手机安全按提示操作后即可安装成功手机自带系统在开启纯净模式情况下也会出现这样的情况关闭纯净模式按提示下载安装即可安装成功</li>
</ul>
<h3 id="_2-如何关闭纯净模式" tabindex="-1"><a class="header-anchor" href="#_2-如何关闭纯净模式"><span>2. 如何关闭纯净模式</span></a></h3>
<p>不同手机关闭纯净模式的方法不同以常见品牌为例</p>
<ul>
<li>华为手机进入设置系统和更新纯净模式点击退出</li>
<li>小米手机进入设置隐私保护特殊权限设置安装未知应用选择对应APP并开启权限</li>
<li>若您的手机品牌未在此列建议在手机设置中搜索纯净模式未知应用安装根据提示操作</li>
</ul>
<h3 id="_3-安装app以及开放文件访问权限会不会被恶意获取用户信息或者数据挪作他用-具有隐私信息泄露的风险" tabindex="-1"><a class="header-anchor" href="#_3-安装app以及开放文件访问权限会不会被恶意获取用户信息或者数据挪作他用-具有隐私信息泄露的风险"><span>3. 安装APP以及开放文件访问权限会不会被恶意获取用户信息或者数据挪作他用具有隐私信息泄露的风险</span></a></h3>
<p>友福同享APP严格遵守隐私保护法规所有权限申请均为提供服务所需</p>
<ul>
<li>文件访问权限仅用于读取/存储与健康数据相关的文件如运动记录体检报告等不会访问无关文件</li>
<li>信息保护APP采用加密传输技术用户数据存储在安全服务器未经授权不会泄露</li>
<li>权限说明在安装与使用过程中APP会明确说明权限用途您可根据需求选择是否授权若仍有疑虑可查看用户隐私协议或联系客服了解详情</li>
<li>这个是完全不存在的完全不用担心我们的APP上线前通过了工信部ICP备案合法合规运行不存在非法经营活动遵守互联网信息服务管理办法有健全的网络与信息安全保障措施包括网站安全保障措施信息安全保密管理制度用户信息安全管理制度备案号为粤ICP备12008876号查询地址https://beian.miit.gov.cn/#/Integrated/recordQuery</li>
</ul>
<LongPicSplit :original-width="1080"
:original-height="600" src="https://images.health.ufutx.com/202408/16/d2b5ca33bd970f64a6301fa75ae2eb221723776441977.jpeg"></LongPicSplit>
<ul>
<li>非手机系统应用商城下载安装权限开放过程中会存在一些风险提醒不排除存在对外来合法合规APP安装过程中提示过多风险提示信息以引起用户注意达到保护用户隐私安全目的但这并不代表APP本身运行有问题认准本公司提供的链接安装的APP不会存在违法违规行为请放心使用</li>
</ul>
<h3 id="_4-我反馈的问题会不会石沉大海" tabindex="-1"><a class="header-anchor" href="#_4-我反馈的问题会不会石沉大海"><span>4. 我反馈的问题会不会石沉大海</span></a></h3>
<p>您反馈的问题我们会认真处理</p>
<ul>
<li>反馈渠道通过APP内我的意见反馈提交的问题客服将在1-3个工作日内回复</li>
<li>进度查询可在意见反馈页面查看问题处理进度</li>
<li>投诉建议若对处理结果不满意可拨打客服热线XXX-XXXXXXX投诉我们将重新核查并优化处理</li>
<li>亲爱的测试官您好有任何问题或建议我们都会认真对待并全力解决感恩每一位测试官的反馈与配合每一次反馈都会让我们的产品变得更好更优秀让我们满心欢喜一同陪伴并见证这一成长过程</li>
</ul>
<h3 id="_5-ios使用app卡在启动页怎么办" tabindex="-1"><a class="header-anchor" href="#_5-ios使用app卡在启动页怎么办"><span>5. iOS使用app卡在启动页怎么办</span></a></h3>
<p>若iOS设备上友福同享APP卡在启动页可尝试</p>
<ul>
<li>强制关闭并重新打开</li>
<li>检查网络确保手机已连接稳定的Wi-Fi或移动数据</li>
<li>重启APP双击 iPhone 主屏幕 按钮全面屏设备从屏幕底部边缘向上轻扫并停顿打开多任务处理界面在多任务处理界面中找到出现问题的 App 卡片向上滑动该卡片将其关闭然后再次点击该 App 的图标重新打开看是否能正常进入</li>
<li>重启手机长按电源键重启设备后再试</li>
<li>卸载重装若仍未解决卸载APP后从App Store重新下载安装注意卸载前请备份重要数据</li>
</ul>
<h3 id="_6-【苹果系统】友福同享app授权教程" tabindex="-1"><a class="header-anchor" href="#_6-【苹果系统】友福同享app授权教程"><span>6. 苹果系统友福同享App授权教程</span></a></h3>
<p>苹果系统友福同享APP授权步骤如下含图片指引实际请查看APP内教程或联系客服获取图文说明</p>
<LongPicSplit :original-width="1080"
:original-height="5850" src="https://images.health.ufutx.com/202507/29/aa09381424471a557f2605407ee935e1.png"></LongPicSplit>
<h3 id="_7-【安卓系统】友福同享app授权教程" tabindex="-1"><a class="header-anchor" href="#_7-【安卓系统】友福同享app授权教程"><span>7. 安卓系统友福同享App授权教程</span></a></h3>
<p>安卓系统友福同享APP授权步骤如下含图片指引实际请查看APP内教程或联系客服获取图文说明</p>
<LongPicSplit :original-width="1080"
:original-height="6200" src="https://images.health.ufutx.com/202507/29/cb6340eeacec529c6615401a55420f46.png"></LongPicSplit>
<h3 id="_8-苹果手机如何开通-友福同享-app有消息提醒" tabindex="-1"><a class="header-anchor" href="#_8-苹果手机如何开通-友福同享-app有消息提醒"><span>8. 苹果手机如何开通友福同享app有消息提醒</span></a></h3>
<p>苹果系统友福同享APP开通友福同享app有消息提醒步骤如下含图片指引实际请查看APP内教程或联系客服获取图文说明</p>
<LongPicSplit :original-width="1080"
:original-height="10600" src="https://images.health.ufutx.com/202511/04/d063af9479225cf4246298dc0ddf20a0.jpeg"></LongPicSplit>
<h3 id="_9-苹果手机智能手环无法再境外版流畅使用" tabindex="-1"><a class="header-anchor" href="#_9-苹果手机智能手环无法再境外版流畅使用"><span>9. 苹果手机智能手环无法再境外版流畅使用</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="12000" src="https://images.health.ufutx.com/202512/10/451a141ad0a93806b429d78b307f8613.jpeg"></LongPicSplit>
<h3 id="_10-dma用户使用腾讯视频会议-有80-用户无法顺利进入会议室。" tabindex="-1"><a class="header-anchor" href="#_10-dma用户使用腾讯视频会议-有80-用户无法顺利进入会议室。"><span>10. DMA用户使用腾讯视频会议有80%用户无法顺利进入会议室</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="4950" src="https://images.health.ufutx.com/202512/10/90b47e720399453dd2eab3e952566c73.jpeg"></LongPicSplit>
<LongPicSplit :original-width="1080"
:original-height="2200" src="https://images.health.ufutx.com/202512/10/edcbd38be82666ebf55edcbd82601666.jpeg"></LongPicSplit>
<h2 id="四、智能手环小知识分享" tabindex="-1"><a class="header-anchor" href="#四、智能手环小知识分享"><span>智能手环小知识分享</span></a></h2>
<h3 id="手环小知识-1-首次使用手环-应如何完成app绑定" tabindex="-1"><a class="header-anchor" href="#手环小知识-1-首次使用手环-应如何完成app绑定"><span>手环小知识-1首次使用手环应如何完成APP绑定</span></a></h3>
<ol>
<li>手环先充电</li>
<li>充电时请将手环机芯背面的两个金属触点对准充电槽的触点插入接通电源后手环侧面指示灯亮起表示充电正常</li>
<li>请注意不要佩戴在手上操作绑定时需将手环置于充电器中并将友福同享APP打开点击服务群聊中使用手环按钮手机靠近手环进行激活绑定</li>
</ol>
<h3 id="手环小知识-2-手环日常使用-突然断连是什么原因" tabindex="-1"><a class="header-anchor" href="#手环小知识-2-手环日常使用-突然断连是什么原因"><span>手环小知识-2手环日常使用突然断连是什么原因</span></a></h3>
<ol>
<li>检查蓝牙是否关掉了请打开</li>
<li>检查手环电池电量如果完全耗尽手环会断开与App的连接此时需充电10小时以上并重新连接友福同享APP</li>
<li>提醒当电量低于5%蓝牙将断开请在电量20%时及时充电</li>
</ol>
<h3 id="手环小知识-3-智能手环显示的温度是人体真实温度吗" tabindex="-1"><a class="header-anchor" href="#手环小知识-3-智能手环显示的温度是人体真实温度吗"><span>手环小知识-3智能手环显示的温度是人体真实温度吗</span></a></h3>
<ol>
<li>智能手环显示的是体表温度即环境温度与用户体温的综合反映它会被环境温度所影响</li>
<li>其价值不在于提供与医用体温计同等的精确数值而在于通过长期连续的监测建立个人体温基线并及时发现偏离基线的异常趋势实现健康预警与追踪</li>
</ol>
<h3 id="手环小知识-4-智能手环保持静止时-会被记录为睡眠数据-导致睡眠数据不准-对吗" tabindex="-1"><a class="header-anchor" href="#手环小知识-4-智能手环保持静止时-会被记录为睡眠数据-导致睡眠数据不准-对吗"><span>手环小知识-4智能手环保持静止时会被记录为睡眠数据导致睡眠数据不准对吗</span></a></h3>
<ol>
<li>是的长时间静止确实可能被计入睡眠数据</li>
<li>手环并非直接知道你是否入睡而是通过监测身体动作心率变化等线索来推测睡眠状态<br>
在长期睡眠趋势分析上具有较高参考价值例如
<ul>
<li>深睡眠时长的变化趋势</li>
<li>夜间醒来次数的增减</li>
<li>睡眠规律是否改善等</li>
</ul>
</li>
</ol>
<h3 id="手环小知识-5-手环电池休眠原理" tabindex="-1"><a class="header-anchor" href="#手环小知识-5-手环电池休眠原理"><span>手环小知识-5手环电池休眠原理</span></a></h3>
<ol>
<li>为确保电量显示准确首次使用请连接充电器持续充电10小时以上完成电池电路校准</li>
<li>由于长期仓储可能导致电池进入休眠保护状态电量统计芯片需通过完整充放电循环重新标定否则电量显示可能不准确</li>
<li>前几次充放电为手环自动校准奠定基础</li>
</ol>
<h3 id="手环小知识-6-用户使用的手环防水吗" tabindex="-1"><a class="header-anchor" href="#手环小知识-6-用户使用的手环防水吗"><span>手环小知识-6用户使用的手环防水吗</span></a></h3>
<ol>
<li>支持防水可在10米水深内持续使用2小时日常洗手游泳均可佩戴</li>
<li>不支持洗澡时佩戴因水蒸气可能进入机芯导致损坏即防水但不防蒸汽</li>
</ol>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/assistantCoach.html.vue"
const data = JSON.parse("{\"path\":\"/posts/assistantCoach.html\",\"title\":\"副教练\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1773297785000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":5}],\"changelog\":[{\"hash\":\"263c4a87d2a7384f0740862be100870b4396fc14\",\"time\":1773297785000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"8f0f08771e3748002699aa33318dbae7e39a397f\",\"time\":1760424178000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新职责\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/assistantCoach.md\"}")
export { comp, data }

View File

@ -0,0 +1,162 @@
<template><div><h1 id="副教练" tabindex="-1"><a class="header-anchor" href="#副教练"><span>副教练</span></a></h1>
<h2 id="核心指引" tabindex="-1"><a class="header-anchor" href="#核心指引"><span>核心指引</span></a></h2>
<ol>
<li><strong>以终为始</strong>无论用户购买何种价位体验结束时应能自我驾驶身体这部豪华轿车副教练所有服务动作必须围绕这一目标展开</li>
<li><strong>过程方向</strong>深度了解用户生活饮食作息习惯<strong>不过度改变</strong>其原有模式下帮助用户把方案落地最终形成<strong>独一无二且可持续</strong>的个人健康解决方案</li>
<li><strong>问题导向</strong>训练并具备遇到问题 解决问题的能力并带领用户一起经历享受解决问题的过程让用户不再害怕问题</li>
<li><strong>态度要求</strong>
<ul>
<li>回答及时积极主动随时观察客户状态再回复<strong>禁止坐等答案或装作没看见</strong></li>
<li>遇到不会的问题<strong>先在内部群不交叉讨论</strong>确认后回复用户</li>
</ul>
</li>
<li><strong>专业能力</strong>
<ul>
<li>不清楚立即寻求主教练 / 客服支持</li>
<li>持续优化专业术语与服务精准度</li>
<li>面对不同客户灵活应变</li>
</ul>
</li>
<li><strong>深度服务</strong>温度 &gt; 流程
<ul>
<li>6-1 视频会议客户有空立即发起<strong>不以凑人数为由改期</strong>会后30分钟内在内部群同步纪要</li>
<li>6-2 生活化沟通三餐吃什么喜好/忌口食材故事等</li>
<li>6-3 深挖根源不吃猪肉追问原因宗教/过敏/故事</li>
<li>6-4 不适询问胃疼简单归因为调理反应需问频率痛感持续时间既往史等</li>
</ul>
</li>
<li><strong>客户静默处理</strong>
<ul>
<li>7-1 先微信 再电话/视频每一步操作前<strong>请示主教练或客服</strong></li>
<li>7-2 仍联系不上<strong>报公司启动服务暂停</strong></li>
</ul>
</li>
</ol>
<hr>
<h2 id="服务红线-一经触碰-立即整改-停单-再培训" tabindex="-1"><a class="header-anchor" href="#服务红线-一经触碰-立即整改-停单-再培训"><span>服务红线一经触碰立即整改/停单/再培训</span></a></h2>
<ol>
<li><strong>禁止流程化复制粘贴式服务</strong>
<ul>
<li>1-1 发完餐单就消失主教练2次提醒无改善交管理层处理中止服务/减单/再培训</li>
<li>1-2 群发千篇一律话术满屏表情视为不走心同等处理</li>
</ul>
</li>
<li><strong>不主动让用户停药</strong>确需调整团队会议确认</li>
<li><strong>禁止治病话术</strong>杜绝治疗治愈替代药物等表述</li>
<li><strong>不强制指令</strong>只给指导建议步数/运动达不到时引导重要性即可</li>
<li><strong>不擅作主张</strong>所有关键决策先内部同步</li>
<li><strong>不打乱沟通节奏</strong>
<ul>
<li>6-1 用户讨论A话题时其他教练不中途插话B话题等A话题结束后再继续</li>
</ul>
</li>
<li><strong>禁止直接发送带AI痕迹的原文</strong>
<ul>
<li>7-1 AI答案需转化为DMA逻辑 + 用户听得懂的大白话无法判断时内部群把关</li>
</ul>
</li>
<li><strong>信息/图片一致性</strong>
<ul>
<li>8-1 蛋白粉图片前期3-5天即可后期用语言提醒<strong>禁止继续使用含49旧图</strong>6月起已换友福同享logo</li>
<li>8-2 不得私自制作营养素图片如需向公司申请统一制作</li>
</ul>
</li>
<li><strong>禁止过度图片轰炸</strong>保持沟通专业与美观</li>
</ol>
<h2 id="工作职责与流程" tabindex="-1"><a class="header-anchor" href="#工作职责与流程"><span>工作职责与流程</span></a></h2>
<ol>
<li>49天指导用户学会使用健康DMA方案</li>
<li>标注方案开始时间与结束时间</li>
<li>指导用户学会使用友福体脂秤智能手环并分享数据在服务群</li>
<li>每天16:00-18:00之间给用户发第二天的餐单向用户详细说明如何使用营养产品餐单及注意事项等</li>
<li>每天早上与用户打招呼问好并在节日送上祝福和关心问候</li>
<li>每天及时关注用户数据如有异常需要马上跟进</li>
<li>关注用户提出的问题及时进行解答遇到无法解答需要在用户聊天的内部群里寻找主教练或客服的指导与建议</li>
<li>方案结束后及时向用户发送结束语和后续注意事项</li>
<li>请与教练团队确认服务用户是否需在一个月后复检如需请在结束语中通知用户</li>
<li>方案结束后仍需持续跟进3个月每周一与用户进行互动</li>
<li>方案结束后完成用户第3天60天的复盘评估表</li>
<li>方案结束后完成内部教练的复盘服务评价表</li>
</ol>
<h2 id="如何成为副教练" tabindex="-1"><a class="header-anchor" href="#如何成为副教练"><span>如何成为副教练</span></a></h2>
<h3 id="一、获取考试资格" tabindex="-1"><a class="header-anchor" href="#一、获取考试资格"><span>获取考试资格</span></a></h3>
<ol>
<li><strong>操作指引</strong><br>
扫描下方客服二维码添加官方客服发送副教练考试报名按指引登记个人信息并支付5800元含两项考试所有费用无额外支出保存缴费凭证截图</li>
<li><strong>注意事项</strong><br>
客服24小时内确认报名费用一次性收取不可退改报名成功后同步考试网站登录权限</li>
</ol>
<h3 id="二、完成两项必备考试" tabindex="-1"><a class="header-anchor" href="#二、完成两项必备考试"><span>完成两项必备考试</span></a></h3>
<h4 id="_1-身心健康管理师考试-官网直考" tabindex="-1"><a class="header-anchor" href="#_1-身心健康管理师考试-官网直考"><span>1身心健康管理师考试官网直考</span></a></h4>
<ol>
<li><strong>操作指引</strong><br>
登录考试网站 <a href="https://www.ufutx.com/#/examHome" target="_blank" rel="noopener noreferrer">https://www.ufutx.com/#/examHome</a> 线9060</li>
<li><strong>证书申请</strong><br>
考试通过后在网站我的证书板块点击申请电子证3个工作日内生成电子版证书可自行下载保存</li>
<li><strong>注意事项</strong><br>
考试需开启摄像头监考缺考可在7天内申请1次免费补考</li>
</ol>
<h4 id="_2-营养指导员考试-第三方组织-含在5800元内" tabindex="-1"><a class="header-anchor" href="#_2-营养指导员考试-第三方组织-含在5800元内"><span>2营养指导员考试第三方组织含在5800元内</span></a></h4>
<ol>
<li><strong>操作指引</strong><br>
联系客服获取第三方考试平台链接及报名指引按要求提交资料身份证报名信息后参加考试考试合格后将成绩截图发送给客服登记</li>
<li><strong>证书说明</strong><br>
成绩确认后第三方机构将在2-3个月内发放证书客服会同步进度证书寄达后需拍照反馈至客服存档</li>
<li><strong>注意事项</strong><br>
考试流程以第三方平台规则为准客服全程协助解决报名疑问无需额外支付费用</li>
</ol>
<h3 id="三、完成认证入职" tabindex="-1"><a class="header-anchor" href="#三、完成认证入职"><span>完成认证入职</span></a></h3>
<ol>
<li><strong>操作指引</strong><br>
两项考试均合格后将身心健康管理师电子证营养指导员成绩截图或证书发送给客服审核通过后由DMA服务团队安排入职培训培训合格即正式成为副教练</li>
<li><strong>注意事项</strong><br>
证书需在有效期内一般为2年过期需重新考试</li>
</ol>
<p>客服二维码图示<br>
<img src="https://images.health.ufutx.com/202505/14/5b720a7d07e87354b96c2094d948bb9a.png" alt="友福同享客服二维码"></p>
<p><strong>考试网站<a href="https://www.ufutx.com/#/examHome" target="_blank" rel="noopener noreferrer">https://www.ufutx.com/#/examHome</a></strong></p>
<h2 id="dma职责" tabindex="-1"><a class="header-anchor" href="#dma职责"><span>DMA职责</span></a></h2>
<h3 id="一-转发每日餐单" tabindex="-1"><a class="header-anchor" href="#一-转发每日餐单"><span>转发每日餐单</span></a></h3>
<p>登录友福同享商务端APP进入对应服务群服务流程方案中转发每日餐单发送每日餐单</p>
<img src="https://images.health.ufutx.com/202512/23/0b7433844c55a221c8a83db3d6e853a3.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="二-转发体脂称" tabindex="-1"><a class="header-anchor" href="#二-转发体脂称"><span>转发体脂称</span></a></h3>
<p>转发友福体脂称操作视频指导用户完成设备绑定步骤下载 APP蓝牙配对输入个人信息确认数据可同步至服务群</p>
<img src="https://images.health.ufutx.com/202512/23/f6c6752c08f1638e0a48bf6ebec68690.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="三-转发手环使用指导" tabindex="-1"><a class="header-anchor" href="#三-转发手环使用指导"><span>转发手环使用指导</span></a></h3>
<p>参照友福手环操作手册通过群聊演示设备激活数据同步运动 / 睡眠数据流程确保用户掌握每日数据查看方法</p>
<img src="https://images.health.ufutx.com/202512/23/376c844bc594e568a06e7e7775cf0c8e.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="三-解答专业疑问" tabindex="-1"><a class="header-anchor" href="#三-解答专业疑问"><span>解答专业疑问</span></a></h3>
<p>①每日 9:00 前发送个性化问候结合天气 / 用户状态 今日降温晨练建议加件外套②节假日发送定制祝福如糖尿病用户中秋快乐推荐您尝试无糖月饼</p>
<p>解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练</p>
<p>客户对解答存疑 与之前说法不一致立即核对历史记录若确有偏差致歉并重新解释之前表述不够准确正确方式是</p>
<img src="https://images.health.ufutx.com/202512/23/5323081878556e45dd22b21de9cfe3e8.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h3 id="四-解答专业疑问" tabindex="-1"><a class="header-anchor" href="#四-解答专业疑问"><span>解答专业疑问</span></a></h3>
<p>解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练
解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练</p>
<h3 id="五-解答专业疑问" tabindex="-1"><a class="header-anchor" href="#五-解答专业疑问"><span>解答专业疑问</span></a></h3>
<p>解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练解答需专业准确避免提供错误指导涉及方案核心调整的需先请示主教练</p>
<h3 id="六-解答专业疑问" tabindex="-1"><a class="header-anchor" href="#六-解答专业疑问"><span>解答专业疑问</span></a></h3>
<h2 id="信息保密规范" tabindex="-1"><a class="header-anchor" href="#信息保密规范"><span>信息保密规范</span></a></h2>
<h3 id="_1-保密范围" tabindex="-1"><a class="header-anchor" href="#_1-保密范围"><span>1. 保密范围</span></a></h3>
<p>所有工作人员必须严格保密用户在服务过程中产生的全部个人信息包括但不限于</p>
<ul>
<li>用户基本信息姓名身份证号联系方式等</li>
<li>职业与职务信息</li>
<li>体检报告健康问卷及任何身体/健康数据</li>
<li>个人方案服务群聊天记录数据变化方案后问卷调查表等内部资料</li>
</ul>
<p><strong>可分享内容</strong>本人或家人身体情况照片公司已正式发布的对外宣传画册</p>
<h3 id="_2-授权要求" tabindex="-1"><a class="header-anchor" href="#_2-授权要求"><span>2. 授权要求</span></a></h3>
<p>因业务宣传等任何目的需对外披露用户相关信息时必须</p>
<ol>
<li>事先取得用户本人<strong>书面授权</strong></li>
<li>对分享内容进行<strong>充分匿名化</strong>处理</li>
</ol>
<h3 id="_3-责任与义务" tabindex="-1"><a class="header-anchor" href="#_3-责任与义务"><span>3. 责任与义务</span></a></h3>
<ul>
<li>保密义务在方案结束后仍然有效</li>
<li>任何违反本规范的行为均视为<strong>严重违纪</strong>公司保留追究<strong>法律责任</strong>的权利</li>
</ul>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/behaviorRecord.html.vue"
const data = JSON.parse("{\"path\":\"/posts/behaviorRecord.html\",\"title\":\"服务人员行为记录\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"服务人员行为记录\",\"description\":\"指导如何在 DMA 服务群中记录服务人员的行为表现\",\"sidebarDepth\":2},\"git\":{\"updatedTime\":1768282379000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":2}],\"changelog\":[{\"hash\":\"66f79e6de026448817b55bd6969c15fd05e5a53c\",\"time\":1768282379000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"e33125e761c68b1bfc4fe2e521992fbf42c49f20\",\"time\":1768184350000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/behaviorRecord.md\"}")
export { comp, data }

View File

@ -0,0 +1,96 @@
<template><div><h1 id="服务人员行为记录" tabindex="-1"><a class="header-anchor" href="#服务人员行为记录"><span>服务人员行为记录</span></a></h1>
<p>旨在指导服务人员如何在 <strong>DMA 服务群</strong> 根据其他服务人员发送的消息内容正确记录其行为类型正向激励 / 改进提醒并提交至系统进行后续处理</p>
<hr>
<h2 id="一、操作流程概览" tabindex="-1"><a class="header-anchor" href="#一、操作流程概览"><span>操作流程概览</span></a></h2>
<ol>
<li>进入对应的 <strong>DMA 服务群</strong>蓝志辉2服务群</li>
<li>观察服务人员发送的沟通内容</li>
<li>在聊天界面底部点击<strong>行为记录</strong>胶囊按钮</li>
<li>填写行为类型人员姓名事由及上传凭证</li>
<li>提交记录等待后台审核与处理</li>
</ol>
<blockquote>
<p> 提示提交后不可修改请确保信息真实准确</p>
</blockquote>
<hr>
<h2 id="二、操作步骤详解" tabindex="-1"><a class="header-anchor" href="#二、操作步骤详解"><span>操作步骤详解</span></a></h2>
<h3 id="步骤-1-进入服务群" tabindex="-1"><a class="header-anchor" href="#步骤-1-进入服务群"><span>步骤 1进入服务群</span></a></h3>
<ul>
<li>打开 App找到对应的服务群组例如
<ul>
<li><code v-pre>蓝志辉2服务群(5)</code></li>
</ul>
</li>
<li>确保当前群组为所要记录行为的服务对象所在群</li>
</ul>
<p><img src="https://images.health.ufutx.com/202601/09/4eed29dcbae2ca44c0a2e0478ad4f337.jpg" alt="服务群截图"><br>
<em>图示服务群聊天界面底部有行为记录按钮</em></p>
<hr>
<h3 id="步骤-2-识别服务人员消息" tabindex="-1"><a class="header-anchor" href="#步骤-2-识别服务人员消息"><span>步骤 2识别服务人员消息</span></a></h3>
<p>观察服务人员发送的内容是否具备以下特征</p>
<table>
<thead>
<tr>
<th>行为类型</th>
<th>判断依据</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>正向激励</strong></td>
<td>消息内容积极正面例如<br> 主动关怀客户健康<br> 提供专业建议<br> 及时响应需求<br> 获得用户好评</td>
</tr>
<tr>
<td><strong>改进提醒</strong></td>
<td>消息存在可优化空间例如<br> 内容重复发送<br> 回应不及时<br> 语气生硬或缺乏温度<br> 用户反馈需调整</td>
</tr>
</tbody>
</table>
<hr>
<h3 id="步骤-3-点击「行为记录」按钮" tabindex="-1"><a class="header-anchor" href="#步骤-3-点击「行为记录」按钮"><span>步骤 3点击行为记录按钮</span></a></h3>
<p>在聊天界面底部点击<strong>行为记录</strong>按钮进入记录页面</p>
<p><img src="https://images.health.ufutx.com/202601/09/e60c49c6bc56c7cde54c735f1c5e5c18.jpg" alt="行为记录页面"></p>
<hr>
<h3 id="步骤-4-填写行为记录表单" tabindex="-1"><a class="header-anchor" href="#步骤-4-填写行为记录表单"><span>步骤 4填写行为记录表单</span></a></h3>
<p>进入服务人员行为记录页面后按以下字段填写</p>
<h4 id="_1-行为类型" tabindex="-1"><a class="header-anchor" href="#_1-行为类型"><span>1. 行为类型</span></a></h4>
<p>选择一项</p>
<ul>
<li> <strong>正向激励</strong></li>
<li> <strong>改进提醒</strong></li>
</ul>
<h4 id="_2-服务人员姓名" tabindex="-1"><a class="header-anchor" href="#_2-服务人员姓名"><span>2. 服务人员姓名</span></a></h4>
<p>从列表中选择实际发送消息的服务人员</p>
<blockquote>
<p>💡 提示请根据聊天记录中的昵称或头像确认姓名</p>
</blockquote>
<h4 id="_3-行为事由" tabindex="-1"><a class="header-anchor" href="#_3-行为事由"><span>3. 行为事由</span></a></h4>
<p>简要描述行为原因</p>
<h4 id="_4-凭证上传" tabindex="-1"><a class="header-anchor" href="#_4-凭证上传"><span>4. 凭证上传</span></a></h4>
<p>点击点击上传上传相关证据</p>
<ul>
<li>聊天截图</li>
<li>对话记录</li>
<li>其他支持材料</li>
</ul>
<blockquote>
<p>🔍 建议上传包含时间戳和完整上下文的截图便于审核</p>
</blockquote>
<hr>
<h3 id="步骤-5-提交记录" tabindex="-1"><a class="header-anchor" href="#步骤-5-提交记录"><span>步骤 5提交记录</span></a></h3>
<p>填写完毕后点击<strong>提交记录</strong>按钮</p>
<blockquote>
<p> 注意提交后将由专人核验真实性<strong>暂不支持修改</strong>请谨慎提交</p>
</blockquote>
<hr>
<h2 id="三、注意事项" tabindex="-1"><a class="header-anchor" href="#三、注意事项"><span>注意事项</span></a></h2>
<ul>
<li>仅针对 <strong>服务人员</strong> 发送的消息进行记录非服务人员行为不纳入</li>
<li>每条记录需基于具体事实避免主观臆断</li>
<li>若发现同一行为多次出现可分别记录不同时间段的情况</li>
<li>所有记录将用于服务质量评估与员工成长反馈</li>
</ul>
<hr>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/changelog.html.vue"
const data = JSON.parse("{\"path\":\"/posts/changelog.html\",\"title\":\"更新日志\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1768282379000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":9}],\"changelog\":[{\"hash\":\"66f79e6de026448817b55bd6969c15fd05e5a53c\",\"time\":1768282379000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"e33125e761c68b1bfc4fe2e521992fbf42c49f20\",\"time\":1768184350000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"acc531138f97433b765b2d0a43f9edb90f646da1\",\"time\":1765524799000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"第一版\"},{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"0d2f55f94a3eee13f09e8cc2505c98c31ef6437a\",\"time\":1764209898000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"6e27dcce01edcc47b1f9ceaf1fe1ec4485400ef7\",\"time\":1763004968000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"7799842e4c8bfd3bbd24d9cbc89c8ac4c28c918b\",\"time\":1761103662000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新\"}]},\"filePathRelative\":\"posts/changelog.md\"}")
export { comp, data }

View File

@ -0,0 +1,80 @@
<template><div><h1 id="更新日志" tabindex="-1"><a class="header-anchor" href="#更新日志"><span>更新日志</span></a></h1>
<h2 id="_2026年1月" tabindex="-1"><a class="header-anchor" href="#_2026年1月"><span>2026年1月</span></a></h2>
<h3 id="_2026-01-12" tabindex="-1"><a class="header-anchor" href="#_2026-01-12"><span>2026-01-12</span></a></h3>
<h4 id="更新" tabindex="-1"><a class="header-anchor" href="#更新"><span>更新</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/helpCenter.html#%E4%B8%89%E3%80%81dma%E7%94%A8%E6%88%B7%E5%8F%91%E8%B4%A7%E5%8F%8A%E6%8D%A2%E8%B4%A7%E6%B5%81%E7%A8%8B-v2" target="_blank" rel="noopener noreferrer">dma用户发货及换货流程-v2</a>dma用户发货及换货流程更新</li>
</ul>
<h3 id="_2026-01-09" tabindex="-1"><a class="header-anchor" href="#_2026-01-09"><span>2026-01-09</span></a></h3>
<h4 id="新增" tabindex="-1"><a class="header-anchor" href="#新增"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/behaviorRecord.html" target="_blank" rel="noopener noreferrer">服务人员行为记录</a>服务人员行为记录可根据服务人员的行为进行记录后续根据对应行为进行打分</li>
</ul>
<h2 id="_2025年12月" tabindex="-1"><a class="header-anchor" href="#_2025年12月"><span>2025年12月</span></a></h2>
<h3 id="_2025-12-23" tabindex="-1"><a class="header-anchor" href="#_2025-12-23"><span>2025-12-23</span></a></h3>
<h4 id="新增-1" tabindex="-1"><a class="header-anchor" href="#新增-1"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/appCorrelation.html#%E4%B8%89%E3%80%81%E5%8D%8E%E4%B8%BA%E7%BA%AF%E8%A1%80%E9%B8%BF%E8%92%99" target="_blank" rel="noopener noreferrer">华为纯血鸿蒙</a>华为纯血鸿蒙中安装友福同享APP操作说明以及打开蓝牙操作方便使用体脂称</li>
</ul>
<h3 id="_2025-12-11" tabindex="-1"><a class="header-anchor" href="#_2025-12-11"><span>2025-12-11</span></a></h3>
<h4 id="更新-1" tabindex="-1"><a class="header-anchor" href="#更新-1"><span>更新</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/overview.html#%E4%BA%8C-%E5%90%88%E5%90%8C%E7%AD%BE%E7%BD%B2%E4%B8%8E%E7%BE%A4%E8%81%8A%E6%90%AD%E5%BB%BA%E9%98%B6%E6%AE%B5" target="_blank" rel="noopener noreferrer">线下合同签署更新</a>线下合同增加说明需要双方签署在执行后续步骤</li>
</ul>
<h4 id="新增-2" tabindex="-1"><a class="header-anchor" href="#新增-2"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/appCorrelation.html#%E5%9B%9B%E3%80%81%E6%99%BA%E8%83%BD%E6%89%8B%E7%8E%AF%E5%B0%8F%E7%9F%A5%E8%AF%86%E5%88%86%E4%BA%AB" target="_blank" rel="noopener noreferrer">手环小知识</a>新增手环小知识对手环问题进行说明</li>
</ul>
<h3 id="_2025-12-10" tabindex="-1"><a class="header-anchor" href="#_2025-12-10"><span>2025-12-10</span></a></h3>
<h4 id="新增-3" tabindex="-1"><a class="header-anchor" href="#新增-3"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/appCorrelation.html#_9-%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA%E6%99%BA%E8%83%BD%E6%89%8B%E7%8E%AF%E6%97%A0%E6%B3%95%E5%86%8D%E5%A2%83%E5%A4%96%E7%89%88%E6%B5%81%E7%95%85%E4%BD%BF%E7%94%A8" target="_blank" rel="noopener noreferrer">苹果手机智能手环无法再境外版流畅使用</a>新增了苹果手机境外版智能手环因为时区问题无法再流畅使用的解决方法</li>
<li><a href="/go_html/dma_handbook/posts/appCorrelation.html#_10-dma%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91%E4%BC%9A%E8%AE%AE-%E6%9C%8980-%E7%94%A8%E6%88%B7%E6%97%A0%E6%B3%95%E9%A1%BA%E5%88%A9%E8%BF%9B%E5%85%A5%E4%BC%9A%E8%AE%AE%E5%AE%A4%E3%80%82" target="_blank" rel="noopener noreferrer">dma用户使用腾讯视频会议</a>新增了dma用户使用腾讯视频会议详情说明</li>
</ul>
<h3 id="_2025-12-3" tabindex="-1"><a class="header-anchor" href="#_2025-12-3"><span>2025-12-3</span></a></h3>
<h4 id="新增-4" tabindex="-1"><a class="header-anchor" href="#新增-4"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/agent.html" target="_blank" rel="noopener noreferrer">代理商添加方式</a>新增了有关如何添加代理商的说明</li>
<li><a href="/go_html/dma_handbook/posts/userServiceProcess.html" target="_blank" rel="noopener noreferrer">用户服务流程说明</a>新增了详细的用户服务流程说明</li>
</ul>
<h2 id="_2025年11月" tabindex="-1"><a class="header-anchor" href="#_2025年11月"><span>2025年11月</span></a></h2>
<h3 id="_2025-11-26" tabindex="-1"><a class="header-anchor" href="#_2025-11-26"><span>2025-11-26</span></a></h3>
<h4 id="新增-5" tabindex="-1"><a class="header-anchor" href="#新增-5"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/examReservation.html" target="_blank" rel="noopener noreferrer">健康DMA人体驾照考试报名操作指南</a>新增了关于如何报名参加健康DMA人体驾照考试的操作指南</li>
<li><a href="/go_html/dma_handbook/posts/DMAModule.html#%E5%85%AD%E3%80%81dma%E4%BB%B7%E6%A0%BC%E6%9B%B4%E6%96%B0" target="_blank" rel="noopener noreferrer">DMA价格更新</a>自11月24日起DMA的价格进行了调整</li>
</ul>
<h3 id="_2025-11-18" tabindex="-1"><a class="header-anchor" href="#_2025-11-18"><span>2025-11-18</span></a></h3>
<h4 id="新增-6" tabindex="-1"><a class="header-anchor" href="#新增-6"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/DMAModule.html#%E4%BA%8C%E3%80%81%E8%90%A5%E5%85%BB%E7%B4%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95-%E5%BF%AB%E6%8D%B7%E5%9B%BE%E7%89%87%E6%9F%A5%E6%89%BE%E4%B8%8E%E5%8F%91%E9%80%81" target="_blank" rel="noopener noreferrer">DMA相关-营养素使用方法快捷图片查找与发送</a>增加了快捷图片查找和发送功能方便用户查询营养素使用方法</li>
<li><a href="/go_html/dma_handbook/posts/DMAModule#%E4%B8%89%E3%80%81%E5%A4%8D%E7%9B%98%E8%AF%84%E4%BC%B0" target="_blank" rel="noopener noreferrer">DMA相关-复盘评估</a>方案结束后对用户的复盘评估分别设置了3天和60天的评估表</li>
<li><a href="/go_html/dma_handbook/posts/DMAModule#%E5%9B%9B%E3%80%81%E8%AE%BE%E7%BD%AE%E7%94%A8%E6%88%B7%E6%96%B9%E6%A1%88%E8%B5%B7%E5%A7%8B%E6%97%A5%E4%B8%8E%E7%BB%93%E6%9D%9F%E6%97%A5" target="_blank" rel="noopener noreferrer">DMA相关-用户方案起始日与结束日</a>涉及用户方案的开始和结束日期设定与服务费挂钩需副教练操作</li>
<li><a href="/go_html/dma_handbook/posts/DMAModule#%E4%BA%94%E3%80%81%E7%94%A8%E6%88%B7%E4%B8%8A%E4%BC%A0%E6%95%B0%E6%8D%AE%E6%9F%A5%E7%9C%8B" target="_blank" rel="noopener noreferrer">DMA相关-用户上传数据查看</a>提供用户上传的数据查看说明</li>
</ul>
<h3 id="_2025-11-13" tabindex="-1"><a class="header-anchor" href="#_2025-11-13"><span>2025-11-13</span></a></h3>
<h4 id="新增-7" tabindex="-1"><a class="header-anchor" href="#新增-7"><span>新增</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/DMAModule.html#%E4%B8%80%E3%80%81%E7%89%B9%E6%AE%8A%E4%BB%B7%E6%A0%BC%E8%B4%AD%E4%B9%B0-20000%E5%8F%8A25800" target="_blank" rel="noopener noreferrer">DMA相关-特殊价格购买</a>允许以特殊价格20000及25800购买可以设置规格限制</li>
</ul>
<h3 id="_2025-11-06" tabindex="-1"><a class="header-anchor" href="#_2025-11-06"><span>2025-11-06</span></a></h3>
<h4 id="更新-2" tabindex="-1"><a class="header-anchor" href="#更新-2"><span>更新</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/appCorrelation.html#%E4%B8%80%E3%80%81app%E6%B6%88%E6%81%AF%E9%80%9A%E7%9F%A5" target="_blank" rel="noopener noreferrer">APP相关-消息通知</a>增加了开启APP通知消息的方式以及支持的平台便于快速了解是否支持APP消息通知</li>
<li><a href="/go_html/dma_handbook/posts/helpCenter.html#_18-%E5%85%B3%E4%BA%8E%E9%9A%90%E7%A7%81%E8%B4%A6%E5%8F%B7" target="_blank" rel="noopener noreferrer">DMA隐私账号相关</a>对DMA隐私账号相关内容进行了更新</li>
</ul>
<h3 id="_2025-11-04" tabindex="-1"><a class="header-anchor" href="#_2025-11-04"><span>2025-11-04</span></a></h3>
<h4 id="更新-3" tabindex="-1"><a class="header-anchor" href="#更新-3"><span>更新</span></a></h4>
<ul>
<li><a href="/go_html/dma_handbook/posts/helpCenter.html#%E4%B8%89-dma%E9%80%9A%E7%94%A8%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86%E5%8E%9F%E5%88%99-2025-11-03%E6%9B%B4%E6%96%B0" target="_blank" rel="noopener noreferrer">DMA通用问题处理原则2025-11-03更新</a>更新了DMA相关的通用问题处理原则</li>
<li>增加了<a href="/go_html/dma_handbook/posts/chiefCoach.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83" target="_blank" rel="noopener noreferrer">主教练-信息保密规范</a><a href="/go_html/dma_handbook/posts/assistantCoach.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83" target="_blank" rel="noopener noreferrer">副教练-信息保密规范</a><a href="/go_html/dma_handbook/posts/service.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83" target="_blank" rel="noopener noreferrer">客服-信息保密规范</a></li>
</ul>
<h2 id="_2025年10月" tabindex="-1"><a class="header-anchor" href="#_2025年10月"><span>2025年10月</span></a></h2>
<h3 id="_2025-10-17" tabindex="-1"><a class="header-anchor" href="#_2025-10-17"><span>2025-10-17</span></a></h3>
<h4 id="更新-4" tabindex="-1"><a class="header-anchor" href="#更新-4"><span>更新</span></a></h4>
<ul>
<li><a href="/#%E9%99%84%E5%BD%95-%E6%B5%81%E7%A8%8B%E8%8A%82%E7%82%B9%E6%97%B6%E6%95%88%E6%B1%87%E6%80%BB%E8%A1%A8" target="_blank" rel="noopener noreferrer">首页-附录</a>对流程节点时效汇总表进行了调整</li>
</ul>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/changelogV2.html.vue"
const data = JSON.parse("{\"path\":\"/posts/changelogV2.html\",\"title\":\"更新日志\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1773297785000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":11}],\"changelog\":[{\"hash\":\"263c4a87d2a7384f0740862be100870b4396fc14\",\"time\":1773297785000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"88720577da1423f5da911e33d2d9a6e5f8888191\",\"time\":1770945819000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"66f79e6de026448817b55bd6969c15fd05e5a53c\",\"time\":1768282379000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"e33125e761c68b1bfc4fe2e521992fbf42c49f20\",\"time\":1768184350000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"acc531138f97433b765b2d0a43f9edb90f646da1\",\"time\":1765524799000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"第一版\"},{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"0d2f55f94a3eee13f09e8cc2505c98c31ef6437a\",\"time\":1764209898000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"6e27dcce01edcc47b1f9ceaf1fe1ec4485400ef7\",\"time\":1763004968000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"7799842e4c8bfd3bbd24d9cbc89c8ac4c28c918b\",\"time\":1761103662000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新\"}]},\"filePathRelative\":\"posts/changelogV2.md\"}")
export { comp, data }

View File

@ -0,0 +1,97 @@
<template><div><h1 id="更新日志" tabindex="-1"><a class="header-anchor" href="#更新日志"><span>更新日志</span></a></h1>
<h2 id="_2026年3月" tabindex="-1"><a class="header-anchor" href="#_2026年3月"><span>2026年3月</span></a></h2>
<h3 id="_2026-03-10" tabindex="-1"><a class="header-anchor" href="#_2026-03-10"><span>2026-03-10</span></a></h3>
<h4 id="更新" tabindex="-1"><a class="header-anchor" href="#更新"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/helpCenter.html#_2-%E5%8F%8B%E7%A6%8F%E5%95%86%E5%9F%8E%E8%AE%A2%E5%8D%95%E6%9F%A5%E7%9C%8B%E3%80%81%E5%92%A8%E8%AF%A2%E6%8C%87%E5%BC%95">友福商城订单查看咨询指引</RouteLink>友福商城增加订单查看咨询指引</li>
</ul>
<h2 id="_2026年2月" tabindex="-1"><a class="header-anchor" href="#_2026年2月"><span>2026年2月</span></a></h2>
<h3 id="_2026-02-12" tabindex="-1"><a class="header-anchor" href="#_2026-02-12"><span>2026-02-12</span></a></h3>
<h4 id="更新-1" tabindex="-1"><a class="header-anchor" href="#更新-1"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/shareBenefit.html#%E4%BA%94%E3%80%81%E5%BC%80%E7%A5%A8%E6%8C%87%E5%BC%95">分润提现增加开票指引</RouteLink>分润分成中增加开票指引对个人和深圳公司如何开票进行说明</li>
</ul>
<h3 id="_2026-02-09" tabindex="-1"><a class="header-anchor" href="#_2026-02-09"><span>2026-02-09</span></a></h3>
<h4 id="更新-2" tabindex="-1"><a class="header-anchor" href="#更新-2"><span>更新</span></a></h4>
<ul>
<li>增加右上角搜索功能</li>
</ul>
<h2 id="_2026年1月" tabindex="-1"><a class="header-anchor" href="#_2026年1月"><span>2026年1月</span></a></h2>
<h3 id="_2026-01-12" tabindex="-1"><a class="header-anchor" href="#_2026-01-12"><span>2026-01-12</span></a></h3>
<h4 id="更新-3" tabindex="-1"><a class="header-anchor" href="#更新-3"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/helpCenter.html#%E4%B8%89%E3%80%81dma%E7%94%A8%E6%88%B7%E5%8F%91%E8%B4%A7%E5%8F%8A%E6%8D%A2%E8%B4%A7%E6%B5%81%E7%A8%8B-v2">dma用户发货及换货流程-v2</RouteLink>dma用户发货及换货流程更新</li>
</ul>
<h3 id="_2026-01-09" tabindex="-1"><a class="header-anchor" href="#_2026-01-09"><span>2026-01-09</span></a></h3>
<h4 id="新增" tabindex="-1"><a class="header-anchor" href="#新增"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/behaviorRecord.html">服务人员行为记录</RouteLink>服务人员行为记录可根据服务人员的行为进行记录后续根据对应行为进行打分</li>
</ul>
<h2 id="_2025年12月" tabindex="-1"><a class="header-anchor" href="#_2025年12月"><span>2025年12月</span></a></h2>
<h3 id="_2025-12-23" tabindex="-1"><a class="header-anchor" href="#_2025-12-23"><span>2025-12-23</span></a></h3>
<h4 id="新增-1" tabindex="-1"><a class="header-anchor" href="#新增-1"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/appCorrelation.html#%E4%B8%89%E3%80%81%E5%8D%8E%E4%B8%BA%E7%BA%AF%E8%A1%80%E9%B8%BF%E8%92%99">华为纯血鸿蒙</RouteLink>华为纯血鸿蒙中安装友福同享APP操作说明以及打开蓝牙操作方便使用体脂称</li>
</ul>
<h3 id="_2025-12-11" tabindex="-1"><a class="header-anchor" href="#_2025-12-11"><span>2025-12-11</span></a></h3>
<h4 id="更新-4" tabindex="-1"><a class="header-anchor" href="#更新-4"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/overview.html#%E4%BA%8C-%E5%90%88%E5%90%8C%E7%AD%BE%E7%BD%B2%E4%B8%8E%E7%BE%A4%E8%81%8A%E6%90%AD%E5%BB%BA%E9%98%B6%E6%AE%B5">线下合同签署更新</RouteLink>线下合同增加说明需要双方签署在执行后续步骤</li>
</ul>
<h4 id="新增-2" tabindex="-1"><a class="header-anchor" href="#新增-2"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/appCorrelation.html#%E5%9B%9B%E3%80%81%E6%99%BA%E8%83%BD%E6%89%8B%E7%8E%AF%E5%B0%8F%E7%9F%A5%E8%AF%86%E5%88%86%E4%BA%AB">手环小知识</RouteLink>新增手环小知识对手环问题进行说明</li>
</ul>
<h3 id="_2025-12-10" tabindex="-1"><a class="header-anchor" href="#_2025-12-10"><span>2025-12-10</span></a></h3>
<h4 id="新增-3" tabindex="-1"><a class="header-anchor" href="#新增-3"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/appCorrelation.html#_9-%E8%8B%B9%E6%9E%9C%E6%89%8B%E6%9C%BA%E6%99%BA%E8%83%BD%E6%89%8B%E7%8E%AF%E6%97%A0%E6%B3%95%E5%86%8D%E5%A2%83%E5%A4%96%E7%89%88%E6%B5%81%E7%95%85%E4%BD%BF%E7%94%A8">苹果手机智能手环无法再境外版流畅使用</RouteLink>新增了苹果手机境外版智能手环因为时区问题无法再流畅使用的解决方法</li>
<li><RouteLink to="/posts/appCorrelation.html#_10-dma%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E8%85%BE%E8%AE%AF%E8%A7%86%E9%A2%91%E4%BC%9A%E8%AE%AE-%E6%9C%8980-%E7%94%A8%E6%88%B7%E6%97%A0%E6%B3%95%E9%A1%BA%E5%88%A9%E8%BF%9B%E5%85%A5%E4%BC%9A%E8%AE%AE%E5%AE%A4%E3%80%82">dma用户使用腾讯视频会议</RouteLink>新增了dma用户使用腾讯视频会议详情说明</li>
</ul>
<h3 id="_2025-12-3" tabindex="-1"><a class="header-anchor" href="#_2025-12-3"><span>2025-12-3</span></a></h3>
<h4 id="新增-4" tabindex="-1"><a class="header-anchor" href="#新增-4"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/agent.html">代理商添加方式</RouteLink>新增了有关如何添加代理商的说明</li>
<li><RouteLink to="/posts/userServiceProcess.html">用户服务流程说明</RouteLink>新增了详细的用户服务流程说明</li>
</ul>
<h2 id="_2025年11月" tabindex="-1"><a class="header-anchor" href="#_2025年11月"><span>2025年11月</span></a></h2>
<h3 id="_2025-11-26" tabindex="-1"><a class="header-anchor" href="#_2025-11-26"><span>2025-11-26</span></a></h3>
<h4 id="新增-5" tabindex="-1"><a class="header-anchor" href="#新增-5"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/examReservation.html">健康DMA人体驾照考试报名操作指南</RouteLink>新增了关于如何报名参加健康DMA人体驾照考试的操作指南</li>
<li><RouteLink to="/posts/DMAModule.html#%E5%85%AD%E3%80%81dma%E4%BB%B7%E6%A0%BC%E6%9B%B4%E6%96%B0">DMA价格更新</RouteLink>自11月24日起DMA的价格进行了调整</li>
</ul>
<h3 id="_2025-11-18" tabindex="-1"><a class="header-anchor" href="#_2025-11-18"><span>2025-11-18</span></a></h3>
<h4 id="新增-6" tabindex="-1"><a class="header-anchor" href="#新增-6"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/DMAModule.html#%E4%BA%8C%E3%80%81%E8%90%A5%E5%85%BB%E7%B4%A0%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95-%E5%BF%AB%E6%8D%B7%E5%9B%BE%E7%89%87%E6%9F%A5%E6%89%BE%E4%B8%8E%E5%8F%91%E9%80%81">DMA相关-营养素使用方法快捷图片查找与发送</RouteLink>增加了快捷图片查找和发送功能方便用户查询营养素使用方法</li>
<li><a href="/dma_handbook/posts/DMAModule#%E4%B8%89%E3%80%81%E5%A4%8D%E7%9B%98%E8%AF%84%E4%BC%B0">DMA相关-复盘评估</a>方案结束后对用户的复盘评估分别设置了3天和60天的评估表</li>
<li><a href="/dma_handbook/posts/DMAModule#%E5%9B%9B%E3%80%81%E8%AE%BE%E7%BD%AE%E7%94%A8%E6%88%B7%E6%96%B9%E6%A1%88%E8%B5%B7%E5%A7%8B%E6%97%A5%E4%B8%8E%E7%BB%93%E6%9D%9F%E6%97%A5">DMA相关-用户方案起始日与结束日</a>涉及用户方案的开始和结束日期设定与服务费挂钩需副教练操作</li>
<li><a href="/dma_handbook/posts/DMAModule#%E4%BA%94%E3%80%81%E7%94%A8%E6%88%B7%E4%B8%8A%E4%BC%A0%E6%95%B0%E6%8D%AE%E6%9F%A5%E7%9C%8B">DMA相关-用户上传数据查看</a>提供用户上传的数据查看说明</li>
</ul>
<h3 id="_2025-11-13" tabindex="-1"><a class="header-anchor" href="#_2025-11-13"><span>2025-11-13</span></a></h3>
<h4 id="新增-7" tabindex="-1"><a class="header-anchor" href="#新增-7"><span>新增</span></a></h4>
<ul>
<li><RouteLink to="/posts/DMAModule.html#%E4%B8%80%E3%80%81%E7%89%B9%E6%AE%8A%E4%BB%B7%E6%A0%BC%E8%B4%AD%E4%B9%B0-20000%E5%8F%8A25800">DMA相关-特殊价格购买</RouteLink>允许以特殊价格20000及25800购买可以设置规格限制</li>
</ul>
<h3 id="_2025-11-06" tabindex="-1"><a class="header-anchor" href="#_2025-11-06"><span>2025-11-06</span></a></h3>
<h4 id="更新-5" tabindex="-1"><a class="header-anchor" href="#更新-5"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/appCorrelation.html#%E4%B8%80%E3%80%81app%E6%B6%88%E6%81%AF%E9%80%9A%E7%9F%A5">APP相关-消息通知</RouteLink>增加了开启APP通知消息的方式以及支持的平台便于快速了解是否支持APP消息通知</li>
<li><RouteLink to="/posts/helpCenter.html#_18-%E5%85%B3%E4%BA%8E%E9%9A%90%E7%A7%81%E8%B4%A6%E5%8F%B7">DMA隐私账号相关</RouteLink>对DMA隐私账号相关内容进行了更新</li>
</ul>
<h3 id="_2025-11-04" tabindex="-1"><a class="header-anchor" href="#_2025-11-04"><span>2025-11-04</span></a></h3>
<h4 id="更新-6" tabindex="-1"><a class="header-anchor" href="#更新-6"><span>更新</span></a></h4>
<ul>
<li><RouteLink to="/posts/helpCenter.html#%E4%B8%89-dma%E9%80%9A%E7%94%A8%E9%97%AE%E9%A2%98%E5%A4%84%E7%90%86%E5%8E%9F%E5%88%99-2025-11-03%E6%9B%B4%E6%96%B0">DMA通用问题处理原则2025-11-03更新</RouteLink>更新了DMA相关的通用问题处理原则</li>
<li>增加了<RouteLink to="/posts/chiefCoach.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83">主教练-信息保密规范</RouteLink><RouteLink to="/posts/assistantCoach.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83">副教练-信息保密规范</RouteLink><RouteLink to="/posts/service.html#%E4%BF%A1%E6%81%AF%E4%BF%9D%E5%AF%86%E8%A7%84%E8%8C%83">客服-信息保密规范</RouteLink></li>
</ul>
<h2 id="_2025年10月" tabindex="-1"><a class="header-anchor" href="#_2025年10月"><span>2025年10月</span></a></h2>
<h3 id="_2025-10-17" tabindex="-1"><a class="header-anchor" href="#_2025-10-17"><span>2025-10-17</span></a></h3>
<h4 id="更新-7" tabindex="-1"><a class="header-anchor" href="#更新-7"><span>更新</span></a></h4>
<ul>
<li><a href="/#%E9%99%84%E5%BD%95-%E6%B5%81%E7%A8%8B%E8%8A%82%E7%82%B9%E6%97%B6%E6%95%88%E6%B1%87%E6%80%BB%E8%A1%A8" target="_blank" rel="noopener noreferrer">首页-附录</a>对流程节点时效汇总表进行了调整</li>
</ul>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/chiefCoach.html.vue"
const data = JSON.parse("{\"path\":\"/posts/chiefCoach.html\",\"title\":\"主教练\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1766471007000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":5}],\"changelog\":[{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"8f0f08771e3748002699aa33318dbae7e39a397f\",\"time\":1760424178000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新职责\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/chiefCoach.md\"}")
export { comp, data }

View File

@ -0,0 +1,43 @@
<template><div><h1 id="主教练" tabindex="-1"><a class="header-anchor" href="#主教练"><span>主教练</span></a></h1>
<h2 id="工作职责与流程" tabindex="-1"><a class="header-anchor" href="#工作职责与流程"><span>工作职责与流程</span></a></h2>
<ol>
<li>指导副教练怎么做一个合格的副教练含正确引导用户使用方案服务话术及时回复用户咨询的问题等</li>
<li>如遇到特殊情况问题副教练无法进行正确回答主教练需要直接进行回复用户</li>
<li>根据用户的体检报告和身体反馈提供具体的指导建议</li>
<li>审核客服编辑的餐单并设置每日餐单</li>
<li>带领主导用户群的视频会议</li>
<li>常与用户互动</li>
<li>节假日送上祝福和关心问候</li>
<li>方案结束后完成用户第3天60天的复盘评估表</li>
<li>方案结束后完成内部教练的复盘服务评价表</li>
</ol>
<h2 id="dma职责" tabindex="-1"><a class="header-anchor" href="#dma职责"><span>DMA职责</span></a></h2>
<h3 id="解答专业疑问" tabindex="-1"><a class="header-anchor" href="#解答专业疑问"><span>解答专业疑问</span></a></h3>
<p>客户在群内 / 私信咨询运动动作执行细节等问题时30 分钟内回应</p>
<p>解答需专业准确避免提供错误指导</p>
<p>客户对解答存疑 与之前说法不一致立即核对历史记录若确有偏差致歉并重新解释之前表述不够准确正确方式是</p>
<img src="https://images.health.ufutx.com/202512/23/5323081878556e45dd22b21de9cfe3e8.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
<h2 id="信息保密规范" tabindex="-1"><a class="header-anchor" href="#信息保密规范"><span>信息保密规范</span></a></h2>
<h3 id="_1-保密范围" tabindex="-1"><a class="header-anchor" href="#_1-保密范围"><span>1. 保密范围</span></a></h3>
<p>所有工作人员必须严格保密用户在服务过程中产生的全部个人信息包括但不限于</p>
<ul>
<li>用户基本信息姓名身份证号联系方式等</li>
<li>职业与职务信息</li>
<li>体检报告健康问卷及任何身体/健康数据</li>
<li>个人方案服务群聊天记录数据变化方案后问卷调查表等内部资料</li>
</ul>
<p><strong>可分享内容</strong>本人或家人身体情况照片公司已正式发布的对外宣传画册</p>
<h3 id="_2-授权要求" tabindex="-1"><a class="header-anchor" href="#_2-授权要求"><span>2. 授权要求</span></a></h3>
<p>因业务宣传等任何目的需对外披露用户相关信息时必须</p>
<ol>
<li>事先取得用户本人<strong>书面授权</strong></li>
<li>对分享内容进行<strong>充分匿名化</strong>处理</li>
</ol>
<h3 id="_3-责任与义务" tabindex="-1"><a class="header-anchor" href="#_3-责任与义务"><span>3. 责任与义务</span></a></h3>
<ul>
<li>保密义务在方案结束后仍然有效</li>
<li>任何违反本规范的行为均视为<strong>严重违纪</strong>公司保留追究<strong>法律责任</strong>的权利</li>
</ul>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/examReservation.html.vue"
const data = JSON.parse("{\"path\":\"/posts/examReservation.html\",\"title\":\"🧾 健康DMA人体驾照考试报名操作指南\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1765358621000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":2}],\"changelog\":[{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"0d2f55f94a3eee13f09e8cc2505c98c31ef6437a\",\"time\":1764209898000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/examReservation.md\"}")
export { comp, data }

View File

@ -0,0 +1,43 @@
<template><div><h1 id="🧾-健康dma人体驾照考试报名操作指南" tabindex="-1"><a class="header-anchor" href="#🧾-健康dma人体驾照考试报名操作指南"><span>🧾 健康DMA人体驾照考试报名操作指南</span></a></h1>
<p>欢迎报名健康DMA人体驾照考试请按照以下步骤完成报名流程预约考试</p>
<hr>
<h2 id="📝-第一步-购买指定服务" tabindex="-1"><a class="header-anchor" href="#📝-第一步-购买指定服务"><span>📝 第一步购买指定服务</span></a></h2>
<p>进入商品详情页面请确保选择以下内容</p>
<ul>
<li><strong>地区</strong>根据您的所在地选择对应城市南昌</li>
<li><strong>规格</strong>请务必选择 <strong>服务及双证</strong></li>
<li><strong>金额</strong>确认金额后点击 <strong>立即购买</strong></li>
</ul>
<p> 购买前请勾选 <strong>健康DMA人体驾照服务协议</strong></p>
<p><img src="https://images.health.ufutx.com/202511/26/c9010093d3f1f865a80d89f5b3e960ea.png" alt="img"></p>
<hr>
<h2 id="👥-第二步-进入咨询群" tabindex="-1"><a class="header-anchor" href="#👥-第二步-进入咨询群"><span>👥 第二步进入咨询群</span></a></h2>
<p>购买成功后系统将自动生成 <strong>双证咨询服务器</strong> 群聊<br>
请在消息中心中找到该群并进入</p>
<p><img src="https://images.health.ufutx.com/202511/26/607319a87ceb4905b7a3280af84f5b65.png" alt="img">
<img src="https://images.health.ufutx.com/202511/26/81331b034760becfa11d0086dfcde7d5.png" alt="img"></p>
<hr>
<h2 id="🗓️-第三步-预约考试" tabindex="-1"><a class="header-anchor" href="#🗓️-第三步-预约考试"><span>🗓 第三步预约考试</span></a></h2>
<p>在群聊中点击 <strong>考试申请</strong>进入考试预约页面请依次填写</p>
<ul>
<li><strong>姓名</strong>请输入真实姓名</li>
<li><strong>手机号</strong>请输入11位手机号码</li>
<li><strong>验证码</strong>点击获取验证码并填写</li>
<li><strong>预约科目1</strong>选择身心健康管理师必选科目</li>
<li><strong>预约时间1</strong>选择考试月份</li>
<li><strong>预约科目2</strong>选择AI健康管理师自助选择科目</li>
<li><strong>预约时间2</strong>选择考试月份</li>
</ul>
<p>填写完成后点击 <strong>确认预约</strong></p>
<p><img src="https://images.health.ufutx.com/202511/26/def4b56b23aeed032f2878ca2c249a47.png" alt="img"></p>
<hr>
<h2 id="✅-第四步-预约成功" tabindex="-1"><a class="header-anchor" href="#✅-第四步-预约成功"><span> 第四步预约成功</span></a></h2>
<p>提交后系统将显示您的预约信息包括考试科目与对应时间点击 <strong>知道了</strong> 即完成全部流程</p>
<p><img src="https://images.health.ufutx.com/202511/26/b7b2770e4495ff1e18ade115d27dd6b4.png" alt="img"></p>
<hr>
<p>如有任何问题欢迎在群里中提问我们将尽快为您解答<br>
祝您考试顺利🚀</p>
<hr>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/helpCenter.html.vue"
const data = JSON.parse("{\"path\":\"/posts/helpCenter.html\",\"title\":\"常见问题\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1774516081000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":11}],\"changelog\":[{\"hash\":\"a7258d9980759323c9eba6e62638cab1c17523f3\",\"time\":1774516081000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"长图裁剪和查看\"},{\"hash\":\"263c4a87d2a7384f0740862be100870b4396fc14\",\"time\":1773297785000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"4286fa07f0adaee3f0095ab40ace1807d19994d4\",\"time\":1770343928000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"登录功能\"},{\"hash\":\"66f79e6de026448817b55bd6969c15fd05e5a53c\",\"time\":1768282379000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"e33125e761c68b1bfc4fe2e521992fbf42c49f20\",\"time\":1768184350000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"6e27dcce01edcc47b1f9ceaf1fe1ec4485400ef7\",\"time\":1763004968000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"c8086f8415d2ad3257a016a0e2e80012dbf715f5\",\"time\":1762244574000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"169908d04e7a4ef15ffea1d8ca58004c9c7451c4\",\"time\":1762222814000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"8f0f08771e3748002699aa33318dbae7e39a397f\",\"time\":1760424178000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新职责\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/helpCenter.md\"}")
export { comp, data }

View File

@ -0,0 +1,406 @@
<template><div><h1 id="常见问题" tabindex="-1"><a class="header-anchor" href="#常见问题"><span>常见问题</span></a></h1>
<h2 id="一、健康业务类" tabindex="-1"><a class="header-anchor" href="#一、健康业务类"><span>健康业务类</span></a></h2>
<h3 id="_1-友福智能手环指示灯说明" tabindex="-1"><a class="header-anchor" href="#_1-友福智能手环指示灯说明"><span>1. 友福智能手环指示灯说明</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="7400" src="https://images.health.ufutx.com/202509/26/58d8d0142b9091488898439971f10a13.jpeg"></LongPicSplit>
<h3 id="_2-手环为什么使用type-c的充电接口" tabindex="-1"><a class="header-anchor" href="#_2-手环为什么使用type-c的充电接口"><span>2. 手环为什么使用Type-C的充电接口</span></a></h3>
<p>Type-C充电接口具备充电速度快支持双向充电接口可逆插等优势能有效提升充电效率与使用便捷性为手环提供稳定且高效的电力补给</p>
<ul>
<li>Type-C比起USB充电接口有更强的兼容性Type-C接口已成为移动设备最新的主流通用充电标准目前主流电子设备品牌例如苹果华为小米三星均选用Type-C充电接口无需为不同设备准备多种充电器简化了充电设备的管理</li>
<li>耐用性和便捷性Type-C接口具有正反插功能使用更方便同时也更加耐用减少了插拔时损坏接口的风险</li>
<li>当前接口设计适用连接具备反充电功能的手机对手环进行充电设备小损耗手机电量少不用担心手机电池损耗随时移动充电便捷性强</li>
</ul>
<h3 id="_3-手环电量怎么查看" tabindex="-1"><a class="header-anchor" href="#_3-手环电量怎么查看"><span>3. 手环电量怎么查看</span></a></h3>
<p>您可通过以下方式查看手环电量</p>
<ul>
<li>
<p>打开友福同享APP进入设备管理页面找到对应手环设备即可查看实时电量信息</p>
</li>
<li>
<p>按下手环右侧按钮查看显示灯颜色绿灯表示电量充足正常使用没有问题红灯闪烁表示电量不足指示灯不亮表示没有电请及时充电</p>
</li>
<li>
<p>也可以通过APP手环首页顶部电量百分比查看电量低于30%的情况请及时充电</p>
<LongPicSplit :original-width="1080"
:original-height="2400" src="https://images.health.ufutx.com/202602/05/ef2e5a95d213ba80b022eff89877fd1c.jpg"></LongPicSplit>
<p>后续会规划低电量预警警告提醒功能请耐心等待</p>
</li>
</ul>
<h3 id="_4-手环正确佩戴方式是什么" tabindex="-1"><a class="header-anchor" href="#_4-手环正确佩戴方式是什么"><span>4. 手环正确佩戴方式是什么</span></a></h3>
<p>手环正确佩戴需注意以下要点</p>
<ul>
<li><strong>佩戴位置</strong>将手环紧贴手腕内侧远离手腕骨的一侧确保传感器与皮肤良好接触</li>
<li><strong>松紧度</strong>以能插入1-2根手指为宜避免过紧影响血液循环或过松导致数据监测不准确</li>
<li><strong>日常调整</strong>运动时可适当收紧静止时可稍作放松保持舒适</li>
<li><strong>佩戴方式</strong> 请将手环佩戴在手腕上方传感器放置手背一面紧贴皮肤松紧调整至舒适状态logo和表带置手外侧正确佩戴有助于实时采集符合人体健康指标更准确的数据请规范佩戴</li>
</ul>
<p><img src="https://images.health.ufutx.com/202408/16/d2b5ca33bd970f64a6301fa75ae2eb221723776012907.jpeg"></img></p>
<h3 id="_5-手环连接不上手机app怎么办" tabindex="-1"><a class="header-anchor" href="#_5-手环连接不上手机app怎么办"><span>5. 手环连接不上手机APP怎么办</span></a></h3>
<p>若手环无法连接手机APP可尝试以下步骤</p>
<ul>
<li>1确认是否电量充足按下手环传感器侧面按钮显示灯亮代表有电红色蓝色交替 闪烁状态下显示电量不足需要及时充电</li>
<li>2使用手环靠近连接手机再次尝试连接</li>
<li>3检查当前连接手环是否被其他设备连接</li>
<li>4尝试关闭蓝牙后再打开蓝牙再次连接</li>
<li>5退出友福同享APP并重新打开或重启手机</li>
<li>6检查手机是否开启勿扰模式飞行模式省电模式超级省电模式等非常规状态模式解除非常规状态后重新尝试再次连接以上方式都连接不了的情况请截图保存好未连接状态界面显示检查手机系统自带蓝牙能否搜索到对应手环联系技术团队人员协助排查解决问题并录入BUG问题库进行追踪管理</li>
</ul>
<h3 id="_6-运动步数与微信运动步数不一致怎么办" tabindex="-1"><a class="header-anchor" href="#_6-运动步数与微信运动步数不一致怎么办"><span>6. 运动步数与微信运动步数不一致怎么办</span></a></h3>
<p>运动步数存在差异可能由以下原因导致</p>
<ul>
<li>统计方式不同手环与微信运动的计步算法起始时间可能存在差异</li>
<li>数据同步延迟手环数据同步至APP或微信运动可能存在一定延迟建议稍作等待后刷新查看</li>
<li>权限设置确认友福同享APP已授权微信运动读取步数数据确认授权蓝牙权限并且链接手环</li>
<li>1友福同享智能手环测量的是体动次数综合全面反馈身体运动量可以进入步数详情查看每小时体动量步数更能反映身体实际运动量消耗的卡路里与实际更匹配</li>
<li>2微信是借助手机陀螺仪信息获得步数且不能显示每小时的步数没有携带手机在身边以及将手机放置口袋或者背包情况下并不能准确计量实际走路或运动步数</li>
</ul>
<h3 id="_7-睡眠时间与实际有偏差怎么办" tabindex="-1"><a class="header-anchor" href="#_7-睡眠时间与实际有偏差怎么办"><span>7. 睡眠时间与实际有偏差怎么办</span></a></h3>
<p>若睡眠时间监测与实际不符可尝试</p>
<ul>
<li>检查佩戴位置确保手环佩戴紧密传感器能准确识别体动</li>
<li>手动修正在友福同享APP的睡眠记录手动调整入睡与起床时间</li>
<li>反馈问题若多次出现偏差可通过APP内意见反馈功能提交问题便于技术团队优化算法</li>
<li>1确认睡觉佩戴过程中是否有电按下手环右侧按钮显示灯会亮代表有电红色蓝色交替闪烁状态下电量不足需要及时充电</li>
<li>2检查连接状态是否频繁掉线部分手机型号比较老旧连接适配性较弱需要技术人员根据型号逐个排查</li>
<li>3睡眠时间与实际不匹配睡觉前后短时间平静躺卧低功耗休息类睡眠状态下判定为睡眠为正常状态若在清醒起床状态特别是运动状态下计入睡眠状况截图保存好界面联系技术人员收集睡眠数据做问题追踪处理</li>
<li>4目前当天白天只能看到昨天18:00之后的睡眠数据这是根据太阳落山自然生物钟规律以及大部分人作息规律设置会存在1800之前连续睡眠数据看不到的情况后续会规划可供选择的方案比如根据连续睡眠时间来展示睡眠时长满足特殊时间睡眠或者昏睡等特殊人群睡眠查看需求</li>
</ul>
<h3 id="_8-手环被他人绑定无法解绑怎么办" tabindex="-1"><a class="header-anchor" href="#_8-手环被他人绑定无法解绑怎么办"><span>8. 手环被他人绑定无法解绑怎么办</span></a></h3>
<p>若手环被他人绑定您可</p>
<ul>
<li>联系绑定人请对方在其手机的友福同享APP中进入设备管理解除绑定</li>
<li>强制解绑若无法联系对方可长按手环功能键具体按键见手环说明书10秒以上恢复出厂设置后重新绑定自己的账号</li>
<li>客服协助若仍有问题拨打客服热线XXX-XXXXXXX寻求帮助</li>
<li>如是认识的人误操作绑定可以先联系他本人解绑后重新绑定</li>
<li>如是不认识的人员绑定又无法联系到他本人的情况下请联系技术团队确认情况属实后台强制解绑并重新绑定</li>
<li>后续会规划申请解绑功能人工审核确认本人手环是否被误绑定人工通过解绑之后可重新绑定对应手环请耐心等待</li>
</ul>
<h3 id="_9-首次绑定手环时-周边有好几个手环设备-不知道绑定哪个怎么办" tabindex="-1"><a class="header-anchor" href="#_9-首次绑定手环时-周边有好几个手环设备-不知道绑定哪个怎么办"><span>9. 首次绑定手环时周边有好几个手环设备不知道绑定哪个怎么办</span></a></h3>
<p>首次绑定手环时可通过以下方式识别</p>
<ul>
<li>查看手环ID手环屏幕通常会显示设备ID与APP搜索列表中的ID比对</li>
<li>闪烁提示部分手环在被搜索时会闪烁灯光或震动可根据提示确认</li>
<li>重启手环重启后重新搜索列表中最新出现的设备大概率为您的手环</li>
<li>请找个人少的地方打开蓝牙单独搜索链接自己手上的手环后续会进行相关优化请耐心等待</li>
<li>规划内容包含包装盒会提供绑定二维码一对一进行手机绑定如二维码不在身边或者丢失情况下可以用搜索功能进行绑定能轻松找到自己手上尚未被绑定的手环</li>
</ul>
<h3 id="_10-手环佩戴过程中出现不舒适或者发红怎么办" tabindex="-1"><a class="header-anchor" href="#_10-手环佩戴过程中出现不舒适或者发红怎么办"><span>10. 手环佩戴过程中出现不舒适或者发红怎么办</span></a></h3>
<p>若佩戴手环出现不适或皮肤发红建议</p>
<ul>
<li>调整佩戴位置避免长时间压迫同一部位可适当移动手环位置</li>
<li>减少佩戴时间初次使用可短时间佩戴逐步适应</li>
<li>清洁手环定期用干净软布擦拭手环与皮肤接触部位保持干燥清洁</li>
<li>暂停使用若症状持续建议暂停佩戴并咨询医生确认是否为材质过敏</li>
<li>我们人体本身有一个佩戴习惯问题如果常年不佩戴东西会出现不习惯的感觉就像佩戴手表一样养成习惯这种不舒适感就会减轻或者没有佩戴超过三天或者更长我们会感觉越来越好戴甚至不想摘掉部分人皮肤比较脆弱敏感出汗多天气下雨或者闷热情况下长期不移动手环可能出现发红等情况不用担心用湿纸巾擦拭清洁传感器接触皮肤面一两次一天保持好卫生经常移动一下传感器或者两个手轮着佩戴保持佩戴贴肤但不紧绷的状态则不会发生这类情况</li>
<li>手环表带颜色和材质后续会有更多选择性以满足不同人群需要</li>
</ul>
<h3 id="_11-手环解绑教程" tabindex="-1"><a class="header-anchor" href="#_11-手环解绑教程"><span>11. 手环解绑教程</span></a></h3>
<ul>
<li><strong><a href="https://ufutx-health.oss-cn-hangzhou.aliyuncs.com/health/video/202509/29/c6c1a2676f1a7786486825798519cfaa.mp4" target="_blank" rel="noopener noreferrer">点击查看使用健康手环使用视频</a></strong></li>
</ul>
<h3 id="_12-如何使用健康手环" tabindex="-1"><a class="header-anchor" href="#_12-如何使用健康手环"><span>12. 如何使用健康手环</span></a></h3>
<p>健康手环使用步骤如下</p>
<ul>
<li>充电开机使用Type-C数据线连接手环与电源充满电后长按功能键开机</li>
<li>下载APP在应用商店搜索友福同享下载并安装</li>
<li>绑定设备打开APP注册/登录账号进入设备管理添加设备搜索并绑定您的手环</li>
<li>功能使用在APP中可查看步数睡眠心率等数据设置运动目标闹钟等功能具体操作详见APP内使用指南</li>
<li><strong><a href="https://ufutx-health.oss-cn-hangzhou.aliyuncs.com/health/video/202603/17/e575df8ad14f5e4a367e761152271d5d.mp4" target="_blank" rel="noopener noreferrer">点击查看使用健康手环使用视频</a></strong></li>
</ul>
<h3 id="_13-如何使用体脂秤" tabindex="-1"><a class="header-anchor" href="#_13-如何使用体脂秤"><span>13. 如何使用体脂秤</span></a></h3>
<p>体脂秤使用方法</p>
<ul>
<li>
<p>放置位置将体脂秤放在平整坚硬的地面上避免地毯或松软地面</p>
</li>
<li>
<p>开机校准首次使用需开机并等待秤面归零</p>
</li>
<li>
<p>赤脚站立赤裸双脚站立在秤面金属电极片上保持身体稳定</p>
</li>
<li>
<p>查看数据体重数据即时显示体脂等详细数据需打开友福同享APP进入体脂秤页面查看需提前绑定设备</p>
</li>
<li>
<p><strong><a href="https://images.health.ufutx.com/202410/15/2024101401.mp4" target="_blank" rel="noopener noreferrer">点击查看使用健康体脂秤用视频</a></strong></p>
</li>
</ul>
<h3 id="_14-购买友福同享dma智能健康方案-它包含哪些服务-及相关的流程是什么" tabindex="-1"><a class="header-anchor" href="#_14-购买友福同享dma智能健康方案-它包含哪些服务-及相关的流程是什么"><span>14. 购买友福同享DMA智能健康方案它包含哪些服务及相关的流程是什么</span></a></h3>
<p>友福同享DMA智能健康方案包含以下服务与流程具体以实际为准建议咨询客服确认</p>
<ul>
<li>
<p><strong>服务内容</strong>专属健康评估定制运动计划营养膳食指导定期健康监测含手环体脂秤等设备使用健康教练在线咨询等</p>
</li>
<li>
<p><strong>服务流程</strong>支付成功后客服将联系您预约健康评估随后根据评估结果定制方案配送设备并指导使用后续将定期跟踪健康数据并调整方案<br>
答案含图片教程实际请查看APP内DMA方案详情或联系客服获取图文指引</p>
<LongPicSplit :original-width="1080"
:original-height="12000" src="https://images.health.ufutx.com/202503/28/73c90abc9dea4b8f9e1daac17688c0a41743133737355.jpeg"></LongPicSplit>
</li>
</ul>
<h3 id="_15-友福同享做dma健康方案-请问体检有哪些项目" tabindex="-1"><a class="header-anchor" href="#_15-友福同享做dma健康方案-请问体检有哪些项目"><span>15. 友福同享做DMA健康方案请问体检有哪些项目</span></a></h3>
<p>DMA健康方案的体检项目通常包括具体以实际套餐为准</p>
<ul>
<li>基础体检身高体重体脂率血压心率等</li>
<li>血液检测血常规血脂血糖等</li>
<li>影像学检查心电图腹部超声等</li>
<li>专项检测根据个人健康状况定制的专项检查如骨密度动脉硬化检测等<br>
具体项目可咨询客服或查看方案详情页含图片说明实际请以APP内展示或客服告知为准<LongPicSplit :original-width="1080"
:original-height="1500" src="https://images.health.ufutx.com/202503/28/85f65a4c0999288c605dc0cf2851b2d11743133931953.jpeg"></LongPicSplit>
</li>
</ul>
<h3 id="_16-腾讯会议操作指引-用户" tabindex="-1"><a class="header-anchor" href="#_16-腾讯会议操作指引-用户"><span>16. 腾讯会议操作指引用户</span></a></h3>
<ul>
<li><strong><a href="https://ufutx-health.oss-cn-hangzhou.aliyuncs.com/health/video/202509/19/4abdda957f8faced9ddfcc039c090c29.mp4" target="_blank" rel="noopener noreferrer">点击查看腾讯会议操作指引视频</a></strong></li>
</ul>
<h3 id="_17-腾讯会议如何发起-分享给公司存档-教练" tabindex="-1"><a class="header-anchor" href="#_17-腾讯会议如何发起-分享给公司存档-教练"><span>17. 腾讯会议如何发起+分享给公司存档教练</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="8000" src="https://images.health.ufutx.com/202509/29/42aa8437800085f9f0231bed83b18f3e.jpeg"></LongPicSplit>
<h3 id="_18-腾讯会议如何打开权限-允许他人查看与下载的流程。" tabindex="-1"><a class="header-anchor" href="#_18-腾讯会议如何打开权限-允许他人查看与下载的流程。"><span>18. 腾讯会议如何打开权限允许他人查看与下载的流程</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="9100" src="https://images.health.ufutx.com/202603/12/51ffa9e210a40be0ab864ee127625bb7.jpg"></LongPicSplit>
<h3 id="_18-关于隐私账号" tabindex="-1"><a class="header-anchor" href="#_18-关于隐私账号"><span>18. 关于隐私账号</span></a></h3>
<p>在后台添加虚拟订单时选定该订单为隐私账号即用户部分信息不需要填写展示默认值</p>
<ul>
<li>方案前健康档案中第二步调查问卷第三步上传身体照使用默认数据个人信息和上传体检报告需正常填写</li>
<li>方案前审核默认通过展示隐私账号标识</li>
<li>陈老师出方案步骤不展示第二步和第三步信息展示隐私账号标识</li>
<li>方案后健康档案中方案后调查问卷方案后身体照使用默认数据方案后体检报告需正常填写</li>
<li>其他流程与步骤和正常DMA方案一致</li>
</ul>
<h2 id="二-dma通用问题处理原则" tabindex="-1"><a class="header-anchor" href="#二-dma通用问题处理原则"><span>. DMA通用问题处理原则</span></a></h2>
<div class="hint-container tip">
<p class="hint-container-title">适用对象</p>
<p>所有 DMA 专属服务群内的教练客服及行政人员</p>
</div>
<h3 id="_1-当用户要求自己的家属加入服务群" tabindex="-1"><a class="header-anchor" href="#_1-当用户要求自己的家属加入服务群"><span>1. 当用户要求自己的家属加入服务群</span></a></h3>
<ol>
<li>回复用户公司规定本群是为您个人提供服务的专属群组暂不向家属或朋友开放</li>
<li>告知用户如有特殊需求需要家属协助我们可以向公司提交申请我们将提供申请表格供您填写预计一个工作日内回复您</li>
<li>向管理层提交申请内容包含用户姓名申请理由等以申请表格内容为准</li>
<li>申请通过后请家属下载友福同享APP</li>
<li>友福服务微信号发送以下信息用户名管理层批准截图家属姓名及联系电话</li>
<li>友福服务收到信息后将相关家属加入服务群</li>
</ol>
<h3 id="_2-当用户填写健康信息时-提供距今超过6个月的体检报告" tabindex="-1"><a class="header-anchor" href="#_2-当用户填写健康信息时-提供距今超过6个月的体检报告"><span>2. 当用户填写健康信息时提供距今超过6个月的体检报告</span></a></h3>
<h4 id="方案一-提交新体检报告" tabindex="-1"><a class="header-anchor" href="#方案一-提交新体检报告"><span>方案一提交新体检报告</span></a></h4>
<ol>
<li>建议用户重新进行体检我们可以提供相关的体检项目参考</li>
<li>同时向用户说明近期6个月内的体检报告能更准确反映您当前的身体状况从而确保我们为您定制的健康方案更加科学有效且个性化</li>
<li>用户配合完成新的体检</li>
</ol>
<h4 id="方案二-使用旧体检报告" tabindex="-1"><a class="header-anchor" href="#方案二-使用旧体检报告"><span>方案二使用旧体检报告</span></a></h4>
<ol>
<li>首先查阅用户填写的健康问卷及旧体检报告了解其是否存在重大疾病或近期手术史</li>
<li>与用户沟通确认其在APP服务群中的健康信息真实有效并请用户在群内明确声明本人同意使用此份旧体检报告</li>
<li>在沟通群里告诉用户我们将为您提交申请请您耐心等待通知预计1个工作日内会有通知</li>
<li>同时将用户的情况截图存入用户补充资料并反馈至审核团队</li>
<li>待审核团队批准后在群里通知用户您的申请已通过我们将为您设计专属健康方案</li>
</ol>
<h3 id="_3-当老用户想进行第二次dma方案" tabindex="-1"><a class="header-anchor" href="#_3-当老用户想进行第二次dma方案"><span>3. 当老用户想进行第二次DMA方案</span></a></h3>
<ol>
<li>由原教练团队的主教练询问用户是否需要服务人员陪伴做方案</li>
<li>如果不需要工作人员陪伴服务
<ol>
<li>请用户直接回到自己的原服务群查找历史餐单也可请群内教练协助找回餐单然后自行启动方案</li>
</ol>
</li>
<li>如果需要工作人员陪伴服务将产生二次服务费用
<ol>
<li>费用说明具体费用将根据服务内容确定例如三位教练陪伴服务方案中的营养包智能设备提供智能餐单设置等</li>
<li>用户完成交费线下</li>
<li>用户下载友福同享APP需使用第一次方案登记的电话号码与姓名进行注册登录</li>
<li>若电话号码已变更用户需将新旧号码告知原服务群的主教练由主教练转交行政人员修改个人信息</li>
<li>行政人员同步通知教练团队该用户可享受的服务内容</li>
<li>用户进入个人专属健康服务群</li>
</ol>
</li>
</ol>
<h3 id="_4-针对渠道商或代理商推荐的dma用户" tabindex="-1"><a class="header-anchor" href="#_4-针对渠道商或代理商推荐的dma用户"><span>4. 针对渠道商或代理商推荐的DMA用户</span></a></h3>
<h4 id="视频会议注意事项及处理建议" tabindex="-1"><a class="header-anchor" href="#视频会议注意事项及处理建议"><span>视频会议注意事项及处理建议</span></a></h4>
<ol>
<li>在服务群建立后立即由三对一教练团队安排并启动视频会议</li>
<li>视频会议中需向用户了解以下内容
<ol>
<li>谁推荐您来做的健康方案</li>
<li>用户对智能健康DMA人体驾照的理解是什么</li>
<li>用户对方案有哪些疑惑</li>
<li>用户最希望解决什么问题</li>
</ol>
</li>
<li>若用户理解与公司理念相符则启动专属方案设计流程</li>
<li>若用户理解与公司理念存在较大偏差且经沟通后仍无法达成一致则应立即向公司管理层汇报由公司决定是否继续启动方案</li>
</ol>
<h3 id="_5-关于临期营养素的处理建议" tabindex="-1"><a class="header-anchor" href="#_5-关于临期营养素的处理建议"><span>5. 关于临期营养素的处理建议</span></a></h3>
<p>请勿向新客户推荐临期营养素产品如客户确有需要请引导其前往友福商城购买</p>
<h3 id="_6-用户执行dma方案一个月体重无明显改善且反馈身体不适的处理流程" tabindex="-1"><a class="header-anchor" href="#_6-用户执行dma方案一个月体重无明显改善且反馈身体不适的处理流程"><span>6. 用户执行DMA方案一个月体重无明显改善且反馈身体不适的处理流程</span></a></h3>
<p>如DMA用户执行方案一个月后体重基本无变化并反馈身体仍有较多不舒服教练团队须立即将情况上报至管理层由陈老师给出具体指导并调整后续服务方向</p>
<h2 id="三、dma用户发货及换货流程-v2" tabindex="-1"><a class="header-anchor" href="#三、dma用户发货及换货流程-v2"><span>DMA用户发货及换货流程V2</span></a></h2>
<Badge text="更新于 2026/1/12" type="tip" /><blockquote>
<p>本流程适用于所有 DMA 方案用户的智能设备手环体脂秤发货与换货操作</p>
</blockquote>
<hr>
<h3 id="_1、dma方案用户配置智能手环流程" tabindex="-1"><a class="header-anchor" href="#_1、dma方案用户配置智能手环流程"><span>1DMA方案用户配置智能手环流程</span></a></h3>
<h4 id="一-发货前确认" tabindex="-1"><a class="header-anchor" href="#一-发货前确认"><span>发货前确认</span></a></h4>
<ol>
<li>
<p><strong>由服务群专属客服与用户确认手环类型</strong></p>
<ul>
<li><strong>A. 已测试手环</strong>经功能验证可直接使用</li>
<li><strong>B. 未测试有塑封包装手环</strong>全新未拆封</li>
</ul>
</li>
<li>
<p><strong>配套设备</strong>统一配发 <strong>Type-C USB 充电转换头</strong></p>
</li>
<li>
<p><strong>同步通知</strong>客服需立即通过微信联系 <strong>友福服务</strong>告知后台行政人员用户所选手环类型A B及是否需要转换头</p>
</li>
</ol>
<h4 id="二-新手环测试流程-仅适用于-a-类手环" tabindex="-1"><a class="header-anchor" href="#二-新手环测试流程-仅适用于-a-类手环"><span>新手环测试流程仅适用于 A 类手环</span></a></h4>
<ol>
<li><strong>测试人员</strong>陈声飞海静</li>
<li><strong>测试内容</strong>
<ul>
<li>充电 4 小时</li>
<li>佩戴 14 小时</li>
<li>验证手环可激活可绑定 APP充电器正常充电表带魔术贴功能完好</li>
</ul>
</li>
<li><strong>测试完成后</strong>
<ul>
<li>解绑设备</li>
<li>清除历史数据</li>
<li>核对手环编号与外包装一致</li>
</ul>
</li>
<li><strong>恢复包装</strong>
<ul>
<li>外盒干净整洁</li>
<li>内配件齐全充电线表带手环主机</li>
</ul>
</li>
<li><strong>出库交接</strong>
<ul>
<li>行政人员需开箱确认物料齐全后签收</li>
</ul>
</li>
<li><strong>注意事项</strong>
<ul>
<li>测试过程必须使用 <strong>专用测试表带</strong>确保用户收到的是 <strong>全新原装表带</strong></li>
</ul>
</li>
</ol>
<hr>
<h3 id="_2、智能设备换货标准与流程" tabindex="-1"><a class="header-anchor" href="#_2、智能设备换货标准与流程"><span>2智能设备换货标准与流程</span></a></h3>
<h4 id="一-手环换货标准" tabindex="-1"><a class="header-anchor" href="#一-手环换货标准"><span>手环换货标准</span></a></h4>
<div class="hint-container tip">
<p class="hint-container-title"> 支持换货的情形</p>
<ul>
<li>充电器无法正常充电</li>
<li>表带魔术贴在 <strong>3 个月内脱落</strong></li>
<li>手环出现功能性异常如无法开机无法连接 APP传感器失灵等</li>
</ul>
</div>
<div class="hint-container warning">
<p class="hint-container-title"> 不支持换货的情形</p>
<ul>
<li>因人为使用导致的 <strong>刮花破损变形</strong></li>
<li>表带被污损染色或自行剪裁</li>
<li>非质量问题导致的外观磨损</li>
</ul>
</div>
<h4 id="二-体脂秤换货标准" tabindex="-1"><a class="header-anchor" href="#二-体脂秤换货标准"><span>体脂秤换货标准</span></a></h4>
<div class="hint-container tip">
<p class="hint-container-title"> 支持换货的情形</p>
<ul>
<li>非电池原因导致 <strong>无法测量数据</strong></li>
<li>出厂即存在功能缺陷</li>
</ul>
</div>
<div class="hint-container warning">
<p class="hint-container-title"> 不支持换货的情形</p>
<ul>
<li>电池耗尽属正常耗材</li>
<li>因跌落挤压进水等 <strong>使用不当</strong> 导致镜面破裂或结构损坏</li>
<li>表面轻微划痕或磨损</li>
</ul>
</div>
<h4 id="三-换货有效期" tabindex="-1"><a class="header-anchor" href="#三-换货有效期"><span>换货有效期</span></a></h4>
<ul>
<li>自设备签收之日起 <strong>1 年内</strong>若出现 <strong>非人为质量问题</strong>友福提供 <strong>免费换货服务</strong></li>
</ul>
<hr>
<h3 id="_3、不良设备换货操作流程" tabindex="-1"><a class="header-anchor" href="#_3、不良设备换货操作流程"><span>3不良设备换货操作流程</span></a></h3>
<ol>
<li>
<p><strong>客服介入</strong><br>
由DMA群里的客服跟进</p>
</li>
<li>
<p><strong>资料收集与申请</strong><br>
客服需整理以下信息并通过微信发送至 <strong>友福审核</strong> 申请新设备</p>
<div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre v-pre><code class="language-text"><span class="line"> 用户姓名</span>
<span class="line"> 用户电话</span>
<span class="line"> 客服姓名</span>
<span class="line"> 商品问题请详细描述问题附截图或视频更佳</span>
<span class="line"> 需配送物料</span>
<span class="line"> - 手环 / 体脂秤</span>
<span class="line"> - 若为手环请注明类型A已测试 B未拆封</span>
<span class="line"> - 是否需同步配发 Type-C USB 转换头</span>
<span class="line"></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li>
<li>
<p><strong>正在方案用户处理</strong><br>
对于正在方案中的用户可以同步配送新机和退货</p>
</li>
<li>
<p><strong>已完成方案用户处理</strong><br>
对于已完成方案的用户需要先将旧的商品退回我司</p>
</li>
<li>
<p><strong>退货跟进</strong><br>
退货由服务群的客服跟进以确保用户会处理退货并提供相关的退货快递单号方便公司收件跟进</p>
</li>
<li>
<p><strong>退货寄件要求</strong><br>
用户寄回商品采用到付方式收件信息如下</p>
<div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre v-pre><code class="language-text"><span class="line">收件人: 陈声飞 </span>
<span class="line">手机号码: 13471927441 </span>
<span class="line">收件地址: 广东省深圳市南山区南山街道东滨路阳光科创中心B座3302 </span>
<span class="line"></span></code></pre>
<div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></li>
<li>
<p><strong>新机出库配送</strong><br>
当更换的物料手环或体脂秤准备好后通知客服来领取相关物料双方确认物料齐全后出库由客服发快递寄出如果客服不在深圳由供应链工作人员代发邮寄但需客服根据邮寄照片确认物料齐全</p>
</li>
<li>
<p><strong>用户通知</strong><br>
客服在DMA用户群发送快递单号通知用户留意查收</p>
</li>
</ol>
<h2 id="四、培训业务类" tabindex="-1"><a class="header-anchor" href="#四、培训业务类"><span>培训业务类</span></a></h2>
<h3 id="_1-友福同享健康教练双证报考条件是什么" tabindex="-1"><a class="header-anchor" href="#_1-友福同享健康教练双证报考条件是什么"><span>1. 友福同享健康教练双证报考条件是什么</span></a></h3>
<p>友福同享健康教练双证具体证书名称以实际为准报考条件通常包括</p>
<LongPicSplit :original-width="1080"
:original-height="3800" src="https://images.health.ufutx.com/202503/28/8091d01833ef90c6115a92252af381e71743133803770.jpeg"></LongPicSplit>
<h3 id="_2-友福同享健康教练双证报考流程是什么" tabindex="-1"><a class="header-anchor" href="#_2-友福同享健康教练双证报考流程是什么"><span>2. 友福同享健康教练双证报考流程是什么</span></a></h3>
<p>友福同享健康教练双证报考流程如下含图片指引实际请查看培训专区或联系客服</p>
<LongPicSplit :original-width="1080"
:original-height="9520" src="https://images.health.ufutx.com/202503/28/89c5cc15f8651c76156d6b3f52731cd21743133847968.jpeg"></LongPicSplit>
<h2 id="五、商城业务类" tabindex="-1"><a class="header-anchor" href="#五、商城业务类"><span>商城业务类</span></a></h2>
<h3 id="_1-怎么查看订单的物流信息" tabindex="-1"><a class="header-anchor" href="#_1-怎么查看订单的物流信息"><span>1. 怎么查看订单的物流信息</span></a></h3>
<p>查看订单物流信息的步骤</p>
<ul>
<li>打开友福同享APP或小程序进入我的我的订单找到快递单号拷贝下来后点击下面快递查询网页便可以知道物流的进程及相关信息https://www.baidu.com/s?rsv_dl=selectedsearch&amp;wd=%E5%BF%AB%E9%80%92%E5%8D%95%E5%8F%B7%E6%9F%A5%E8%AF%A2%0A%0A</li>
</ul>
<h3 id="_2-友福商城订单查看、咨询指引" tabindex="-1"><a class="header-anchor" href="#_2-友福商城订单查看、咨询指引"><span>2. 友福商城订单查看咨询指引</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="17500" src="https://images.health.ufutx.com/202603/10/5e46870452193a97e0a69053afd1ea50.jpg"></LongPicSplit>
<ClientOnly>
<FaqList />
</ClientOnly>
</div></template>

View File

@ -0,0 +1,16 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/login.html.vue"
const data = JSON.parse("{\"path\":\"/posts/login.html\",\"title\":\"DMA手册 - 登录\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"DMA手册 - 登录\",\"layout\":\"LoginLayout\"},\"headers\":[],\"git\":{},\"filePathRelative\":\"posts/login.md\"}")
export { comp, data }
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@ -0,0 +1,3 @@
<template><div></div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/overview.html.vue"
const data = JSON.parse("{\"path\":\"/posts/overview.html\",\"title\":\"核心操作流程\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1765524799000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":2}],\"changelog\":[{\"hash\":\"acc531138f97433b765b2d0a43f9edb90f646da1\",\"time\":1765524799000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"第一版\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/overview.md\"}")
export { comp, data }

View File

@ -0,0 +1,299 @@
<template><div><h1 id="核心操作流程" tabindex="-1"><a class="header-anchor" href="#核心操作流程"><span>核心操作流程</span></a></h1>
<h3 id="一-用户下单缴费阶段" tabindex="-1"><a class="header-anchor" href="#一-用户下单缴费阶段"><span>用户下单缴费阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 行政确认合同类型</td>
<td>收到用户线上 / 线下支付成功通知后1 个工作日内登录后台系统 - 订单管理模块根据支付渠道线上订单显示 APP 支付线下订单显示 线下转账确认合同类型线上 / 线下并在系统中勾选对应类型完成同步</td>
<td>仔细核对支付信息与订单信息的一致性确保合同类型判断准确</td>
<td>若支付信息与订单信息不一致立即联系技术核实待确认后再进行合同类型确认</td>
</tr>
<tr>
<td>2. 行政邀请服务团队进群</td>
<td>合同类型确认后2 小时内登录后台系统 - 客户群聊管理模块选择对应客户订单点击 邀请成员勾选 主教练副教练客服 角色系统自动发送进群邀请</td>
<td>确保邀请的人员角色准确避免遗漏或误邀</td>
<td>若系统发送邀请失败检查网络连接重新操作若仍失败联系技术支持处理</td>
</tr>
</tbody>
</table>
<h3 id="二-合同签署与群聊搭建阶段" tabindex="-1"><a class="header-anchor" href="#二-合同签署与群聊搭建阶段"><span>合同签署与群聊搭建阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 行政处理线下合同签署</td>
<td>若用户选择线下合同在收到线下合同原件后登录后台系统 - 合同管理模块找到对应订单的合同点击确认签署按钮上传合同扫描件完成签署流程系统自动同步合同状态为 已签署</td>
<td>仔细核对合同内容及用户签字是否完整清晰扫描件需清晰可辨</td>
<td>若合同内容有误或用户签字不清晰联系客服与用户沟通重新签署待收到正确合同后再进行确认签署操作</td>
</tr>
<tr>
<td>2. 行政处理线上合同签署跟进</td>
<td>用户签署线上合同后系统会发送 待公司签署 通知行政需在 1 个工作日内登录后台系统 - 合同管理模块找到对应合同点击 代表公司签署完成电子签名确认</td>
<td>签署前再次核对合同条款确保无误</td>
<td>若电子签名无法正常使用检查系统设置或联系技术支持解决</td>
</tr>
<tr>
<td>3.行政邀请服务团队进群</td>
<td>合同类型确认后2 小时内登录后台系统 - 客户合同类型确认后2 小时内登录后台系统 - 客户群聊管理模块选择对应客户订单点击 邀请成员勾选 主教练副教练客服 角色系统自动发送进群邀请 对应客户订单点击 邀请成员勾选 主教练副教练客服 角色系统自动发送进群邀请</td>
<td>确保邀请的人员角色准确避免遗漏或误邀</td>
<td>若系统发送邀请失败检查网络连接重新操作若仍失败联系技术支持处理</td>
</tr>
</tbody>
</table>
<h3 id="三-健康档案处理阶段" tabindex="-1"><a class="header-anchor" href="#三-健康档案处理阶段"><span>健康档案处理阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 客服引导健康档案填写</td>
<td>线下合同用户双方合同签署后立即登录客户群聊界面转发健康档案含方案前评估表 + 调查问卷填写链接附带文字 尊敬的客户为了给您定制更合适的健康方案请于 24 小时内点击链接完成健康档案填写如有疑问可随时联系我线上合同用户关注系统触发的填写引导消息若用户未及时填写 24 小时后发送提醒消息 尊敬的客户您的健康档案还未完成填写完成后我们才能尽快为您定制方案哦</td>
<td>发送消息后确认客户已读若未读可适当电话提醒</td>
<td>若客户表示不会填写耐心指导客户操作必要时远程协助</td>
</tr>
<tr>
<td>2. 系统审核员审核健康评估表</td>
<td>收到用户提交的方案前健康评估表1 个工作日内登录后台系统 - 健康档案审核模块逐项检查内容是否完整真实审核通过点击 审核通过不通过则在 审核意见 栏注明具体原因 血压数据未填写点击 审核不通过</td>
<td>严格按照评估表填写要求进行审核确保数据准确</td>
<td>若对评估表中某项内容存疑联系客服向客户核实根据核实结果进行审核操作</td>
</tr>
<tr>
<td>3. 客服审核健康档案并闭环</td>
<td>收到系统健康档案待确认通知后1 个工作日内登录后台系统 - 健康档案管理模块检查健康档案完整性评估表 + 调查问卷审核通过点击 确认系统自动触发健康管理师方案设置通知审核不通过私信客户 尊敬的客户您的健康档案存在 [具体问题]请补充 / 修改后重新提交感谢配合2 小时后查看客户修改情况直至审核通过</td>
<td>确保健康档案内容完整符合要求审核意见需具体明确</td>
<td>若客户对审核不通过有异议耐心解释原因提供修改建议</td>
</tr>
</tbody>
</table>
<h3 id="四-方案设置阶段" tabindex="-1"><a class="header-anchor" href="#四-方案设置阶段"><span>方案设置阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 健康管理师制定健康方案</td>
<td>收到客服 健康档案已确认 通知后3 个工作日内登录后台系统 - 方案设置模块深度解读客户健康档案健康评估表及相关健康数据结合 AI 健康方案工具制定个性化可落地的健康方案涵盖饮食运动作息心理等维度方案内容需包含周期49 每日餐单类型等核心信息完成后点击 提交方案系统自动通知客服和行政电话18148522932</td>
<td>方案需科学合理符合客户健康状况和需求</td>
<td>若在制定方案过程中发现健康档案信息不足联系客服向客户补充收集</td>
</tr>
<tr>
<td>2. 客服确认收货方式</td>
<td>收到健康管理师方案完成通知后1 小时内通过电话或群聊联系客户 尊敬的客户您的健康方案已制定完成请问您选择自提还是邮寄呢自提地址为 [具体地址]邮寄请提供详细地址确认后同步至行政</td>
<td>准确记录客户提供的收货信息避免错误</td>
<td>若客户对自提地址或邮寄方式有疑问详细解答必要时提供其他可行方案</td>
</tr>
<tr>
<td>3. 行政配货</td>
<td>收到客服同步的收货方式后4 小时内根据方案内容进行配货核对货物数量种类与方案一致后若为邮寄订单登录后台系统 - 物流管理模块录入快递单号物流公司需选择合作物流若为自提订单在系统中备注自提点信息及可自提时间</td>
<td>配货时轻拿轻放避免货物损坏确保包装完好</td>
<td>若发现货物短缺或损坏及时联系仓库补充或更换延迟发货需提前告知客服由客服向客户说明情况</td>
</tr>
</tbody>
</table>
<h3 id="五-配送及收货确认阶段" tabindex="-1"><a class="header-anchor" href="#五-配送及收货确认阶段"><span>配送及收货确认阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 行政发货确认与记录</td>
<td>线下配送或快递发货后1 小时内拍摄发货数量种类的清晰照片需能看清货物细节和数量登录后台系统 - 发货记录模块上传照片点击 确认发货系统自动触发群聊通知 尊敬的客户您的健康方案已发货物流信息[快递单号]物流公司[公司名称]可点击链接查看请注意查收</td>
<td>照片需清晰完整能作为发货凭证</td>
<td>若系统发送通知失败手动在群聊中发送发货信息及照片</td>
</tr>
<tr>
<td>2. 客服跟进收货状态</td>
<td>系统触发 已发货 通知后24 小时内登录后台系统 - 收货管理模块查看物流信息在群聊发送 尊敬的客户您的货物已发出预计 [送达时间] 到达收到后请在群内点击确认收货若超 48 小时未确认收货主动私信客户 尊敬的客户请问您收到货物了吗若已收到请及时确认有任何问题随时联系我</td>
<td>密切关注物流信息及时跟进客户收货情况</td>
<td>若客户反馈未收到货物协助查询物流轨迹若物流显示已送达联系快递公司核实若物流异常协调处理并向客户说明情况</td>
</tr>
<tr>
<td>3方案前视频沟通第一次</td>
<td>系統发送通知给所有教练与用户进行方案前视频沟通主教练主导</td>
<td>视频前主教练需准备方案沟通清单确保覆盖所有核心内容副教练负责记录客户疑问及需求</td>
<td>客户临时无法参加时2 小时内协调新时间原则上 24 小时内完成并重新发送预约通知如微信视频腾讯会议小程序</td>
</tr>
</tbody>
</table>
<h3 id="六-方案执行与结束阶段" tabindex="-1"><a class="header-anchor" href="#六-方案执行与结束阶段"><span>方案执行与结束阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 客服设置餐单及跟进方案执行</td>
<td>方案执行期间客服需每日登录后台系统 - 餐单管理模块为客户设置当日餐单并同步至群聊同时定期在群内了解客户执行情况解答客户疑问记录客户反馈的问题并及时处理</td>
<td>餐单设置需符合方案要求跟进时态度热情耐心</td>
<td>若客户对餐单有异议根据客户健康状况和需求适当调整无法调整的向客户解释原因</td>
</tr>
<tr>
<td>2. 副教练跟进体脂称使用指导</td>
<td>转发友福体脂称操作视频指导用户完成设备绑定步骤下载 APP蓝牙配对输入个人信息确认数据可同步至服务群</td>
<td> 50 岁以上用户需提供电话分步指导留存指导截图至服务档案模块</td>
<td>设备无法绑定如蓝牙连接失败指导客户检查手机权限是否开启位置 / 蓝牙权限仍无法解决的联系技术支持12 小时内提供解决方案</td>
</tr>
<tr>
<td>3. 副教练跟进手环使用指导</td>
<td>参照友福手环操作手册通过群聊演示设备激活数据同步运动 / 睡眠数据流程确保用户掌握每日数据查看方法</td>
<td>需在客户收货后 24 小时内完成指导确保用户掌握基础操作</td>
<td>数据同步失败时指导客户重启设备及 APP仍异常的记录设备型号及问题反馈至行政协调更换原则上 48 小时内完成更换</td>
</tr>
<tr>
<td>4.副教练餐单发送与解读</td>
<td>每日 16:00-18:00 登录友福同享 - 商务端 app点击餐单管理模块获取次日基础餐单转发至服务群</td>
<td>每日 18:00 前完成发送</td>
<td>解读需口语化避免使用 GI 等专业术语</td>
</tr>
<tr>
<td>5.日常互动与关怀</td>
<td>①每日 9:00 前发送个性化问候结合天气 / 用户状态 今日降温晨练建议加件外套②节假日发送定制祝福如糖尿病用户中秋快乐推荐您尝试无糖月饼</td>
<td>问候不超过 9:00节假日提前 1 </td>
<td>客户反馈身体不适 头晕 / 乏力立即询问具体症状及持续时间同步主教练判断是否需要暂停当日方案必要时建议客户咨询医师</td>
</tr>
<tr>
<td>6.方案前视频沟通第二次</td>
<td>方案中第三周结束时系统发送通知给所有服务人员与用户进行方案中视频沟通</td>
<td>教练需提前查看用户数据趋势图用可视化方式展示成果例如体重&amp;手环测量数据</td>
<td>及时记录客户反馈执行情况</td>
</tr>
<tr>
<td>7. 客服处理方案结束事宜</td>
<td> 50 登录友福同享-商务端将方案状态标记为 已结束并在群聊转发用户调查问卷附带文字 尊敬的客户您的 49 天健康方案已结束麻烦您抽空填写一下调查问卷您的反馈对我们很重要感谢您的支持</td>
<td>及时标记方案状态提醒客户填写调查问卷</td>
<td>若客户不愿填写调查问卷耐心说明填写的意义争取客户配合若客户坚持不填记录情况即可</td>
</tr>
</tbody>
</table>
<h3 id="七-方案后阶段" tabindex="-1"><a class="header-anchor" href="#七-方案后阶段"><span>方案后阶段</span></a></h3>
<table>
<thead>
<tr>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td>流程步骤</td>
<td>操作指引</td>
<td>注意事项</td>
<td>异常处理</td>
</tr>
<tr>
<td>1. 服务人员评估</td>
<td>方案结束后 1 个工作日内所有教练登录服务评估模块填写复盘服务评价表内容包括①客户执行情况打分1-10 ②服务亮点与不足③改进建议主教练需汇总团队评估形成服务总结报告</td>
<td>未填写复盘服务评价表隔 3 天发送一次通知发送 3 次后不再发送评估内容需客观真实禁止敷衍填写</td>
<td>教练反馈系统无法提交时立即联系技术支持24 小时内解决确保评估按时完成</td>
</tr>
<tr>
<td>2. 方案后视频通话沟通第三次</td>
<td>方案结束后第 2 系统发送通知给所有教练与其他用户进行方案后视频沟通</td>
<td>提前准备方案期成果对比表含初始与结束数据副教练负责记录客户后续需求</td>
<td>沟通中客户对成果有疑问时用数据说话 体脂率下降 3%已达到预期目标</td>
</tr>
<tr>
<td>3.通知用户上传方案后照片</td>
<td>结束后第3天系统触发通知通知用户上传方案后照片</td>
<td>提醒客户照片拍摄要求光线充足背景简洁确保与方案前照片具有可比性</td>
<td>客户拒绝上传时回复 理解您的顾虑照片上传非强制若后续需要对比分析可随时联系我们照片不符合要求时提供示例图指导重拍避免影响成果评估</td>
</tr>
<tr>
<td>4.对用户进行第一次评估</td>
<td>教练对用户进行第一次评估结束后第3天系统触发</td>
<td>评估需基于客观数据避免主观评价</td>
<td>---</td>
</tr>
<tr>
<td>5. 用户上传复检报告</td>
<td>方案结束后第28天左右系统发送提醒用户上传复检报告</td>
<td>明确告知报告用途仅用于健康分析严格保密减轻客户顾虑</td>
<td>客户未按时上传时 30 天再次提醒客户表示未做复检时建议 1 周内完成并重发提醒通知</td>
</tr>
<tr>
<td>6.对用户进行第二次评估</td>
<td>教练对用户进行第二次评估结束后第60天系统触发</td>
<td>评估需基于客观数据避免主观评价</td>
<td>----</td>
</tr>
</tbody>
</table>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/service.html.vue"
const data = JSON.parse("{\"path\":\"/posts/service.html\",\"title\":\"客服\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1765358621000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":4}],\"changelog\":[{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"2eace682f2e7d0c8c663ff7200d318edf973b980\",\"time\":1762239646000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"增加DMA通用问题处理原则2025-11-03更新 增加主教练-信息保密规范、副教练-信息保密规范、客服-信息保密规范\"},{\"hash\":\"8f0f08771e3748002699aa33318dbae7e39a397f\",\"time\":1760424178000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新职责\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/service.md\"}")
export { comp, data }

View File

@ -0,0 +1,61 @@
<template><div><h1 id="客服" tabindex="-1"><a class="header-anchor" href="#客服"><span>客服</span></a></h1>
<h2 id="工作职责与流程" tabindex="-1"><a class="header-anchor" href="#工作职责与流程"><span>工作职责与流程</span></a></h2>
<ol>
<li>跟进合同签约</li>
<li>跟进用户健康信息填写</li>
<li>申请用户专属健康方案</li>
<li>分享用户物料的物流信息</li>
<li>向用户介绍各工作人员的角色及分工主教练副教练客服</li>
<li>设置用户餐单审核主教练</li>
<li>协助主教练指导副教练</li>
<li>协助解决系统问题</li>
</ol>
<h2 id="dma职责" tabindex="-1"><a class="header-anchor" href="#dma职责"><span>DMA职责</span></a></h2>
<h3 id="一-引导健康档案填写" tabindex="-1"><a class="header-anchor" href="#一-引导健康档案填写"><span>引导健康档案填写</span></a></h3>
<p>线下合同用户合同签署后立即登录客户群聊界面转发健康档案含方案前评估表 + 调查问卷填写链接附带文字 尊敬的客户为了给您定制更合适的健康方案请于 24 小时内点击链接完成健康档案填写如有疑问可随时联系我线上合同用户关注系统触发的填写引导消息若用户未及时填写 24 小时后发送提醒消息 尊敬的客户您的健康档案还未完成填写完成后我们才能尽快为您定制方案哦<br></p>
<p>发送消息后确认客户已读若未读可适当电话提醒</p>
<p>若客户表示不会填写耐心指导客户操作必要时远程协助</p>
<h3 id="二-审核健康档案并闭环" tabindex="-1"><a class="header-anchor" href="#二-审核健康档案并闭环"><span>审核健康档案并闭环</span></a></h3>
<p>收到系统健康档案待确认通知后1 个工作日内登录后台系统 - 健康档案管理模块检查健康档案完整性评估表 + 调查问卷审核通过点击 确认系统自动触发健康管理师方案设置通知审核不通过私信客户 尊敬的客户您的健康档案存在 [具体问题]请补充 / 修改后重新提交感谢配合2 小时后查看客户修改情况直至审核通过<br></p>
<p>确保健康档案内容完整符合要求审核意见需具体明确</p>
<p>若客户对审核不通过有异议耐心解释原因提供修改建议</p>
<h3 id="三-确认收货方式" tabindex="-1"><a class="header-anchor" href="#三-确认收货方式"><span>确认收货方式</span></a></h3>
<p>收到健康管理师方案完成通知后1 小时内通过电话或群聊联系客户 尊敬的客户您的健康方案已制定完成请问您选择自提还是邮寄呢自提地址为 [具体地址]邮寄地址为健康档案中的地址同步至行政</p>
<p>准确记录客户提供的收货信息避免错误</p>
<p>若客户对自提地址或邮寄方式有疑问详细解答必要时提供其他可行方案</p>
<h3 id="四-跟进收货状态" tabindex="-1"><a class="header-anchor" href="#四-跟进收货状态"><span>跟进收货状态</span></a></h3>
<p>系统触发 已发货 通知后查看物流信息在群聊发送 尊敬的客户您的货物已发出预计 [送达时间] 到达收到后请在群内点击确认收货若超 48 小时未确认收货主动私信客户 尊敬的客户请问您收到货物了吗若已收到请及时确认有任何问题随时联系我</p>
<p>密切关注物流信息及时跟进客户收货情况</p>
<p>若客户反馈未收到货物协助查询物流轨迹若物流显示已送达联系快递公司核实若物流异常协调处理并向客户说明情况</p>
<h3 id="五-设置餐单及跟进方案执行" tabindex="-1"><a class="header-anchor" href="#五-设置餐单及跟进方案执行"><span>设置餐单及跟进方案执行</span></a></h3>
<p>方案执行期间客服需每日登录友福同享商务端APP 中对应的服务群发送当日餐单同时定期在群内了解客户执行情况解答客户疑问记录客户反馈的问题并及时处理</p>
<p>跟进时态度热情耐心</p>
<p>若客户对餐单有异议根据客户健康状况和需求适当调整无法调整的向客户解释原因</p>
<h3 id="六-处理方案结束事宜" tabindex="-1"><a class="header-anchor" href="#六-处理方案结束事宜"><span>处理方案结束事宜</span></a></h3>
<p> 50 登录后台系统 - 方案管理模块将方案状态标记为 已结束并在群聊转发用户调查问卷附带文字 尊敬的客户您的 49 天健康方案已结束麻烦您抽空填写一下调查问卷您的反馈对我们很重要感谢您的支持</p>
<p>及时标记方案状态提醒客户填写调查问卷</p>
<p>若客户不愿填写调查问卷耐心说明填写的意义争取客户配合若客户坚持不填记录情况即可</p>
<h2 id="信息保密规范" tabindex="-1"><a class="header-anchor" href="#信息保密规范"><span>信息保密规范</span></a></h2>
<h3 id="_1-保密范围" tabindex="-1"><a class="header-anchor" href="#_1-保密范围"><span>1. 保密范围</span></a></h3>
<p>所有工作人员必须严格保密用户在服务过程中产生的全部个人信息包括但不限于</p>
<ul>
<li>用户基本信息姓名身份证号联系方式等</li>
<li>职业与职务信息</li>
<li>体检报告健康问卷及任何身体/健康数据</li>
<li>个人方案服务群聊天记录数据变化方案后问卷调查表等内部资料</li>
</ul>
<p><strong>可分享内容</strong>本人或家人身体情况照片公司已正式发布的对外宣传画册</p>
<h3 id="_2-授权要求" tabindex="-1"><a class="header-anchor" href="#_2-授权要求"><span>2. 授权要求</span></a></h3>
<p>因业务宣传等任何目的需对外披露用户相关信息时必须</p>
<ol>
<li>事先取得用户本人<strong>书面授权</strong></li>
<li>对分享内容进行<strong>充分匿名化</strong>处理</li>
</ol>
<h3 id="_3-责任与义务" tabindex="-1"><a class="header-anchor" href="#_3-责任与义务"><span>3. 责任与义务</span></a></h3>
<ul>
<li>保密义务在方案结束后仍然有效</li>
<li>任何违反本规范的行为均视为<strong>严重违纪</strong>公司保留追究<strong>法律责任</strong>的权利</li>
</ul>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/shareBenefit.html.vue"
const data = JSON.parse("{\"path\":\"/posts/shareBenefit.html\",\"title\":\"分润提现操作说明\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1774516081000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":9}],\"changelog\":[{\"hash\":\"a7258d9980759323c9eba6e62638cab1c17523f3\",\"time\":1774516081000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"长图裁剪和查看\"},{\"hash\":\"263c4a87d2a7384f0740862be100870b4396fc14\",\"time\":1773297785000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"732b13159c94b473eb57dc99992effbcb18ce111\",\"time\":1771915289000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"图片更新\"},{\"hash\":\"88720577da1423f5da911e33d2d9a6e5f8888191\",\"time\":1770945819000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"ed4670234dca64f3448451fd8ef704b62cc1db8b\",\"time\":1770603095000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"4286fa07f0adaee3f0095ab40ace1807d19994d4\",\"time\":1770343928000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"登录功能\"},{\"hash\":\"7799842e4c8bfd3bbd24d9cbc89c8ac4c28c918b\",\"time\":1761103662000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新\"},{\"hash\":\"8f0f08771e3748002699aa33318dbae7e39a397f\",\"time\":1760424178000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"更新职责\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/shareBenefit.md\"}")
export { comp, data }

View File

@ -0,0 +1,218 @@
<template><div><h1 id="分润提现操作说明" tabindex="-1"><a class="header-anchor" href="#分润提现操作说明"><span>分润提现操作说明</span></a></h1>
<h2 id="一、下载app" tabindex="-1"><a class="header-anchor" href="#一、下载app"><span>下载APP</span></a></h2>
<h3 id="_1-1-安卓端下载" tabindex="-1"><a class="header-anchor" href="#_1-1-安卓端下载"><span>1.1 安卓端下载</span></a></h3>
<p>1.安卓用户通过下面二维码扫码下载商务端APP</p>
<img alt="" src="https://images.health.ufutx.com/202602/09/4ac993fc01b96bb730f34340b97b23e2.png">
<h3 id="_1-2-苹果端下载" tabindex="-1"><a class="header-anchor" href="#_1-2-苹果端下载"><span>1.2 苹果端下载</span></a></h3>
<p>1.打开手机自带的App store应用商店搜索并下载友福同享商务APP</p>
<h2 id="二、进入「收益提现」模块" tabindex="-1"><a class="header-anchor" href="#二、进入「收益提现」模块"><span>进入收益提现模块</span></a></h2>
<p><strong>操作步骤</strong></p>
<ol>
<li>DMA用户签署合同后,由相关工作人员进行收益发放具体时间可等短信通知或询问相关工作人员</li>
<li>打开APP点击底部导航栏的 <strong>我的</strong> 模块</li>
<li>我的界面选择 <strong>我的收益入口</strong>进入对应页面</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202602/05/a159dc901155fc12d1e9510dbe46c3b3.png" loading="lazy"></LongPicSplit>
<h2 id="三、提现操作流程-分润订单提现" tabindex="-1"><a class="header-anchor" href="#三、提现操作流程-分润订单提现"><span>提现操作流程分润订单提现</span></a></h2>
<h3 id="_2-1-发起提现申请" tabindex="-1"><a class="header-anchor" href="#_2-1-发起提现申请"><span>2.1 发起提现申请</span></a></h3>
<ol>
<li>
<p><strong>选择提现订单</strong></p>
<ul>
<li>进入收益提现列表找到需提现的分润订单点击 <strong>提现按钮</strong>跳转至 <strong>合约选择页面</strong></li>
<li> <strong>系统提醒</strong>若页面显示 <strong>黄色字体提示</strong>你有一个XXX合同待签署需先完成对应合约签署见2.2</li>
</ul>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_v3.jpg" loading="lazy"></LongPicSplit>
</li>
<li>
<p><strong>关联分公司合约</strong></p>
<ul>
<li>每笔分润订单需匹配 <strong>对应分公司的合约</strong>
<ul>
<li><strong>场景1已有有效合约</strong>选择对应分公司合约点击 <strong>确定</strong>进入发票上传环节</li>
<li><strong>场景2无有效合约</strong>点击 <strong>添加新合约</strong>按以下流程签署见2.2</li>
</ul>
</li>
</ul>
</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_3.png" loading="lazy"></LongPicSplit>
<h3 id="_2-2-合约签署" tabindex="-1"><a class="header-anchor" href="#_2-2-合约签署"><span>2.2 合约签署</span></a></h3>
<h4 id="_2-2-1-匹配分公司" tabindex="-1"><a class="header-anchor" href="#_2-2-1-匹配分公司"><span>2.2.1 匹配分公司</span></a></h4>
<ul>
<li>选择合约签署的分公司需与分润订单的 <strong>分公司名称完全一致</strong>否则提现失败</li>
</ul>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="/images/shareBenefit/img_4.png" loading="lazy" ></LongPicSplit><p><br><br></p>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="/images/shareBenefit/img_5.png" loading="lazy" ></LongPicSplit><h4 id="_2-2-2-选择合约模版" tabindex="-1"><a class="header-anchor" href="#_2-2-2-选择合约模版"><span>2.2.2 选择合约模版</span></a></h4>
<ul>
<li>
<p>可选择已签署过的合约使用该合约中的信息可避免重新填写信息已签署深圳公司合约现需签署南昌公司合约可选已签署深圳公司点击使用该模版即可受用该信息进行申请签署南昌公司合约没有相关信息点击填新信息填写新内容</p>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/9308f2212b238c90d1becee737678db2.png" loading="lazy" ></LongPicSplit><p><br><br></p>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="/images/shareBenefit/img_7.png" loading="lazy" ></LongPicSplit></li>
</ul>
<h4 id="_2-2-3-选择账户类型" tabindex="-1"><a class="header-anchor" href="#_2-2-3-选择账户类型"><span>2.2.3 选择账户类型</span></a></h4>
<ul>
<li>切换标签<strong>个人</strong>默认展示银行卡信息表单 / <strong>企业</strong>展示对公账户信息表单 / <strong>灵活用工平台深圳专属</strong></li>
</ul>
<LongPicSplit :original-width="1080"
:original-height="600" :max-width="375" src="/images/shareBenefit/img_6.png" loading="lazy"></LongPicSplit>
<h4 id="_2-2-4-填写信息-以个人为例" tabindex="-1"><a class="header-anchor" href="#_2-2-4-填写信息-以个人为例"><span>2.2.4 填写信息以个人为例</span></a></h4>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_7.png" loading="lazy"></LongPicSplit>
<br><br>
<LongPicSplit :original-width="1080"
:original-height="2050" :max-width="375" src="/images/shareBenefit/img_8.png" loading="lazy" ></LongPicSplit>
<br><br>
<LongPicSplit :original-width="1080"
:original-height="2050" :max-width="375" src="/images/shareBenefit/img_9.png" loading="lazy" ></LongPicSplit>
<p><strong>必填项要求</strong></p>
<ul>
<li>身份证号本人真实身份证号合约签署专用</li>
<li>银行卡号16-19位实名银行卡号</li>
<li>开户行完整名称XX银行XX市XX支行需与银行预留信息一致</li>
<li>开户人姓名与银行卡实名一致不可修改否则无法到账</li>
<li>预留手机号银行绑定的手机号若触发短信验证需填写验证码</li>
</ul>
<p><strong>操作步骤</strong></p>
<ol>
<li>信息填写完毕点击 <strong>签署合约按钮</strong>跳转至合约签署页面</li>
<li>点击 <strong>签署</strong>弹出 <strong>签署意愿确认弹框</strong>输入手机号验证码完成签署</li>
<li>签署完成后需要等 <strong>友福同享</strong> 也进行签署后才可进行提现灵工平台深圳需要先申请灵工平台账户</li>
</ol>
<h3 id="_2-3-合约分享-公司账户" tabindex="-1"><a class="header-anchor" href="#_2-3-合约分享-公司账户"><span>2.3 合约分享公司账户</span></a></h3>
<ol>
<li><strong>选择合约分享按钮</strong></li>
</ol>
<p>在我的合约中双方已签署完成合约类型为 <strong>公司</strong> 的合约可进行分享</p>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_a11.png" loading="lazy"></LongPicSplit>
<ol start="2">
<li><strong>扫码接受该合约</strong></li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_a2.png" loading="lazy"></LongPicSplit>
<ol start="3">
<li><strong>接受后即可使用该合约进行提现</strong></li>
</ol>
<p>使用浏览器扫描该二维码后登录完成即可选择接受该二维码接受后即存在该合约可使用该合约进行提现提现步骤相同</p>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_a3.png" loading="lazy"></LongPicSplit>
<h3 id="_2-4-发票上传与提现提交-点击查看如何开发票" tabindex="-1"><a class="header-anchor" href="#_2-4-发票上传与提现提交-点击查看如何开发票"><span>2.4 发票上传与提现提交(<RouteLink to="/posts/shareBenefit.html#%E4%BA%94%E3%80%81%E5%BC%80%E7%A5%A8%E6%8C%87%E5%BC%95%E5%92%8C%E7%81%B5%E6%B4%BB%E7%94%A8%E5%B7%A5%E5%B9%B3%E5%8F%B0%E8%B4%A6%E6%88%B7-%E6%B7%B1%E5%9C%B3">点击查看如何开发票</RouteLink>)</span></a></h3>
<ul>
<li>
<p><strong>已有有效合约</strong>选择对应分公司合约点击 <strong>确定</strong>进入发票上传环节</p>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="/images/shareBenefit/img_3.png" loading="lazy"></LongPicSplit></li>
</ul>
<ol>
<li><strong>发票要求弹窗</strong>
<ul>
<li>系统自动提示需上传的发票信息含对应公司名称发票金额按要求准备并上传发票</li>
</ul>
</li>
</ol>
<LongPicSplit :original-width="1080" :original-height="2375" :max-width="375" src="/images/shareBenefit/img_10.png" loading="lazy"></LongPicSplit><ol start="2">
<li>
<p><strong>确认提现金额</strong></p>
<ul>
<li>弹出 <strong>金额确认 + 发票上传弹窗</strong>核对金额并上传发票</li>
</ul>
</li>
<li>
<p><strong>提交申请</strong></p>
<ul>
<li>点击 <strong>提交</strong>后续需要等待财务相关人员进行操作可在首页提现记录查看相关提现记录</li>
</ul>
</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_11.png" loading="lazy"></LongPicSplit>
<h2 id="四、查看提现记录" tabindex="-1"><a class="header-anchor" href="#四、查看提现记录"><span>查看提现记录</span></a></h2>
<h3 id="_3-1-进入记录列表" tabindex="-1"><a class="header-anchor" href="#_3-1-进入记录列表"><span>3.1 进入记录列表</span></a></h3>
<ul>
<li>
<p><strong>操作</strong>在分润主页面点击右上角 <strong>提现记录入口</strong></p>
<p>列表展示 <strong>申请时间提现金额状态到账时间</strong>若已到账</p>
</li>
</ul>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_12.png" loading="lazy"></LongPicSplit>
<h3 id="_3-2-查看记录详情" tabindex="-1"><a class="header-anchor" href="#_3-2-查看记录详情"><span>3.2 查看记录详情</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="/images/shareBenefit/img_14.png" loading="lazy"></LongPicSplit>
<ul>
<li><strong>操作</strong>
<ul>
<li><strong>审核失败</strong>弹出提示弹窗展示失败原因账户信息不符银行拒绝受理
<ul>
<li>点击 <strong>提现失败</strong> 文字或图标触发以上反馈</li>
</ul>
</li>
<li><strong>已到账</strong>显示具体到账时间银行流水单号支持核对</li>
<li><strong>审核中</strong>提示审核处理中请勿重复提交</li>
</ul>
</li>
</ul>
<h2 id="五、开票指引和灵活用工平台账户-深圳" tabindex="-1"><a class="header-anchor" href="#五、开票指引和灵活用工平台账户-深圳"><span>开票指引和灵活用工平台账户深圳</span></a></h2>
<h3 id="_1-深圳公司开发票指引" tabindex="-1"><a class="header-anchor" href="#_1-深圳公司开发票指引"><span>1.深圳公司开发票指引</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="31350" :max-width="375" src="https://images.health.ufutx.com/202602/24/be45292acad45867d2f28386884e37f4.jpg" loading="lazy" ></LongPicSplit>
<h3 id="_2-个人开发票指引" tabindex="-1"><a class="header-anchor" href="#_2-个人开发票指引"><span>2.个人开发票指引</span></a></h3>
<LongPicSplit :original-width="1080"
:original-height="9350" :max-width="375" src="https://images.health.ufutx.com/202602/12/2393593f30bf374e9300fa1e22f55e86.jpg" loading="lazy" ></LongPicSplit>
<h3 id="_3-灵工平台账号指引-深圳" tabindex="-1"><a class="header-anchor" href="#_3-灵工平台账号指引-深圳"><span>3.灵工平台账号指引深圳</span></a></h3>
<h4 id="_3-1-灵工平台账号申请二维码" tabindex="-1"><a class="header-anchor" href="#_3-1-灵工平台账号申请二维码"><span>3.1 灵工平台账号申请二维码</span></a></h4>
<LongPicSplit :original-width="1080"
:original-height="1100" :max-width="375" src="https://images.health.ufutx.com/202603/04/a781b440fad4adfc951acebdeb7ed2bf.png" loading="lazy"></LongPicSplit>
<h4 id="_3-2-灵工平台账号申请步骤" tabindex="-1"><a class="header-anchor" href="#_3-2-灵工平台账号申请步骤"><span>3.2 灵工平台账号申请步骤</span></a></h4>
<ol>
<li>扫描二维码上传身份证信息填写手机号</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="3175" :max-width="375" alt="" src="https://images.health.ufutx.com/202603/13/2095898b0c3ac9f314343ce6bf6c15d0.jpg" ></LongPicSplit>
<ol start="2">
<li>签约园区选择第肆纪深圳数字科技有限公司</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/13/1e708f04e0dbff54f60e4ee9317bae0a.png" ></LongPicSplit>
<ol start="3">
<li>点击下一步确认信息无误后开始进行人脸认证</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/094cf35390aae711dde7ff1484275836.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/c6477d9d80787f1e5a12dbe43a5f718c.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/28b86e4f0ee5dc31b03f5a743583f049.jpg" ></LongPicSplit>
<ol start="4">
<li>认证完成后填写银行卡号可上传或填写银行卡信息</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/f1e0a4596e0e6467f91bbf72f33928eb.jpg" ></LongPicSplit>
<ol start="5">
<li>填写完成后进行签约</li>
</ol>
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/dd454d1699418d1a5a8ba841faa1c2bb.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/6b5bde35c3d5f6e8551c5b24421ff1fb.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/28a8205cec35b3f2e62b1dd6f6842d5b.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/084728311ed2ef075bea167ccfc2d363.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/e2f3a5d1086acc7f26fcfca62f3a73b0.jpg" ></LongPicSplit>
<br />
<LongPicSplit :original-width="1080"
:original-height="2375" :max-width="375" src="https://images.health.ufutx.com/202603/04/d7a41a6052bde44a816662b319db93b9.jpg" ></LongPicSplit>
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/teacher.html.vue"
const data = JSON.parse("{\"path\":\"/posts/teacher.html\",\"title\":\"健康管理师\",\"lang\":\"zh-CN\",\"frontmatter\":{},\"git\":{\"updatedTime\":1766471007000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":2}],\"changelog\":[{\"hash\":\"326fedda6067ab0da7a7c497e8fef608057cb12e\",\"time\":1766471007000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"},{\"hash\":\"e73bbe09086600f49aec344301695549746ba3c4\",\"time\":1759135896000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"初始化\"}]},\"filePathRelative\":\"posts/teacher.md\"}")
export { comp, data }

View File

@ -0,0 +1,10 @@
<template><div><h1 id="健康管理师" tabindex="-1"><a class="header-anchor" href="#健康管理师"><span>健康管理师</span></a></h1>
<h2 id="dma方案前" tabindex="-1"><a class="header-anchor" href="#dma方案前"><span>DMA方案前</span></a></h2>
<h3 id="一-制定健康方案" tabindex="-1"><a class="header-anchor" href="#一-制定健康方案"><span>制定健康方案</span></a></h3>
<p>收到客服 健康档案已确认 通知后3 个工作日内登录后台系统 - 方案设置模块深度解读客户健康档案健康评估表及相关健康数据结合 AI 健康方案工具制定个性化可落地的健康方案涵盖饮食运动作息心理等维度方案内容需包含周期49 每日餐单类型等核心信息完成后点击 提交方案系统自动通知客服和行政电话18148522932</p>
<p>方案需科学合理符合客户健康状况和需求</p>
<p>若在制定方案过程中发现健康档案信息不足联系客服向客户补充收集</p>
<img src="https://images.health.ufutx.com/202512/23/9ef373b5336e95fd0fa1221b8b578391.jpeg" loading="lazy" style="width:100%;height:auto;marginTop:10px;">
</div></template>

View File

@ -0,0 +1,3 @@
import comp from "D:/xue/dma_handbook/docs/.vuepress/.temp/pages/posts/userServiceProcess.html.vue"
const data = JSON.parse("{\"path\":\"/posts/userServiceProcess.html\",\"title\":\"用户服务流程说明\",\"lang\":\"zh-CN\",\"frontmatter\":{\"title\":\"用户服务流程说明\",\"sidebarDepth\":2},\"git\":{\"updatedTime\":1765358621000,\"contributors\":[{\"name\":\"lanzhihui\",\"username\":\"\",\"email\":\"503792708@qq.com\",\"commits\":1}],\"changelog\":[{\"hash\":\"55e24b1ebd4366534ba91b6b6e7e2e216de4adb2\",\"time\":1765358621000,\"email\":\"503792708@qq.com\",\"author\":\"lanzhihui\",\"message\":\"update\"}]},\"filePathRelative\":\"posts/userServiceProcess.md\"}")
export { comp, data }

View File

@ -0,0 +1,131 @@
<template><div><h1 id="用户服务流程说明" tabindex="-1"><a class="header-anchor" href="#用户服务流程说明"><span>用户服务流程说明</span></a></h1>
<p>用户可通过群聊中的<strong>服务流程</strong>按钮查看其完整的健康管理服务流程该流程分为三个阶段<strong>方案前</strong><strong>方案中</strong><strong>方案后</strong>每个阶段包含具体任务与进度状态</p>
<blockquote>
<p>📌 用户可在群聊中点击绿色圆形按钮服务流程进入详情页实时掌握当前服务进度</p>
</blockquote>
<p><img src="https://images.health.ufutx.com/202512/02/54e456005dc534f90e1271539c403869.png" alt="服务流程入口"></p>
<hr>
<h2 id="🎯-整体服务流程概览" tabindex="-1"><a class="header-anchor" href="#🎯-整体服务流程概览"><span>🎯 整体服务流程概览</span></a></h2>
<p>用户服务流程以 <strong>环形进度条</strong> 展示整体完成度并按阶段划分任务</p>
<ul>
<li><strong>方案前</strong>完成签约与信息准备</li>
<li><strong>方案中</strong>执行个性化健康计划</li>
<li><strong>方案后</strong>提交反馈与复检报告</li>
</ul>
<blockquote>
<p>🔍 当前进度显示为 <code v-pre>25%</code>表示已进入方案前阶段部分任务已完成</p>
</blockquote>
<p><img src="https://images.health.ufutx.com/202512/02/c8e503ff00fe07fc81106086adf5ad7f.jpeg" alt="整体服务流程概览"></p>
<hr>
<h2 id="📋-阶段一-方案前" tabindex="-1"><a class="header-anchor" href="#📋-阶段一-方案前"><span>📋 阶段一方案前</span></a></h2>
<p>此阶段为服务启动准备期需完成以下关键步骤</p>
<h4 id="_1-购买与支付" tabindex="-1"><a class="header-anchor" href="#_1-购买与支付"><span>1. 购买与支付</span></a></h4>
<ul>
<li>完成服务订单支付</li>
</ul>
<h4 id="_2-签署合约" tabindex="-1"><a class="header-anchor" href="#_2-签署合约"><span>2. 签署合约</span></a></h4>
<ul>
<li>在线签署健康 DMA 人体驾照学习合约</li>
<li>操作点击去签署跳转至签约页面</li>
</ul>
<h4 id="_3-信息档案" tabindex="-1"><a class="header-anchor" href="#_3-信息档案"><span>3. 信息档案</span></a></h4>
<ul>
<li>填写个人健康档案</li>
</ul>
<blockquote>
<p>💡 提示</p>
<ul>
<li>合约签署是服务生效的前提请务必完成</li>
<li>信息档案将用于AI健康服务方案定制</li>
</ul>
</blockquote>
<p><img src="https://images.health.ufutx.com/202512/02/ee128a3d569efded874171c69a32189c.jpeg" alt="方案前"></p>
<hr>
<h2 id="🧩-阶段二-方案中" tabindex="-1"><a class="header-anchor" href="#🧩-阶段二-方案中"><span>🧩 阶段二方案中</span></a></h2>
<p>此阶段为核心执行期用户需每日参与并同步数据</p>
<h4 id="_1-查看每日餐单" tabindex="-1"><a class="header-anchor" href="#_1-查看每日餐单"><span>1. 查看每日餐单</span></a></h4>
<ul>
<li>查看个性化营养餐单</li>
</ul>
<h4 id="_2-每日同步健康数据" tabindex="-1"><a class="header-anchor" href="#_2-每日同步健康数据"><span>2. 每日同步健康数据</span></a></h4>
<ul>
<li><strong>佩戴手环</strong>同步运动与睡眠数据
<ul>
<li>操作点击同步数据手动触发</li>
</ul>
</li>
<li><strong>使用体脂秤</strong>同步体重体脂等指标
<ul>
<li>操作点击同步数据上传测量结果</li>
</ul>
</li>
</ul>
<h4 id="_3-第二次视频会议" tabindex="-1"><a class="header-anchor" href="#_3-第二次视频会议"><span>3. 第二次视频会议</span></a></h4>
<ul>
<li>基于阶段性执行数据与健康反馈动态调整后续服务方案</li>
</ul>
<blockquote>
<p>🔄 数据同步建议</p>
<ul>
<li>每日早晚各一次确保数据连续性</li>
<li>手环与体脂秤数据可自动上传也可手动补录</li>
</ul>
</blockquote>
<p><img src="https://images.health.ufutx.com/202512/02/f0dfa5e5a86278ada7f807c8e9e154ce.jpeg" alt="方案中"></p>
<hr>
<h2 id="🎯-阶段三-方案后" tabindex="-1"><a class="header-anchor" href="#🎯-阶段三-方案后"><span>🎯 阶段三方案后</span></a></h2>
<p>此阶段为服务闭环期需完成总结与反馈</p>
<h4 id="_1-第三次视频会议" tabindex="-1"><a class="header-anchor" href="#_1-第三次视频会议"><span>1. 第三次视频会议</span></a></h4>
<ul>
<li>解读 49 天健康数据总结报告深度复盘方案执行全流程</li>
<li>状态📅 待安排</li>
</ul>
<h4 id="_2-方案反馈" tabindex="-1"><a class="header-anchor" href="#_2-方案反馈"><span>2. 方案反馈</span></a></h4>
<ul>
<li><strong>填写问卷</strong>方案结束后填写服务反馈问卷</li>
<li><strong>上传照片</strong>上传方案后身体变化照片</li>
</ul>
<h4 id="_3-提交复检报告" tabindex="-1"><a class="header-anchor" href="#_3-提交复检报告"><span>3. 提交复检报告</span></a></h4>
<ul>
<li>方案后第 23 上传复检报告如体检体测等</li>
</ul>
<p><img src="https://images.health.ufutx.com/202512/02/b3d416eb47ceaa791f96604472a5a12d.jpeg" alt="方案后"></p>
<hr>
<h2 id="🔍-使用说明" tabindex="-1"><a class="header-anchor" href="#🔍-使用说明"><span>🔍 使用说明</span></a></h2>
<table>
<thead>
<tr>
<th>功能</th>
<th>操作方式</th>
</tr>
</thead>
<tbody>
<tr>
<td>查看服务流程</td>
<td>在群聊中点击服务流程按钮</td>
</tr>
<tr>
<td>签署合约</td>
<td>点击去签署跳转至电子合同平台</td>
</tr>
<tr>
<td>同步数据</td>
<td>方案中点击同步数据按钮</td>
</tr>
<tr>
<td>提交反馈</td>
<td>方案后完成问卷与照片上传</td>
</tr>
</tbody>
</table>
<hr>
<blockquote>
<p>💡 <strong>最佳实践建议</strong></p>
<ul>
<li>建议用户每日固定时间同步手环与体脂秤数据</li>
<li>客服可主动引导用户完成方案后任务提升服务满意度</li>
</ul>
</blockquote>
</div></template>

View File

@ -0,0 +1,5 @@
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-prismjs/node_modules/@vuepress/highlighter-helper/lib/client/styles/base.css"
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-prismjs/lib/client/styles/nord.css"
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-prismjs/node_modules/@vuepress/highlighter-helper/lib/client/styles/line-numbers.css"
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-prismjs/node_modules/@vuepress/highlighter-helper/lib/client/styles/notation-highlight.css"
import "D:/xue/dma_handbook/node_modules/@vuepress/plugin-prismjs/node_modules/@vuepress/highlighter-helper/lib/client/styles/code-block-title.css"

View File

View File

@ -0,0 +1 @@
@forward 'file:///D:/xue/dma_handbook/docs/.vuepress/styles/palette.scss';

153
docs/.vuepress/client.js Normal file
View File

@ -0,0 +1,153 @@
// 导入自定义布局
import LoginLayout from './layouts/LoginLayout.vue'
// 导入默认布局必须保留否则其他页面会404
import DefaultLayout from '@vuepress/theme-default/layouts/Layout.vue'
import { defineClientConfig } from 'vuepress/client'
import { createPinia } from 'pinia'
// 1. 补全所有缺失的核心导入适配docs根目录的store/utils
import { useUserStore } from './store/modules/user'
import { showToast, getUserInfo } from '../utils/request' // 新增getUserInfo
// 核心修改导入全局常量SITE_BASE
import { SITE_BASE } from './constants.js';
// 原有组件导入(位置不变,无需修改)
import WithAuth from './components/WithAuth.vue'
import Login from './components/Login.vue'
import helperHTML from './components/helperHTML.vue'
import longPic from './components/longPic.vue'
import FaqList from './components/FaqList.vue'
import LongPicSplit from './components/LongPicSplit.vue'
export default defineClientConfig({
// 新增:注册布局
layouts: {
Layout: DefaultLayout, // 默认布局
LoginLayout: LoginLayout // 登录页布局
},
// 2. 解构出router路由守卫必须用
enhance({ app, router }) {
const pinia = createPinia()
app.use(pinia)
// 全局注册组件(原有逻辑,无问题)
app.component('WithAuth', WithAuth)
app.component('Login', Login)
app.component('helperHTML', helperHTML)
app.component('longPic', longPic)
app.component('FaqList', FaqList)
app.component('LongPicSplit', LongPicSplit)
// 权限指令v-auth修复this指向+Pinia实例化问题
app.directive('auth', {
mounted(el, binding) {
// 3. Pinia仓库必须执行实例化核心修复
const userStore = useUserStore()
const requiredRoles = binding.value
if (!requiredRoles) return
// 未登录/无权限直接隐藏
if (!userStore.isLogin) {
el.style.display = 'none'
return
}
let hasPermission = false
if (typeof requiredRoles === 'string') {
hasPermission = userStore.hasRole(requiredRoles)
} else if (Array.isArray(requiredRoles)) {
hasPermission = requiredRoles.some(role => userStore.hasRole(role))
}
if (!hasPermission) el.style.display = 'none'
},
updated(el, binding) {
// 4. 修复this指向问题直接复用mounted逻辑不用this
this.mounted.call(this, el, binding)
}
})
// 全局路由守卫VuePress 2.x 适配版(白名单+未登录跳登录)
const whiteList = ['/login.html'] // 无需登录的页面
// 上线做处理
if (typeof window == 'undefined') {
return
}
// 隐藏登录功能
// router.beforeEach(async (to, from, next) => {
// const userStore = useUserStore()
// const isLogin = userStore.isLogin
//
// // 白名单页面,直接放行
// if (whiteList.includes(to.path)) {
// next()
// return
// }
// if (typeof window == 'undefined') {
// next()
// return
// }
// // 未登录跳登录页并记录跳转前地址适配base: /dma_handbook/
// // 替换client.js中路由守卫的未登录跳转代码
// if (!isLogin) {
// showToast('请先登录后访问')
// // 核心修复直接使用to.fullPath已包含SITE_BASE无需手动拼接
// let redirectPath = to.fullPath
// // 兜底校验极端情况若fullPath未带SITE_BASE手动拼接防止地址栏手动修改
// if (!redirectPath.startsWith(SITE_BASE)) {
// redirectPath = `${SITE_BASE}${redirectPath.replace(/^\//, '')}` // 去掉开头的/,避免双斜杠
// }
// // 编码后拼接登录页地址
// const redirect = encodeURIComponent(redirectPath)
// window.location.href = `${SITE_BASE}login.html?redirect=${redirect}`
// return
// }
// // 核心修改:仅【已登录 + 未拉取过用户信息】时,才调用接口
// if (!userStore.isUserInfoFetched) {
// await getUserInfo(userStore)
// // 拉取成功后更新标记为true本次会话不再重复调用
// userStore.setUserInfoFetched(true)
// }
// // 已登录,正常放行
// next()
// })
// ==============================================
// 【唯一正确】等待页面完全加载完再滚动锚点
// 解决:图片/长图未加载完 → 滚动错位、自动上飘
// ==============================================
// ==============================================
// 【VuePress 正确】监听页面完全加载完毕
// 100% 解决:图片未加载完 → 滚动错位、往上飘
// ==============================================
router.afterEach(async (to) => {
if (!to.hash) return
// ======================================
// 【这里就是:等待页面完全加载完成】
// ======================================
await new Promise(resolve => setTimeout(resolve, 200)) // 等待DOM渲染
// 等待【所有图片】加载完成
await Promise.allSettled(
Array.from(document.images).map(img => {
return new Promise(resolve => {
if (img.complete) resolve()
img.onload = resolve
img.onerror = resolve
})
})
)
await new Promise(resolve => setTimeout(resolve, 200)) // 等待高度稳定
console.log('12321==')
// ======================================
// 【到这里:页面才算 100% 加载完成】
// 现在再滚动,绝对不会飘!
// ======================================
// const target = document.querySelector(to.hash)
// if (!target) return
//
// const top = target.offsetTop - 60
// window.scrollTo(0, top)
})
},
setup() {},
})

View File

@ -0,0 +1,140 @@
<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
import request from '../../utils/request.js'
const faqList = ref([])
const loading = ref(false)
const activeId = ref(null)
//
const currentPage = ref(1)
const pageSize = ref(15)
const totalPage = ref(1)
const finished = ref(false)
//
const getFaqList = async () => {
if (finished.value || loading.value) return
loading.value = true
try {
const res = await request({
url: '/go/api/h5/v1/other/get/question/list',
method: 'get',
params: {
page: currentPage.value,
page_size: pageSize.value
},
hideLoading: true
})
totalPage.value = res.total_page || 1
if (res.list?.length) {
faqList.value.push(...res.list)
}
//
if (currentPage.value >= totalPage.value) {
finished.value = true
} else {
currentPage.value += 1
}
} catch (err) {
console.error('获取FAQ失败', err)
} finally {
loading.value = false
}
}
// /
const toggle = (id) => {
activeId.value = activeId.value === id ? null : id
}
//
const handleScroll = () => {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
const clientHeight = document.documentElement.clientHeight
const scrollHeight = document.documentElement.scrollHeight
// 100px
if (scrollTop + clientHeight + 100 >= scrollHeight) {
getFaqList()
}
}
onMounted(() => {
getFaqList()
window.addEventListener('scroll', handleScroll)
})
onUnmounted(() => {
window.removeEventListener('scroll', handleScroll)
})
</script>
<template>
<div class="faq-container">
<div v-for="item in faqList" :key="item.id" class="faq-item">
<div class="faq-title" @click="toggle(item.id)">
<span>{{ item.title }}</span>
<span class="arrow">{{ activeId === item.id ? '' : '+' }}</span>
</div>
<div v-show="activeId === item.id" class="faq-content">
<div v-html="item.content"></div>
</div>
</div>
<!-- 加载提示 -->
<div v-if="loading" class="loading-tip">加载中...</div>
<!-- <div v-if="finished && faqList.length > 0" class="finished-tip">已加载全部</div>-->
</div>
</template>
<style scoped>
.faq-container {
margin: 20px 0;
}
.faq-item {
margin-bottom: 12px;
border: 1px solid #eee;
border-radius: 8px;
overflow: hidden;
}
.faq-title {
display: flex;
justify-content: space-between;
padding: 14px 16px;
background: #f9f9f9;
cursor: pointer;
font-weight: 500;
font-size: 15px;
}
.faq-title:hover {
background: #f3f3f3;
}
.arrow {
font-size: 18px;
font-weight: bold;
}
.faq-content {
padding: 16px;
line-height: 1.7;
}
.faq-content :deep(img) {
max-width: 100%;
height: auto;
margin: 10px 0;
}
.loading-tip {
padding: 16px;
text-align: center;
color: #666;
}
.finished-tip {
padding: 16px;
text-align: center;
color: #999;
}
</style>

View File

@ -0,0 +1,161 @@
<template>
<div class="login-page">
<div class="login-form">
<h2>DMA服务手册 - 登录</h2>
<div class="form-item">
<label>账号</label>
<input v-model="form.username" type="text" placeholder="请输入账号" />
</div>
<div class="form-item">
<label>密码</label>
<input v-model="form.password" type="password" placeholder="请输入密码" />
</div>
<button class="login-btn" @click="handleLogin" :disabled="loading">
{{ loading ? '登录中...' : '立即登录' }}
</button>
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import request from '../../utils/request';
import { useUserStore } from '../store/modules/user';
import { showToast } from '../../utils/request';
import { SITE_BASE } from '../constants.js';
// const VUEPRESS_BASE = '/dma_handbook/';
//
const form = ref({
username: '15622316024',
password: '123',
});
//
const loading = ref(false);
//
const userStore = useUserStore();
// URL
const redirect = ref('');
//
onMounted(() => {
if (typeof window === "undefined"){
return
}
const searchParams = new URLSearchParams(window.location.search);
console.log(searchParams,'searchParams');
// URLredirect
const rawRedirect = searchParams.get('redirect') || '';
if (rawRedirect) {
//
try {
redirect.value = decodeURIComponent(rawRedirect);
} catch (e) {
redirect.value = '';
}
}
// redirect/VUEPRESS_BASE
if (!redirect.value || !redirect.value.startsWith(SITE_BASE)) {
redirect.value = `${SITE_BASE}`; // /dma_handbook/
}
console.log(redirect.value,'searchParams');
});
//
const handleLogin = async () => {
//
if (!form.value.username) {
showToast('请输入账号');
return;
}
if (!form.value.password) {
showToast('请输入密码');
return;
}
loading.value = true;
let data = {
mobile: '15622316024',
area_code: 86,
code: '009527',
}
try {
//
const res = await request({
url: '/go/api/app/server/mobile/code/login', //
method: 'POST',
data: data,
hideLoading: true, // loading
});
// {token: 'xxx', userInfo: {id: 1, name: 'xxx', roles: ['coach']}}
userStore.setToken(res.api_token);
showToast('登录成功');
//
setTimeout(() => {
window.location.href = decodeURIComponent(redirect.value);
}, 1000);
} catch (err) {
console.log('登录失败:', err);
showToast(err.msg || err.message || '登录失败,请检查账号密码');
} finally {
loading.value = false;
}
};
</script>
<style scoped>
.login-page {
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #f5f5f5;
}
.login-form {
width: 350px;
padding: 30px;
background: #fff;
border-radius: 8px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
}
.login-form h2 {
text-align: center;
margin-bottom: 20px;
color: #333;
}
.form-item {
margin-bottom: 20px;
display: flex;
flex-direction: column;
}
.form-item label {
font-size: 14px;
color: #666;
margin-bottom: 6px;
}
.form-item input {
padding: 10px;
border: 1px solid #e5e5e5;
border-radius: 4px;
font-size: 14px;
outline: none;
}
.form-item input:focus {
border-color: #299764;
}
.login-btn {
width: 100%;
padding: 10px;
background: #299764;
color: #fff;
border: none;
border-radius: 4px;
font-size: 16px;
cursor: pointer;
}
.login-btn:disabled {
background: #96d8b7;
cursor: not-allowed;
}
</style>

View File

@ -0,0 +1,421 @@
<script setup>
import { ref, onMounted, computed } from 'vue'
import { SITE_BASE, CDN_BASE} from '../constants';
const props = defineProps({
src: { type: String, required: true },
alt: { type: String, default: '长图' },
chunkHeight: { type: Number, default: 2000 },
//
originalWidth: { type: Number, default: 0 },
originalHeight: { type: Number, default: 0 },
maxWidth: { type: [String, Number], default: '100%' }
})
const imageList = ref([])
const isLoading = ref(true)
//
const showViewer = ref(false)
const currentIndex = ref(0)
const viewImg = ref('')
//
const scale = ref(1)
const startScale = ref(1)
const startDistance = ref(0)
//
const startX = ref(0)
// CSS aspect-ratio
const aspectRatioStyle = computed(() => {
if (props.originalWidth && props.originalHeight) {
return `${props.originalWidth} / ${props.originalHeight}`
}
return undefined
})
//
const openView = (idx) => {
if (imageList.value.length === 0) return
currentIndex.value = idx
viewImg.value = imageList.value[idx]
showViewer.value = true
scale.value = 1
document.body.style.overflow = 'hidden'
}
//
const closeView = () => {
showViewer.value = false
document.body.style.overflow = ''
}
//
const prevImg = () => {
if (currentIndex.value > 0) {
currentIndex.value--
viewImg.value = imageList.value[currentIndex.value]
scale.value = 1
}
}
//
const nextImg = () => {
if (currentIndex.value < imageList.value.length - 1) {
currentIndex.value++
viewImg.value = imageList.value[currentIndex.value]
scale.value = 1
}
}
//
const onTouchStart = (e) => {
if (e.touches.length === 1) {
startX.value = e.touches[0].clientX
}
if (e.touches.length === 2) {
startDistance.value = getDistance(e.touches[0], e.touches[1])
startScale.value = scale.value
}
}
//
const onTouchMove = (e) => {
//
if (e.touches.length === 2 || (e.touches.length === 1 && scale.value > 1)) {
// e.preventDefault() passive listener Vue .prevent
// .prevent
}
if (e.touches.length === 2) {
const dist = getDistance(e.touches[0], e.touches[1])
// 1x - 5x
scale.value = Math.min(5, Math.max(1, startScale.value * (dist / startDistance.value)))
}
}
//
const onTouchEnd = (e) => {
if (e.changedTouches.length === 1) {
const diff = e.changedTouches[0].clientX - startX.value
// 60px
if (Math.abs(diff) > 60) {
diff > 0 ? prevImg() : nextImg()
}
}
}
//
const getDistance = (p1, p2) => {
return Math.hypot(p2.clientX - p1.clientX, p2.clientY - p1.clientY)
}
// 🔥
const wrapperStyle = computed(() => {
let maxW = props.maxWidth
if (typeof maxW === 'number') maxW = maxW + 'px'
return {
aspectRatio: aspectRatioStyle.value,
maxWidth: maxW
}
})
// 🔥🔥🔥 VuePress
const getImageUrl = (url) => {
//
if (url.startsWith('http')) return url
// 404
const base = SITE_BASE || '/'
return base + url.replace(/^\//, '')
}
//
const sliceImage = () => {
isLoading.value = true
const img = new Image()
//
img.crossOrigin = 'anonymous'
img.src = getImageUrl(props.src)
img.onload = () => {
const { width, height } = img
const num = Math.ceil(height / props.chunkHeight)
const slices = []
for (let i = 0; i < num; i++) {
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')
const h = Math.min(props.chunkHeight, height - i * props.chunkHeight)
canvas.width = width
canvas.height = h
//
ctx.drawImage(img, 0, i * props.chunkHeight, width, h, 0, 0, width, h)
// base64
slices.push(canvas.toDataURL('image/jpeg', 0.9)) // 0.9
}
imageList.value = slices
isLoading.value = false
}
img.onerror = () => {
console.error('图片加载失败:', props.src)
isLoading.value = false
}
// img.src = props.src
}
onMounted(() => {
sliceImage()
})
</script>
<template>
<div
class="long-pic-slice no-medium-zoom"
:style="wrapperStyle"
>
<!-- 加载中占位提示 -->
<div v-if="isLoading" class="loading-state">
<span class="loading-text">正在加载长图...</span>
</div>
<!-- 切片列表 -->
<img
v-for="(data, idx) in imageList"
:key="idx"
:src="data"
:alt="`${alt}-${idx}`"
class="slice-img no-zoom"
loading="eager"
@click="openView(idx)"
/>
<!-- 全屏预览层 -->
<!-- <Teleport to="body">-->
<!-- <transition name="viewer-fade">-->
<div v-if="showViewer" class="viewer" @click="closeView">
<!-- 左箭头 -->
<div
class="arrow arrow-left"
@click.stop="prevImg"
:class="{ disabled: currentIndex <= 0 }"
>
</div>
<!-- 图片容器 (防止点击穿透) -->
<div class="viewer-content">
<img
:src="viewImg"
class="viewer-img"
:style="{ transform: `scale(${scale})` }"
@touchstart.prevent="onTouchStart"
@touchmove.prevent="onTouchMove"
@touchend.prevent="onTouchEnd"
/>
</div>
<!-- 右箭头 -->
<div
class="arrow arrow-right"
@click.stop="nextImg"
:class="{ disabled: currentIndex >= imageList.length - 1 }"
>
</div>
<!-- 底部指示器 -->
<div class="indicator">
{{ currentIndex + 1 }} / {{ imageList.length }}
</div>
<!-- 关闭按钮 (可选) -->
<div class="close-btn" @click.stop="closeView">×</div>
</div>
<!-- </transition>-->
<!-- </Teleport>-->
</div>
</template>
<style scoped>
.long-pic-slice {
width: 100%;
max-width: 100%;
margin: 12px 0;
position: relative;
background-color: #f5f5f5; /* 加载时的背景色 */
/* 【核心修复】设置最小高度,防止锚点定位错误 */
/* 如果没有传入宽高比,至少占据 300px避免高度为 0 */
min-height: 300px;
display: flex;
flex-direction: column;
border-radius: 8px;
overflow: hidden;
}
/* 加载状态样式 */
.loading-state {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
display: flex;
align-items: center;
justify-content: center;
z-index: 0;
color: #999;
font-size: 14px;
background: rgba(255,255,255,0.5);
}
.slice-img {
display: block;
width: 100%;
height: auto;
cursor: pointer;
position: relative;
z-index: 1;
/* 移除图片底部的微小间隙 */
vertical-align: bottom;
}
/* --- 全屏预览样式 --- */
.viewer {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.95);
display: flex;
align-items: center;
justify-content: center;
z-index: 999999;
backdrop-filter: blur(5px);
}
.viewer-content {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden; /* 防止放大后出现滚动条 */
}
.viewer-img {
max-width: 90%;
max-height: 90vh;
object-fit: contain;
transition: transform 0.15s ease-out; /* 缩放过渡更跟手 */
user-select: none;
-webkit-user-drag: none;
box-shadow: 0 0 20px rgba(0,0,0,0.5);
}
/* 箭头样式 */
.arrow {
position: fixed;
top: 50%;
transform: translateY(-50%);
width: 44px;
height: 44px;
background: rgba(255, 255, 255, 0.15);
color: #fff;
font-size: 28px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 100;
user-select: none;
transition: all 0.2s;
border: 1px solid rgba(255,255,255,0.1);
}
.arrow:hover:not(.disabled) {
background: rgba(255, 255, 255, 0.3);
transform: translateY(-50%) scale(1.1);
}
.arrow-left { left: 20px; }
.arrow-right { right: 20px; }
.arrow.disabled {
opacity: 0.2;
cursor: not-allowed;
pointer-events: none;
}
/* 指示器 */
.indicator {
position: fixed;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
color: #fff;
font-size: 14px;
background: rgba(0, 0, 0, 0.6);
padding: 6px 16px;
border-radius: 20px;
z-index: 100;
font-family: monospace;
letter-spacing: 1px;
}
/* 关闭按钮 */
.close-btn {
position: fixed;
top: 20px;
right: 20px;
width: 36px;
height: 36px;
background: rgba(0,0,0,0.2);
color: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
z-index: 100;
transition: background 0.2s;
}
.close-btn:hover {
background: rgba(255,255,255,0.4);
}
/* 淡入淡出动画 */
.viewer-fade-enter-active,
.viewer-fade-leave-active {
transition: opacity 0.3s ease;
}
.viewer-fade-enter-from,
.viewer-fade-leave-to {
opacity: 0;
}
/* 移动端适配 */
@media (max-width: 768px) {
.arrow {
width: 36px;
height: 36px;
font-size: 24px;
}
.arrow-left { left: 10px; }
.arrow-right { right: 10px; }
.viewer-img {
max-width: 100%;
max-height: 100vh;
}
}
</style>

View File

@ -0,0 +1,39 @@
<template>
<div v-if="hasPermission">
<slot />
</div>
<div v-else class="no-permission">
<Login v-if="!isLoggedIn()" />
<template v-else>
无权限查看此内容
</template>
</div>
</template>
<script>
import { checkPermission, getCurrentUserRole, isLoggedIn, showLoginModal } from '../../utils/auth';
export default {
props: ['requiredPerm'],
methods: {
isLoggedIn() {
return isLoggedIn();
}
},
computed: {
hasPermission() {
if (!isLoggedIn()) {
showLoginModal();
return false;
}
const role = getCurrentUserRole();
return checkPermission(role, this.requiredPerm);
}
},
mounted() {
if (!isLoggedIn()) {
showLoginModal();
}
}
}
</script>

View File

@ -0,0 +1,11 @@
<script setup>
</script>
<template>
<h1>23432</h1>
</template>
<style scoped>
</style>

View File

@ -0,0 +1,437 @@
<script setup lang="ts">
import {reactive,toRefs, ref} from "vue";
import { defineComponent } from 'vue'
const props = defineProps({
index: {
type: Number,
default: 0
},
title: {
type: Number,
default: 0
}
})
const {index,title} =toRefs(props)
const list = reactive([
{
"id": 2,
"category_id": 1,
"title": "手环为什么使用Type-C的充电接口",
"content": "<p class=\"MsoNormal\" style=\"text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">1Type-C比起USB充电接口有更强的兼容性Type-C接口已成为移动设备最新的主流通用充电标准目前主流电子设备品牌例如苹果、华为、小米、三星均选用Type-C充电接口无需为不同设备准备多种充电器简化了充电设备的管理。</span></span></p>\n<p class=\"MsoNormal\" style=\"text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">2)耐用性和便捷性Type-C接口具有正反插功能使用更方便同时也更加耐用减少了插拔时损坏接口的风险。</span></span></p>\n<p class=\"MsoNormal\" style=\"text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">3)当前接口设计适用连接具备反充电功能的手机对手环进行充电,设备小,损耗手机电量少,不用担心手机电池损耗,随时移动充电便捷性强。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:30:09",
"update_time": "2025-03-26 17:54:40",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 3,
"category_id": 1,
"title": "手环电量怎么查看",
"content": "<p><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">&nbsp; 1按下手环右侧按钮查看显示灯颜色绿灯表示电量充足正常使用没有问题。红灯闪烁表示电量不足指示灯不亮表示没有电请及时充电。</span></span></p>\n<p><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">&nbsp; 2也可以通过</span><span style=\"font-family: 宋体;\">APP手环首页顶部电量百分比查看电量低于30%的情况,请及时充电。</span></span></p>\n<p class=\"MsoNormal\" style=\"text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"> <img src=\"https://images.health.ufutx.com/202408/16/d2b5ca33bd970f64a6301fa75ae2eb221723775855837.jpeg\" /> </span></p>\n<p>&nbsp; <span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">后续会规划低电量预警警告提醒功能,请耐心等待。</span></span></p>\n<p>&nbsp;</p>",
"sort": 1,
"create_time": "2024-08-16 10:38:58",
"update_time": "2025-03-26 17:54:36",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 4,
"category_id": 1,
"title": "手环正确佩戴方式",
"content": "<p class=\"MsoNormal\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">&nbsp; 请将手环佩戴在手腕上方,传感器放置手背一面紧贴皮肤,松紧调整至舒适状态,</span><span style=\"font-family: 宋体;\">logo和表带置手外侧。正确佩戴有助于实时采集符合人体健康指标更准确的数据请规范佩戴。</span></span></p>\n<p class=\"MsoNormal\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><img src=\"https://images.health.ufutx.com/202408/16/d2b5ca33bd970f64a6301fa75ae2eb221723776012907.jpeg\" /></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:40:26",
"update_time": "2025-03-26 17:55:09",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 5,
"category_id": 1,
"title": "手环连接不上手机APP",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">1确认是否电量充足按下手环传感器侧面按钮显示灯亮代表有电红色蓝色交替闪烁状态下显示电量不足需要及时充电。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">2使用手环靠近连接手机再次尝试连接。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">3检查当前连接手环是否被其他设备连接。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">4尝试关闭蓝牙后再打开蓝牙再次连接。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">5退出友福同享APP并重新打开或重启手机。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">6检查手机是否开启勿扰模式、飞行模式、省电模式、超级省电模式等非常规状态模式解除非常规状态后重新尝试再次连接。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">以上方式都连接不了的情况,请截图保存好未连接状态界面显示,检查手机系统自带蓝牙能否搜索到对应手环,联系技术团队人员协助排查解决问题,并录入</span><span style=\"font-family: 宋体;\">BUG问题库进行追踪管理。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:40:53",
"update_time": "2025-03-26 17:55:17",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 6,
"category_id": 1,
"title": "运动步数与微信运动步数不一致",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">1友福同享智能手环测量的是体动次数综合全面反馈身体运动量可以进入步数详情查看每小时体动量步数更能反映身体实际运动量消耗的卡路里与实际更匹配。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">2微信是借助手机陀螺仪信息获得步数且不能显示每小时的步数。没有携带手机在身边以及将手机放置口袋或者背包情况下并不能准确计量实际走路或运动步数。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:41:36",
"update_time": "2025-03-26 17:55:23",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 7,
"category_id": 1,
"title": "睡眠时间与实际有偏差",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">1确认睡觉佩戴过程中是否有电按下手环右侧按钮显示灯会亮代表有电红色蓝色交替闪烁状态下电量不足需要及时充电。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">2检查连接状态是否频繁掉线部分手机型号比较老旧连接适配性较弱需要技术人员根据型号逐个排查。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">3睡眠时间与实际不匹配睡觉前后短时间平静躺卧低功耗休息类睡眠状态下判定为睡眠为正常状态。若在清醒起床状态特别是运动状态下计入睡眠状况截图保存好界面联系技术人员收集睡眠数据做问题追踪处理。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">4目前当天白天只能看到昨天18:00之后的睡眠数据这是根据太阳落山自然生物钟规律以及大部分人作息规律设置会存在1800之前连续睡眠数据看不到的情况后续会规划可供选择的方案比如根据连续睡眠时间来展示睡眠时长满足特殊时间睡眠或者昏睡等特殊人群睡眠查看需求。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:43:08",
"update_time": "2025-03-26 17:55:28",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 8,
"category_id": 1,
"title": "手环被他人绑定无法解绑",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">如是认识的人误操作绑定,可以先联系他本人解绑后重新绑定。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">如是不认识的人员绑定,又无法联系到他本人的情况下,请联系技术团队,确认情况属实,后台强制解绑并重新绑定。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">后续会规划申请解绑功能,人工审核确认本人手环是否被误绑定,人工通过解绑之后,可重新绑定对应手环,请耐心等待。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:43:46",
"update_time": "2025-03-26 17:56:09",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 9,
"category_id": 1,
"title": "首次绑定手环时,周边有好几个手环设备,不知道绑定哪个",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">请找个人少的地方,打开蓝牙,单独搜索链接自己手上的手环。后续会进行相关优化,请耐心等待。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">规划内容包含:包装盒会提供绑定二维码一对一进行手机绑定;如二维码不在身边或者丢失情况下,可以用搜索功能进行绑定,能轻松找到自己手上尚未被绑定的手环。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:45:04",
"update_time": "2025-03-26 17:56:16",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 10,
"category_id": 5,
"title": "安装app时提示恶意应用怎么办?",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">我们现在属于测试阶段,不能频繁更新到应用市场,由于个别类型手机有外来应用特殊管控,非应用商城安装包安装属于正常的风险提示,我们公司提供的下载链接和二维码本身不会携带病毒,可以放心下载安装。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">处理方式如下:正常情况下按照提示,确认已了解风险,并点击继续安装,即可安装成功。有些手机系统中途可能会出现验证锁屏密码等隐私验证信息来确保本人手机安全,按提示操作后即可安装成功。手机自带系统在开启纯净模式情况下也会出现这样的情况,关闭纯净模式,按提示下载安装即可安装成功。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:45:53",
"update_time": "2025-03-26 17:56:23",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 11,
"category_id": 5,
"title": "如何关闭纯净模式?",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">可以自行百度查找相关类型手机的纯净模式关闭方式或者联系公司技术人员进行操作。以华为手机为例,纯净模式下出现病毒应用风险提示,需先关闭纯净模式,进入手机设置</span><span style=\"font-family: 宋体;\">&mdash;》系统和更新&mdash;》纯净模式&mdash;》点击退出(或开启按钮至灰或者关闭)。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:46:14",
"update_time": "2025-03-26 17:56:28",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 12,
"category_id": 1,
"title": "手环佩戴过程中出现不舒适或者发红",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">我们人体本身有一个佩戴习惯问题,如果常年不佩戴东西会出现不习惯的感觉,就像佩戴手表一样,养成习惯,这种不舒适感就会减轻或者没有。佩戴超过三天或者更长,我们会感觉越来越好戴,甚至不想摘掉。部分人皮肤比较脆弱敏感,出汗多,天气下雨或者闷热情况下,长期不移动手环,可能出现发红等情况。不用担心,用湿纸巾擦拭清洁传感器接触皮肤面一两次一天,保持好卫生,经常移动一下传感器或者两个手轮着佩戴,保持佩戴贴肤但不紧绷的状态,则不会发生这类情况。</span></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">手环表带颜色和材质后续会有更多选择性,以满足不同人群需要。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:46:41",
"update_time": "2025-03-26 17:56:43",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 13,
"category_id": 5,
"title": "安装APP以及开放文件访问权限会不会被恶意获取用户信息或者数据挪作他用具有隐私信息泄露的风险",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">这个是完全不存在的,完全不用担心。我们的</span><span style=\"font-family: 宋体;\">APP上线前通过了工信部ICP备案合法合规运行不存在非法经营活动。遵守《互联网信息服务管理办法》有健全的网络与信息安全保障措施包括网站安全保障措施、信息安全保密管理制度、用户信息安全管理制度。备案号为</span></span><strong><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: bold; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">粤</span><span style=\"font-family: 宋体;\">ICP备12008876号</span></span></strong><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">,查询地址:</span></span><span style=\"mso-spacerun: 'yes'; font-family: 宋体; color: #0000ff; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\">https://beian.miit.gov.cn/#/Integrated/recordQuery</span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; color: #0000ff; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><img src=\"https://images.health.ufutx.com/202408/16/d2b5ca33bd970f64a6301fa75ae2eb221723776441977.jpeg\" /></span></p>\n<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none; line-height: 19.0000pt; mso-line-height-rule: exactly;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">非手机系统应用商城下载安装权限开放过程中会存在一些风险提醒,不排除存在对外来合法合规</span><span style=\"font-family: 宋体;\">APP安装过程中提示过多风险提示信息以引起用户注意达到保护用户隐私安全目的但这并不代表APP本身运行有问题认准本公司提供的链接安装的APP不会存在违法违规行为请放心使用。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:48:07",
"update_time": "2025-03-26 17:56:50",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 14,
"category_id": 5,
"title": "我反馈的问题会不会石沉大海",
"content": "<p class=\"MsoNormal\" style=\"mso-para-margin-left: 0.0000gd; text-indent: 24.0000pt; mso-char-indent-count: 2.0000; text-autospace: ideograph-numeric; mso-pagination: none;\"><span style=\"mso-spacerun: 'yes'; font-family: 宋体; font-weight: normal; font-size: 12.0000pt; mso-font-kerning: 1.0000pt;\"><span style=\"font-family: 宋体;\">亲爱的测试官,您好!有任何问题或建议我们都会认真对待,并全力解决。感恩每一位测试官的反馈与配合,每一次反馈都会让我们的产品变得更好更优秀,让我们满心欢喜一同陪伴并见证这一成长过程。</span></span></p>",
"sort": 1,
"create_time": "2024-08-16 10:48:54",
"update_time": "2025-03-26 17:56:56",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 15,
"category_id": 1,
"title": "如何使用健康手环?",
"content": "<p><a title=\"点击查看使用健康手环视频~\" href=\"https://images.health.ufutx.com/202410/15/2024101401.mp4\">点击查看使用健康手环使用视频~</a></p>",
"sort": 1,
"create_time": "2025-01-02 17:12:21",
"update_time": "2025-03-26 17:57:01",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 16,
"category_id": 1,
"title": "如何使用体脂秤?",
"content": "<p><a title=\"点击查看健康体脂秤使用视频~\" href=\"https://images.health.ufutx.com/202410/15/2024101402.mp4\">点击查看体脂秤使用视频~</a></p>",
"sort": 1,
"create_time": "2025-01-02 17:14:20",
"update_time": "2025-03-26 17:57:06",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 17,
"category_id": 5,
"title": "iOS使用app卡在启动页怎么办",
"content": "<ul class=\"auto-hide-last-sibling-br\">\n<li><span style=\"font-size: 16px;\"><strong>强制关闭并重新打开</strong></span>\n<ul class=\"auto-hide-last-sibling-br\">\n<li><span style=\"font-size: 16px;\">双击 iPhone 的 &ldquo;主屏幕&rdquo; 按钮(全面屏设备从屏幕底部边缘向上轻扫并停顿),打开多任务处理界面。</span></li>\n<li><span style=\"font-size: 16px;\">在多任务处理界面中,找到出现问题的 App 卡片,向上滑动该卡片将其关闭。</span></li>\n<li><span style=\"font-size: 16px;\">然后再次点击该 App 的图标重新打开,看是否能正常进入。</span></li>\n</ul>\n</li>\n</ul>\n<p>&nbsp;</p>\n<ul class=\"auto-hide-last-sibling-br\">\n<li><span style=\"font-size: 16px;\"><strong>检查网络连接</strong></span>\n<ul class=\"auto-hide-last-sibling-br\">\n<li><span style=\"font-size: 16px;\">部分 App 需要联网才能正常启动和使用,确保你的 iOS 设备已连接到稳定的网络。可以尝试切换网络,比如从 Wi-Fi 切换到移动数据,或者反之。</span></li>\n</ul>\n</li>\n</ul>",
"sort": 1,
"create_time": "2025-02-14 18:01:20",
"update_time": "2025-03-26 17:57:14",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 18,
"category_id": 5,
"title": "【苹果系统】友福同享App授权教程",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058845650.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058848281.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058851942.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058855113.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058857254.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058859455.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058861456.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058864057.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058867958.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428058870109.jpeg\" />&nbsp;</p>",
"sort": 1,
"create_time": "2025-03-13 12:01:07",
"update_time": "2025-03-26 17:57:20",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 19,
"category_id": 5,
"title": "【安卓系统】友福同享App授权教程",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059398980.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059403091.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059406232.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059408403.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059410904.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059413585.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059415666.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059417607.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059419998.jpeg\" /> <img src=\"https://images.health.ufutx.com/202503/24/5e543256c480ac577d30f76f9120eb7417428059421979.jpeg\" />&nbsp;</p>",
"sort": 1,
"create_time": "2025-03-24 16:45:45",
"update_time": "2025-03-26 17:57:28",
"category": {
"id": 5,
"name": "其他业务",
"icon": "https://images.health.ufutx.com/202503/26/042f109b4ea6f3f7642926fe8136fdb7.png",
"sort": 1,
"create_time": "2025-03-26 17:04:07",
"update_time": "2025-03-26 17:04:07"
}
},
{
"id": 22,
"category_id": 1,
"title": "购买25800元友福同享DMA 智能健康方案,它包含哪些服务,及相关的流程是什么?",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/28/73c90abc9dea4b8f9e1daac17688c0a41743133737355.jpeg\" alt=\"\" width=\"1080\" height=\"12007\" /></p>",
"sort": 1,
"create_time": "2025-03-28 11:49:00",
"update_time": "2025-03-28 11:49:00",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 23,
"category_id": 3,
"title": "友福同享健康教练双证报考条件是什么?",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/28/8091d01833ef90c6115a92252af381e71743133803770.jpeg\" alt=\"\" width=\"1080\" height=\"3835\" /></p>",
"sort": 1,
"create_time": "2025-03-28 11:50:01",
"update_time": "2025-03-28 11:50:01",
"category": {
"id": 3,
"name": "培训业务",
"icon": "https://images.health.ufutx.com/202503/26/4019a6ef1f9df47a80bbcb26e2918c11.png",
"sort": 1,
"create_time": "2025-03-26 17:03:38",
"update_time": "2025-03-26 17:03:38"
}
},
{
"id": 24,
"category_id": 3,
"title": "友福同享健康教练双证报考流程是什么?",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/28/89c5cc15f8651c76156d6b3f52731cd21743133847968.jpeg\" alt=\"\" width=\"1200\" height=\"10605\" /></p>",
"sort": 1,
"create_time": "2025-03-28 11:50:44",
"update_time": "2025-03-28 11:50:44",
"category": {
"id": 3,
"name": "培训业务",
"icon": "https://images.health.ufutx.com/202503/26/4019a6ef1f9df47a80bbcb26e2918c11.png",
"sort": 1,
"create_time": "2025-03-26 17:03:38",
"update_time": "2025-03-26 17:03:38"
}
},
{
"id": 25,
"category_id": 1,
"title": "友福同享做DMA健康方案请问体检有哪些项目",
"content": "<p><img src=\"https://images.health.ufutx.com/202503/28/85f65a4c0999288c605dc0cf2851b2d11743133931953.jpeg\" alt=\"\" width=\"625\" height=\"876\" /></p>",
"sort": 1,
"create_time": "2025-03-28 11:52:08",
"update_time": "2025-03-28 11:52:08",
"category": {
"id": 1,
"name": "健康业务",
"icon": "https://images.health.ufutx.com/202503/26/72a8feb143001e4704e8d72970c85b81.png",
"sort": 1,
"create_time": "2025-03-26 17:03:03",
"update_time": "2025-03-26 17:03:03"
}
},
{
"id": 26,
"category_id": 2,
"title": "怎么查看订单的物流信息?",
"content": "<p>进入友福同享的APP或小程序在&ldquo;我的&rdquo;里面,找到&ldquo;我的订单&rdquo;找到对应商品定单,找到快递单号,拷贝下来后,点击下面快递查询网页,便可以知道物流的进程及相关信息:</p>\n<p>https://www.baidu.com/s?rsv_dl=selectedsearch&amp;wd=%E5%BF%AB%E9%80%92%E5%8D%95%E5%8F%B7%E6%9F%A5%E8%AF%A2%0A%0A</p>",
"sort": 1,
"create_time": "2025-03-28 11:53:38",
"update_time": "2025-03-28 11:59:55",
"category": {
"id": 2,
"name": "商城业务",
"icon": "https://images.health.ufutx.com/202503/26/afff360bf1542ae5b17c60b981f1229b.png",
"sort": 1,
"create_time": "2025-03-26 17:03:20",
"update_time": "2025-03-26 17:03:20"
}
}
])
//
const getChineseNumber = (num) => {
const chineseNumbers = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
return num <= 10 ? `${chineseNumbers[num - 1]}` : `${num}`;
};
</script>
<template>
<div v-for="(item,index) in list">
<h2 :id="getChineseNumber(index + 1)+item.title">{{ getChineseNumber(index + 1) }}{{item.title}}</h2>
<div class="htmlMessage" v-html="item.content"></div>
</div>
</template>
<style scoped>
.htmlMessage{
white-space: pre-wrap;
}
:deep(img) {
width: 100% !important;
max-width: 100% !important;
height:auto!important;
}
</style>

View File

@ -0,0 +1,231 @@
<script setup>
import { ref, onMounted, watch, onUnmounted, getCurrentInstance } from 'vue'
const props = defineProps({
src: {
type: String,
required: true
},
alt: {
type: String,
default: '图片'
},
maxHeight: {
type: Number,
default: 500
},
// / 300 | '300px' | '100%'
width: {
type: [Number, String],
default: '100%'
}
})
const isExpanded = ref(false)
const showExpand = ref(false) // maxHeight/
const isImageLoaded = ref(false)
const imgRef = ref(null)
const resizeObserver = ref(null)
const instance = getCurrentInstance()
// /
const notifyImageLoaded = () => {
if (instance?.appContext.config.globalProperties.$notifyImageLoaded) {
instance.appContext.config.globalProperties.$notifyImageLoaded();
}
document.dispatchEvent(new CustomEvent('longPicImageLoaded'));
};
//
// maxHeight
const checkImageHeight = (img) => {
if (typeof window === 'undefined') return
const naturalHeight = img.naturalHeight || img.offsetHeight
console.log(props.alt, naturalHeight, '图片实际高度')
// maxHeight
showExpand.value = naturalHeight > props.maxHeight
isImageLoaded.value = true
//
if (!showExpand.value) {
isExpanded.value = true
}
notifyImageLoaded()
}
//
const handleImageLoad = (event) => {
if (isImageLoaded.value) return
checkImageHeight(event.target)
}
//
const observeResize = () => {
if (typeof window === 'undefined' || !window.ResizeObserver) return
resizeObserver.value = new ResizeObserver((entries) => {
//
const img = imgRef.value
if (img && isImageLoaded.value) {
checkImageHeight(img)
}
notifyImageLoaded()
})
if (imgRef.value) {
resizeObserver.value.observe(imgRef.value)
}
}
// /showExpandtrue
const toggleExpand = () => {
if (!showExpand.value) return //
isExpanded.value = !isExpanded.value
setTimeout(() => notifyImageLoaded(), 100)
}
// /
const formatWidth = () => {
if (typeof props.width === 'number') {
return `${props.width}px`
}
return props.width
}
//
onMounted(() => {
if (typeof window === 'undefined') return
const img = imgRef.value
if (img && img.complete) {
checkImageHeight(img)
}
observeResize()
})
onUnmounted(() => {
if (resizeObserver.value) {
resizeObserver.value.disconnect()
}
})
// width
watch(() => props.width, () => {
if (isImageLoaded.value) {
notifyImageLoaded()
}
})
</script>
<template>
<div class="image-container" :style="{ width: formatWidth() }">
<!-- 核心修改未超高度时取消maxHeight和aspectRatio限制 -->
<div
class="image-wrapper"
:class="{ 'expanded': isExpanded }"
:style="{
// maxHeight
maxHeight: showExpand && !isExpanded ? `${maxHeight}px` : 'none',
// aspectRatio
aspectRatio: showExpand && !isExpanded ? '16/9' : 'unset'
}"
>
<img
ref="imgRef"
:src="src"
:alt="alt"
@load="handleImageLoad"
class="responsive-image"
loading="eager"
decoding="async"
>
</div>
<!-- 仅当showExpand为true时显示展开/收起按钮 -->
<div v-if="showExpand" class="hint-wrapper">
<div class="expand-hint" @click="toggleExpand" v-show="!isExpanded">
<span>点击查看完整图片</span>
</div>
<div class="collapse-hint" @click="toggleExpand" v-show="isExpanded">
<span>收起图片</span>
</div>
</div>
</div>
</template>
<style scoped>
.image-container {
position: relative;
margin: 0 auto;
min-height: 100px; /* 兜底高度,防止加载前塌陷 */
/* 宽度由外部配置控制 */
}
.image-wrapper {
width: 100%;
overflow: hidden;
transition: max-height 0.3s ease-in-out;
position: relative;
}
/* 仅当未展开且需要限制高度时显示渐变遮罩 */
.image-wrapper:not(.expanded)::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 80px;
background: linear-gradient(transparent, rgba(255,255,255,0.95));
pointer-events: none;
}
/* 展开后隐藏遮罩 */
.image-wrapper.expanded::after {
display: none;
}
.responsive-image {
width: 100%;
height: auto;
display: block;
object-fit: contain; /* 确保图片完整显示,不拉伸 */
}
/* 按钮容器 */
.hint-wrapper {
width: 100%;
}
.expand-hint, .collapse-hint {
text-align: center;
padding: 8px;
border-radius: 4px;
font-size: 14px;
cursor: pointer;
margin-top: 8px;
transition: background-color 0.3s;
}
.expand-hint {
background: rgba(64, 158, 255, 0.1);
color: #409eff;
}
.expand-hint:hover {
background: rgba(64, 158, 255, 0.2);
}
.collapse-hint {
background: rgba(103, 194, 58, 0.1);
color: #67c23a;
}
.collapse-hint:hover {
background: rgba(103, 194, 58, 0.2);
}
</style>

View File

@ -0,0 +1,101 @@
<script setup>
import { ref, onMounted, computed } from 'vue'
const props = defineProps({
src: {
type: String,
required: true
},
alt: {
type: String,
default: '长图'
},
sliceHeight: {
type: Number,
default: 600
}
})
const imgLoaded = ref(false)
const naturalWidth = ref(0)
const naturalHeight = ref(0)
const containerWidth = ref(0)
const handleLoad = (e) => {
imgLoaded.value = true
naturalWidth.value = e.target.naturalWidth
naturalHeight.value = e.target.naturalHeight
}
const handleContainerResize = (el) => {
containerWidth.value = el.getBoundingClientRect().width
}
const slices = computed(() => {
if (!imgLoaded.value) return []
const count = Math.ceil(naturalHeight.value / props.sliceHeight)
const arr = []
for (let i = 0; i < count; i++) {
arr.push({
top: i * props.sliceHeight,
height: Math.min(props.sliceHeight, naturalHeight.value - i * props.sliceHeight)
})
}
return arr
})
</script>
<template>
<div
class="long-pic-img-split"
@resize="handleContainerResize($event.target)"
>
<!-- 用于获取尺寸 -->
<img
:src="src"
:alt="alt"
@load="handleLoad"
class="img-hidden"
>
<!-- 正常分段显示宽度100%不会被放大 -->
<img
v-for="(item, idx) in slices"
:key="idx"
:src="src"
:alt="`${alt}-${idx + 1}`"
class="split-img"
:style="{
height: `${item.height}px`,
objectPosition: `center ${-item.top}px`,
}"
/>
</div>
</template>
<style scoped>
.long-pic-img-split {
width: 100%;
max-width: 100%;
overflow: hidden;
margin: 10px 0;
}
.img-hidden {
position: absolute;
width: 100%;
opacity: 0;
pointer-events: none;
}
.split-img {
display: block;
width: 100% !important;
max-width: 100% !important;
object-fit: cover;
object-position: top center;
box-sizing: border-box;
margin: 0;
padding: 0;
}
</style>

133
docs/.vuepress/config.js Normal file
View File

@ -0,0 +1,133 @@
import { viteBundler } from '@vuepress/bundler-vite'
import { defaultTheme } from '@vuepress/theme-default'
import { defineUserConfig } from 'vuepress'
import fs from 'fs-extra'
import path from 'path'
import { searchPlugin } from '@vuepress/plugin-search'
import { SITE_BASE, CDN_BASE} from './constants.js';
export default defineUserConfig({
// // 禁用内置锚点滚动,避免冲突
shouldPreventScroll: (to, from) => {
return !!to.hash;
},
//
// // 滚动偏移量
// scrollOffset: {
// home: 80,
// page: 80
// },
// shouldPreventScroll: () => true,
head: [
['meta', { name: 'og:type', content: 'website' }],
['meta', { property: 'og:title', content: 'DMA服务人员操作手册' }],
['meta', { name: 'description', content: 'DMA服务操作手册' }],
['meta', { property: 'og:description', content: 'DMA服务全流程操作指南' }],
['meta', { property: 'og:image', content: 'https://images.health.ufutx.com/202503/12/1f227399ffc2ddbf6c58eafa80627d19.png?v=' + Date.now() }],
['link', { rel: 'icon', href: 'https://images.health.ufutx.com/202503/12/1f227399ffc2ddbf6c58eafa80627d19.png?v=' + Date.now() }],
],
pages: [],
bundler: viteBundler({
viteOptions: {
build: {
rollupOptions: {
output: {}
}
},
server: {
proxy: {
'/api': {
target: 'http://192.168.0.100:8080/',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
},
}
}),
theme: defaultTheme({
navbar: [
'/',
{
text: '核心操作',
link: '/posts/overview',
activeMatch: '^/posts/overview',
},
{
text: '角色文档',
children: [
{ text: '主教练', link: '/posts/chiefCoach.html' },
{ text: '副教练', link: '/posts/assistantCoach.html' },
{ text: '客服', link: '/posts/service.html' },
{ text: '健康管理师', link: '/posts/teacher.html' },
],
},
{
text: '操作指南',
children: [
{ text: '分润提现', link: '/posts/shareBenefit' },
{ text: 'APP相关', link: '/posts/appCorrelation' },
{ text: 'DMA模块', link: '/posts/DMAModule' },
{ text: '考试预约', link: '/posts/examReservation' },
{ text: '代理商', link: '/posts/agent' },
{ text: '用户服务流程', link: '/posts/userServiceProcess' },
{ text: '行为记录', link: '/posts/behaviorRecord' },
],
},
{ text: '常见问题', link: '/posts/helpCenter' },
{ text: '更新日志', link: SITE_BASE === '/go_html/dma_handbook/' ? '/posts/changelog' : '/posts/changelogV2' },
],
sidebar: ({ pagePath }) => {
return [];
}
}),
lang:'zh-CN',
title:'DMA服务人员服务操作手册',
description: 'DMA服务人员服务操作手册',
base:SITE_BASE,
image:'https://images.health.ufutx.com/202503/12/1f227399ffc2ddbf6c58eafa80627d19.png',
plugins: [
['@vuepress/plugin-medium-zoom', {
selector: 'img:not(.no-zoom)',
delay: 500,
lazy: true,
options: {
loading: 'lazy',
decoding: 'async',
observer: true,
observerOptions: {
rootMargin: '0px',
threshold: 0.1
}
}
}],
searchPlugin({
maxSuggestions: 10,
hotKeys: ['s', '/'],
}),
],
async onGenerated (app) {
if(SITE_BASE === '/dma_handbook/') return
const outDir = app.options.dest
const htmlFiles = await fs.readdir(outDir)
for (const file of htmlFiles) {
if (!file.endsWith('.html')) continue
const filePath = path.join(outDir, file)
let content = await fs.readFile(filePath, 'utf-8')
const assetPrefix = SITE_BASE + 'assets/'
const cdnPrefix = CDN_BASE + '/assets/'
content = content.replace(new RegExp(assetPrefix, 'g'), cdnPrefix)
await fs.writeFile(filePath, content, 'utf-8')
console.log(`✅ Patched assets path in ${file}`)
}
}
})

View File

@ -0,0 +1,14 @@
// docs/.vuepress/constants.js
// 全局基础路径 - 唯一维护,修改后全项目生效
export const SITE_BASE = '/dma_handbook/';
// 配置常量本地部署需要时取消注释替换上面的SITE_BASE即可
// export const SITE_BASE = '/go_html/dma_handbook/';
// CDN基础路径
export const CDN_BASE = 'https://images.health.ufutx.com/dp';
// 后端代理前缀(可选,也可统一维护)
export const API_PROXY_PREFIX = '/api';
// 后端实际地址(可选,统一维护)
export const API_TARGET = 'http://192.168.0.100:8080/';

View File

@ -0,0 +1,9 @@
<template>
<!-- 直接渲染登录组件 -->
<Login />
</template>
<script setup>
//
import Login from '../components/Login.vue'
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

Some files were not shown because too many files have changed in this diff Show More