From 319cf42af7648e99693f6eabfec4f842a40ed340 Mon Sep 17 00:00:00 2001 From: wwl <xchao828@163.com> Date: 星期四, 13 三月 2025 16:16:27 +0800 Subject: [PATCH] 1 --- src/views/doctor/check/index.vue | 1226 +++++-------------- src/views/system/tijian/index.vue | 1 vue.config.js | 7 src/views/123+.vue | 73 + src/views/system/package/index.vue | 2376 ++++++++++++++++++++++---------------- 5 files changed, 1,790 insertions(+), 1,893 deletions(-) diff --git a/src/views/123+.vue b/src/views/123+.vue new file mode 100644 index 0000000..864c6b3 --- /dev/null +++ b/src/views/123+.vue @@ -0,0 +1,73 @@ +<template> + <div> + <h2>DeepSeek 鑱婂ぉ</h2> + <textarea v-model="inputMessage" placeholder="璇疯緭鍏ユ秷鎭�"></textarea> + <button @click="sendMessage">鍙戦��</button> + <p>鍥炲: {{ reply }}</p> + <p v-if="error" style="color: red">{{ error }}</p> + </div> +</template> + +<script> +export default { + name: 'Chat', + data() { + return { + inputMessage: '', + reply: '', + error: '' + }; + }, + methods: { + async sendMessage() { + if (!this.inputMessage.trim()) { + this.error = '娑堟伅涓嶈兘涓虹┖'; + return; + } + this.error = ''; + this.reply = ''; + + try { + const response = await fetch('http://localhost:11434/api/chat', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ + model: 'ltkj-jy-ai', + messages: [ + { + role: 'system', + content: this.inputMessage + } + ], + stream: false + }) + }); + + if (!response.ok) { + throw new Error('缃戠粶鍝嶅簲閿欒'); + } + + const data = await response.json(); + // 浠庤繑鍥炴暟鎹腑鎻愬彇 message.content 浣滀负鍥炲 + this.reply = data.message?.content || '鏀跺埌鍥炲锛屼絾鏍煎紡鍙兘涓嶆纭�'; + } catch (err) { + this.error = '璇锋眰鍑洪敊: ' + err.message; + console.error('Fetch 閿欒:', err); + } + } + } +}; +</script> + +<style scoped> +textarea { + width: 300px; + height: 100px; + margin-bottom: 10px; +} +button { + padding: 5px 10px; +} +</style> \ No newline at end of file diff --git a/src/views/doctor/check/index.vue b/src/views/doctor/check/index.vue index af318a4..71cafef 100644 --- a/src/views/doctor/check/index.vue +++ b/src/views/doctor/check/index.vue @@ -1,77 +1,32 @@ <template> <div> - <el-form - :model="queryParams" - ref="tableList" - :inline="true" - label-width="76px" - style="margin-top: 10px" - > + <el-form :model="queryParams" ref="tableList" :inline="true" label-width="76px" style="margin-top: 10px"> <el-form-item label="濮撳悕" prop="name"> - <el-input - v-model="queryParams.name" - style="width: 116px" - placeholder="璇疯緭鍏ュ鍚�" - clearable - @keyup.enter.native="submitForm" - ></el-input> + <el-input v-model="queryParams.name" style="width: 116px" placeholder="璇疯緭鍏ュ鍚�" clearable + @keyup.enter.native="submitForm"></el-input> </el-form-item> <el-form-item label="浣撴鍙�" prop="tjNumber"> - <el-input - ref="inputName" - v-model="queryParams.tjNumber" - style="width: 240px" - placeholder="璇疯緭鍏ヤ綋妫�鍙�" - clearable - @blur="hb" - @keyup.enter.native="submitForm" - ></el-input> + <el-input ref="inputName" v-model="queryParams.tjNumber" style="width: 240px" placeholder="璇疯緭鍏ヤ綋妫�鍙�" clearable + @blur="hb" @keyup.enter.native="submitForm"></el-input> </el-form-item> <el-form-item> - <el-button - size="mini" - type="primary" - @click="submitForm" - style="margin-right: 15px" - >鎼滅储</el-button - > + <el-button size="mini" type="primary" @click="submitForm" style="margin-right: 15px">鎼滅储</el-button> <el-button size="mini" @click="resetQuery">閲嶇疆</el-button> </el-form-item> </el-form> <div style="display: flex"> - <el-radio-group - v-model="tjStatus" - @input="radioChange" - style="margin-left: 30px" - > + <el-radio-group v-model="tjStatus" @input="radioChange" style="margin-left: 30px"> <el-radio-button label="0">鏈</el-radio-button> <el-radio-button label="1">宸叉</el-radio-button> </el-radio-group> </div> <template> - <el-table - :data="tableList" - v-loading="loading" - ref="table" - height="536px" - style="margin: 20px; width: 98%" - border - :cell-class-name="myclass" - > + <el-table :data="tableList" v-loading="loading" ref="table" height="536px" style="margin: 20px; width: 98%" border + :cell-class-name="myclass"> <!-- <template slot="empty">鏁版嵁姝e湪鍔犺浇涓�</template> --> - <el-table-column - label="浣撴鍙�" - align="center" - prop="tjNumber" - width="160px" - /> - <el-table-column - label="濮撳悕" - align="center" - prop="cusName" - width="90px" - /> + <el-table-column label="浣撴鍙�" align="center" prop="tjNumber" width="160px" /> + <el-table-column label="濮撳悕" align="center" prop="cusName" width="90px" /> <el-table-column label="鎬у埆" align="center" prop="cusSex" width="60px"> <template slot-scope="scope"> <span v-if="scope.row.cusSex == '0'">鐢�</span> @@ -80,119 +35,52 @@ <span v-if="scope.row.cusSex == '9'">鏈鏄庢�у埆</span> </template> </el-table-column> - <el-table-column - label="鍑虹敓鏃ユ湡" - align="center" - prop="cusBrithday" - width="100px" - /> - <el-table-column - label="鐢佃瘽" - align="center" - prop="cusPhone" - width="100px" - /> - <el-table-column - label="浣撴绫诲瀷" - align="center" - prop="tjType" - width="80px" - /> - <el-table-column - label="鐧昏鏃堕棿" - align="center" - prop="tjTime" - width="160px" - > + <el-table-column label="鍑虹敓鏃ユ湡" align="center" prop="cusBrithday" width="100px" /> + <el-table-column label="鐢佃瘽" align="center" prop="cusPhone" width="100px" /> + <el-table-column label="浣撴绫诲瀷" align="center" prop="tjType" width="80px" /> + <el-table-column label="鐧昏鏃堕棿" align="center" prop="tjTime" width="160px"> </el-table-column> - <el-table-column - label="浣撴鏃堕棿" - align="center" - prop="tjTime" - width="100px" - > + <el-table-column label="浣撴鏃堕棿" align="center" prop="tjTime" width="100px"> <template slot-scope="scope"> <span>{{ parseTime(scope.row.tjTime, "{y}-{m}-{d}") }}</span> </template> </el-table-column> - <el-table-column - label="鏈椤�" - prop="notCheckeds" - :show-overflow-tooltip="true" - /> + <el-table-column label="鏈椤�" prop="notCheckeds" :show-overflow-tooltip="true" /> <el-table-column label="鎿嶄綔" align="center" width="130px"> <template slot-scope="scope"> - <el-button - type="primary" - icon="el-icon-first-aid-kit" - size="mini" - @click="Changeapplyfor(scope.row)" - title="浼氳瘖鐢宠" - v-if="tjStatus == '1'" - ></el-button> - <el-button - type="primary" - icon="el-icon-share" - size="mini" - @click="handleClick(scope.row)" - title="璇︽儏" - ></el-button> + <el-button type="primary" icon="el-icon-first-aid-kit" size="mini" @click="Changeapplyfor(scope.row)" + title="浼氳瘖鐢宠" v-if="tjStatus == '1'"></el-button> + <el-button type="primary" icon="el-icon-share" size="mini" @click="handleClick(scope.row)" + title="璇︽儏"></el-button> </template> </el-table-column> </el-table> <div class="pag"> <div class="pag1"> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.page" - :limit.sync="queryParams.pageSize" - @pagination="getList" - /> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.pageSize" + @pagination="getList" /> </div> </div> </template> - <el-dialog - :title="title" - :visible.sync="open" - width="1000px" - append-to-body - > + <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body> <el-row> <el-col :span="9" v-if="hzlogList.length >= 1"> <h3>浼氳瘖鐢宠璁板綍</h3> <el-table :data="hzlogList" style="width: 100%" border> - <el-table-column - label="鐢宠浜�" - align="center" - prop="hzDoctorName" - width="100px" - /> + <el-table-column label="鐢宠浜�" align="center" prop="hzDoctorName" width="100px" /> <el-table-column label="绉戝" align="center" prop="hzDeptName" /> <el-table-column label="鎿嶄綔" align="center" width="150px"> <template slot-scope="scope"> - <el-button - type="primary" - size="mini" - @click="hadleedit(scope.row)" - v-if=" - scope.row.hzReplyLogsList.length == 0 && - scope.row.hzDoctorId == info.userId - " - >淇敼</el-button - > - <el-button - type="primary" - size="mini" - v-if=" - scope.row.hzReplyLogsList.length == 0 && - scope.row.hzDoctorId == info.userId - " - @click="handledele(scope.row)" - >鍒犻櫎</el-button - > + <el-button type="primary" size="mini" @click="hadleedit(scope.row)" v-if=" + scope.row.hzReplyLogsList.length == 0 && + scope.row.hzDoctorId == info.userId + ">淇敼</el-button> + <el-button type="primary" size="mini" v-if=" + scope.row.hzReplyLogsList.length == 0 && + scope.row.hzDoctorId == info.userId + " @click="handledele(scope.row)">鍒犻櫎</el-button> </template> </el-table-column> </el-table> @@ -201,18 +89,10 @@ <h3 style="text-align: center">浼氳瘖璁板綍鐢宠</h3> <el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form-item label="濮撳悕" prop="cusName"> - <el-input - v-model="form.cusName" - placeholder="璇疯緭鍏ュ鍚�" - disabled - /> + <el-input v-model="form.cusName" placeholder="璇疯緭鍏ュ鍚�" disabled /> </el-form-item> <el-form-item label="浣撴鍙�" prop="tjNumber"> - <el-input - v-model="form.tjNumber" - placeholder="璇疯緭鍏ヤ綋妫�鍙�" - disabled - /> + <el-input v-model="form.tjNumber" placeholder="璇疯緭鍏ヤ綋妫�鍙�" disabled /> </el-form-item> <el-form-item label="浼氳瘖绉戝" prop="hzType"> <el-radio-group v-model="form.hzType"> @@ -220,42 +100,15 @@ <el-radio-button label="1">绉戝浼氳瘖</el-radio-button> </el-radio-group> </el-form-item> - <el-form-item - label="閫夋嫨绉戝" - v-if="form.hzType == '1'" - style="margin-top: 22px" - > - <el-select - v-model="form.hzDeptId" - multiple - filterable - style="width: 100%" - > - <el-option - v-for="item in deptList" - :key="item.deptId" - :label="item.deptName" - :value="item.deptId" - ></el-option> + <el-form-item label="閫夋嫨绉戝" v-if="form.hzType == '1'" style="margin-top: 22px"> + <el-select v-model="form.hzDeptId" multiple filterable style="width: 100%"> + <el-option v-for="item in deptList" :key="item.deptId" :label="item.deptName" + :value="item.deptId"></el-option> </el-select> </el-form-item> - <el-form-item - label="鐢宠浜�" - prop="hzDoctorId" - style="margin-top: 22px" - > - <el-select - v-model="form.hzDoctorId" - placeholder="璇烽�夋嫨" - style="width: 100%" - filterable - > - <el-option - v-for="item in userList" - :key="item.userId" - :label="item.nickName" - :value="item.userId" - > + <el-form-item label="鐢宠浜�" prop="hzDoctorId" style="margin-top: 22px"> + <el-select v-model="form.hzDoctorId" placeholder="璇烽�夋嫨" style="width: 100%" filterable> + <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId"> </el-option> </el-select> </el-form-item> @@ -272,56 +125,27 @@ </div> </el-dialog> - <el-dialog - :title="title" - :visible.sync="foropen" - width="1000px" - append-to-body - > + <el-dialog :title="title" :visible.sync="foropen" width="1000px" append-to-body> <el-row> <el-col :span="8" v-if="hasdeptList.length >= 1"> <h3 style="text-align: center">浼氳瘖鐢宠璁板綍</h3> - <el-table - :data="hasdeptList" - style="width: 100%" - border - ref="tab" - @selection-change="handleSelectionChange" - > + <el-table :data="hasdeptList" style="width: 100%" border ref="tab" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="50" align="center" /> - <el-table-column - label="鐢宠浜�" - align="center" - prop="hzDoctorName" - width="100px" - /> - <el-table-column - label="绉戝" - align="center" - prop="hzDeptName" - width="260px" - /> + <el-table-column label="鐢宠浜�" align="center" prop="hzDoctorName" width="100px" /> + <el-table-column label="绉戝" align="center" prop="hzDeptName" width="260px" /> </el-table> </el-col> <el-col :span="16" style="padding: 0 10px"> <h3 style="text-align: center">浼氳瘖鎰忚</h3> <div v-if="hzReplyLogsList.length >= 1" style="margin-bottom: 10px"> - <div - v-for="(item, index) in hzReplyLogsList" - :key="index" - style="padding-bottom: 5px; border-bottom: 1px solid black" - > + <div v-for="(item, index) in hzReplyLogsList" :key="index" + style="padding-bottom: 5px; border-bottom: 1px solid black"> <!-- <div>浼氳瘖绉戝锛歿{ item.replyDeptName }}</div> --> <div>鍖荤敓锛歿{ item.hzDoctorName }}</div> <div>鍥炲锛歿{ item.replyContent }}</div> </div> </div> - <el-input - type="textarea" - :rows="2" - placeholder="璇疯緭鍏ュ唴瀹�" - v-model="textarea" - > + <el-input type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" v-model="textarea"> </el-input> <div style="padding: 10px 10px"> <el-button type="primary" @click="submitFormreply">鍥炲</el-button> @@ -330,12 +154,7 @@ </el-row> </el-dialog> - <el-dialog - title="濉啓鏄惁閲嶅ぇ闃虫��" - :visible.sync="checkval" - width="800px" - append-to-body - > + <el-dialog title="濉啓鏄惁閲嶅ぇ闃虫��" :visible.sync="checkval" width="800px" append-to-body> <el-form ref="form" :model="formIn" label-width="100px"> <el-form-item label="濮撳悕"> <el-input v-model="formIn.cusName" disabled></el-input> @@ -356,18 +175,8 @@ </el-radio-group> </el-form-item> <el-form-item label="绛夌骇"> - <el-select - v-model="formIn.level" - placeholder="璇烽�夋嫨" - filterable - style="width: 100%" - > - <el-option - v-for="item in dict.type.lj_positive" - :key="item.value" - :label="item.label" - :value="item.value" - > + <el-select v-model="formIn.level" placeholder="璇烽�夋嫨" filterable style="width: 100%"> + <el-option v-for="item in dict.type.lj_positive" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> @@ -381,31 +190,16 @@ </div> </el-dialog> - <el-dialog - title="PDF 棰勮" - :visible.sync="dialogVisible" - :close-on-click-modal="false" - > + <el-dialog title="PDF 棰勮" :visible.sync="dialogVisible" :close-on-click-modal="false"> <div class="main"> - <iframe - id="printIframe" - :src="url" - frameborder="0" - style="width: 100%; height: 100%" - ></iframe> + <iframe id="printIframe" :src="url" frameborder="0" style="width: 100%; height: 100%"></iframe> </div> </el-dialog> <!-- 鐐瑰嚮鍙宠竟寮瑰嚭灞� --> - <el-drawer - :visible.sync="drawer" - :with-header="false" - size="70%" - :before-close="handleClose" - > + <el-drawer :visible.sync="drawer" :with-header="false" size="70%" :before-close="handleClose"> <div style="font-size: 14px"> - <table - style=" + <table style=" width: 96%; height: 70px; margin: 10px 10px; @@ -413,19 +207,14 @@ border: 1px solid #dfe6ec; border-collapse: collapse; font-size: 16px; - " - cellspacing="4" - > + " cellspacing="4"> <caption style="background-color: #f8f8f9; font-size: 18px"> 濉啓{{ tableAll.cusName }}鐨勪綋妫�璧勬枡 </caption> <tr style="border: 1px solid #dfe6ec; border-collapse: collapse"> - <td - style="border: 1px solid #dfe6ec; border-collapse: collapse" - align="right" - > + <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right"> 濮撳悕锛� </td> <td style="border: 1px solid #dfe6ec; border-collapse: collapse"> @@ -437,10 +226,7 @@ <span v-if="scope.row.cusSex == '9'">鏈鏄庢�у埆</span> </template> </td> - <td - style="border: 1px solid #dfe6ec; border-collapse: collapse" - align="right" - > + <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right"> 鎬у埆锛� </td> <td style="border: 1px solid #dfe6ec; border-collapse: collapse"> @@ -448,25 +234,19 @@ tableAll.cusSex == 0 ? "鐢�" : tableAll.cusSex == 1 - ? "濂�" - : "鏈煡" + ? "濂�" + : "鏈煡" }} </td> </tr> <tr style="border: 1px solid #dfe6ec; border-collapse: collapse"> - <td - style="border: 1px solid #dfe6ec; border-collapse: collapse" - align="right" - > + <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right"> 浣撴鍗曞彿锛� </td> <td style="border: 1px solid #dfe6ec; border-collapse: collapse"> {{ tableAll.tjNumber }} </td> - <td - style="border: 1px solid #dfe6ec; border-collapse: collapse" - align="right" - > + <td style="border: 1px solid #dfe6ec; border-collapse: collapse" align="right"> 浣撴鏃堕棿锛� </td> <td style="border: 1px solid #dfe6ec; border-collapse: collapse"> @@ -477,150 +257,67 @@ </div> <div style="display: flex"> <div style="margin: 10px 10px" v-if="hasdeptList.length >= 1"> - <el-button type="primary" size="mini" @click="Changeapply()" - >浼氳瘖鐢宠</el-button - > + <el-button type="primary" size="mini" @click="Changeapply()">浼氳瘖鐢宠</el-button> </div> <div style="margin: 10px 10px"> - <el-button type="primary" size="mini" @click="historicalreport()" - >鍘嗗彶鎶ュ憡</el-button - > + <el-button type="primary" size="mini" @click="historicalreport()">鍘嗗彶鎶ュ憡</el-button> </div> <div style="margin: 10px 10px"> - <el-button type="primary" size="mini" @click="jianqian" - >妫�鍓嶉棶璇�</el-button - > + <el-button type="primary" size="mini" @click="jianqian">妫�鍓嶉棶璇�</el-button> </div> <div style="margin: 10px 10px"> - <el-button type="primary" size="mini" @click="result" - >妫�鏌ユ楠岀粨鏋�</el-button - > + <el-button type="primary" size="mini" @click="result">妫�鏌ユ楠岀粨鏋�</el-button> </div> </div> <el-row> <el-col v-show="baogaoqian"> <template> - <el-tabs - v-model="radio" - type="border-card" - @tab-click="handleTabClick" - style="margin-left: 10px" - > - <el-tab-pane - :label="item.proName" - :name="item.proId" - v-for="(item, index) in Parent" - :key="index" - > - <el-table - class="bgc" - v-loading="loading" - :data="proParentList.sons" - border - height="460px" - style="width: 96%; margin: 10px 10px" - :row-class-name="tableRowClassName" - > - <el-table-column - prop="project.proName" - label="妫�娴嬮」鐩�" - width="150" - > + <el-tabs v-model="radio" type="border-card" @tab-click="handleTabClick" style="margin-left: 10px"> + <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index"> + <el-table class="bgc" v-loading="loading" :data="proParentList.sons" border height="460px" + style="width: 96%; margin: 10px 10px" :row-class-name="tableRowClassName"> + <el-table-column prop="project.proName" label="妫�娴嬮」鐩�" width="150"> </el-table-column> - <el-table-column - prop="proResult" - label="妫�娴嬬粨鏋�" - width="150" - > + <el-table-column prop="proResult" label="妫�娴嬬粨鏋�" width="150"> <template slot-scope="scope"> - <el-input - type="textarea" - autosize - size="mini" - v-model="scope.row.proResult" - autocomplete="off" - placeholder="璇疯緭鍏ユ娴嬬粨鏋�" - @focus="handleFocus(scope.row)" - @blur="handleInputConfirm(scope.row)" - @input="vale" - ></el-input> + <el-input type="textarea" autosize size="mini" v-model="scope.row.proResult" autocomplete="off" + placeholder="璇疯緭鍏ユ娴嬬粨鏋�" @focus="handleFocus(scope.row)" @blur="handleInputConfirm(scope.row)" + @input="vale($event, scope.row)" :disabled="scope.row.project.proName === 'BMI'" + ></el-input> </template> </el-table-column> - <el-table-column - prop="exceptionDesc" - label="寮傚父" - width="55px" - align="center" - > + <el-table-column prop="exceptionDesc" label="寮傚父" width="55px" align="center"> <template slot-scope="scope"> - <el-checkbox - v-model="scope.row.exceptionDesc" @change="changDesc(scope.row)" - ></el-checkbox> + <el-checkbox v-model="scope.row.exceptionDesc" @change="changDesc(scope.row)"></el-checkbox> </template> </el-table-column> <el-table-column label="瑙勫垯" width="70"> <template slot-scope="scope"> - <el-button - class="blue-button" - @click="handleguize(scope.row)" - >...</el-button - > + <el-button class="blue-button" @click="handleguize(scope.row)">...</el-button> </template> </el-table-column> - <el-table-column - prop="project.proMetering" - label="鍗曚綅" - width="55" - > + <el-table-column prop="project.proMetering" label="鍗曚綅" width="55"> </el-table-column> - <el-table-column - prop="project.proScope" - label="鍙傝�冭寖鍥�" - width="70" - > + <el-table-column prop="project.proScope" label="鍙傝�冭寖鍥�" width="70"> </el-table-column> - <el-table-column - prop="conclusion" - label="缁撴灉缁撹" - width="200" - > + <el-table-column prop="conclusion" label="缁撴灉缁撹" width="200"> <template slot-scope="scope"> - <el-input - size="mini" - type="textarea" - autosize - v-model="scope.row.conclusion" - autocomplete="off" - placeholder="璇疯緭鍏ョ粨鏋滅粨璁�" - disabled - ></el-input> + <el-input size="mini" type="textarea" autosize v-model="scope.row.conclusion" autocomplete="off" + placeholder="璇疯緭鍏ョ粨鏋滅粨璁�" disabled></el-input> </template> </el-table-column> - <el-table-column - prop="isReturn" - label="澶嶈瘖" - width="60px" - align="center" - > + <el-table-column prop="isReturn" label="澶嶈瘖" width="60px" align="center"> <template slot-scope="scope"> <el-checkbox v-model="scope.row.isReturn"></el-checkbox> </template> </el-table-column> - <el-table-column - prop="isPositive" - label="閲嶅ぇ闃虫��" - width="55" - > + <el-table-column prop="isPositive" label="閲嶅ぇ闃虫��" width="55"> <template slot-scope="scope"> - <el-switch - v-model="scope.row.isPositive" - active-value="1" - inactive-value="0" - @change="checkboxchange(scope.row)" - ></el-switch> + <el-switch v-model="scope.row.isPositive" active-value="1" inactive-value="0" + @change="checkboxchange(scope.row)"></el-switch> </template> </el-table-column> <el-table-column prop="proAdvice" label="缁撴灉寤鸿"> @@ -630,143 +327,84 @@ {{ scope.row.proAdvice }} </div> <div slot="reference" class="jianyi"> - <el-input - type="textarea" - autosize - v-model="scope.row.proAdvice" - placeholder="璇疯緭鍏ョ粨鏋滃缓璁�" - :disabled="true" - ></el-input> + <el-input type="textarea" autosize v-model="scope.row.proAdvice" placeholder="璇疯緭鍏ョ粨鏋滃缓璁�" + :disabled="true"></el-input> </div> </el-popover> </template> </el-table-column> </el-table> - <div - style="font-size: 14px; overflow-y: auto; height: 286px" - class="a" - > - <table - style=" + <div style="font-size: 14px; overflow-y: auto; height: 286px" class="a"> + <table style=" width: 96%; margin: 4px 10px; border: 1px solid #dfe6ec; border-collapse: collapse; - " - cellspacing="4" - > - <tr - style=" + " cellspacing="4"> + <tr style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <td - style=" + "> + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 鐥呯閫夋嫨锛� </td> - <td - @click="bzxz" - style=" + <td @click="bzxz" style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <el-input - type="textarea" - placeholder="璇烽�夋嫨鍐呭" - v-model="titles" - rows="2" - > + "> + <el-input type="textarea" placeholder="璇烽�夋嫨鍐呭" v-model="titles" rows="2"> </el-input> </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 涓绘鍖诲笀锛� </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <el-select - v-model="doctorName" - placeholder="璇烽�夋嫨" - style="width: 100%" - v-if="deptAdviceList" - @change="selName" - filterable - > - <el-option - v-for="item in userList" - :key="item.userId" - :label="item.nickName" - :value="item.userId" - > + "> + <el-select v-model="doctorName" placeholder="璇烽�夋嫨" style="width: 100%" v-if="deptAdviceList" + @change="selName" filterable> + <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" + :value="item.userId"> </el-option> </el-select> </td> </tr> - <tr - style=" + <tr style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <td - style=" + "> + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 寤鸿锛� </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - colspan="2" - > + " colspan="2"> <div style="margin: 0 0px 10px 15px"> - <el-button - type="primary" - @click="propoChange" - style="margin-top: 10px; height: 37px" - >蹇嵎寤鸿</el-button - > - <el-button - type="primary" - @click="proposalChange" - style="margin-top: 10px; height: 37px" - >鐢熸垚寤鸿</el-button - > + <el-button type="primary" @click="propoChange" + style="margin-top: 10px; height: 37px">蹇嵎寤鸿</el-button> + <el-button type="primary" @click="proposalChange" + style="margin-top: 10px; height: 37px">鐢熸垚寤鸿</el-button> </div> - <el-input - type="textarea" - placeholder="璇疯緭鍏ュ唴瀹�" - v-model="proParentList.remark" - rows="7" - > + <el-input type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" v-model="proParentList.remark" rows="7"> </el-input> </td> </tr> </table> <div slot="footer" class="dialog-footers1"> - <el-button type="primary" @click="determine" - >鎻� 浜�</el-button - > + <el-button type="primary" @click="determine">鎻� 浜�</el-button> </div> </div> </el-tab-pane> @@ -775,109 +413,44 @@ </el-col> <el-col :span="18" v-show="baogaohou"> <template> - <el-tabs - v-model="radio" - type="border-card" - @tab-click="handleTabClick" - style="margin-left: 10px" - > - <el-tab-pane - :label="item.proName" - :name="item.proId" - v-for="(item, index) in Parent" - :key="index" - > - <el-table - class="bgc" - v-loading="loading" - :data="proParentList.sons" - border - height="460px" - style="width: 96%; margin: 10px 10px" - :row-class-name="tableRowClassName" - > - <el-table-column - prop="project.proName" - label="妫�娴嬮」鐩�" - width="100" - > + <el-tabs v-model="radio" type="border-card" @tab-click="handleTabClick" style="margin-left: 10px"> + <el-tab-pane :label="item.proName" :name="item.proId" v-for="(item, index) in Parent" :key="index"> + <el-table class="bgc" v-loading="loading" :data="proParentList.sons" border height="460px" + style="width: 96%; margin: 10px 10px" :row-class-name="tableRowClassName"> + <el-table-column prop="project.proName" label="妫�娴嬮」鐩�" width="100"> </el-table-column> - <el-table-column - prop="proResult" - label="妫�娴嬬粨鏋�" - width="150" - > + <el-table-column prop="proResult" label="妫�娴嬬粨鏋�" width="150"> <template slot-scope="scope"> - <el-input - type="textarea" - autosize - size="mini" - v-model="scope.row.proResult" - autocomplete="off" - placeholder="璇疯緭鍏ユ娴嬬粨鏋�" - @focus="handleFocus(scope.row)" - @blur="handleInputConfirm(scope.row)" - @input="vale" - ></el-input> + <el-input type="textarea" autosize size="mini" v-model="scope.row.proResult" autocomplete="off" + placeholder="璇疯緭鍏ユ娴嬬粨鏋�" @focus="handleFocus(scope.row)" @blur="handleInputConfirm(scope.row)" + @input="vale"></el-input> </template> </el-table-column> <el-table-column label="瑙勫垯" width="70"> <template slot-scope="scope"> - <el-button - class="blue-button" - @click="handleguize(scope.row)" - >...</el-button - > + <el-button class="blue-button" @click="handleguize(scope.row)">...</el-button> </template> </el-table-column> - <el-table-column - prop="project.proMetering" - label="鍗曚綅" - width="55" - > + <el-table-column prop="project.proMetering" label="鍗曚綅" width="55"> </el-table-column> - <el-table-column - prop="project.proScope" - label="鍙傝�冭寖鍥�" - width="80" - > + <el-table-column prop="project.proScope" label="鍙傝�冭寖鍥�" width="80"> </el-table-column> - <el-table-column - prop="exceptionDesc" - label="寮傚父" - width="55px" - align="center" - > + <el-table-column prop="exceptionDesc" label="寮傚父" width="55px" align="center"> <template slot-scope="scope"> - <el-checkbox - v-model="scope.row.exceptionDesc" - ></el-checkbox> + <el-checkbox v-model="scope.row.exceptionDesc"></el-checkbox> </template> </el-table-column> - <el-table-column - prop="isReturn" - label="澶嶈瘖" - width="55px" - align="center" - > + <el-table-column prop="isReturn" label="澶嶈瘖" width="55px" align="center"> <template slot-scope="scope"> <el-checkbox v-model="scope.row.isReturn"></el-checkbox> </template> </el-table-column> - <el-table-column - prop="isPositive" - label="閲嶅ぇ闃虫��" - width="55" - > + <el-table-column prop="isPositive" label="閲嶅ぇ闃虫��" width="55"> <template slot-scope="scope"> - <el-switch - v-model="scope.row.isPositive" - active-value="1" - inactive-value="0" - @change="checkboxchange(scope.row)" - ></el-switch> + <el-switch v-model="scope.row.isPositive" active-value="1" inactive-value="0" + @change="checkboxchange(scope.row)"></el-switch> </template> </el-table-column> <el-table-column prop="proAdvice" label="缁撴灉寤鸿"> @@ -887,13 +460,8 @@ {{ scope.row.proAdvice }} </div> <div slot="reference" class="jianyi"> - <el-input - type="textarea" - autosize - v-model="scope.row.proAdvice" - placeholder="璇疯緭鍏ョ粨鏋滃缓璁�" - :disabled="true" - ></el-input> + <el-input type="textarea" autosize v-model="scope.row.proAdvice" placeholder="璇疯緭鍏ョ粨鏋滃缓璁�" + :disabled="true"></el-input> </div> </el-popover> </template> @@ -901,41 +469,27 @@ </el-table> <div style="font-size: 14px; overflow-y: auto; height: 286px"> - <table - style=" + <table style=" width: 96%; margin: 4px 10px; border: 1px solid #dfe6ec; border-collapse: collapse; - " - cellspacing="4" - > - <tr - style=" + " cellspacing="4"> + <tr style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <td - style=" + "> + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 鐥呯閫夋嫨锛� </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <el-input - type="textarea" - placeholder="璇烽�夋嫨鍐呭" - v-model="titles" - rows="2" - > + "> + <el-input type="textarea" placeholder="璇烽�夋嫨鍐呭" v-model="titles" rows="2"> </el-input> <!-- <el-select v-model="value" @@ -955,88 +509,52 @@ </el-option> </el-select> --> </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 涓绘鍖诲笀锛� </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > - <el-select - v-model="doctorName" - placeholder="璇烽�夋嫨" - style="width: 100%" - v-if="deptAdviceList" - @change="selName" - filterable - > - <el-option - v-for="item in userList" - :key="item.userId" - :label="item.nickName" - :value="item.userId" - > + "> + <el-select v-model="doctorName" placeholder="璇烽�夋嫨" style="width: 100%" v-if="deptAdviceList" + @change="selName" filterable> + <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" + :value="item.userId"> </el-option> </el-select> </td> </tr> - <tr - style=" + <tr style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> <div style="margin: 0 0px 10px 15px"> - <el-button - type="primary" - @click="propoChange" - style="margin-top: 10px; height: 37px" - >蹇嵎寤鸿</el-button - > - <el-button - type="primary" - @click="proposalChange" - style="margin-top: 10px; height: 37px" - >鐢熸垚寤鸿</el-button - > + <el-button type="primary" @click="propoChange" + style="margin-top: 10px; height: 37px">蹇嵎寤鸿</el-button> + <el-button type="primary" @click="proposalChange" + style="margin-top: 10px; height: 37px">鐢熸垚寤鸿</el-button> </div> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - > + "> 寤鸿锛� </td> - <td - style=" + <td style=" border: 1px solid #dfe6ec; border-collapse: collapse; - " - colspan="2" - > - <el-input - type="textarea" - placeholder="璇疯緭鍏ュ唴瀹�" - v-model="proParentList.remark" - rows="7" - > + " colspan="2"> + <el-input type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" v-model="proParentList.remark" rows="7"> </el-input> </td> </tr> </table> <div slot="footer" class="dialog-footers"> - <el-button type="primary" @click="determine" - >鎻� 浜�</el-button - > + <el-button type="primary" @click="determine">鎻� 浜�</el-button> </div> </div> </el-tab-pane> @@ -1044,25 +562,14 @@ </template> </el-col> <el-col :span="6" style="margin-top: 15px"> - <Historicalreport - v-show="lishi" - :reportHistorydata="reportHistorydata" - ></Historicalreport> + <Historicalreport v-show="lishi" :reportHistorydata="reportHistorydata"></Historicalreport> </el-col> </el-row> </el-drawer> <Public ref="aaa" :row="row" @add="handleChanges" /> <jianceResult ref="bbb" @add="handleChangesZt" /> - <el-dialog - title="鎻愮ず" - :visible.sync="jianqians" - width="1000px" - :before-close="handleClose1" - > - <jianqianwenzhen - :jianqianwenzhendata="jianqianwenzhendata" - v-if="flags" - ></jianqianwenzhen> + <el-dialog title="鎻愮ず" :visible.sync="jianqians" width="1000px" :before-close="handleClose1"> + <jianqianwenzhen :jianqianwenzhendata="jianqianwenzhendata" v-if="flags"></jianqianwenzhen> <span slot="footer" class="dialog-footer"> <el-button @click="jianqians = false">鍙� 娑�</el-button> </span> @@ -1072,50 +579,20 @@ <!-- 妫�鏌ユ楠岀粨鏋滄寜閽殑寮规 --> <el-dialog title="妫�鏌ユ楠岀粨鏋�" :visible.sync="openOne" width="80%"> - <div - style=" + <div style=" width: 100%; margin-left: 10px; display: flex; justify-content: space-around; - " - > + "> <div style="width: 44%"> - <el-table - v-loading="loading" - border - :data="xiangmuList" - height="520" - ref="tab1" - highlight-current-row - > - <el-table-column - label="绉戝" - align="center" - prop="deptName" - width="100" - :show-overflow-tooltip="true" - /> - <el-table-column - label="椤圭洰" - align="center" - prop="proName" - width="150" - :show-overflow-tooltip="true" - /> - <el-table-column - label="鐘舵��" - align="center" - prop="type" - :show-overflow-tooltip="true" - width="100" - > + <el-table v-loading="loading" border :data="xiangmuList" height="520" ref="tab1" highlight-current-row> + <el-table-column label="绉戝" align="center" prop="deptName" width="100" :show-overflow-tooltip="true" /> + <el-table-column label="椤圭洰" align="center" prop="proName" width="150" :show-overflow-tooltip="true" /> + <el-table-column label="鐘舵��" align="center" prop="type" :show-overflow-tooltip="true" width="100"> <template slot-scope="scope"> - <span - v-if="scope.row.type == '0'" - :style="type == 0 ? { color: 'red' } : { color: '#409EFF' }" - > - {{ type == 0 ? "鏈� 妫�" : "鍦� 妫�" }} + <span v-if="scope.row.type == '0'" :style="type == 0 ? { color: 'red' } : { color: '#409EFF' }"> + {{ type == 0 ? "鏈� 妫�" : "鍦� 妫�" }} </span> <span v-if="scope.row.type == '1'">宸插畬鎴�</span> <span v-if="scope.row.type == '2'">寮冩</span> @@ -1123,12 +600,7 @@ </template> </el-table-column> - <el-table-column - label="妫�鏌ユ椂闂�" - align="center" - prop="bcupdateTime" - width="160" - /> + <el-table-column label="妫�鏌ユ椂闂�" align="center" prop="bcupdateTime" width="160" /> <el-table-column label="鎿嶄綔" align="center" width="120px"> <template slot-scope="scope"> @@ -1140,13 +612,8 @@ >{{ scope.row.type === 0 ? "寮冩" : "鎭㈠" }}</el-button > --> - <el-button - size="mini" - type="text" - :disabled="scope.row.type === 0 || scope.row.type === 2" - @click="queryResultone(scope.row)" - >缁撴灉鏌ヨ</el-button - > + <el-button size="mini" type="text" :disabled="scope.row.type === 0 || scope.row.type === 2" + @click="queryResultone(scope.row)">缁撴灉鏌ヨ</el-button> </template> </el-table-column> </el-table> @@ -1157,15 +624,8 @@ </div> <div class="a"> <div v-if="jyjc == 0"> - <el-table - :data="jieguoList" - border - :row-style="changRed" - height="520" - highlight-current-row - style="width: 100%" - :header-cell-style="{ background: '#AAD8DF' }" - > + <el-table :data="jieguoList" border :row-style="changRed" height="520" highlight-current-row + style="width: 100%" :header-cell-style="{ background: '#AAD8DF' }"> <el-table-column label="妫�娴嬮」鐩�" prop="pro_name"> </el-table-column> <el-table-column label="妫�娴嬬粨鏋�" prop="pro_result"> @@ -1180,20 +640,14 @@ <div class="check-result-container"> <div class="check-item"> <div class="check-title">妫�鏌ユ墍瑙侊細</div> - <div - class="check-description" - :style="{ color: isRed ? 'red' : '' }" - > + <div class="check-description" :style="{ color: isRed ? 'red' : '' }"> {{ jieguoList[0].pro_result }} </div> </div> <div class="check-item"> <div class="check-title">妫�鏌ョ粨璁猴細</div> - <div - class="check-description" - :style="{ color: isRed ? 'red' : '' }" - > + <div class="check-description" :style="{ color: isRed ? 'red' : '' }"> {{ jieguoList[0].yxzd || "鏆傛棤缁撹" }} </div> </div> @@ -1204,19 +658,9 @@ </div> </el-dialog> - <el-dialog - title="閫夋嫨鐥呯" - :visible.sync="taocan" - width="80%" - height="700px" - :close-on-click-modal="false" - > - <el-tabs - type="border-card" - style="min-height: 538px; margin: 0 10px; width: 100%" - @tab-click="handleClick" - v-model="activeNames" - > + <el-dialog title="閫夋嫨鐥呯" :visible.sync="taocan" width="80%" height="700px" :close-on-click-modal="false"> + <el-tabs type="border-card" style="min-height: 538px; margin: 0 10px; width: 100%" @tab-click="handleClick" + v-model="activeNames"> <el-tab-pane label="鐥呯" name="first"> <div class="tab8"> <div class="tab3"> @@ -1238,6 +682,7 @@ </el-form-item> <el-form-item> +<<<<<<< HEAD <el-button type="primary" icon="el-icon-search" @@ -1254,28 +699,20 @@ height="430px" @selection-change="handleSelectionChanges" > +======= + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuerys">鎼滅储</el-button> + </el-form-item> + </el-form> + <el-table ref="multipleTable" border :data="deptAdviceList" height="430px" + @selection-change="handleSelectionChanges"> +>>>>>>> 2f0aa78 (1) <el-table-column type="selection" width="40"> </el-table-column> - <el-table-column - prop="title" - label="鐥呯鍚嶇О" - align="center" - width="130px" - ></el-table-column> - <el-table-column - prop="advice" - label="寤鸿" - align="center" - :show-overflow-tooltip="true" - > + <el-table-column prop="title" label="鐥呯鍚嶇О" align="center" width="130px"></el-table-column> + <el-table-column prop="advice" label="寤鸿" align="center" :show-overflow-tooltip="true"> </el-table-column> </el-table> - <pagination - v-show="total1 > 0" - :total="total1" - :page.sync="queryParam1.page" - :limit.sync="queryParam1.pageSize" - @pagination="getbzlist" - /> + <pagination v-show="total1 > 0" :total="total1" :page.sync="queryParam1.page" + :limit.sync="queryParam1.pageSize" @pagination="getbzlist" /> </div> <div class="tab4"> <div class="tab4_txt"> @@ -1285,21 +722,11 @@ <el-table border :data="deptAdviceList1" height="430px"> <el-table-column prop="title" label="鐥呯鍚嶇О" align="center"> </el-table-column> - <el-table-column - label="鎿嶄綔" - align="center" - fixed="right" - class-name="small-padding fixed-width" - width="50px" - > + <el-table-column label="鎿嶄綔" align="center" fixed="right" class-name="small-padding fixed-width" + width="50px"> <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDelete(scope.row)" - title="鍒犻櫎" - ></el-button> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" + title="鍒犻櫎"></el-button> </template> </el-table-column> </el-table> @@ -1576,6 +1003,15 @@ }, methods: { + calculateBMI(height, weight) { + if (height && weight) { + const heightInMeters = parseFloat(height) / 100; // cm杞崲涓簃 + const weightInKg = parseFloat(weight); + const bmi = weightInKg / (heightInMeters * heightInMeters); + return bmi.toFixed(1); // 淇濈暀涓�浣嶅皬鏁� + } + return ''; + }, handleFocus(row) { this.autorule = []; @@ -1602,12 +1038,12 @@ getbzlist() { this.loading = true; getDeptAdvice(this.queryParam1).then((response) => { - - if(response.data.list){ + + if (response.data.list) { this.deptAdviceList = response.data.list; - this.loading = false + this.loading = false } - + this.total1 = response.data.total; }); }, @@ -1639,15 +1075,15 @@ // 妫�鏌ユ楠岀粨鏋滄寜閽� result() { let tjNumber = this.tableAll.tjNumber; - console.log(this.tableAll.tjNumber,666); - + console.log(this.tableAll.tjNumber, 666); + getXm(tjNumber).then((res) => { this.xiangmuList = res.data; - if(this.xiangmuList.length > 0){ + if (this.xiangmuList.length > 0) { this.openOne = true; } - else{ + else { this.openOne = false; this.$modal.msgWarning("鏆傛棤椤圭洰涓庢鏌ユ楠岀粨鏋�") } @@ -1804,12 +1240,12 @@ // }) }, - changDesc(item){ + changDesc(item) { console.log(item) - if(item.exceptionDesc == true){ + if (item.exceptionDesc == true) { item.conclusion = "寮傚父" - }else{ - item.conclusion = "姝e父" + } else { + item.conclusion = "姝e父" } }, @@ -1861,87 +1297,115 @@ console.log("杈撳叆鍐呭:", value); }, handleInputConfirm(datas, params) { - if (params && params.length === 0) { - // 濡傛灉娌℃湁閫変腑浠讳綍椤圭洰锛屽彇娑堝紓甯稿閫夋鐨勯�変腑鐘舵�� - this.curindex.exceptionDesc = false; - this.curindex.proResult = ""; - this.curindex.conclusion = ""; - this.curindex.proAdvice = ""; - this.curindex.rulesList = []; - console.log("鍑哄彂浜�"); - return; // 杩欓噷鐨� return 浼氭彁鍓嶇粨鏉熷嚱鏁版墽琛� - } + // 鐜版湁閫昏緫淇濇寔涓嶅彉 + if (params && params.length === 0) { + this.curindex.exceptionDesc = false; + this.curindex.proResult = ""; + this.curindex.conclusion = ""; + this.curindex.proAdvice = ""; + this.curindex.rulesList = []; + console.log("瑙﹀彂浜嗗彇娑堥�夋嫨"); + return; + } - if (datas.proResult) { - this.focusrow = datas; - this.proResult = datas; - var pattern3 = new RegExp("[0-9]+"); - if (pattern3.test(this.proResult)) { - let data = { - proId: this.focusrow.proId, - cusId: this.tableAll.cusId, - tjNum: this.tableAll.tjNumber, - keyNum: this.proResult.proResult, - }; - AutoGetRule(data).then((res) => { - this.focusrow.conclusion = ""; - if (res.data) { - this.autorule = res.data; - this.focusrow.rulesList = res.data; - if (res.data.length > 0) { - const conditions = ["姝e父", "鏈寮傚父", "闃存��", "鏈鏄庢樉寮傚父"]; - this.focusrow.exceptionDesc = !conditions.some((condition) => - this.autorule[0].bz.includes(condition) - ); - } else { - this.focusrow.exceptionDesc = false; - } - this.focusrow.proAdvice = this.autorule[0].nr; - this.autorule.forEach((item) => { - if (this.focusrow.conclusion) { - this.focusrow.conclusion += item.bz; - } else { - this.focusrow.conclusion += item.bz; - } - }); - } - }); - } else { - let data = { - proId: this.focusrow.proId, - cusId: this.tableAll.cusId, - keyWord: this.proResult, - tjNum: this.tableAll.tjNumber, - keyNum: this.proResult.proResult, - }; - AutoGetRule(data).then((res) => { - this.focusrow.conclusion = ""; - if (res.data) { - this.autorule = res.data; - this.focusrow.rulesList = res.data; - if (res.data.length > 0) { - const conditions = ["姝e父", "鏈寮傚父", "闃存��", "鏈鏄庢樉寮傚父"]; - this.focusrow.exceptionDesc = !conditions.some((condition) => - this.autorule[0].bz.includes(condition) - ); - } else { - this.focusrow.exceptionDesc = false; - } - this.focusrow.proAdvice = this.autorule[0].nr; - this.autorule.forEach((item) => { - if (this.focusrow.conclusion) { - this.focusrow.conclusion += item.bz; - } else { - this.focusrow.conclusion += item.bz; - } - }); - // this.rows.push(this.focusrow); + if (datas.proResult) { + this.focusrow = datas; + this.proResult = datas; + var pattern3 = new RegExp("[0-9]+"); + if (pattern3.test(this.proResult)) { + let data = { + proId: this.focusrow.proId, + cusId: this.tableAll.cusId, + tjNum: this.tableAll.tjNumber, + keyNum: this.proResult.proResult, + }; + AutoGetRule(data).then((res) => { + this.focusrow.conclusion = ""; + if (res.data) { + this.autorule = res.data; + this.focusrow.rulesList = res.data; + if (res.data.length > 0) { + const conditions = ["姝e父", "鏈寮傚父", "闃存��", "鏈鏄庢樉寮傚父"]; + this.focusrow.exceptionDesc = !conditions.some((condition) => + this.autorule[0].bz.includes(condition) + ); + } else { + this.focusrow.exceptionDesc = false; + } + this.focusrow.proAdvice = this.autorule[0].nr; + this.autorule.forEach((item) => { + if (this.focusrow.conclusion) { + this.focusrow.conclusion += item.bz; + } else { + this.focusrow.conclusion += item.bz; } }); } - this.rows.push(datas); - } - }, + }); + } else { + let data = { + proId: this.focusrow.proId, + cusId: this.tableAll.cusId, + keyWord: this.proResult, + tjNum: this.tableAll.tjNumber, + keyNum: this.proResult.proResult, + }; + AutoGetRule(data).then((res) => { + this.focusrow.conclusion = ""; + if (res.data) { + this.autorule = res.data; + this.focusrow.rulesList = res.data; + if (res.data.length > 0) { + const conditions = ["姝e父", "鏈寮傚父", "闃存��", "鏈鏄庢樉寮傚父"]; + this.focusrow.exceptionDesc = !conditions.some((condition) => + this.autorule[0].bz.includes(condition) + ); + } else { + this.focusrow.exceptionDesc = false; + } + this.focusrow.proAdvice = this.autorule[0].nr; + this.autorule.forEach((item) => { + if (this.focusrow.conclusion) { + this.focusrow.conclusion += item.bz; + } else { + this.focusrow.conclusion += item.bz; + } + }); + } + }); + } + this.rows.push(datas); + } + + // 鏂板 BMI 璁$畻閫昏緫 + let height = null; + let weight = null; + let bmiRow = null; + + // 閬嶅巻 proParentList.sons 鏌ユ壘韬珮銆佷綋閲嶅拰BMI椤圭洰 + this.proParentList.sons.forEach((item) => { + const proName = item.project.proName.toLowerCase(); // 涓嶅尯鍒嗗ぇ灏忓啓姣旇緝 + if (proName === "height" || proName === "韬珮") { + height = item.proResult; + } else if (proName === "weight" || proName === "浣撻噸") { + weight = item.proResult; + } else if (proName === "bmi") { + bmiRow = item; // 鎵惧埌 BMI 椤圭洰琛� + } + }); + + // 濡傛灉韬珮鍜屼綋閲嶉兘鏈夊�硷紝鍒欒绠� BMI + if (height && weight && bmiRow) { + const parsedHeight = parseFloat(height.replace(/[^0-9.]/g, "")); // 鎻愬彇鏁板瓧锛屽幓闄ゅ崟浣� + const parsedWeight = parseFloat(weight.replace(/[^0-9.]/g, "")); + if (!isNaN(parsedHeight) && !isNaN(parsedWeight) && parsedHeight > 0) { + const heightInMeters = parsedHeight / 100; // 鍘樼背杞崲涓虹背 + const bmi = parsedWeight / (heightInMeters * heightInMeters); + bmiRow.proResult = bmi.toFixed(1); // 淇濈暀涓�浣嶅皬鏁板苟璧嬪�肩粰 BMI 鐨� proResult + console.log(`璁$畻BMI: 韬珮=${parsedHeight}cm, 浣撻噸=${parsedWeight}kg, BMI=${bmiRow.proResult}`); + } + } +}, handleguize(row) { this.row = row; @@ -1992,9 +1456,9 @@ }); }, hb() { - /* if (this.queryParams.tjNumber != "") { - // this.submitForm(); - } */ + /* if (this.queryParams.tjNumber != "") { + // this.submitForm(); + } */ }, propoChange() { this.cusobj = { sex: this.tableAll.cusSex, isZj: 1 }; @@ -2027,7 +1491,7 @@ this.loading = true; this.queryParams.type = this.tjStatus; getProList(this.queryParams).then((response) => { - console.log(response,333); + console.log(response, 333); if (response.code == 200) { this.loading = false; if (response.data) { @@ -2556,7 +2020,7 @@ tjNumber: this.tjNumber, proParentId: this.nums, }; - this.loading = true; + this.loading = true; getParentId(data).then((response) => { this.proParentList = response.data; this.value = []; @@ -3000,7 +2464,7 @@ /* 杞诲井鐨勭孩鑹茶儗鏅� */ } -::v-deep .bgc .el-table__body tr:hover > td { +::v-deep .bgc .el-table__body tr:hover>td { background-color: #ffe6e6 !important; } @@ -3065,12 +2529,16 @@ .check-description { font-size: 14px; - color: #555; /* 涓伆鑹叉枃瀛� */ - line-height: 1.6; /* 琛岄珮锛屽鍔犲彲璇绘�� */ - padding: 8px 0; /* 涓婁笅鍐呰竟璺� */ + color: #555; + /* 涓伆鑹叉枃瀛� */ + line-height: 1.6; + /* 琛岄珮锛屽鍔犲彲璇绘�� */ + padding: 8px 0; + /* 涓婁笅鍐呰竟璺� */ } .check-description.no-result { - color: #bbb; /* 濡傛灉娌℃湁缁撹锛屾枃瀛椾负娣$伆鑹� */ + color: #bbb; + /* 濡傛灉娌℃湁缁撹锛屾枃瀛椾负娣$伆鑹� */ } </style> diff --git a/src/views/system/package/index.vue b/src/views/system/package/index.vue index 839dfd1..42c549d 100644 --- a/src/views/system/package/index.vue +++ b/src/views/system/package/index.vue @@ -103,10 +103,6 @@ ></right-toolbar> </el-row> - <!-- - element-loading-background="rgba(0, 0, 0, 0.1)" - element-loading-spinner="el-icon-loading" - element-loading-text="姝e湪鍔犺浇涓�..." --> <template> <el-table v-loading="loading" @@ -129,7 +125,6 @@ prop="newID" fixed /> - <!-- <el-table-column label="缂栧彿" align="center" prop="pacId" /> --> <el-table-column label="浣撴绫诲埆" width="100px" @@ -166,7 +161,7 @@ fixed ></el-table-column> <el-table-column - label="浼樻儬浠�" + label="鐜颁环" width="80px" align="center" prop="newPrice" @@ -180,13 +175,6 @@ width="1200px" > </el-table-column> - <!-- <el-table-column - label="椤圭洰鏄庣粏" - align="center" - prop="allSonName" - :show-overflow-tooltip="true" - > - </el-table-column>--> <el-table-column label="濂楅鎻忚堪" align="center" @@ -197,18 +185,6 @@ <div class="showInline">{{ scope.row.pacRemark }}</div> </template> </el-table-column> - <!-- <el-table-column - label="鍥剧墖" - align="center" - prop="pacPhone" - width="100" - :show-overflow-tooltip="true" - > - <template slot-scope="scope"> - <image-preview :src="scope.row.pacPhone" :width="50" :height="50" /> - </template> - </el-table-column> --> - <el-table-column label="鍏抽敭瀛�" width="110px" @@ -228,13 +204,6 @@ /> </template> </el-table-column> - <!-- <el-table-column - label="璇︾粏浠嬬粛" - :show-overflow-tooltip="true" - width="100px" - align="center" - prop="detail" - ></el-table-column> --> <el-table-column label="鎺掑簭" width="50px" @@ -247,12 +216,6 @@ align="center" prop="retailPrice" ></el-table-column> - <!-- <el-table-column - label="鍘熶环" - width="90px" - align="center" - prop="counterPrice" - ></el-table-column> --> <el-table-column label="宸插敭鏁伴噺" width="90px" @@ -299,8 +262,6 @@ v-hasPermi="['system:package:remove']" title="鍒犻櫎" ></el-button> - <!-- <el-button size="mini" type="text" icon="el-icon-circle-check" @click="handleSeach(scope.row)" - v-hasPermi="['system:package:Seach']" title="濂楅璇︽儏"></el-button> --> </template> </el-table-column> </el-table> @@ -333,8 +294,6 @@ label-width="100px" :inline="true" > - <!-- <div class="dialo"> - <div class="dialo1"> --> <el-form-item label="濂楅鍚嶇О" prop="pacName"> <span slot="label" @@ -350,10 +309,6 @@ /> </el-form-item> <el-form-item label="濂楅鐘舵��" prop="pacStatus"> - <!-- <el-radio-group v-model="form.pacStatus"> - <el-radio :label="0">鍚敤</el-radio> - <el-radio :label="1">鍋滅敤</el-radio> - </el-radio-group> --> <el-select v-model="form.pacStatus" placeholder="璇烽�夋嫨鐘舵��" @@ -369,24 +324,6 @@ ></el-option> </el-select> </el-form-item> - - <!-- <el-form-item label="濂楅绫荤洰" prop="categoryId"> - <el-select - v-model="form.categoryId" - placeholder="璇烽�夋嫨濂楅绫荤洰" - style="width: 150px" - @change="shangpin" - filterable - clearable - > - <el-option - v-for="item in categoryList" - :key="item.id" - :label="item.name" - :value="item.id" - ></el-option> - </el-select> - </el-form-item> --> <el-form-item label="浣撴绫诲埆" prop="tjCategory"> <el-select v-model="form.tjCategory" @@ -403,12 +340,7 @@ ></el-option> </el-select> </el-form-item> - <el-form-item label="鏄惁涓婃灦" prop="isOnSale"> - <!-- <el-radio-group v-model="form.pacStatus"> - <el-radio :label="0">鍚敤</el-radio> - <el-radio :label="1">鍋滅敤</el-radio> - </el-radio-group> --> <el-select v-model="form.isOnSale" placeholder="璇烽�夋嫨鏄惁涓婃灦" @@ -424,7 +356,6 @@ ></el-option> </el-select> </el-form-item> - <el-form-item label="鎺掑簭" prop="sort"> <el-input v-model="form.sort" @@ -458,13 +389,17 @@ @change="numberChange" ></el-input-number> </el-form-item> - <el-form-item label="浼樻儬浠�"> + <el-form-item label="鐜颁环1"> <el-input ref="inputName" v-model="form.xianprice" - placeholder="浼樻儬浠�" + placeholder="璇疯緭鍏ョ幇浠�" clearable style="width: 140px" + type="number" + :min="0" + @change="handleXianPriceChange" + @input="handleXianPriceInput" /> </el-form-item> <el-form-item label="鍏抽敭瀛�" prop="keywords"> @@ -498,11 +433,6 @@ ></el-input> </el-form-item> <el-form-item label="璇︾粏浠嬬粛" prop="detail"> - <!-- <el-input - v-model="form.detail" - placeholder="璇疯緭鍏ヨ缁嗕粙缁�" - style="width: 200px" - /> --> <editor v-model="form.detail" :min-height="192" @@ -510,47 +440,16 @@ /> </el-form-item> </div> - <!-- </div> --> <div class="dialo2"> <el-form-item label="鍥剧墖"> <image-upload v-model="form.pacPhone" /> </el-form-item> </div> - <!-- </div> --> </div> </el-form> <el-button type="primary" plain size="mini" @click="toggleCollapse">{{ isCollapsed ? "灞曞紑" : "鏀惰捣" }}</el-button> - <!-- <el-button type="primary" plain size="mini" icon="el-icon-plus" @click="addmembers()">鏂板鍗曢」</el-button> - <el-table v-loading="loading" :data="form.tjProjectList" @selection-change="handleSelectionChange" border - max-height="275" style="margin: 10px 0"> - <el-table-column label="搴忓彿" align="center" type="index" /> - <el-table-column label="椤圭洰鍚嶇О" align="center" prop="proName" width="180px"> - <template slot-scope="scope"> - <el-select filterable v-model="scope.row.proName" placeholder="璇烽�夋嫨椤圭洰鍚嶇О" @change="getSelectValue"> - <el-option v-for="(item, index) in allList" :key="index" :label="item.proName" :value="item.proName"> - </el-option> - </el-select> - </template> - </el-table-column> - <el-table-column label="椤圭洰鏄庣粏" align="center" prop="allSonProName" width="400px" :show-overflow-tooltip="true"> - </el-table-column> - <el-table-column label="鍘熶环(鍏�)" align="center" prop="proPrice" width="80px" /> - <el-table-column label="鐜颁环(鍏�)" align="center" prop="priceNow" width="80px"> - <template slot-scope="scope"> - <el-input v-model="scope.row.priceNow" autocomplete="off" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> - </template> - </el-table-column> - <el-table-column label="鎿嶄綔" fixed="right" align="center" class-name="small-padding fixed-width"> - <template slot-scope="scope"> - <el-button size="mini" type="text" icon="el-icon-circle-plus-outline" @click="addmembers(scope.row)" - v-hasPermi="['system:package:edit']" title="鏂板琛�"></el-button> - <el-button size="mini" type="text" icon="el-icon-delete" @click.native.prevent="Delete(scope.$index)" - v-hasPermi="['hosp:consumables:remove']" title="鍒犻櫎"></el-button> - </template> - </el-table-column> - </el-table> --> <el-row style="display: flex; width: 1300px"> <el-col> @@ -590,29 +489,6 @@ /> </div> </el-col> - <!-- <el-col :span="6"> - <div - style="text-align: center; margin-bottom: 10px; margin-top: 10px" - > - 鏄庣粏椤圭洰鍒楄〃 - </div> - <div class="tab3"> - <el-tree - class="filter-tree" - v-loading="loading" - :data="TreedataList" - node-key="proId" - :props="defaultProps" - :filter-node-method="filterNode" - show-checkbox - @check-change="handleCurrentChecked1" - :default-checked-keys="checkedListkey" - ref="trees" - :render-content="renderContent" - > - </el-tree> - </div> - </el-col> --> <el-col> <div class="grid-content bg-purple"> <div @@ -630,11 +506,9 @@ border style="width: 90%; margin-left: 20px" height="400" - :span-method="objectSpanMethod" > <el-table-column prop="proName" label="妫�鏌ラ」鐩�"> </el-table-column> - <el-table-column prop="priceOrd" label="鍘熶环" @@ -644,7 +518,6 @@ </el-table-column> <el-table-column label="鎶樻墸" width="100px"> <template slot-scope="scope"> - <!-- 鍙緭鍏ョ函鏁板瓧鎶樻墸 --> <el-input v-model.number="scope.row.limits" @input="calculateDiscount(scope.row)" @@ -654,13 +527,12 @@ min="0" step="0.1" max="10" - > - </el-input> + /> </template> </el-table-column> <el-table-column prop="priceNow" - label="浼樻儬浠�" + label="鐜颁环" width="80px" align="center" > @@ -677,28 +549,7 @@ </el-button> </template> </el-table-column> - <!-- <el-table-column prop="proName" label="鏄庣粏椤圭洰" width="260px"> - </el-table-column> --> - - <!-- <el-table-column - label="鎿嶄綔" - align="center" - fixed="right" - class-name="small-padding fixed-width" - width="50px" - > - <template slot-scope="scope"> - <el-button - size="mini" - type="text" - icon="el-icon-delete" - @click="handleDeletes(scope.row)" - title="鍒犻櫎" - ></el-button> - </template> - </el-table-column>--> </el-table> - <!-- <h3 style="font-weight: 600">鍚堣锛歿{ pics }}鍏�</h3> --> </div> </el-col> </el-row> @@ -709,985 +560,454 @@ </div> </el-dialog> - <!-- 濂楅璇︽儏 --> - <!-- <el-dialog :title="title" :visible.sync="Seachopen" width="500px" append-to-body> - <template> - <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> - <div style="margin: 15px 0px; width: 60px"></div> - <el-checkbox-group v-model="newproName" @change="handleCheckedCitiesChange"> - <el-checkbox style="margin: 15px 0px; width: 180px" v-for="item in allList" :label="item.proName" - :key="item.proId">{{ item.proName }}</el-checkbox> - </el-checkbox-group> - - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitcheckbox">纭� 瀹�</el-button> - <el-button @click="cancel">鍙� 娑�</el-button> - </div> - </template> - </el-dialog> --> <Packages ref="aaa" @add="handleChanges" /> </div> </template> <script> -import Packages from "@/components/Packages"; -import { listCategory } from "@/api/mall/category"; -import { listKeyword } from "@/api/mall/keyword"; -// import { getProParentIdDxList, getProSonDxList } from "@/api/system/tijian"; -import { - getProParentIdDxList, - search, - getProSonDxList, -} from "@/api/system/package"; +import { Big } from 'big.js' +import Packages from "@/components/Packages" +import { listCategory } from "@/api/mall/category" +import { listKeyword } from "@/api/mall/keyword" +import { search } from "@/api/system/package" import { getPacList, getPacInFo, - listPackage, - getPackage, delPackage, - addPackage, - updatePackage, - getAllPackage, updateStatus, - getAllList, - updateProject, getPacTjProjectList, saveOreditTjPacNew, -} from "@/api/system/package"; -import { Message } from "element-ui"; -import Big from "big.js"; +} from "@/api/system/package" +import { Message } from "element-ui" + export default { name: "Package", dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"], components: { Packages }, data() { - let checkPhoneNum = (rule, value, callback) => { - let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/); - if (value == "" && value == undefined && !value) { - return callback(""); - } else if (value != undefined && value != "") { - return callback(); - } else if (!patter.test(value)) { - return callback(""); - } - }; return { - pics: 0, - filterText: "", - DataList: [], - list1: true, - activeName: "1", - num: 1, - checkedObj: {}, - dataObj: {}, - Treedata: [], - TreedataList: [], - treedataList: [], - checkedkey: [], - checkedListkey: [], - defaultProps: { - children: [], - label: "proName", - }, - isCollapsed: true, // 榛樿涓烘姌鍙犵姸鎬� - categoryList: [], - keys: "", - keywordList: [], - dataListAll: [], - // 澶氶�夋 - priceNow: "", - checkAll: false, - isIndeterminate: true, - // 閬僵灞� - loading: false, - radio: 3, - // 閫変腑鏁扮粍 - ids: [], - // 闈炲崟涓鐢� - single: true, - // 闈炲涓鐢� - multiple: true, - // 鏄剧ず鎼滅储鏉′欢 - showSearch: true, - // 浣撴濂楅琛ㄦ牸鏁版嵁 - packageList: [], - // 濂楅閫変腑鐨勭埗椤� - allpackageList: [], - // 宸查�� - newproName: [], - // 鎵�鏈変綋妫�椤圭洰路 - allList: [], - treeList: [], - // 鎵�鏈夊椁愭暟鎹� - // allpackage:[], - // 寮瑰嚭灞傛爣棰� - title: "", - // 鏄惁鏄剧ず寮瑰嚭灞� - open: false, - Seachopen: false, - checkedNodes: [], - pacId: "", - // 鎬绘潯鏁� - total: 0, - total1: 0, - // 鏌ヨ鍙傛暟 + pics: 0, // 鍘熶环鎬诲拰 + DataList: [], // 宸查�夐」鐩垪琛� + Treedata: [], // 椤圭洰鏍戞暟鎹� + checkedkey: [], // 鏍戦粯璁ら�変腑椤� + checkedNodes: [], // 璁板綍閫変腑鐨勮妭鐐� + isCollapsed: true, // 鎶樺彔鐘舵�� + categoryList: [], // 濂楅绫荤洰 + keywordList: [], // 鍏抽敭瀛楀垪琛� + keys: "", // 鍏抽敭瀛楀瓧绗︿覆 + loading: false, // 鍔犺浇鐘舵�� + single: true, // 鏄惁鍗曢�夌鐢� + multiple: true, // 鏄惁澶氶�夌鐢� + showSearch: true, // 鏄剧ず鎼滅储鏉′欢 + packageList: [], // 濂楅鍒楄〃 + allList: [], // 鎵�鏈変綋妫�椤圭洰 + title: "", // 寮瑰嚭灞傛爣棰� + open: false, // 鏄惁鏄剧ず寮瑰嚭灞� + total: 0, // 涓昏〃鏍兼�绘潯鏁� + total1: 0, // 椤圭洰鏍戞�绘潯鏁� queryParams: { pageNum: 1, pageSize: 10, pacName: null, pacRemark: null, + tjCategory: null, }, queryParams1: { page: 1, pageSize: 30, nr: "", }, - // 琛ㄥ崟鍙傛暟 form: { - xianprice: null, // 浼樻儬浠� - counterPrice: null, //鍘熶环 - limits: 10, + xianprice: 0, // 鐜颁环鎬诲拰锛屽彲鎵嬪姩淇敼 + limits: 10, // 鎬绘姌鎵� + pacName: "", + pacStatus: "", + tjCategory: "", + isOnSale: "", + sort: null, + retailPrice: null, + keywords: [], }, - forms: {}, - youhui: 10, - // 琛ㄥ崟鏍¢獙 + youhui: 10, // 涓婃柟鎶樻墸 + defaultProps: { + children: [], + label: "proName", + }, rules: { - deleted: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - pacName: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], + pacName: [{ required: true, message: "濂楅鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }], pacStatus: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, + { required: true, message: "璇烽�夋嫨濂楅鐘舵��", trigger: "change" }, ], - // categoryId: [ - // { required: true, validator: checkPhoneNum, trigger: "change" }, - // ], - /* keywords: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, - ], */ isOnSale: [ - { required: true, validator: checkPhoneNum, trigger: "change" }, + { required: true, message: "璇烽�夋嫨鏄惁涓婃灦", trigger: "change" }, ], - sort: [{ required: true, validator: checkPhoneNum, trigger: "blur" }], + sort: [{ required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }], retailPrice: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, - ], - counterPrice: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, + { required: true, message: "灏忕▼搴忎环鏍间笉鑳戒负绌�", trigger: "blur" }, ], tjCategory: [ - { required: true, validator: checkPhoneNum, trigger: "blur" }, + { required: true, message: "璇烽�夋嫨浣撴绫诲埆", trigger: "change" }, ], }, - }; + } }, - // watch: { - // filterText(val) { - // this.$refs.tree.filter(val); - // }, - // }, - created() { - this.getList(); - this.getKeyword(); - this.getCategory(); + this.getList() + this.getKeyword() + this.getCategory() }, methods: { toggleCollapse() { - this.isCollapsed = !this.isCollapsed; // 鐐瑰嚮鎸夐挳鏃跺垏鎹sCollapsed鐨勫�� + this.isCollapsed = !this.isCollapsed }, filterNode(value, data) { - if (!value) return true; - // return data.proName.indexOf(value) !== -1; - if (data.proName.indexOf(value) !== -1) { - return data.proName.indexOf(value) !== -1; - } else { - return data.proEngName.indexOf(value) !== -1; - } + if (!value) return true + return ( + data.proName.indexOf(value) !== -1 || + (data.proEngName && data.proEngName.indexOf(value) !== -1) + ) }, - /** 鏌ヨ浣撴濂楅鍒楄〃 */ getList() { - this.loading = true; + this.loading = true getPacTjProjectList().then((response) => { - this.allList = response.data; - if (this.allList.proStatus === 0) { - this.allList.proStatus = "鍚敤"; - } else { - this.allList.proStatus = "鍋滅敤"; - } - this.loading = false; - }); + this.allList = response.data + this.loading = false + }) getPacList(this.queryParams).then((response) => { response.rows.forEach((item, index) => { item.newID = (this.queryParams.pageNum - 1) * this.queryParams.pageSize + index + - 1; - }); - this.total = response.total; - this.packageList = response.rows; - this.loading = false; - }); + 1 + }) + this.total = response.total + this.packageList = response.rows + this.loading = false + }) }, - - /** 鏌ヨ鍏抽敭瀛楀垪琛� */ getKeyword() { - this.loading = true; listKeyword(this.queryParams).then((response) => { - this.keywordList = response.rows; - }); + this.keywordList = response.rows + }) }, sel(val) { - let id = val; - this.keys = ""; - id.forEach((item) => { - this.keys += item + ","; - }); + this.keys = val.join(",") }, - /** 鏌ヨ绫荤洰鍒楄〃 */ getCategory() { - this.loading = true; listCategory(this.queryParams).then((response) => { - this.categoryList = response.rows; - console.log(this.categoryList, 9988); - }); + this.categoryList = response.rows + }) }, - shangpin(vals) {}, - // 鍙栨秷鎸夐挳 cancel() { - this.open = false; - this.Seachopen = false; - this.reset(); + this.open = false + this.reset() }, - // 琛ㄥ崟閲嶇疆 reset() { this.form = { pacId: null, - pacName: null, - pacRemark: null, - createBy: null, - createTime: null, - updateBy: null, - updateTime: null, - deleted: null, - allSonName: null, - allProName: null, - priceNow: null, - proId: null, - // pacStatus: "鍚敤", - }; - this.resetForm("form"); + pacName: "", + pacRemark: "", + pacStatus: "", + tjCategory: "", + isOnSale: "", + sort: null, + retailPrice: null, + xianprice: 0, + limits: 10, + keywords: [], + } + this.DataList = [] + this.checkedkey = [] + this.checkedNodes = [] + this.youhui = 10 + this.pics = 0 + this.resetForm("form") }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); + this.queryParams.pageNum = 1 + this.getList() }, - handlePackage() { - this.$refs.aaa.open = true; - this.$refs.aaa.getList(); - this.$refs.aaa.title = "濂楅瀛楀吀"; + this.$refs.aaa.open = true + this.$refs.aaa.getList() + this.$refs.aaa.title = "濂楅瀛楀吀" }, handleChanges(param1) { - this.form.pacName = param1[0].pacName; - this.form.hisPacId = param1[0].pacId; + this.form.pacName = param1[0].pacName + this.form.hisPacId = param1[0].pacId if (param1[0].price) { - this.form.counterPrice = param1[0].price; - this.form.retailPrice = param1[0].price; + this.form.counterPrice = param1[0].price + this.form.retailPrice = param1[0].price } }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); + this.resetForm("queryForm") + this.handleQuery() }, - // 澶氶�夋閫変腑鏁版嵁 handleSelectionChange(selection) { - if (!selection[0]) { - return; + if (!selection.length) { + this.forms = null + this.ids = [] + this.single = true + this.multiple = true + return } - this.forms = selection[0]; - this.ids = selection.map((item) => item.pacId); - this.single = selection.length !== 1; - this.multiple = !selection.length; + this.forms = selection[0] + this.ids = selection.map((item) => item.pacId) + this.single = selection.length !== 1 + this.multiple = false }, - /** 鏂板鎸夐挳鎿嶄綔 */ handleAdd() { - this.reset(); - this.open = true; - this.title = "浣撴濂楅淇℃伅缁存姢"; - this.DataList = []; - this.checkedkey = []; - this.checkedListkey = []; - this.getDataList(); - // getAllList().then((response) => { - // this.allList = response.data; - // if (this.allList.proStatus === 0) { - // this.allList.proStatus = "鍚敤"; - // } else { - // this.allList.proStatus = "鍋滅敤"; - // } - // this.loading = false; - // }); - // if (!this.form.tjProjectList) { - // this.form.tjProjectList = [] - // this.form.tjProjectList.push({ - // id: parseInt(length), - // proName: "", - // allSonProName: "", - // proPrice: "", - // priceNow: "", - // proId: "", - // Selection, - // }); - // } + this.reset() + this.open = true + this.title = "浣撴濂楅淇℃伅缁存姢" + this.getDataList() }, - - // 鏄惁鍚敤 handleStatusChange(row) { - let data = { - pacId: row.pacId, - pacStatus: row.pacStatus, - }; - let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤"; - this.$confirm("纭瑕�" + text + row.pacName + "濂楅鍚楋紵") - .then(function () { - return updateStatus(data); - }) - .then(() => { - this.msgSuccess(text + "鎴愬姛"); - }) - .catch(function () { - row.pacStatus = row.pacStatus === "0" ? "0" : "1"; - }); - }, - - handleUp() { - this.title = "浣撴濂楅淇℃伅缁存姢"; - this.open = true; - // getPacTjProjectList().then((response) => { - // this.allList = response.data; - // this.loading = false; - // }); - getPacInFo(this.forms.pacId).then((response) => { - this.form = response.data; - console.log(this.form, 2233); - - this.form.keywords = this.form.keywords.slice(0, -1); - this.form.keywords = this.form.keywords.split(","); - // this.DataList = []; - - // this.pics = 0; - this.DataList = []; - this.checkedkey = []; - this.checkedListkey = []; - this.DataList = response.data.packageProjects; - this.DataList.forEach((item) => { - this.checkedkey.push(item.proId); - this.checkedListkey.push(item.proId); - }); - - // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級 - this.getDataList(); - }); - }, - - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.title = "浣撴濂楅淇℃伅缁存姢"; - this.open = true; - getPacInFo(row.pacId).then((response) => { - this.form = response.data; - console.log(this.form, 445); - - this.form.keywords = this.form.keywords.slice(0, -1); - this.form.keywords = this.form.keywords.split(","); - this.DataList = []; - this.checkedkey = []; - this.checkedListkey = []; - this.DataList = response.data.packageProjects; - this.DataList.forEach((item) => { - this.checkedkey.push(item.proId); - this.checkedListkey.push(item.proId); - }); - - // 鑾峰彇鏂扮殑鏁版嵁鍒楄〃锛堝鏋滈渶瑕侊級 - this.getDataList(); - }); - }, - - // 鏂板琛� - addmembers() { - if (this.form.pacName) { - if (!this.form.tjProjectList) { - this.form.tjProjectList = []; - this.form.tjProjectList.push({ - id: parseInt(length), - proName: "", - allSonProName: "", - proPrice: "", - priceNow: "", - proId: "", - Selection, - }); - } else { - this.form.tjProjectList.push({ - id: parseInt(length), - proName: "", - allSonProName: "", - proPrice: "", - priceNow: "", - proId: "", - Selection, - }); - } - } else { - Message.warning("璇峰厛濉啓濂楅鍚嶇О"); - } - this.$forceUpdate(); - }, - - // 鍒犻櫎琛� - Delete(index) { - if (this.form.tjProjectList.length == 0) { - this.$alert("璇峰厛閫夋嫨瑕佸垹闄ょ殑鏁版嵁", "鎻愮ず", { - confirmButtonText: "纭畾", - }); - } else { - this.form.tjProjectList.splice(index, 1); - } - }, - - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete1(row) { - this.DataList = this.DataList.filter((item) => item.proId !== row.proId); - // 浠� checkedNodes 涓Щ闄� - const index = this.checkedNodes.indexOf(row.proId); - if (index > -1) { - this.checkedNodes.splice(index, 1); - } - const tree = this.$refs.tree; - const node = tree.getNode(row.proId); - if (node) { - node.setChecked(false); - } - this.updateTotalPrice(); - }, - getSelectValue(val) { - this.form.tjProjectList.forEach((formitem) => { - if (formitem.proName == val) { - formitem.allSonProName = ""; - this.allList.find((item) => { - if (item.proName == val) { - formitem.proId = item.proId; - formitem.proPrice = item.proPrice; - formitem.priceNow = item.proPrice; - formitem.allSonProName = item.allSonProName; - // item.tjProjectList.forEach((item1) => { - // this.$nextTick(() => { - // formitem.allSonProName = - // formitem.allSonProName + "," + item1.proName; - // }); - // // this.form.tjProjectList.allSonProName = this.form.tjProjectList.allSonProName+','+item1.proName - // }); - } - }); - } - }); - - for (let i = 0; i < this.form.tjProjectList.length; i++) { - for (let j = i + 1; j < this.form.tjProjectList.length; j++) { - if ( - this.form.tjProjectList[i].proId == this.form.tjProjectList[j].proId - ) { - this.form.tjProjectList.splice(j, 1); - j--; - this.$modal.msgError("姝ら」鐩凡褰曞叆锛屼笉鍙噸澶嶅綍鍏�"); - } - } - } - - return this.form.tjProjectList; - }, - - numberChange(currentValue, oldValue) { - this.$confirm("纭畾淇敼鎵�鏈夊瓙椤圭殑鎶樻墸鍚楋紵", "鎻愮ず", { - confirmButtonText: "纭畾", - cancelButtonText: "鍙栨秷", - type: "warning", - }) - .then(() => { - this.youhui = currentValue; - this.DataList.forEach((item) => { - item.limits = this.youhui; - const proPrice = new Big(item.priceOrd); - const limits = new Big(item.limits); - const result = proPrice.times(limits.div(10)); - item.priceNow = result.toNumber(); - this.form.xianprice = this.DataList.reduce((sum, item) => { - return sum.plus(new Big(item.priceNow || "0")); - }, new Big(0)); - }); - }) + let data = { pacId: row.pacId, pacStatus: row.pacStatus } + let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤" + this.$confirm(`纭瑕�${text}${row.pacName}濂楅鍚楋紵`) + .then(() => updateStatus(data)) + .then(() => this.msgSuccess(`${text}鎴愬姛`)) .catch(() => { - this.youhui = oldValue; - }); + row.pacStatus = row.pacStatus === "0" ? "1" : "0" + }) }, + handleUp() { + this.title = "浣撴濂楅淇℃伅缁存姢" + this.open = true + getPacInFo(this.forms.pacId).then((response) => { + this.form = response.data + this.form.keywords = this.form.keywords + ? this.form.keywords.slice(0, -1).split(",") + : [] + this.DataList = response.data.packageProjects || [] + this.checkedkey = this.DataList.map((item) => item.proId) + this.checkedNodes = [...this.checkedkey] + this.updateTotalPrice() + this.updateYouhui() + this.getDataList() + }) + }, + handleUpdate(row) { + this.title = "浣撴濂楅淇℃伅缁存姢" + this.open = true + getPacInFo(row.pacId).then((response) => { + this.form = response.data + this.form.keywords = this.form.keywords + ? this.form.keywords.slice(0, -1).split(",") + : [] + this.DataList = response.data.packageProjects || [] + this.checkedkey = this.DataList.map((item) => item.proId) + this.checkedNodes = [...this.checkedkey] + this.updateTotalPrice() + this.updateYouhui() + this.getDataList() + }) + }, + handleDelete1(row) { + this.DataList = this.DataList.filter((item) => item.proId !== row.proId) + const index = this.checkedNodes.indexOf(row.proId) + if (index > -1) this.checkedNodes.splice(index, 1) + const tree = this.$refs.tree + const node = tree.getNode(row.proId) + if (node) node.setChecked(false) + this.updateTotalPrice() + this.updateYouhui() + }, + numberChange(currentValue) { + this.youhui = currentValue + this.DataList.forEach((item) => { + item.limits = this.youhui + this.updateProPrice(item) + }) + this.updateTotalPrice() + }, + handleXianPriceInput(value) { + const numValue = Math.max(0, Number(value) || 0) + console.log("123") + this.form.xianprice = numValue + }, + handleXianPriceChange(newValue) { + const value = Math.max(0, Number(newValue) || 0) + + if (this.DataList.length === 0 || this.pics === 0) { + this.form.xianprice = 0 + this.youhui = 10 + return + } + // 浣跨敤Big.js澶勭悊绮惧害 + const totalOriginalPrice = new Big(this.pics) + const totalCurrentPrice = new Big(value) + let newYouhui = totalCurrentPrice + .div(totalOriginalPrice) + .times(10) + .toNumber() + + // 闄愬埗鎶樻墸鑼冨洿 + newYouhui = Math.min(10, Math.max(0, newYouhui)) + this.youhui = Number(newYouhui.toFixed(1)) + + // 鏇存柊鎵�鏈夐」鐩殑鎶樻墸鍜岀幇浠� + this.DataList.forEach((item) => { + item.limits = this.youhui + this.updateProPrice(item) + }) + + // 閲嶆柊璁$畻纭繚绮惧害 + this.updateTotalPrice(true) + }, updateProPrice(row) { - const proPrice = new Big(row.priceOrd); - const limits = new Big(row.limits); - const result = proPrice.times(limits.div(10)); // ordPrice * (discount / 10) - row.priceNow = result.toNumber(); - this.form.xianprice = this.DataList.reduce((sum, item) => { - return sum.plus(new Big(item.priceNow || "0")); - }, new Big(0)).toNumber(); - this.youhui = - (Math.floor((this.form.xianprice / this.pics) * 100) / 100) * 10; - // console.log(this.youhui, 1212); + if (!row.priceOrd) return + const proPrice = new Big(row.priceOrd) + const limits = new Big(row.limits || 10) + row.priceNow = parseFloat(proPrice.times(limits.div(10)).toFixed(2)) }, calculateDiscount(row) { - if (row.limits > 10) { - row.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у�� - } else if (row.limits < 0) { - row.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓�� - } - this.updateProPrice(row); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫 + row.limits = Math.min(10, Math.max(0, row.limits)) + this.updateProPrice(row) + this.updateTotalPrice() + this.updateYouhui() }, - // 榛樿鎺ュ彈鍥涗釜鍊� { 褰撳墠琛岀殑鍊�, 褰撳墠鍒楃殑鍊�, 琛岀殑涓嬫爣, 鍒楃殑涓嬫爣 } - objectSpanMethod({ row, column, rowIndex, columnIndex }) { - let fields = ["propinName"]; - let cellValue = row[column.property]; - if (cellValue && fields.includes(column.property)) { - let prevRow = this.DataList[rowIndex - 1]; - let nextRow = this.DataList[rowIndex + 1]; - if (prevRow && prevRow[column.property] === cellValue) { - return { rowspan: 0, colspan: 0 }; - } else { - let countRowspan = 1; - while (nextRow && nextRow[column.property] === cellValue) { - nextRow = this.DataList[++countRowspan + rowIndex]; - } - if (countRowspan > 1) { - return { rowspan: countRowspan, colspan: 1 }; - } - } + updateTotalPrice(skipXianPrice = false) { + // 璁$畻鍘熶环鎬诲拰 + this.pics = this.DataList.reduce( + (sum, item) => sum + (Number(item.priceOrd) || 0), + 0 + ) + + // 璁$畻鐜颁环鎬诲拰 + if (!skipXianPrice) { + const totalCurrent = this.DataList.reduce( + (sum, item) => sum + (Number(item.priceNow) || 0), + 0 + ) + console.log("1231") + + this.form.xianprice = parseFloat(totalCurrent).toFixed(2) } }, - renderContent(h, { node, data, store }) { + updateYouhui() { + if (this.DataList.length === 0 || this.pics === 0) { + this.youhui = 10 + return + } + const totalOriginal = new Big(this.pics) + const totalCurrent = new Big(this.form.xianprice || 0) + this.youhui = parseFloat( + totalCurrent + .div(totalOriginal) + .times(10) + .toFixed(1) + ) + }, + renderContent(h, { node, data }) { return ( <span class="custom-tree-node"> <span>{node.label}</span> <span>({data.proPrice}鍏�)</span> </span> - ); + ) }, getDataList() { - this.loading = true; + this.loading = true search(this.queryParams1).then((response) => { - this.Treedata = response.data.list; // 鏇存柊鏍戝舰鏁版嵁 - this.total1 = response.data.total; // 鏇存柊鎬绘潯鏁� - this.pics = this.DataList.reduce( - (total, item) => total + item.priceOrd, - 0 - ); - - // 纭繚鍦ㄦ暟鎹姞杞藉悗淇濇寔閫変腑鐘舵�� + this.Treedata = response.data.list + this.total1 = response.data.total this.$nextTick(() => { - this.$refs.tree.setCheckedKeys(this.checkedNodes); - }); - }); - this.loading = false; + this.$refs.tree.setCheckedKeys(this.checkedNodes) + }) + this.loading = false + }) }, - // getDataList() { - // this.loading = true; - - // getProParentIdDxList(this.queryParams).then((response) => { - // this.Treedata = response.data.list; - // /* if (this.form.tjProjectList) { - // this.form.tjProjectList.forEach((item) => { - // this.Treedata.forEach((item1) => { - // if (item.proId == item1.proId) { - // this.checkedkey.push(item1.proId); - - // this.DataList.push(item1); - - // this.DataList.forEach((item1) => { - // item1.limits = 10; - // if (item1.limits > 10) { - // item1.limits = 10; // 寮哄埗灏嗗�艰缃负鏈�澶у�� - // } else if (item1.limits < 0) { - // item1.limits = 0; // 寮哄埗灏嗗�艰缃负鏈�灏忓�� - // } - // this.updateProPrice(item1); // 鏇存柊浠锋牸鎴栧叾浠栭�昏緫 - // }); - - // } - // }); - // }); - // } */ /* else { - // this.checkedkey.push(this.Treedata[0].proId); - // let proId = this.Treedata[0].proId; - // this.TreedataList = this.Treedata.filter( - // (item) => item.proId == proId - // ); */ - - // // 灏嗙涓�涓」鐩坊鍔犲埌 DataList - // // this.TreedataList.forEach((item) => { - // // this.checkedListkey.push(item.proId); - // // this.DataList.push(item); - // // }); - // /* getProSonDxList(proId).then((res) => { - // this.TreedataList = res.data.list; - // this.TreedataList.forEach((item) => { - // item.disabled = true; - // this.checkedListkey.push(item.proId); - // this.DataList.push(item); - // this.DataList.forEach((item) => { - // item.propinName = this.Treedata[0].proName; - // item.propinPrice = this.Treedata[0].proPrice; - // }); - // this.pics = 0; - // this.DataList.forEach((item) => { - // this.pics += item.proPrice; - // }); - // }); - // }); */ - // // } - // this.pics = this.DataList.reduce( - // (total, item) => total + item.priceOrd, - // 0 - // ); - // this.loading = false; - // }); - // }, handleFilterInput() { - this.queryParams1.page = 1; // 鎼滅储鏃堕噸缃负绗竴椤� - this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 - // 鍦ㄨ繃婊ゅ悗锛岄噸鏂拌缃�変腑鐘舵�� - this.$nextTick(() => { - this.$refs.tree.setCheckedKeys(this.checkedNodes); - }); + this.queryParams1.page = 1 + this.getDataList() }, - - // 鍒嗛〉浜嬩欢 - handlePageChange({ page, pageSize }) { - this.queryParams.page = page; // 鏇存柊褰撳墠椤� - this.queryParams.pageSize = pageSize; // 鏇存柊姣忛〉鏉℃暟 - this.getDataList(); // 璋冪敤鎺ュ彛鑾峰彇鏁版嵁 - }, - - handleCurrentChecked(data, checked, indeterminate) { + handleCurrentChecked(data, checked) { if (checked) { - // 濡傛灉宸查�夊垪琛ㄤ腑涓嶅瓨鍦ㄦ椤圭洰锛屽垯娣诲姞 if (!this.DataList.some((item) => item.proId === data.proId)) { - this.DataList.push({ + const newItem = { proId: data.proId, proName: data.proName, priceOrd: data.proPrice, - limits: 10, - priceNow: data.proPrice, - }); - } - // 娣诲姞鍒� checkedNodes 鏁扮粍 - if (!this.checkedNodes.includes(data.proId)) { - this.checkedNodes.push(data.proId); + limits: this.youhui, + priceNow: 0, + } + this.updateProPrice(newItem) + this.DataList.push(newItem) + this.checkedNodes.push(data.proId) } } else { - // 鍙栨秷閫変腑鏃讹紝浠嶥ataList涓Щ闄� - this.DataList = this.DataList.filter( - (item) => item.proId !== data.proId - ); - // 浠� checkedNodes 涓Щ闄� - const index = this.checkedNodes.indexOf(data.proId); - if (index > -1) { - this.checkedNodes.splice(index, 1); - } + this.DataList = this.DataList.filter((item) => item.proId !== data.proId) + const index = this.checkedNodes.indexOf(data.proId) + if (index > -1) this.checkedNodes.splice(index, 1) } - - // 鏇存柊浼樻儬浠峰拰鎬讳环 - this.updateTotalPrice(); + this.updateTotalPrice() + this.updateYouhui() }, - updateTotalPrice() { - // 璁$畻鎵�鏈夐」鐩殑鎬讳紭鎯犱环 - this.form.xianprice = this.DataList.reduce((sum, item) => { - return sum.plus(new Big(item.priceNow || "0")); - }, new Big(0)).toNumber(); - - // 璁$畻鍘熶环鎬诲拰 - this.pics = this.DataList.reduce( - (total, item) => total + item.priceOrd, - 0 - ); - }, - spliceData() { - for (var i = 0; i < this.DataList.length; i++) { - for (var j = i + 1; j < this.DataList.length; j++) { - if (this.DataList[i].proId == this.DataList[j].proId) { - //濡傛灉绗竴涓瓑浜庣浜屼釜锛宻plice鏂规硶鍒犻櫎绗簩涓� - this.DataList.splice(j, 1); - j--; - } - } - } - return this.DataList; - }, - - // 鐐瑰嚮鑾峰彇姣忎釜鏍戣妭鐐� - handleCurrentChecked1(data, checked, checkedNodes) { - if (checked == false) { - this.DataList.forEach((item, index) => { - if (item.proId == data.proId) { - this.DataList.splice(index, 1); - this.TotalPrice1 = 0; - this.pics = 0; - this.DataList.forEach((item1) => { - this.pics += item1.priceOrd; - // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - }); - } - }); - } else if (checked == true) { - this.DataList.push(data); - this.pics = 0; - this.DataList.forEach((item1) => { - this.pics += item1.priceOrd; - if (item1.proParentId == this.dataObj.proId) { - item1.propinName = this.dataObj.proName; - item1.propinPrice = this.dataObj.proPrice; - } - }); - this.spliceData(); - this.TotalPrice1 = 0; - this.pics = 0; - this.DataList.forEach((item1) => { - // this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - this.pics += item1.priceOrd; - }); - } - }, - - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDeletes(row) { - this.DataList.forEach((item, index) => { - if (item.proParentId == row.proParentId) { - this.DataList.splice(index, 1); - this.TotalPrice1 = 0; - this.DataList.forEach((item1) => { - this.TotalPrice1 = item1.proPrice + this.TotalPrice1; - }); - } - }); - - // this.$refs.trees.setCheckedKeys([]); - }, - - /** 鎻愪氦鎸夐挳 */ submitForm() { - this.form.limits = this.youhui; - this.form.price = this.pics; - this.form.priceNow = this.queryParams.xianprice; + this.$refs.form.validate((valid) => { + if (valid) { + this.form.limits = this.youhui + this.form.price = this.pics + this.form.newPrice = this.form.xianprice - if (this.keys) { - this.form.keywords = this.keys; // 濡傛灉鏈� this.keys锛屽垯鐩存帴璧嬪�� - } else { - // this.form.keywords = this.form.keywords; // 濡傛灉娌℃湁锛屽垯灏� this.form.keywords 杞垚瀛楃涓� - } + const packageProjects = this.DataList.map((item) => ({ + proName: item.proName, + proId: item.proId, + priceNow: item.priceNow, + limits: item.limits, + priceOrd: item.priceOrd, + })) - let packageProjects = []; // 瀹氫箟涓�涓┖鏁扮粍 - - this.DataList.forEach((item) => { - packageProjects.push({ - proName: item.proName, - proId: item.proId, - priceNow: item.priceNow, - limits: item.limits, - priceOrd: item.priceOrd, - }); - }); - let data = { - pacName: this.form.pacName, - limits: this.form.limits, - pacStatus: this.form.pacStatus, - packageProjects: packageProjects, - newPrice: this.form.xianprice, - price: this.pics, - pacId: this.form.pacId || null, - isOnSale: this.form.isOnSale, - // keywords: this.form.keywords, - sort: this.form.sort, - retailPrice: this.form.retailPrice, - tjCategory: this.form.tjCategory, - pacRemark: this.form.pacRemark, - detail: this.form.detail, - }; - - saveOreditTjPacNew(data).then((res) => { - console.log(res, 555); - this.open = false; - this.getList(); - }); - }, - /* submitForm() { - if (this.form.pacName) { - this.form.tjProjectList = []; - if (this.DataList.length != 0) { - this.treeList = JSON.parse(JSON.stringify(this.DataList)); - for (var i = 0; i < this.treeList.length; i++) { - for (var j = i + 1; j < this.treeList.length; j++) { - if ( - this.treeList[i].proParentId == this.treeList[j].proParentId - ) { - this.treeList.splice(j, 1); - j--; - } - } + const data = { + pacName: this.form.pacName, + limits: this.form.limits, + pacStatus: this.form.pacStatus, + packageProjects, + newPrice: this.form.xianprice, + price: this.pics, + pacId: this.form.pacId || null, + isOnSale: this.form.isOnSale, + sort: this.form.sort, + retailPrice: this.form.retailPrice, + tjCategory: this.form.tjCategory, + pacRemark: this.form.pacRemark, + detail: this.form.detail, + keywords: this.keys, } - this.treeList.forEach((item) => { - this.form.tjProjectList.push({ - // id: 0, - proName: item.propinName, - // allSonProName: item.proName + ",", - proPrice: item.propinPrice, - priceNow: item.propinPrice, - proId: item.proParentId, - }); - }); + + saveOreditTjPacNew(data).then(() => { + this.open = false + this.getList() + this.$modal.msgSuccess("淇濆瓨鎴愬姛") + }) } - this.$refs["form"].validate((valid) => { - if (valid) { - if (this.form.pacId != null) { - // if (this.form.pacStatus === "鍚敤") { - // this.form.pacStatus = 0; - // } else { - // this.form.pacStatus = 1; - // } - if (this.keys) { - this.form.keywords = this.keys; - } else { - this.form.keywords = this.form.keywords.toString(); - } - - updatePackage(this.form).then((response) => { - this.$modal.msgSuccess("淇敼鎴愬姛"); - this.open = false; - this.getList(); - }); - } else { - this.form.keywords = this.keys; - // if (this.form.pacStatus === "鍚敤") { - // this.form.pacStatus = 0; - // } else { - // this.form.pacStatus = 1; - // } - // return; - addPackage(this.form).then((response) => { - this.$modal.msgSuccess("鏂板鎴愬姛"); - this.open = false; - this.getList(); - }); - } - } - }); - } else { - Message.warning("璇峰厛濉啓濂楅鍚嶇О"); - } - }, */ - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + }) + }, handleDelete(row) { - const pacIds = row.pacId || this.ids; + const pacIds = row.pacId || this.ids this.$modal - .confirm('鏄惁纭鍒犻櫎浣撴濂楅缂栧彿涓�"' + pacIds + '"鐨勬暟鎹」锛�') - .then(function () { - return delPackage(pacIds); - }) + .confirm(`鏄惁纭鍒犻櫎浣撴濂楅缂栧彿涓�"${pacIds}"鐨勬暟鎹」锛焋) + .then(() => delPackage(pacIds)) .then(() => { - this.getList(); - this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + this.getList() + this.$modal.msgSuccess("鍒犻櫎鎴愬姛") }) - .catch(() => {}); + .catch(() => {}) }, - - /** 鍒嗛厤濂楅鍐呴」鐩搷浣� */ - handleProject: function (row) { - const pacId = row.pacId; - this.$router.push("/system/user-auth/role/" + pacId); - }, - - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ handleExport() { this.download( "system/package/export", - { - ...this.queryParams, - }, + { ...this.queryParams }, `package_${new Date().getTime()}.xlsx` - ); - }, - // 濂楅璇︽儏 - // handleSeach(row) { - // this.Seachopen = true; - // this.loading = true; - // const pacId = row.pacId; - // this.pacId = row.pacId - // let data = { - // pacId: pacId, - // }; - // getAllPackage(data).then((response) => { - // this.allpackageList = response.data.tjProjectList; - // this.loading = false; - // let arr = []; - // this.allpackageList.forEach((item) => { - // arr.push(item.proName); - // }); - // this.newproName = arr; - // }); - - // getAllPackageList().then((response) => { - // this.allList = response.data; - // this.loading = false; - // }); - // }, - // // 鍏ㄩ�� - // handleCheckAllChange(val) { - // this.newproName = val ? this.allList : []; - // this.isIndeterminate = false; - // }, - - // handleCheckedCitiesChange(value) { - // let checkedCount = value.length; - // this.checkAll = checkedCount === this.allList.length; - // this.isIndeterminate = - // checkedCount > 0 && checkedCount < this.allList.length; - // }, - - submitcheckbox() { - let _this = this; - let proIds = []; - this.allList.forEach((item) => { - _this.newproName.forEach((item1) => { - if (item.proName == item1) { - proIds.push(item.proId); - } - }); - }); - let data = { - pacid: Number(this.pacId), - proIds: proIds.toString(), - }; - - updateProject(data).then((response) => { - this.$modal.msgSuccess("鎴愬姛"); - this.Seachopen = false; - }); + ) }, }, -}; +} </script> - <style> .el-tooltip__popper { @@ -1723,12 +1043,1046 @@ overflow-y: auto; border: 1px solid #d9d9d9; } -/* .custom-tree-node { - flex: 1; - display: flex; - align-items: center; - justify-content: space-between; - font-size: 14px; - padding-right: 8px; - } */ +</style><template> + <div class="app-container"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > + <el-form-item label="濂楅鍚嶇О" prop="pacName"> + <el-input + v-model="queryParams.pacName" + placeholder="璇疯緭鍏ュ椁愬悕绉�" + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="濂楅鎻忚堪" prop="pacRemark"> + <el-input + v-model="queryParams.pacRemark" + placeholder="璇疯緭鍏ュ椁愭弿杩�" + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label="浣撴绫诲埆" prop="tjCategory"> + <el-select + v-model="queryParams.tjCategory" + placeholder="璇烽�夋嫨鐘舵��" + style="width: 200px" + filterable + clearable + > + <el-option + v-for="dict in dict.type.dict_tjtype" + :key="dict.id" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:package:add']" + >鏂板</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="primary" + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUp" + v-hasPermi="['system:package:edit']" + >淇敼</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="primary" + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:package:remove']" + >鍒犻櫎</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="primary" + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:package:export']" + >瀵煎嚭</el-button + > + </el-col> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + ></right-toolbar> + </el-row> + + <template> + <el-table + v-loading="loading" + style="width: 100%" + :data="packageList" + @selection-change="handleSelectionChange" + border + > + <el-table-column + fixed + type="selection" + width="40" + align="center" + :show-overflow-tooltip="true" + /> + <el-table-column + label="搴忓彿" + align="center" + width="50" + prop="newID" + fixed + /> + <el-table-column + label="浣撴绫诲埆" + width="100px" + align="center" + prop="categoryNames" + fixed + > + <template slot-scope="scope"> + <dict-tag + :options="dict.type.dict_tjtype" + :value="scope.row.tjCategory" + /> + </template> + </el-table-column> + <el-table-column + label="濂楅鍚嶇О" + align="center" + prop="pacName" + width="150px" + fixed + /> + <el-table-column + label="鍘熶环" + width="80px" + align="center" + prop="price" + fixed + ></el-table-column> + <el-table-column + label="鎶樻墸" + width="80px" + align="center" + prop="limits" + fixed + ></el-table-column> + <el-table-column + label="鐜颁环" + width="80px" + align="center" + prop="newPrice" + fixed + > + </el-table-column> + <el-table-column + label="鍗曢」鍒楄〃" + align="center" + prop="allProName" + width="1200px" + > + </el-table-column> + <el-table-column + label="濂楅鎻忚堪" + align="center" + :show-overflow-tooltip="true" + width="120px" + > + <template slot-scope="scope"> + <div class="showInline">{{ scope.row.pacRemark }}</div> + </template> + </el-table-column> + <el-table-column + label="鍏抽敭瀛�" + width="110px" + align="center" + prop="keyNames" + ></el-table-column> + <el-table-column + label="鏄惁涓婃灦" + width="94px" + align="center" + prop="isOnSale" + > + <template slot-scope="scope"> + <dict-tag + :options="dict.type.sys_yes_no" + :value="scope.row.isOnSale" + /> + </template> + </el-table-column> + <el-table-column + label="鎺掑簭" + width="50px" + align="center" + prop="sort" + ></el-table-column> + <el-table-column + label="灏忕▼搴忎环鏍�" + width="90px" + align="center" + prop="retailPrice" + ></el-table-column> + <el-table-column + label="宸插敭鏁伴噺" + width="90px" + align="center" + prop="saleNum" + ></el-table-column> + <el-table-column + label="鐘舵��" + align="center" + prop="pacStatus" + fixed="right" + width="100px" + > + <template slot-scope="scope"> + <el-switch + v-model="scope.row.pacStatus" + active-value="0" + inactive-value="1" + @change="handleStatusChange(scope.row)" + ></el-switch> + </template> + </el-table-column> + <el-table-column + label="鎿嶄綔" + align="center" + width="80px" + fixed="right" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:package:edit']" + title="淇敼" + ></el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:package:remove']" + title="鍒犻櫎" + ></el-button> + </template> + </el-table-column> + </el-table> + + <div class="pag"> + <div class="pag1"> + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + </div> + </div> + </template> + + <!-- 淇敼浣撴濂楅瀵硅瘽妗� --> + <el-dialog + :title="title" + :visible.sync="open" + width="1400px" + append-to-body + :close-on-click-modal="false" + > + <el-form + ref="form" + :model="form" + :rules="rules" + label-width="100px" + :inline="true" + > + <el-form-item label="濂楅鍚嶇О" prop="pacName"> + <span + slot="label" + style="display: inline-block; border-bottom: 2px solid blue" + @click="handlePackage" + > + 濂楅鍚嶇О + </span> + <el-input + v-model="form.pacName" + placeholder="璇疯緭鍏ュ椁愬悕绉�" + style="width: 150px" + /> + </el-form-item> + <el-form-item label="濂楅鐘舵��" prop="pacStatus"> + <el-select + v-model="form.pacStatus" + placeholder="璇烽�夋嫨鐘舵��" + style="width: 150px" + filterable + clearable + > + <el-option + v-for="dict in dict.type.sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="浣撴绫诲埆" prop="tjCategory"> + <el-select + v-model="form.tjCategory" + placeholder="璇烽�夋嫨浣撴绫诲埆" + style="width: 150px" + filterable + clearable + > + <el-option + v-for="dict in dict.type.dict_tjtype" + :key="dict.value" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="鏄惁涓婃灦" prop="isOnSale"> + <el-select + v-model="form.isOnSale" + placeholder="璇烽�夋嫨鏄惁涓婃灦" + style="width: 140px" + filterable + clearable + > + <el-option + v-for="dict in dict.type.sys_yes_no" + :key="dict.value" + :label="dict.label" + :value="dict.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎺掑簭" prop="sort"> + <el-input + v-model="form.sort" + placeholder="璇疯緭鍏ユ帓搴�" + style="width: 150px" + /> + </el-form-item> + <el-form-item label="灏忕▼搴忎环鏍�" prop="retailPrice"> + <el-input + v-model="form.retailPrice" + placeholder="璇疯緭鍏ュ皬绋嬪簭浠锋牸" + style="width: 150px" + /> + </el-form-item> + <el-form-item label="鍘熶环" prop="pics"> + <el-input + v-model="pics" + placeholder="璇疯緭鍏ュ師浠�" + style="width: 150px" + /> + </el-form-item> + <el-form-item label="鎶樻墸"> + <el-input-number + ref="inputNumber" + style="width: 150px" + v-model="youhui" + :precision="2" + :step="0.1" + :max="10" + :min="1" + @change="numberChange" + ></el-input-number> + </el-form-item> + <el-form-item label="鐜颁环"> + <el-input + ref="inputName" + v-model="form.xianprice" + placeholder="璇疯緭鍏ョ幇浠�" + clearable + style="width: 140px" + type="number" + :min="0" + @change="handleXianPriceChange" + @input="handleXianPriceInput" + /> + </el-form-item> + <el-form-item label="鍏抽敭瀛�" prop="keywords"> + <el-select + multiple + v-model="form.keywords" + placeholder="璇烽�夋嫨鍏抽敭瀛�" + style="width: 160px" + @change="sel" + filterable + clearable + > + <el-option + v-for="item in keywordList" + :key="item.id" + :label="item.keyword" + :value="item.id" + ></el-option> + </el-select> + </el-form-item> + + <div v-if="!isCollapsed" style="display: flex"> + <div> + <el-form-item label="濂楅鎻忚堪" prop="pacRemark"> + <el-input + type="textarea" + v-model="form.pacRemark" + placeholder="璇疯緭鍏ュ椁愭弿杩�" + style="width: 670px" + rows="2" + ></el-input> + </el-form-item> + <el-form-item label="璇︾粏浠嬬粛" prop="detail"> + <editor + v-model="form.detail" + :min-height="192" + style="width: 670px" + /> + </el-form-item> + </div> + <div class="dialo2"> + <el-form-item label="鍥剧墖"> + <image-upload v-model="form.pacPhone" /> + </el-form-item> + </div> + </div> + </el-form> + <el-button type="primary" plain size="mini" @click="toggleCollapse">{{ + isCollapsed ? "灞曞紑" : "鏀惰捣" + }}</el-button> + + <el-row style="display: flex; width: 1300px"> + <el-col> + <div + style="text-align: center; margin-bottom: 10px; margin-top: 10px" + > + 椤圭洰鍒楄〃 + </div> + <el-input + placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" + @input="handleFilterInput" + v-model="queryParams1.nr" + clearable + /> + <div class="tab3" style="height: 365px"> + <el-tree + class="filter-tree" + v-loading="loading" + :data="Treedata" + :props="defaultProps" + show-checkbox + node-key="proId" + @check-change="handleCurrentChecked" + :default-checked-keys="checkedkey" + :filter-node-method="filterNode" + ref="tree" + :render-content="renderContent" + > + </el-tree> + <pagination + small + v-show="total1 > 0" + :total="total1" + :page.sync="queryParams1.page" + :limit.sync="queryParams1.pageSize" + @pagination="getDataList" + /> + </div> + </el-col> + <el-col> + <div class="grid-content bg-purple"> + <div + style=" + text-align: center; + margin-bottom: 10px; + margin-top: 10px; + margin-left: 8%; + " + > + 宸查�夐」鐩垪琛� + </div> + <el-table + :data="DataList" + border + style="width: 90%; margin-left: 20px" + height="400" + > + <el-table-column prop="proName" label="妫�鏌ラ」鐩�"> + </el-table-column> + <el-table-column + prop="priceOrd" + label="鍘熶环" + align="center" + width="80px" + > + </el-table-column> + <el-table-column label="鎶樻墸" width="100px"> + <template slot-scope="scope"> + <el-input + v-model.number="scope.row.limits" + @input="calculateDiscount(scope.row)" + placeholder="杈撳叆鎶樻墸" + size="small" + type="number" + min="0" + step="0.1" + max="10" + /> + </template> + </el-table-column> + <el-table-column + prop="priceNow" + label="鐜颁环" + width="80px" + align="center" + > + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" width="80px"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete1(scope.row)" + title="鍒犻櫎" + > + </el-button> + </template> + </el-table-column> + </el-table> + </div> + </el-col> + </el-row> + + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + + <Packages ref="aaa" @add="handleChanges" /> + </div> +</template> + +<script> +import { Big } from 'big.js' +import Packages from "@/components/Packages" +import { listCategory } from "@/api/mall/category" +import { listKeyword } from "@/api/mall/keyword" +import { search } from "@/api/system/package" +import { + getPacList, + getPacInFo, + delPackage, + updateStatus, + getPacTjProjectList, + saveOreditTjPacNew, +} from "@/api/system/package" +import { Message } from "element-ui" + +export default { + name: "Package", + dicts: ["sys_normal_disable", "sys_yes_no", "dict_tjtype"], + components: { Packages }, + data() { + return { + pics: 0, // 鍘熶环鎬诲拰 + DataList: [], // 宸查�夐」鐩垪琛� + Treedata: [], // 椤圭洰鏍戞暟鎹� + checkedkey: [], // 鏍戦粯璁ら�変腑椤� + checkedNodes: [], // 璁板綍閫変腑鐨勮妭鐐� + isCollapsed: true, // 鎶樺彔鐘舵�� + categoryList: [], // 濂楅绫荤洰 + keywordList: [], // 鍏抽敭瀛楀垪琛� + keys: "", // 鍏抽敭瀛楀瓧绗︿覆 + loading: false, // 鍔犺浇鐘舵�� + single: true, // 鏄惁鍗曢�夌鐢� + multiple: true, // 鏄惁澶氶�夌鐢� + showSearch: true, // 鏄剧ず鎼滅储鏉′欢 + packageList: [], // 濂楅鍒楄〃 + allList: [], // 鎵�鏈変綋妫�椤圭洰 + title: "", // 寮瑰嚭灞傛爣棰� + open: false, // 鏄惁鏄剧ず寮瑰嚭灞� + total: 0, // 涓昏〃鏍兼�绘潯鏁� + total1: 0, // 椤圭洰鏍戞�绘潯鏁� + queryParams: { + pageNum: 1, + pageSize: 10, + pacName: null, + pacRemark: null, + tjCategory: null, + }, + queryParams1: { + page: 1, + pageSize: 30, + nr: "", + }, + form: { + xianprice: 0, // 鐜颁环鎬诲拰锛屽彲鎵嬪姩淇敼 + limits: 10, // 鎬绘姌鎵� + pacName: "", + pacStatus: "", + tjCategory: "", + isOnSale: "", + sort: null, + retailPrice: null, + keywords: [], + }, + youhui: 10, // 涓婃柟鎶樻墸 + defaultProps: { + children: [], + label: "proName", + }, + rules: { + pacName: [{ required: true, message: "濂楅鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }], + pacStatus: [ + { required: true, message: "璇烽�夋嫨濂楅鐘舵��", trigger: "change" }, + ], + isOnSale: [ + { required: true, message: "璇烽�夋嫨鏄惁涓婃灦", trigger: "change" }, + ], + sort: [{ required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }], + retailPrice: [ + { required: true, message: "灏忕▼搴忎环鏍间笉鑳戒负绌�", trigger: "blur" }, + ], + tjCategory: [ + { required: true, message: "璇烽�夋嫨浣撴绫诲埆", trigger: "change" }, + ], + }, + } + }, + created() { + this.getList() + this.getKeyword() + this.getCategory() + }, + methods: { + toggleCollapse() { + this.isCollapsed = !this.isCollapsed + }, + filterNode(value, data) { + if (!value) return true + return ( + data.proName.indexOf(value) !== -1 || + (data.proEngName && data.proEngName.indexOf(value) !== -1) + ) + }, + getList() { + this.loading = true + getPacTjProjectList().then((response) => { + this.allList = response.data + this.loading = false + }) + getPacList(this.queryParams).then((response) => { + response.rows.forEach((item, index) => { + item.newID = + (this.queryParams.pageNum - 1) * this.queryParams.pageSize + + index + + 1 + }) + this.total = response.total + this.packageList = response.rows + this.loading = false + }) + }, + getKeyword() { + listKeyword(this.queryParams).then((response) => { + this.keywordList = response.rows + }) + }, + sel(val) { + this.keys = val.join(",") + }, + getCategory() { + listCategory(this.queryParams).then((response) => { + this.categoryList = response.rows + }) + }, + cancel() { + this.open = false + this.reset() + }, + reset() { + this.form = { + pacId: null, + pacName: "", + pacRemark: "", + pacStatus: "", + tjCategory: "", + isOnSale: "", + sort: null, + retailPrice: null, + xianprice: 0, + limits: 10, + keywords: [], + } + this.DataList = [] + this.checkedkey = [] + this.checkedNodes = [] + this.youhui = 10 + this.pics = 0 + this.resetForm("form") + }, + handleQuery() { + this.queryParams.pageNum = 1 + this.getList() + }, + handlePackage() { + this.$refs.aaa.open = true + this.$refs.aaa.getList() + this.$refs.aaa.title = "濂楅瀛楀吀" + }, + handleChanges(param1) { + this.form.pacName = param1[0].pacName + this.form.hisPacId = param1[0].pacId + if (param1[0].price) { + this.form.counterPrice = param1[0].price + this.form.retailPrice = param1[0].price + } + }, + resetQuery() { + this.resetForm("queryForm") + this.handleQuery() + }, + handleSelectionChange(selection) { + if (!selection.length) { + this.forms = null + this.ids = [] + this.single = true + this.multiple = true + return + } + this.forms = selection[0] + this.ids = selection.map((item) => item.pacId) + this.single = selection.length !== 1 + this.multiple = false + }, + handleAdd() { + this.reset() + this.open = true + this.title = "浣撴濂楅淇℃伅缁存姢" + this.getDataList() + }, + handleStatusChange(row) { + let data = { pacId: row.pacId, pacStatus: row.pacStatus } + let text = row.pacStatus === "0" ? "鍚敤" : "鍋滅敤" + this.$confirm(`纭瑕�${text}${row.pacName}濂楅鍚楋紵`) + .then(() => updateStatus(data)) + .then(() => this.msgSuccess(`${text}鎴愬姛`)) + .catch(() => { + row.pacStatus = row.pacStatus === "0" ? "1" : "0" + }) + }, + handleUp() { + this.title = "浣撴濂楅淇℃伅缁存姢" + this.open = true + getPacInFo(this.forms.pacId).then((response) => { + this.form = response.data + this.form.keywords = this.form.keywords + ? this.form.keywords.slice(0, -1).split(",") + : [] + this.DataList = response.data.packageProjects || [] + this.checkedkey = this.DataList.map((item) => item.proId) + this.checkedNodes = [...this.checkedkey] + this.updateTotalPrice() + this.updateYouhui() + this.getDataList() + }) + }, + handleUpdate(row) { + this.title = "浣撴濂楅淇℃伅缁存姢" + this.open = true + getPacInFo(row.pacId).then((response) => { + this.form = response.data + this.form.keywords = this.form.keywords + ? this.form.keywords.slice(0, -1).split(",") + : [] + this.DataList = response.data.packageProjects || [] + this.checkedkey = this.DataList.map((item) => item.proId) + this.checkedNodes = [...this.checkedkey] + this.updateTotalPrice() + this.updateYouhui() + this.getDataList() + }) + }, + handleDelete1(row) { + this.DataList = this.DataList.filter((item) => item.proId !== row.proId) + const index = this.checkedNodes.indexOf(row.proId) + if (index > -1) this.checkedNodes.splice(index, 1) + const tree = this.$refs.tree + const node = tree.getNode(row.proId) + if (node) node.setChecked(false) + this.updateTotalPrice() + this.updateYouhui() + }, + numberChange(currentValue) { + this.youhui = currentValue + this.DataList.forEach((item) => { + item.limits = this.youhui + this.updateProPrice(item) + }) + this.updateTotalPrice() + }, + handleXianPriceInput(value) { + const numValue = Math.max(0, Number(value) || 0) + this.form.xianprice = numValue + }, + handleXianPriceChange(newValue) { + const value = Math.max(0, Number(newValue) || 0) + + if (this.DataList.length === 0 || this.pics === 0) { + this.form.xianprice = 0 + this.youhui = 10 + return + } + + // 浣跨敤Big.js澶勭悊绮惧害 + const totalOriginalPrice = new Big(this.pics) + const totalCurrentPrice = new Big(value) + let newYouhui = totalCurrentPrice + .div(totalOriginalPrice) + .times(10) + .toNumber() + + // 闄愬埗鎶樻墸鑼冨洿 + newYouhui = Math.min(10, Math.max(0, newYouhui)) + this.youhui = Number(newYouhui.toFixed(1)) + + // 鏇存柊鎵�鏈夐」鐩殑鎶樻墸鍜岀幇浠� + this.DataList.forEach((item) => { + item.limits = this.youhui + this.updateProPrice(item) + }) + + // 閲嶆柊璁$畻纭繚绮惧害 + this.updateTotalPrice(true) + }, + updateProPrice(row) { + if (!row.priceOrd) return + const proPrice = new Big(row.priceOrd) + const limits = new Big(row.limits || 10) + row.priceNow = parseFloat(proPrice.times(limits.div(10)).toFixed(2)) + }, + calculateDiscount(row) { + row.limits = Math.min(10, Math.max(0, row.limits)) + this.updateProPrice(row) + this.updateTotalPrice() + this.updateYouhui() + }, + updateTotalPrice(skipXianPrice = false) { + // 璁$畻鍘熶环鎬诲拰 + this.pics = this.DataList.reduce( + (sum, item) => sum + (Number(item.priceOrd) || 0), + 0 + ) + + // 璁$畻鐜颁环鎬诲拰 + if (!skipXianPrice) { + const totalCurrent = this.DataList.reduce( + (sum, item) => sum + (Number(item.priceNow) || 0), + 0 + ) + this.form.xianprice = parseFloat(totalCurrent).toFixed(2) + } + }, + updateYouhui() { + if (this.DataList.length === 0 || this.pics === 0) { + this.youhui = 10 + return + } + const totalOriginal = new Big(this.pics) + const totalCurrent = new Big(this.form.xianprice || 0) + this.youhui = parseFloat( + totalCurrent + .div(totalOriginal) + .times(10) + .toFixed(1) + ) + }, + renderContent(h, { node, data }) { + return ( + <span class="custom-tree-node"> + <span>{node.label}</span> + <span>({data.proPrice}鍏�)</span> + </span> + ) + }, + getDataList() { + this.loading = true + search(this.queryParams1).then((response) => { + this.Treedata = response.data.list + this.total1 = response.data.total + this.$nextTick(() => { + this.$refs.tree.setCheckedKeys(this.checkedNodes) + }) + this.loading = false + }) + }, + handleFilterInput() { + this.queryParams1.page = 1 + this.getDataList() + }, + handleCurrentChecked(data, checked) { + if (checked) { + if (!this.DataList.some((item) => item.proId === data.proId)) { + const newItem = { + proId: data.proId, + proName: data.proName, + priceOrd: data.proPrice, + limits: this.youhui, + priceNow: 0, + } + this.updateProPrice(newItem) + this.DataList.push(newItem) + this.checkedNodes.push(data.proId) + } + } else { + this.DataList = this.DataList.filter((item) => item.proId !== data.proId) + const index = this.checkedNodes.indexOf(data.proId) + if (index > -1) this.checkedNodes.splice(index, 1) + } + this.updateTotalPrice() + this.updateYouhui() + }, + submitForm() { + this.$refs.form.validate((valid) => { + if (valid) { + this.form.limits = this.youhui + this.form.price = this.pics + this.form.newPrice = this.form.xianprice + + const packageProjects = this.DataList.map((item) => ({ + proName: item.proName, + proId: item.proId, + priceNow: item.priceNow, + limits: item.limits, + priceOrd: item.priceOrd, + })) + + const data = { + pacName: this.form.pacName, + limits: this.form.limits, + pacStatus: this.form.pacStatus, + packageProjects, + newPrice: this.form.xianprice, + price: this.pics, + pacId: this.form.pacId || null, + isOnSale: this.form.isOnSale, + sort: this.form.sort, + retailPrice: this.form.retailPrice, + tjCategory: this.form.tjCategory, + pacRemark: this.form.pacRemark, + detail: this.form.detail, + keywords: this.keys, + } + + saveOreditTjPacNew(data).then(() => { + this.open = false + this.getList() + this.$modal.msgSuccess("淇濆瓨鎴愬姛") + }) + } + }) + }, + handleDelete(row) { + const pacIds = row.pacId || this.ids + this.$modal + .confirm(`鏄惁纭鍒犻櫎浣撴濂楅缂栧彿涓�"${pacIds}"鐨勬暟鎹」锛焋) + .then(() => delPackage(pacIds)) + .then(() => { + this.getList() + this.$modal.msgSuccess("鍒犻櫎鎴愬姛") + }) + .catch(() => {}) + }, + handleExport() { + this.download( + "system/package/export", + { ...this.queryParams }, + `package_${new Date().getTime()}.xlsx` + ) + }, + }, +} +</script> + +<style> +.el-tooltip__popper { + max-width: 800px; +} + +.showInline { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: 2; + line-clamp: 2; + -webkit-box-orient: vertical; +} + +.pag { + width: 100%; + display: flex; + justify-content: center; +} + +.pag1 { + width: 30%; +} + +.dialog-footer { + position: absolute; + left: 40%; + bottom: 2%; +} +.tab3 { + max-height: 400px; + overflow-y: auto; + border: 1px solid #d9d9d9; +} </style> \ No newline at end of file diff --git a/src/views/system/tijian/index.vue b/src/views/system/tijian/index.vue index ad39758..52c3914 100644 --- a/src/views/system/tijian/index.vue +++ b/src/views/system/tijian/index.vue @@ -3261,6 +3261,7 @@ discount: item.discount, parentProId: item.parentProId, cusIdCard: item.cusId, + yhj: item.nowPrice })); // 鍒涘缓鏂扮殑瀵硅薄锛屽寘鍚� discount 鍜� id gaibianzhekou(newArray).then((res) => { this.loadingSubmit = false; diff --git a/vue.config.js b/vue.config.js index 6d559de..eb6d728 100644 --- a/vue.config.js +++ b/vue.config.js @@ -53,13 +53,14 @@ // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { // target: `https://ltpeis.xaltjdkj.cn:5801/`, -<<<<<<< HEAD + // target: `http://192.168.1.2:5011`, target: `http://192.168.1.113:5011`, -======= + target: `http://192.168.1.113:5011`, + + target: `http://192.168.1.2:5011`, // target: `http://192.168.1.113:5011`, ->>>>>>> ad78625bb4b876018ac68c6f402c9b21d1a7b3bc // // target: `http://192.168.0.99:8080/ltkj-admin`, // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`, // target: `http://10.168.0.9:5011`, -- Gitblit v1.8.0