123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- <template>
- <div class="main_right_height">
- <TopDes :flag="false" topDesFont="设备管理"></TopDes>
- <div>
- <!-- <el-row>
- <el-col :span="1"> </el-col>
- <el-col :span="20" style="margin-top: 15px">
- <div style="display: flex" class="xl_input">
- <el-date-picker
- v-model="value1"
- type="daterange"
- range-separator="至"
- start-placeholder="开始日期"
- end-placeholder="结束日期"
- @change="timeChange"
- >
- </el-date-picker>
-
- <el-input
- placeholder="请输入用户姓名"
- v-model="nameSearch"
- @input="searchEle"
- prefix-icon="el-icon-search"
- >
- </el-input>
- </div>
- </el-col>
- </el-row> -->
- <el-row style="margin-top: 15px">
- <el-col :span="1"> </el-col>
- <el-col :span="22" style="text-align: left">
- <!-- <el-button
- size="small"
- @click="download(1, 1)"
- class="xl_down_button"
- :disabled="multipleSelection.length === 0 && disableFlag"
- >
- 批量下载(原始数据)</el-button
- >
- <el-button
- size="small"
- :disabled="tableData.length === 0 && disableFlag"
- @click="download(1, 2)"
- class="xl_down_button"
- >
- 全部下载(原始数据)</el-button
- > -->
- <!-- <el-button
- size="small"
- @click="download(2, 1)"
- class="xl_down_button"
- :disabled="multipleSelection.length === 0 && disableFlag"
- >
- 批量下载</el-button
- > -->
- <el-button
- size="small"
- class="xl_down_button"
- @click="addEquipment()"
- >
- 新增设备</el-button
- >
- </el-col>
- <el-col :span="1"> </el-col>
- </el-row>
- </div>
- <div style="margin-top: 16px">
- <el-row>
- <el-col :span="1"> </el-col>
- <el-col :span="22">
- <el-table
- :data="tableData"
- style="width: 100%"
- @selection-change="handleSelectionChange"
- :header-cell-style="{
- background: '#66B497',
- color: '#FFFFFF',
- 'letter-spacing': '4px',
- }"
- :row-class-name="tableRowClassName"
- >
- <!-- <el-table-column type="selection" align="center" width="55">
- </el-table-column> -->
- <el-table-column prop="ID" align="center" label="id">
- </el-table-column>
- <el-table-column
- prop="Type"
- :formatter="typeFor"
- align="center"
- label="类型"
- >
- </el-table-column>
- <el-table-column prop="Mac" align="center" label="mac">
- </el-table-column>
- <!-- <el-table-column
- prop="CreatedAt"
- align="center"
- label="创建时间"
- :formatter="dateForMa"
- ></el-table-column> -->
- <!-- <el-table-column prop="profession" label="职业"></el-table-column> -->
- <!-- <el-table-column label="查看测试记录" align="center">
- <template slot-scope="scope">
- <el-button
- class="xl_d_button"
- size="mini"
- @click="removeFun(scope.$index, scope.row)"
- >移除</el-button
- >
- </template>
- </el-table-column> -->
- <el-table-column label="操作" align="center">
- <template slot-scope="scope">
- <!-- <el-button
- class="xl_d_button"
- size="mini"
- @click="singleDownload(scope.$index, scope.row)"
- >扫描设备</el-button
- > -->
- <el-button
- class="xl_d_button"
- size="mini"
- @click="removeFun(scope.$index, scope.row)"
- >移除</el-button
- >
- </template>
- </el-table-column>
- </el-table>
- </el-col>
- <el-col :span="1"> </el-col>
- </el-row>
- </div>
- <!-- <p align="center" style="margin-bottom: 40px">
- <el-pagination
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :current-page="pageNum"
- :page-size="pageSize"
- :page-sizes="[10, , 50, 100, 200, 300, 400]"
- layout="total, sizes, prev, pager, next, jumper"
- :total="totolSize"
- >
- </el-pagination>
- </p> -->
- <el-dialog
- title="添加设备"
- :visible.sync="centerDialogVisible"
- width="30%"
- center
- >
- <span>
- <div class="equipment_class">
- <div>选择设备:</div>
- <el-select
- v-model="type"
- style="width: 150px"
- placeholder="请选择设备"
- >
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </div>
- <div class="equipment_class">
- <div>设备mac:</div>
- <el-input
- style="width: 150px"
- v-model="mac"
- placeholder="请输入mac"
- ></el-input>
- </div>
- </span>
- <span slot="footer" class="dialog-footer">
- <el-button @click="centerDialogVisible = false">取 消</el-button>
- <el-button type="primary" @click="addFun()">确 定</el-button>
- </span>
- </el-dialog>
- </div>
- </template>
- <script>
- import axios from "axios";
- import jsFileDownload from "js-file-download";
- export default {
- data() {
- return {
- centerDialogVisible: false,
- options: [
- {
- value: "1",
- label: "脑电",
- },
- {
- value: "2",
- label: "心电",
- },
- ],
- mac: "",
- type: "1",
- head_style: "#f5f7fa",
- value1: "",
- startDate: "",
- endDate: "",
- identifier: "",
- pageNum: 1,
- pageSize: 10,
- totolSize: 10,
- nameSearch: "",
- tableData: [],
- multipleSelection: [],
- flag: "",
- disableFlag: true,
- };
- },
- mounted() {
- this.flag = this.$route.query.flag;
- this.queryEle();
- },
- methods: {
- removeFun(val, row) {
- // debugger;
- let path = `v1/device/${row.Mac}/remove`;
- this.$http.delete(path, {}, (res) => {
- debugger;
- if (res.code == 200) {
- this.$message(res.message);
- this.queryEle();
- }
- });
- },
- typeFor(val) {
- if (val.Type == "1") {
- return "脑电";
- } else if (val.Type == "2") {
- return "心电";
- }
- },
- addFun() {
- let path = "v1/device/add";
- let data = {
- type: this.type,
- mac: this.mac,
- };
- this.$http.post(path, data, (res) => {
- debugger;
- if (res.code == 200) {
- this.centerDialogVisible = false;
- this.queryEle();
- }
- });
- },
- addEquipment() {
- this.centerDialogVisible = true;
- },
- dateForMa(row) {
- let date = new Date(row.createTime);
- let formattedDate = `${date.getFullYear()}-${(
- "0" +
- (date.getMonth() + 1)
- ).slice(-2)}-${("0" + date.getDate()).slice(-2)} ${(
- "0" + date.getHours()
- ).slice(-2)}:${("0" + date.getMinutes()).slice(-2)}:${(
- "0" + date.getSeconds()
- ).slice(-2)}`;
- return formattedDate;
- },
- //返回上一页
- goBack() {
- this.$router.go(-1);
- },
- //批量下载
- download(val, value) {
- //获取数组集合
- let idArr = [];
- for (let i = 0; i < this.multipleSelection.length; i++) {
- idArr.push(this.multipleSelection[i].id);
- }
- this.batchDownloadOriginal(val, value, idArr);
- },
- //全部下载(原始数据)
- batchDownloadOriginalAll() {
- let that = this;
- let arr = [];
- //原始数据批量下载路径
- let path = `chat/chatRecord/AllDownload?identifier=${that.nameSearch}&beginDate=${that.startDate}&endDate=${that.endDate}`;
- // let path = `record/download`;
- let baseUrl = sessionStorage.getItem("baseUrl");
- //window.location.href = `${baseUrl}${path}?ids=${arr}`;
- let a = arr.join();
- axios({
- method: "get",
- url: `${baseUrl}${path}`,
- timeout: 600000, // 请求超时时间,数据量多后台响应慢的情况可以调大点,没生效的话可能是vue.config.js里的配置影响了
- responseType: "blob", // 返回类型为数据流
- data: {
- // ids: arr,
- // flag: that.flag,
- // startDate: that.startDate,
- // endDate: that.endDate,
- // userName: that.nameSearch,
- }, // 需要传参的话,在这传
- }).then((res) => {
- if (res && res.data) {
- // console.log(decodeURIComponent(res.headers["filename"]))
- // 调用js-file-download下载文件,第一个参数是数据流,第二个参数是文件名,我这后端返回时把文件名放到响应的header的filename字段中,所以用这种方式取出
- jsFileDownload(res.data, decodeURIComponent(res.headers["filename"]));
- }
- });
- },
- //批量下载(原始数据)
- batchDownloadOriginal(val, value, idArr) {
- let that = this;
- let arr = [];
- //原始数据批量下载路径
- let path = `v1/record/download/source`;
- if (val === 2) {
- path = `chat/chatRecord/batchDownload`;
- }
- if ((val === 1 && value === 1) || (val === 2 && value === 1)) {
- arr = idArr;
- } else {
- arr = [];
- }
- // let path = `record/download`;
- let baseUrl = sessionStorage.getItem("baseUrl");
- //window.location.href = `${baseUrl}${path}?ids=${arr}`;
- let a = arr.join();
- axios({
- method: "get",
- url: `${baseUrl}${path}?ids=${a}`,
- timeout: 600000, // 请求超时时间,数据量多后台响应慢的情况可以调大点,没生效的话可能是vue.config.js里的配置影响了
- responseType: "blob", // 返回类型为数据流
- data: {
- ids: arr,
- flag: that.flag,
- startDate: that.startDate,
- endDate: that.endDate,
- userName: that.nameSearch,
- }, // 需要传参的话,在这传
- }).then((res) => {
- if (res && res.data) {
- // console.log(decodeURIComponent(res.headers["filename"]))
- // 调用js-file-download下载文件,第一个参数是数据流,第二个参数是文件名,我这后端返回时把文件名放到响应的header的filename字段中,所以用这种方式取出
- jsFileDownload(res.data, decodeURIComponent(res.headers["filename"]));
- }
- });
- },
- handleSelectionChange(val) {
- this.multipleSelection = val;
- },
- timeChange(val) {
- if (val === null) {
- this.startDate = "";
- this.endDate = "";
- } else {
- this.startDate = this.fomatterDate(this.value1[0]);
- this.endDate = this.fomatterDate(this.value1[1]);
- }
- this.pageNum = 1;
- this.queryEle();
- },
- //格式化时间格式
- fomatterDate(val) {
- var date = new Date(val);
- let year = date.getFullYear();
- let month = this.fomatterM(date.getMonth() + 1);
- let currentDay = this.fomatterM(date.getDate());
- return year + "-" + month + "-" + currentDay;
- },
- fomatterM(val) {
- if (val < 10) {
- return "0" + val;
- } else {
- return val + "";
- }
- },
- searchEle() {
- this.pageNum = 1;
- this.queryEle();
- },
- queryEle() {
- let that = this;
- that.$http.get(`/v1/device/list/1`, {}, (res) => {
- if (res.code == 200) {
- that.tableData = res.data;
- // that.totolSize = res.data.totalElements;
- } else {
- this.$message.error("访问服务器失败!");
- }
- });
- },
- handleSizeChange(val) {
- this.pageSize = val;
- this.queryEle();
- },
- handleCurrentChange(val) {
- this.pageNum = val;
- this.queryEle();
- // this.pageNum = val;
- // this.queryList();
- },
- singleDownload(index, row) {
- let baseUrl = sessionStorage.getItem("baseUrl");
- let path = `/chat/chatRecord/download?id=${row.id}`;
- // let arr = [row.id];
- axios({
- method: "get",
- url: `${baseUrl}${path}`,
- timeout: 600000, // 请求超时时间,数据量多后台响应慢的情况可以调大点,没生效的话可能是vue.config.js里的配置影响了
- responseType: "blob", // 返回类型为数据流
- data: {
- // ids: arr,
- }, // 需要传参的话,在这传
- }).then((res) => {
- if (res && res.data) {
- console.log(res.headers["filename"]);
- // console.log(decodeURIComponent(res.headers["filename"]))
- // 调用js-file-download下载文件,第一个参数是数据流,第二个参数是文件名,我这后端返回时把文件名放到响应的header的filename字段中,所以用这种方式取出
- jsFileDownload(res.data, decodeURIComponent(res.headers["filename"]));
- }
- });
- },
- getAnswerQuestionPaymentSuccess(id) {
- sessionStorage.setItem("back_page", "3");
- let _this = this;
- _this.$http.post(`v1/record/find/${id}`, {}, (res) => {
- if (res.data.code == 200 && res.data.data) {
- _this.resultJsonParams = res.data.data;
- // let sleep = JSON.parse(
- // _this.resultJsonParams.userRecordEntity.testResult
- // );
- // sleep = sleep[0].newTableContext.result[0].improvementSuggestions;
- // if (_this.scale_flag === "20210910163158") {
- // _this.askEnd(sleep);
- // this.inputFlag = 0;
- // }
- // if (_this.scale_flag === "20220805135201") {
- // _this.askEnd(sleep);
- // this.inputFlag = 0;
- // }
- // let testResult = JSON.parse(res.data.userRecordEntity.testResult)[0]
- // .version;
- let testResult = JSON.parse(
- res.data.data.userRecordEntity.testResult
- )[0].version;
- if (testResult == 2) {
- _this.$router.push({
- name: "scaleResultSCl",
- params: { tableData: _this.resultJsonParams },
- });
- } else {
- _this.$router.push({
- name: "scaleResult",
- params: { tableData: _this.resultJsonParams },
- });
- }
- }
- });
- // _this.$http.get(`/getRecordById?id=${id}`, {}, (res) => {
- // if (res.code == 200) {
- // _this.resultJsonParams = res.data;
- // let testResult = JSON.parse(res.data?.userRecordEntity?.testResult)[0]
- // .version;
- // if (testResult == 2) {
- // _this.$router.push({
- // name: "scaleResultSCl",
- // query: _this.resultJsonParams,
- // });
- // } else {
- // _this.$router.push({
- // name: "ScaleResult",
- // query: JSON.stringify(_this.resultJsonParams),
- // });
- // }
- // }
- // console.log("请求数据的list", res);
- // });
- },
- handleDelete(index, row) {},
- tableRowClassName({ rowIndex }) {
- if (rowIndex % 2 === 0) {
- return "warning-row";
- } else if (rowIndex % 2 === 1) {
- return "success-row";
- }
- return "success-row";
- },
- },
- };
- </script>
- <style scoped>
- .main_right_height {
- height: 100vh !important;
- display: block !important;
- overflow-y: auto !important;
- background: #ffffff;
- }
- .el-input-group {
- line-height: normal;
- display: inline-table;
- width: 200px !important;
- border-collapse: separate;
- border-spacing: 0;
- }
- .equipment_class {
- margin-top: 20px;
- display: flex;
- flex-direction: row;
- justify-items: center;
- align-items: center;
- }
- </style>
|