From 2c56eb01de07a87d025b3301efd5fcbf1d18c1af Mon Sep 17 00:00:00 2001 From: qx <1084500556@qq.com> Date: 星期五, 23 五月 2025 17:26:02 +0800 Subject: [PATCH] qx --- src/api/system/menu.js | 10 + src/views/system/manual/index.vue | 392 ++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 267 insertions(+), 135 deletions(-) diff --git a/src/api/system/menu.js b/src/api/system/menu.js index 12de330..d1a8ace 100644 --- a/src/api/system/menu.js +++ b/src/api/system/menu.js @@ -77,4 +77,14 @@ method: 'get', params: query }) +} + + +// 鏌ヨ鑿滃崟鍒楄〃 +export function chaxunjyjcwsxmjg(query) { + return request({ + url: '/system/config/chaxunjyjcwsxmjg', + method: 'get', + params: query + }) } \ No newline at end of file diff --git a/src/views/system/manual/index.vue b/src/views/system/manual/index.vue index a276d31..1dda597 100644 --- a/src/views/system/manual/index.vue +++ b/src/views/system/manual/index.vue @@ -1,74 +1,99 @@ <template> - <div class="app-container"> - <div> - <div> - <h2>鎵嬪姩鍚屾妫�楠屾鏌ョ粨鏋�</h2> + <div class="app-container"> + <el-radio-group v-model="tjStatus" @input="radioChange" style="margin-left: 20px"> + <el-radio-button label="0">鍚屾妫�楠岀粨鏋�</el-radio-button> + <el-radio-button label="1">鍚屾妫�鏌ョ粨鏋�</el-radio-button> + <el-radio-button label="2">娣诲姞閲囨牱鏁版嵁</el-radio-button> + </el-radio-group> + <div class="cent"> + <div v-if="tjStatus == 0"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> + <el-form-item label="浣撴鍙�" prop="tjh"> + <el-input v-model="queryParams.tjh" placeholder="璇疯緭鍏ヤ綋妫�鍙�" clearable /> + </el-form-item> + <el-form-item label="浣撴绫诲瀷" prop="tblx"> + <el-select v-model="queryParams.tblx" :popper-append-to-body="false" filterable placeholder="璇烽�夋嫨浣撴绫诲瀷" + clearable @change="idFn1"> + <el-option v-for="item in CompanyList" :key="item.tblx" :label="item.tblx" :value="item.tblxId" + disabled /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="handleQuery">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="handleManual">鎵嬪伐鍚屾</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="20"> + <el-col :span="11" :xs="24"> + <el-table :data="groupingList" border height="484" v-loading="loading" @row-click="handleChange"> + <el-table-column :prop="item" :label="item" v-for="(item, index) in table" :key="index" + :width="columnWidth(item)" align="center"> + </el-table-column> + </el-table> + <!-- <el-table border v-loading="loading" :data="groupingList" height="350" @selection-change="handleChange"> + <el-table-column type="selection" width="40px" align="center" /> + <el-table-column label="搴忓彿" align="center" prop="newID" width="50px" /> + <el-table-column label="鍒嗙粍鍚嶇О" align="center" prop="groupingName" /> + <el-table-column label="鎬у埆" align="center" prop="sex"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.sex" /> + </template> +</el-table-column> +<el-table-column label="濂楅鍚嶇О" align="center" prop="pacName" /> +<el-table-column label="缁撶畻鏂瑰紡" align="center" prop="payType"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.reservation_pay_type" :value="scope.row.payType" /> + </template> +</el-table-column> +<el-table-column label="鎶樻墸" align="center" prop="limits" /> +<el-table-column label="鍘熶环" align="center" prop="price" /> +<el-table-column label="搴旀敹" align="center" prop="ysPrice" /> +</el-table> --> + </el-col> + <el-col :span="11" :xs="24"> + <el-table :data="xxList" border height="484" v-loading="loading" @row-click="handleChange"> + <el-table-column :prop="item" :label="item" v-for="(item, index) in xxtable" :key="index" + :width="columnWidths(item)" align="center"> + </el-table-column> + </el-table> + </el-col> + </el-row> </div> - <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - label-width="68px" - > - <el-form-item label="浣撴鍙�" prop="tjh"> - <el-input - v-model="queryParams.tjh" - placeholder="璇疯緭鍏ヤ綋妫�鍙�" - clearable - /> - </el-form-item> - <el-form-item label="浣撴绫诲瀷" prop="tblx"> - <el-select - v-model="queryParams.tblx" - :popper-append-to-body="false" - filterable - placeholder="璇烽�夋嫨浣撴绫诲瀷" - clearable - @change="idFn1" - > - <el-option - v-for="item in CompanyList" - :key="item.tblx" - :label="item.tblx" - :value="item.tblxId" - /> - </el-select> - </el-form-item> - <el-form-item> - <el-button - type="primary" - size="mini" - @click="handleManual" - >鎵嬪伐鍚屾</el-button - > - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" - >閲嶇疆</el-button - > - </el-form-item> - </el-form> + + <div v-if="tjStatus == 1"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> + <el-form-item label="浣撴鍙�" prop="tjh"> + <el-input v-model="queryParams.tjh" placeholder="璇疯緭鍏ヤ綋妫�鍙�" clearable /> + </el-form-item> + <el-form-item label="浣撴绫诲瀷" prop="tblx"> + <el-select v-model="queryParams.tblx" :popper-append-to-body="false" filterable placeholder="璇烽�夋嫨浣撴绫诲瀷" + clearable @change="idFn1"> + <el-option v-for="item in CompanyList" :key="item.tblx" :label="item.tblx" :value="item.tblxId" + disabled /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" size="mini" @click="handleQuery">鏌ヨ</el-button> + <el-button type="primary" size="mini" @click="handleManual">鎵嬪伐鍚屾</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-table :data="groupingList" border height="484" v-loading="loading"> + <el-table-column :prop="item" :label="item" v-for="(item, index) in table" :key="index" + :width="columnWidth(item)" align="center"> + </el-table-column> + </el-table> </div> - <div> - <div> - <h2>鎵嬪姩娣诲姞閲囨牱鏁版嵁</h2> - </div> - <el-form - :model="forms" - ref="queryForm" - size="small" - :inline="true" - label-width="68px" - > - <el-form-item label="浣撴鍙�" prop="tjNum"> - <el-input - v-model="forms.tjNum" - placeholder="璇疯緭鍏ヤ綋妫�鍙�" - clearable - /> - </el-form-item> - <!-- <el-form-item label="浣撴绫诲瀷" prop="tblx"> + <div v-if="tjStatus == 2"> + <el-form :model="forms" ref="queryForm" size="small" :inline="true" label-width="68px"> + <el-form-item label="浣撴鍙�" prop="tjNum"> + <el-input v-model="forms.tjNum" placeholder="璇疯緭鍏ヤ綋妫�鍙�" clearable /> + </el-form-item> + <!-- <el-form-item label="浣撴绫诲瀷" prop="tblx"> <el-select v-model="forms.tblx" :popper-append-to-body="false" @@ -85,94 +110,191 @@ /> </el-select> </el-form-item> --> - <el-form-item> - <el-button - type="primary" - size="mini" - @click="handleManuals" - >鎵嬪伐鍚屾</el-button - > - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" - >閲嶇疆</el-button - > - </el-form-item> - </el-form> + <el-form-item> + <el-button type="primary" size="mini" @click="handleManuals">鎵嬪伐鍚屾</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> </div> - + </div> - </template> - - <script> -import { shoudongtbjyjcwsxmjg,addCaiYangDengJi} from "@/api/system/menu"; - export default { - - name: "Manual", - dicts: [ - "dict_user_national", - - ], - data() { - return{ - queryParams: { + </div> +</template> + +<script> +import { shoudongtbjyjcwsxmjg, addCaiYangDengJi, chaxunjyjcwsxmjg } from "@/api/system/menu"; +export default { + name: "Manual", + dicts: [ + "dict_user_national", + ], + data() { + return { + loading: false, + tjStatus: 0, + groupingList: [], + xxList: [], + table: [], + xxtable: [], + queryParams: { tjh: null, - tblx: null, + tblx: "", }, forms: { tjNum: null, tblx: null, }, - CompanyList:[ + CompanyList: [ { - tblx:"妫�楠�", - tblxId:"jy" - + tblx: "妫�楠�", + tblxId: "jy" }, { - tblx:"妫�鏌�", - tblxId:"jc" - + tblx: "妫�鏌�", + tblxId: "jc" }, { - tblx:"妫�楠屽拰妫�鏌�", - tblxId:"jyjc" - + tblx: "妫�楠屽拰妫�鏌�", + tblxId: "jyjc" } ] - } - }, - created() { + } + }, + created() { // this.handleManual(); + if(this.tjStatus == 0){ + this.queryParams.tblx = "jy" + } + }, + methods: { + radioChange(value) { + if (value == 0) { + this.queryParams.tblx = "jy" + } else if (value == 1) { + this.queryParams.tblx = "jc" + } + this.resetQuery() }, - methods: { - handleManual() { - shoudongtbjyjcwsxmjg(this.queryParams).then(res => { - this.$modal.msgSuccess("鍚屾鎴愬姛"); - }) - }, - handleManuals() { - addCaiYangDengJi(this.forms).then(res => { - this.$modal.msgSuccess("鎵嬪姩娣诲姞閲囨牱鏁版嵁鍚屾鎴愬姛"); - }) - }, - resetQuery() { - this.resetForm("queryForm"); -}, + handleManual() { + shoudongtbjyjcwsxmjg(this.queryParams).then(res => { + this.$modal.msgSuccess("鍚屾鎴愬姛"); + }) + }, + handleManuals() { + addCaiYangDengJi(this.forms).then(res => { + this.$modal.msgSuccess("鎵嬪姩娣诲姞閲囨牱鏁版嵁鍚屾鎴愬姛"); + }) + }, + resetQuery() { + this.queryParams.tjh = null + this.groupingList = []; + this.table = []; + this.xxList = []; + this.xxtable = []; + }, -idFn1(value) { + idFn1(value) { if (value) { - console.log(value) + console.log(value) } }, - + + + handleQuery() { + this.loading = true + chaxunjyjcwsxmjg(this.queryParams).then(res => { + this.groupingList = res.data + this.loading = false + var array = [] + for (var i = 0; i < this.groupingList.length; i++) { + array = Object.keys(this.groupingList[i]); + let reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/ + + array.forEach((element, index) => { + if (reg.test(element)) { + this.table.push(element) + } + }); + + this.table.sort(function (a, b) { + const numA = parseInt(a.match(/\d+/)[0], 10); + const numB = parseInt(b.match(/\d+/)[0], 10); + return numA - numB; + }); + return i + 1; + } + }) + }, + + columnWidth(item) { + const arr = this.groupingList.map((x) => x[item]); + if (arr.length > 0) { + arr.push(item); + return this.getMaxLength(arr) + 20 + "px"; + } + return 20 + "px"; + }, + + columnWidths(item) { + const arr = this.groupingList.map((x) => x[item]); + if (arr.length > 0) { + arr.push(item); + return this.getMaxLength(arr) + 100 + "px"; + } + return 100 + "px"; + }, + getMaxLength(arr) { + return arr.reduce((acc, item) => { + if (item) { + const calcLen = this.getTextWidth(item); + if (acc < calcLen) { + acc = calcLen; + } + } + return acc; + }, 0); + }, + getTextWidth(str) { + let width = 0; + const html = document.createElement("span"); + html.innerText = str; + html.className = "getTextWidth"; + document.querySelector("body").appendChild(html); + width = document.querySelector(".getTextWidth").offsetWidth; + document.querySelector(".getTextWidth").remove(); + return width; + }, + handleChange(rowData, columnName) { + this.xxList = rowData.jybgd + var array = [] + for (var i = 0; i < this.xxList.length; i++) { + array = Object.keys(this.xxList[i]); + let reg = /[\u4E00-\u9FA5\uF900-\uFA2D]/ + array.forEach((element, index) => { + if (reg.test(element)) { + this.xxtable.push(element) + } + }); + this.xxtable.sort(function (a, b) { + const numA = parseInt(a.match(/\d+/)[0], 10); + const numB = parseInt(b.match(/\d+/)[0], 10); + return numA - numB; + }); + return i + 1; + } } - }; - </script> - <style scoped> - .el-select-dropdown{ - position: absolute !important; - top: 30px !important; - left: 0px !important; - } - - </style> - \ No newline at end of file + + } +}; +</script> +<style scoped> +.cent { + margin-top: 20px; +} + +.el-select-dropdown { + position: absolute !important; + top: 30px !important; + left: 0px !important; +} +</style> \ No newline at end of file -- Gitblit v1.8.0