<!DOCTYPE html>

<html lang="zh-CN">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

<title>越南语单词+例句拼写记忆工具</title>

<style>

*{margin:0;padding:0;box-sizing:border-box;font-family:system-ui,"Microsoft YaHei"}

body{background:#f5f7fa;padding:16px;max-width:640px;margin:0 auto}

.container{background:#fff;border-radius:18px;padding:24px;box-shadow:0 3px 15px #e0e5ef}

.mode-bar{text-align:center;margin-bottom:20px}

.mode-bar label{margin:0 10px;font-size:15px}

.show-text{font-size:30px;font-weight:bold;color:#0F4CD0;text-align:center;margin-bottom:16px}

.info-card{background:#f0f7ff;border-radius:12px;padding:16px;margin:16px 0}

.pos-text{color:#0066ff;font-weight:bold;margin-bottom:8px}

.pos-place{color:#009944;margin:6px 0 8px;font-size:15px}

.desc-line{margin:8px 0;line-height:1.6;color:#222}

.sent-line{margin-top:10px;color:#444;font-size:14px;line-height:1.5}

.title-small{font-size:16px;margin:12px 0 6px;color:#222;font-weight:bold}

#input-word{width:100%;padding:14px 16px;font-size:17px;border:1px solid #d0d7e3;border-radius:10px;margin-bottom:10px}

#input-sent{width:100%;padding:14px 16px;font-size:17px;border:1px solid #d0d7e3;border-radius:10px;margin-bottom:12px}

.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}

button{padding:14px;border:none;border-radius:10px;font-size:16px;cursor:pointer}

#submit{background:#0F4CD0;color:#fff}

#next{background:#e8ebf0;color:#111}

#wrongBtn{width:100%;background:#ff7d00;color:#fff}

.tip{margin-top:16px;font-size:17px;font-weight:500;text-align:center}

.right{color:#00a854}

.err{color:#f53f3f}

</style>

</head>

<body>

<div class="container">

    <div class="mode-bar">

        <label>

            <input type="radio" name="mode" value="showVn" checked> 模式1:看越南词,拼写单词+例句

        </label>

        <label>

            <input type="radio" name="mode" value="showCn"> 模式2:看中文释义,拼写单词+例句

        </label>

    </div>


    <div class="show-text" id="tipShow"></div>


    <div class="info-card">

        <div class="pos-text">词性:<span id="pos"></span></div>

        <div class="pos-place">句中位置:<span id="posPlace"></span></div>

        <div class="desc-line">中文释义:<span id="cnMean"></span></div>

        <div class="desc-line">详细用法:<span id="useDesc"></span></div>

        <div class="sent-line">完整例句原文:<span id="sentence"></span></div>

    </div>


    <div class="title-small">1. 拼写越南单词</div>

    <input id="input-word" placeholder="输入对应的越南语单词">


    <div class="title-small">2. 拼写配套实用例句</div>

    <input id="input-sent" placeholder="完整抄写例句">


    <div class="btn-row">

        <button id="submit" onclick="checkAll()">提交核对单词+例句</button>

        <button id="next" onclick="getWord()">切换下一组</button>

    </div>

    <button id="wrongBtn" onclick="wrongMode()">错题强化模式(反复刷题)</button>


    <div class="tip" id="msg"></div>

</div>


<script>

const wordList = [

    {vn:"chào buổi sáng",cn:"早上好",pos:"礼貌问候短句",posPlace:"句首使用,放在整句话最前方,后接称呼或主语",usage:"清晨见面通用问候,结尾加ạ会更加礼貌,适用于客户、路人、外卖骑手",ex:"Chào buổi sáng, anh có cần xem hàng giảm xóc không?"},

    {vn:"cảm ơn",cn:"谢谢",pos:"动词短语",posPlace:"句首独立使用,或放在句末表达感谢,后可接对象",usage:"全场景通用感谢话术,正式商务沟通使用 cảm ơn ạ",ex:"Cảm ơn anh đã tin tưởng sản phẩm của chúng tôi rất nhiều."},

    {vn:"không có gì",cn:"不客气",pos:"应答短句",posPlace:"单独成句,用于对方道谢之后独立回复",usage:"他人向你道谢后的标准回复用语",ex:"Không có gì, tôi rất vui được hỗ trợ anh mọi lúc."},

    {vn:"tạm biệt",cn:"再见",pos:"道别短句",posPlace:"句首单独使用,送别场景开头",usage:"送客、分别、客户离店时使用",ex:"Tạm biệt, chúc anh đi đường bình an và thuận lợi."},

    {vn:"uống nước",cn:"喝水",pos:"动宾短语",posPlace:"放在主语之后作谓语,可搭配劝告句式",usage:"夏季慰问户外骑手、来访客户专用暖心话术",ex:"Trời nắng nóng cực độ, anh nhớ uống nước nhiều để giải nhiệt nhé."},

    {vn:"bao nhiêu tiền",cn:"多少钱",pos:"疑问短句",posPlace:"放在名词后方,用于物品询价",usage:"逛街采购、询价、谈批发价格通用问句",ex:"Một bộ giảm xóc chất lượng tốt này bao nhiêu tiền một bộ?"},

    {vn:"hàng tồn kho",cn:"库存、现货备货",pos:"名词短语",posPlace:"作宾语,放在谓语动词có / không có之后",usage:"外贸询盘高频词汇,用于告知或询问商家是否有现货库存",ex:"Chào buổi sáng, mẫu giảm xóc này chúng tôi hiện không có hàng tồn kho."},

    {vn:"thương hiệu riêng",cn:"自有品牌",pos:"名词短语",posPlace:"作宾语,搭配bán / sản xuất使用",usage:"工厂门店介绍话术,说明只经营自家生产品牌,无第三方贴牌货",ex:"Chúng tôi là cửa hàng nhà máy, chỉ bán thương hiệu riêng tự sản xuất."},

    {vn:"giảm xóc",cn:"减震器",pos:"名词",posPlace:"作主语/宾语,汽配句子核心名词",usage:"汽配主营核心产品词汇,和客户介绍产品必用",ex:"Nhà máy chúng tôi chuyên sản xuất giảm xóc cho các loại xe ô tô."},

    {vn:"cửa hàng nhà máy",cn:"工厂直营店",pos:"名词短语",posPlace:"作表语,放在là之后介绍店铺身份",usage:"向客户介绍货源优势,突出无中间商差价",ex:"Chúng tôi là cửa hàng nhà máy, không kinh doanh các hãng trung gian khác."},

    {vn:"giá buôn",cn:"批发价",pos:"名词短语",posPlace:"作宾语,搭配đưa / lấy使用",usage:"大批量拿货议价专用词汇,区分零售单价",ex:"Nếu mua số lượng lớn tôi sẽ đưa giá buôn ưu đãi hơn cho quý khách."}

];

let current = null;

let wrongArr = JSON.parse(localStorage.getItem("vnWrongData")) || [];

let isWrong = false;

function getWord(){

    const pool = isWrong ? wrongArr : wordList;

    const msgDom = document.getElementById("msg");

    if(pool.length === 0){msgDom.innerText = isWrong ? "暂无错题,全部掌握!" : "词库加载完成";return;}

    const idx = Math.floor(Math.random() * pool.length);

    current = pool[idx];render();

}

function render(){

    const mode = document.querySelector('input[name="mode"]:checked').value;

    const showDom = document.getElementById("tipShow");

    const inputWord = document.getElementById("input-word");

    const inputSent = document.getElementById("input-sent");

    const msg = document.getElementById("msg");

    inputWord.value = "";inputSent.value = "";msg.innerText = "";

    document.getElementById("pos").innerText = current.pos;

    document.getElementById("posPlace").innerText = current.posPlace;

    document.getElementById("cnMean").innerText = current.cn;

    document.getElementById("useDesc").innerText = current.usage;

    document.getElementById("sentence").innerText = current.ex;

    if(mode === "showVn"){showDom.innerText = current.vn;}else{showDom.innerText = current.cn;}

}

function checkAll(){

    const wordInput = document.getElementById("input-word").value.trim();

    const sentInput = document.getElementById("input-sent").value.trim();

    const msgDom = document.getElementById("msg");

    const rightWord = current.vn;

    const rightSent = current.ex;

    let wordOk = wordInput === rightWord;

    let sentOk = sentInput === rightSent;

    if(wordOk && sentOk){

        msgDom.className = "tip right";

        msgDom.innerText = "单词、例句拼写全部正确!记忆巩固成功";

        wrongArr = wrongArr.filter(item=>item.vn !== current.vn);

        localStorage.setItem("vnWrongData", JSON.stringify(wrongArr));

    }else{

        msgDom.className = "tip err";

        let tipText = "存在拼写错误:";

        if(!wordOk) tipText += `单词正确:${rightWord};`;

        if(!sentOk) tipText += `例句正确:${rightSent}`;

        msgDom.innerText = tipText;

        const exist = wrongArr.some(item=>item.vn === current.vn);

        if(!exist){wrongArr.push(current);localStorage.setItem("vnWrongData", JSON.stringify(wrongArr));}

    }

}

function wrongMode(){

    isWrong = true;

    document.getElementById("msg").innerText = "【错题强化模式】仅循环练习拼写出错的词汇+例句";

    getWord();

}

window.onload = function(){

    getWord();

    document.querySelectorAll('input[name="mode"]').forEach(radio=>{

        radio.onchange = ()=>{isWrong = false;getWord();}

    })

}

</script>

</body>

</html>