response/target/classes/public/beifen_ZhiNengTuiJian_XiangDaoShi.html
2025-06-27 10:04:22 +08:00

1267 lines
65 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0, user-scalable=0" />
<title></title>
<script src="./lib/jquery/dist/jquery.js"></script>
<script src="./lib/vuejs/vue.js"></script>
<script src="./lib/vuejs/axios.min.js"></script>
<script src="./lib/elementui/index2.15.9v.js"></script>
<!--<script src="./lib/linq.js/Content/Scripts/linq.min.js"></script>-->
<script src="Scripts/linq.js"></script>
<link href="./lib/elementui/index2.15.9v.css" rel="stylesheet" />
<link href="./lib/elementui/theme-green/index.css" rel="stylesheet" />
<link href="./lib/elementui/theme-green/color-green.css" rel="stylesheet" />
<!-- 依 赖 样 式 -->
<link rel="stylesheet" href="component/pear/css/pear.css" />
<!-- 加 载 样 式 -->
<!--<Link rel="stylesheet" href="admin/css/loader.css" />-->
<!-- 布 局 样 式 -->
<!--<Link rel="stylesheet" href="admin/css/admin.css" />-->
<!-- 依 赖 脚 本 -->
<script src="component/layui/layui.js"></script>
<script src="component/pear/pear.js"></script>
<!-- 新增加的layui的框架 -->
<!--<Link href="Scripts/layui/css/layui.css" rel="stylesheet" />
<script src="Scripts/layui/layui.js"></script>-->
</head>
<body>
<div id="app">
<el-container>
<!--<el-header>替换操作集合</el-header>-->
<el-main v-loading="loading" v-loading.fullscreen.lock="false" :element-loading-text="showLoadingTip"
element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.1)">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="第一步-历史字典构建" name="first">
<div class="test">
<div id="data" style="text-align: center; margin-right: 55px; margin-bottom: 20px;">
<h2 id="title1">历史字典构建</h2>
<div style="background-color:bisque;padding:20px">
<h5>历史字典构建主要是把18,19,20年的分类数据进行归纳,形成分类基础库,作为整个比对系统的基本版本;</h5>
<h5>点击"历史字典查询",如果没有查询到相关数据,可以点击"数据重构"按钮进行数据生成,如果查询有基础库,无需点击"数据重构"按钮</h5>
<h5>双击表格框即可进行数据修改,修改完,点击其他地方即提示是否进行数据修改,如果确认则正式修改,否则取消修改操作</h5>
</div>
<br />
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">样品名称</label>
<div class="layui-input-inline">
<input type="text" id="ypmc" placeholder="请输入样品名称" class="layui-input" style="width:200px" v-model="searchJson.ypmc">
</div>
<label class="layui-form-label">食品大类</label>
<div class="layui-input-inline">
<input type="text" id="sp_dl" placeholder="请输入食品大类" class="layui-input" style="width:200px" v-model="searchJson.sp_dl">
</div>
</div>
</div>
<div class="layui-form-item">
</div>
<div class="layui-form-item layui-form-text">
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" @click="SearchClassify()">历史字典数据查询</button>
<button class="layui-btn" @click="GenerateClassify()">数据重构(慎点)</button>
<!--<button class="layui-btn" @click="exportcsv()">导出</button>-->
<span>{{showtip}}</span>
</div>
</div>
</div>
<br />
<div style="padding:30px" class="layui-card">
<table class="layui-hide" id="ClassifyTable" lay-filter="ClassifyTable"></table>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="第二步-年度数据分类归档" name="second">
<div class="test">
<div id="data" style="text-align: center; margin-right: 55px; margin-bottom: 20px;">
<h2 id="title1">年度数据分类归档</h2>
<div style="background-color:thistle;padding:20px">
<h5>年度数据分类归档,是把当年需要整理的数据分类先统一获取出来进行操作,防止污染现有数据库数据,待当前的统一分类已经操作完成再更新现有大数据库</h5>
<h5>年度数据分类的数据先把"样品名称","食品大类"组合在一起去重之后,保存在当前临时数据库中,生成方式为:选择对应的"年份",点击"数据归档重构",</h5>
<h5>生成的数据双击表格框即可进行数据修改,修改完,点击其他地方即提示是否进行数据修改,如果确认则正式修改,否则取消修改操作</h5>
</div>
<br />
<div class="layui-form">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" style="width:150px">查询条件:样品名称</label>
<div class="layui-input-inline">
<input type="text" id="ypmc" placeholder="请输入样品名称" class="layui-input" style="width:200px" v-model="searchYearTempJson.ypmc">
</div>
<label class="layui-form-label">食品大类</label>
<div class="layui-input-inline">
<input type="text" id="sp_dl" placeholder="请输入食品大类" class="layui-input" style="width:200px" v-model="searchYearTempJson.sp_dl">
</div>
<label class="layui-form-label" style="width:150px">年份(归档使用)</label>
<div class="layui-input-inline">
<select name="curYear" lay-filter="curYear" id="curYear" v-model="curYear" lay-search>
<option></option>
<option v-for="item in [2021,2022]">{{item}}</option>
</select>
</div>
</div>
</div>
<div class="layui-form-item">
</div>
<div class="layui-form-item layui-form-text">
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn" @click="SearchYearTemp()">年度数据归档查询</button>
<button class="layui-btn" @click="GenerateYearTemp()">数据归档重构(慎点)</button>
<!--<button class="layui-btn" @click="exportcsv()">导出</button>-->
<span>{{showtip}}</span>
</div>
</div>
</div>
<br />
<div style="padding:30px" class="layui-card">
<table class="layui-hide" id="YearTempTable" lay-filter="YearTempTable"></table>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane label="第三步-智能分析推荐" name="third">
<div style="background-color:cornsilk;padding:20px">
<h5>使用本模块,首先点击"获取数据"获取年度数据分类归档,然后点击"开始分析",勾选"分析时候动态修改数据"则会自动按照查询情况将临时表的年度数据进行更改</h5>
<h5>实时分析的数据将会分为两类:如历史库有对应则使用历史库对应的数据,否则通过智能推荐服务放到推论库里面,方便用户按照评分等级修改,数据位于界面下方的两个表格中,方便用户查看</h5>
<h5>可以在操作过程中按"暂停分析"按钮,并且可以调整当前数据位置,再次启动"开始分析"即可按照用户指定位置开始操作,同时可以缩小浏览器比例方便界面数据查看</h5>
</div>
<br />
<el-container>
<el-header>
<el-row>
<el-button type="primary" :loading="btnLoading[3]" round @click="GetYearDataReady">获取数据</el-button>
<el-button type="primary" :loading="btnLoading[0]" round @click="StartAnalyze">开始分析</el-button>
<el-button type="primary" :loading="btnLoading[1]" round @click="PauseAnalyze">暂停分析</el-button>
<el-button type="primary" :loading="btnLoading[2]" round @click="ResetAnalyze">重置操作</el-button>
<el-checkbox v-model="chkAutoUpdate">分析时候动态修改数据</el-checkbox>
<span style="padding-left:12px">当前数据位置</span>
<el-input-number v-model="curAnalyzePos" @change="handleAnalyzeChange" :min="0" :max="YearTempDataReady.length" label="当前位置调整"></el-input-number>
<span style="padding-left:22px">/总数:{{YearTempDataReady.length}}</span>
</el-row>
</el-header>
</el-container>
<el-main>
<el-row>
<el-input type="textarea"
:rows="10"
placeholder="替换操作状态提示"
v-model="textarea">
</el-input>
</el-row>
</el-main>
<el-footer>
<el-row :gutter="20">
<el-col :span="12">
<el-tag>历史库对应</el-tag>
<el-table :data="EnsureTableData.slice((Classify_currentPage-1)*Classify_pagesize,Classify_currentPage*Classify_pagesize)"
style="width: 100%" border>
<el-table-column prop="YPMC"
label="样品名称"
width="80">
</el-table-column>
<el-table-column prop="SP_DL"
label="食品大类"
width="80">
</el-table-column>
<el-table-column prop="SP_YL"
label="食品亚类">
</el-table-column>
<el-table-column prop="SP_XL"
label="食品小类">
</el-table-column>
<el-table-column prop="SP_PZ"
label="食品品种">
</el-table-column>
</el-table>
<el-pagination small
@size-change="handleSizeChange_Classify"
@current-change="handleCurrentChange_Classify"
:current-page="Classify_currentPage"
:page-sizes="[5, 10, 20, 40]"
:page-size="Classify_pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="EnsureTableData.length">
//这是显示总共有多少数据,
</el-pagination>
</el-col>
<el-col :span="12">
<el-tag>推论库对应</el-tag>
<el-table :data="UnsureTableData.slice((YearTemp_currentPage-1)*YearTemp_pagesize,YearTemp_currentPage*YearTemp_pagesize)"
style="width: 100%" border>
<el-table-column prop="YPMC"
label="样品名称"
width="80">
</el-table-column>
<el-table-column prop="SP_DL"
label="食品大类"
width="80">
</el-table-column>
<el-table-column prop="SP_YL"
label="食品亚类">
</el-table-column>
<el-table-column prop="SP_XL"
label="食品小类">
</el-table-column>
<el-table-column prop="SP_PZ"
label="食品品种">
</el-table-column>
<!--<el-table-column prop="AnalyzeJson"
label="推断信息">
</el-table-column>-->
<el-table-column fixed="right"
label="操作"
width="100">
<template slot-scope="scope">
<el-button @click="RealTime_handleEditClick(scope.row)" type="text" size="small">查看</el-button>
<!--<el-button type="text" size="small">编辑</el-button>-->
</template>
</el-table-column>
</el-table>
<el-pagination small
@size-change="handleSizeChange_YearTemp"
@current-change="handleCurrentChange_YearTemp"
:current-page="YearTemp_currentPage"
:page-sizes="[5, 10, 20, 40]"
:page-size="YearTemp_pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="UnsureTableData.length">
//这是显示总共有多少数据,
</el-pagination>
<el-dialog title="实时推断查看" :visible.sync="RealTime_dialogTableVisible" width="70%">
<el-table :data="RealTime_gridData" border>
<el-table-column property="keyword" label="推断关键词" width="150"></el-table-column>
<el-table-column property="YPMC" label="样品名称" width="150"></el-table-column>
<el-table-column property="SP_DL" label="食品大类" width="150"></el-table-column>
<el-table-column property="SP_YL" label="食品亚类" width="150"></el-table-column>
<el-table-column property="SP_XL" label="食品细类"></el-table-column>
<el-table-column property="SP_PZ" label="食品品种" width="150"></el-table-column>
<el-table-column property="score" label="推荐系数"></el-table-column>
<!--<el-table-column fixed="right"
label="采纳"
width="100">
<template slot-scope="scope">
<el-button @click="RealTime_handleAcceptClick(scope.row)" type="text" size="small">选择</el-button>-->
<!--<el-button type="text" size="small">编辑</el-button>-->
<!--</template>
</el-table-column>-->
</el-table>
</el-dialog>
</el-col>
</el-row>
</el-footer>
</el-tab-pane>
<el-tab-pane label="第四步-分析结果查看及应用" name="fourth">
<el-container>
<el-header style="background-color:coral; height:100px; padding:20px">
<div>点击"查询条件",进行相关条件的录入,点击"获取分析结果"即可查看智能分析推荐中的相关操作结果;</div>
<div>识别方式列的0-代表是从历史数据库中匹配,1-代表是从智能语义化引擎中匹配,选择"推断库"-"未修改"即可把所有需要用户确认的分类查询出来,进行调整,通过点击"查看推断"可选择更优匹配</div>
<div>点击数据库应用,选择相应的年份,然后进行全面应用,即可将现有整理完整的字典全部梳理数据库的分类内容,同样需要等待</div>
</el-header>
<el-main>
<el-row>
<el-collapse>
<el-collapse-item>
<template slot="title">
查询条件
<i class="header-icon el-icon-info"></i>
</template>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="识别类型:">
<el-select v-model="form.AnalyzeStatus" placeholder="请选择识别类型">
<el-option v-for="item in [{value:'',label:'全部'},{value:'0',label:'字典库'},{value:'1',label:'推断库'},]"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-select v-model="form.HaveEdit" placeholder="请选择修改情况">
<el-option v-for="item in [{value:'',label:'全部'},{value:'0',label:'未修改'},{value:'1',label:'已修改'},]"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="样品名称">
<el-input v-model="form.YPMC"></el-input>
</el-form-item>
<el-form-item label="大类">
<el-input v-model="form.SP_DL"></el-input>
</el-form-item>
<el-form-item label="亚类">
<el-input v-model="form.SP_YL"></el-input>
</el-form-item>
<el-form-item label="细类">
<el-input v-model="form.SP_XL"></el-input>
</el-form-item>
<el-form-item label="品种">
<el-input v-model="form.SP_PZ"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="btnLoading[3]" round @click="GetAnalyzeResult" size="mini">获取分析结果</el-button>
</el-form-item>
</el-form>
</el-collapse-item>
<el-collapse-item>
<template slot="title">
数据库应用
<i class="header-icon el-icon-info"></i>
</template>
<!--<div>待开发</div>-->
<el-form ref="form" :model="formResultApply" label-width="80px">
<el-form-item label="任务年份:">
<el-select v-model="formResultApply.ApplyYear" placeholder="请选择识别类型">
<el-option v-for="item in [{value:'2021',label:'2021'},{value:'2022',label:'2022'}]"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" :loading="btnLoading[3]" round @click="ResultApplyByYear" size="mini">按照年份全面应用</el-button>
<el-button type="primary" :loading="btnLoading[1]" round @click="ResultApplyPauseAnalyze" size="mini">暂停分析</el-button>
<el-button type="primary" :loading="btnLoading[2]" round @click="ResultApplyResetAnalyze" size="mini">重置操作</el-button>
<span style="padding-left:12px">当前数据位置</span>
<el-input-number v-model="curResultApplyPos" @change="handleResultApplyChange" :min="0" :max="ResultTableData.length" label="当前位置调整"></el-input-number>
<span style="padding-left:22px">/总数:{{ResultTableData.length}}</span>
</el-form-item>
<el-input type="textarea"
:rows="10"
placeholder="全面应用状况"
v-model="txtResultApply">
</el-input>
</el-form>
<div><!--页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。--></div>
</el-collapse-item>
</el-collapse>
</el-row>
<el-table :data="ResultTableData.slice((Result_currentPage-1)*Result_pagesize,Result_currentPage*Result_pagesize)"
style="width: 100%" border>
<el-table-column prop="YPMC"
label="样品名称"
width="80">
</el-table-column>
<el-table-column prop="SP_DL"
label="食品大类"
width="80">
</el-table-column>
<el-table-column prop="SP_YL"
label="食品亚类">
</el-table-column>
<el-table-column prop="SP_XL"
label="食品细类">
</el-table-column>
<el-table-column prop="SP_PZ"
label="食品品种">
</el-table-column>
<el-table-column prop="AnalyzeTime"
label="识别时间">
</el-table-column>
<el-table-column prop="AnalyzeStatus"
width="50"
label="识别方式">
</el-table-column>
<el-table-column prop="EditTime"
label="修改时间">
</el-table-column>
<!--<el-table-column prop="AnalyzeJson"
label="识别结果">
</el-table-column>-->
<el-table-column fixed="right"
label="操作"
width="100">
<template slot-scope="scope">
<el-button @click="handleEditResultClick(scope.row,scope.$index)" type="text" size="small">查看推断</el-button>
<el-button @click="handleSingleResultUpdateClick(scope.row,scope.$index)" type="text" size="small">应用主库</el-button>
<!--<el-button type="text" size="small">编辑</el-button>-->
</template>
</el-table-column>
</el-table>
<el-pagination small
@size-change="handleSizeChange_Result"
@current-change="handleCurrentChange_Result"
:current-page="Result_currentPage"
:page-sizes="[5, 10, 20, 40]"
:page-size="Result_pagesize"
layout="total, sizes, prev, pager, next, jumper"
:total="ResultTableData.length">
//这是显示总共有多少数据,
</el-pagination>
</el-main>
<el-footer>
</el-footer>
</el-container>
<el-dialog title="推断选择" :visible.sync="dialogTableVisible" width="70%" @close="handleResultDialogClose">
<el-descriptions class="margin-top" title="当前数据" :column="3" size="mini" border>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-user"></i>
样品名称
</template>
{{curResultSelectData.YPMC}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
食品大类
</template>
{{curResultSelectData.SP_DL}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
已选_食品亚类
</template>
{{curResultSelectData.SP_YL}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
已选_食品细类
</template>
{{curResultSelectData.SP_XL}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
<i class="el-icon-mobile-phone"></i>
已选_食品品种
</template>
{{curResultSelectData.SP_PZ}}
</el-descriptions-item>
</el-descriptions>
<el-divider></el-divider>
<div class="el-descriptions__title">预测推荐:</div>
<el-table :data="gridData" border>
<el-table-column property="keyword" label="推断关键词" width="150"></el-table-column>
<el-table-column property="YPMC" label="样品名称" width="150"></el-table-column>
<el-table-column property="SP_DL" label="食品大类" width="150"></el-table-column>
<el-table-column property="SP_YL" label="食品亚类" width="150"></el-table-column>
<el-table-column property="SP_XL" label="食品细类"></el-table-column>
<el-table-column property="SP_PZ" label="食品品种" width="150"></el-table-column>
<el-table-column property="score" label="推荐系数"></el-table-column>
<el-table-column fixed="right"
label="采纳"
width="100">
<template slot-scope="scope">
<el-button @click="handleAcceptClick(scope.row,scope.$index)" type="text" size="small">选择</el-button>
<!--<el-button type="text" size="small">编辑</el-button>-->
</template>
</el-table-column>
</el-table>
</el-dialog>
</el-tab-pane>
</el-tabs>
</el-main>
<el-footer>
</el-footer>
</el-container>
</div>
</body>
</html>
<script>
///////////////////////////////////////////////////
//该部分是Vue应用封装
var app = new Vue({
el: '#app',
data() {
return {
//向导页目前的第几页
activeName: 'first',
//需要处理的年份
curYear:'',
//提示内容显示
textarea: "",
searchJson: { 'ypmc': '', 'sp_dl': '' },
searchYearTempJson: { 'ypmc': '', 'sp_dl': '' },
//等待提示
loading: false,
showtip:'',
btnLoading: [false, false, false, false, false, false, false, false, false, false, false, false],
//正在进行实时更新替换, 大约需要30秒钟至几分钟不等, 请等待...
showLoadingTip: '系统正在操作中,请耐心的等待...',
Classify_currentPage: 1, //初始页_历史数据库
Classify_pagesize: 5, //每页的数据_历史数据库
YearTemp_currentPage: 1, //初始页_年临时数据库
YearTemp_pagesize: 5, //每页的数据_年临时数据库
Result_currentPage: 1, //初始页_结果数据库
Result_pagesize: 5, //每页的数据_结果数据库
//是否在分析的时候就自动更新大类,小类的数据
chkAutoUpdate:true,
//当前运行分析的位置
curAnalyzePos: 0,
//是否是暂停状态
isPause:false,
//当前需要分析的数据集
YearTempDataReady: [],
//确定查找到的表格数据
EnsureTableData: [],
//不确定查找的表格数据
UnsureTableData: [],
//查看运行结果数据集
ResultTableData: [],
//结论部分的时候的弹出框
dialogTableVisible: false,
//实时分析的时候的弹出框
RealTime_dialogTableVisible:false,
//实时的??
gridData1:[],
//结论部分查看数据分析表格
gridData: [],
//实时分析的时候查看分析表格
RealTime_gridData:[],
//搜索部分的设置值
result_year: '2021',
//当前的结果的选择的中间值传递方式
curResultSelectData: {},
//结果表格的查询内容相关的字段
form: {
AnalyzeStatus: "",
HaveEdit: "",
SP_DL: "",
SP_PZ: "",
SP_XL: "",
SP_YL: "",
YPMC: ""
},
//全部结果更新的查询数据条件
formResultApply: {
ApplyYearl:''
},
//全局替换结果实时情况展现
txtResultApply: '',
//全部结果更滑操作
isResultPause: false,
//开始循环的时候的位置
curResultApplyPos:0,
}
},
mounted() {
var _this = this; //this指向vue
Vue.prototype.$loading = this.loading
_this.loading = false;
},
methods: {
//向导页设置
handleClick(tab, event) {
console.log(tab, event);
},
handleAnalyzeChange(value) {
console.log(value);
},
handleResultApplyChange(value) {
console.log(value);
},
//显示推荐结果
RealTime_handleEditClick(value) {
if (value.AnalyzeJson != "") {
this.RealTime_gridData = JSON.parse(value.AnalyzeJson);
} else {
this.RealTime_gridData = [];
}
//显示对话框
this.RealTime_dialogTableVisible = true
//console.log("handleEditClick测试面", value)
//layer.open({
// type: 2,
// title: '选择推荐数据',
// shadeClose: true,
// shade: false,
// maxmin: true, //开启最大化最小化按钮
// area: ['893px', '600px'],
// content: 'http://localhost:56395/zhinengtuijian.html'
//});
},
//第四步的修改推荐结果弹出框操作
handleEditResultClick(value) {
//console.log('kankankankan333', value.AnalyzeJson);
if (value.AnalyzeJson != "") {
this.curResultSelectData = value;
this.gridData = JSON.parse(value.AnalyzeJson);
} else {
this.curResultSelectData = {};
this.gridData = [];
}
//显示对话框
this.dialogTableVisible = true
},
//第四步的关闭弹出框
handleResultDialogClose() {
console.log('yun运行第四步的操作')
this.GetAnalyzeResult()
},
//第四步确认采纳方法按钮确认操作
handleAcceptClick(value,index) {
//进行服务端的推荐修订
//发送推荐内容到服务器完成修改;
console.log('value',value)
//本地同时进行调整
var _this = this; //this指向vue
layer.confirm('您确定采纳该推断?', {
btn: ['确定', '取消'] //按钮
},
function (index) {
_this.loading = true;
//定义出来需要更新的类内容,先把当前的值拿出来
var curUpdateData = _this.curResultSelectData
//更新其中几个需更换的值
curUpdateData.SP_YL= value.SP_YL;
curUpdateData.SP_XL = value.SP_XL;
curUpdateData.SP_PZ = value.SP_PZ;
//进行服务端访问
axios({
url: '/Classify/UpdateYearTempAnalyze',
params: curUpdateData
}).then((res) => {
console.log('res',res);
//本地同时进行调整
//如果更新成功
if (res.data.count > 0) {
//更新弹出界面的数值
_this.$set(_this.curResultSelectData, 'SP_YL', res.data.data.SP_YL);
_this.$set(_this.curResultSelectData, 'SP_XL', res.data.data.SP_XL);
_this.$set(_this.curResultSelectData, 'SP_PZ', res.data.data.SP_PZ);
//更新主表格的数据,发现无需写代码,即可进行更新,同时因为不在同一个页面,更改方式为关闭窗口就刷新数据
//_this.$set(_this.ResultTableData,index, _this.curResultSelectData);
_this.showTip("更换成功!")
} else {
//更新没有成功
_this.showTip("更换没有成功,请检查!")
}
layer.close(index);
_this.loading = false;
});
},
//如果点击取消,保留方法
function() {
});
},
//初始页currentPage、初始每页数据数pagesize和数据data
handleSizeChange_Classify: function (size) {
this.Classify_pagesize = size
console.log(this.Classify_pagesize) //每页下拉显示数据
},
handleCurrentChange_Classify: function (currentPage) {
this.Classify_currentPage = currentPage
console.log(this.Classify_currentPage) //点击第几页
},
//初始页currentPage、初始每页数据数pagesize和数据data
handleSizeChange_YearTemp: function (size) {
this.YearTemp_pagesize = size
console.log(this.YearTemp_pagesize) //每页下拉显示数据
},
handleCurrentChange_YearTemp: function (currentPage) {
this.YearTemp_currentPage = currentPage
console.log(this.YearTemp_currentPage) //点击第几页
},
//初始页currentPage、初始每页数据数pagesize和数据data
handleSizeChange_Result: function (size) {
this.Result_pagesize = size
console.log(this.Result_pagesize) //每页下拉显示数据
},
handleCurrentChange_Result: function (currentPage) {
this.Result_currentPage = currentPage
console.log(this.Result_currentPage) //点击第几页
},
//显示进度内容
addNote(str) {
var aData = new Date().toLocaleString();;
this.textarea = aData + " " + str + '\r\n' + this.textarea;
},
//显示进度内容
addResultNote(str) {
var aData = new Date().toLocaleString();;
this.txtResultApply = aData + " " + str + '\r\n' + this.txtResultApply;
},
//显示提示信息
showTip(strmessage) {
this.$message({
message: strmessage,
type: 'warning'
});
},
//第一步的生成基础库
GenerateClassify() {
var _this = this; //this指向vue
layer.confirm('您确定重新构建内容?', {
btn: ['确定', '取消'] //按钮
}, function (index) {
_this.loading = true;
_this.showTip('数据正在重新构建,请等待...');
(async () => {
await axios({
url:'/Classify/GenerateClassifyDict'
}).then((res) => {
console.log(res);
//_this.addNote("此次" + desc + "替换操作完成," + res.data.data + "谢谢使用!");
//_this.search();
_this.loading = false;
//_this.btnLoading[btnid] = false;
});
})();
}, function () {
});
},
//第二步的生成数据库
GenerateYearTemp() {
var _this = this; //this指向vue
layer.confirm('您确定重新构建内容?', {
btn: ['确定', '取消'] //按钮
}, function () {
_this.loading = true;
_this.showTip('年份数据正在重新构建,请等待...');
(async () => {
await axios({
url: '/Classify/GenerateYearTempDict?RWNF=' + $('#curYear').val()
}).then((res) => {
console.log(res.data.data);
var curMsg = res.data.data;
layer.msg("加入" + curMsg + "条数据");
//_this.addNote("此次" + desc + "替换操作完成," + res.data.data + "谢谢使用!");
_this.loading = false;
//_this.btnLoading[btnid] = false;
});
})();
}, function () {
});
},
//第一步的查询生成的基础分析数据库
SearchClassify() {
console.log('this.searchJson', this.searchJson.ypmc)
_this = this;
layui.use(['table', 'util'], function () {
var table = layui.table;
var util = layui.util;
table.render({
elem: '#ClassifyTable'
, url:'/shp' + '/Classify/getClassifyDict'
, where: _this.searchJson
, parseData: function (res) { //res 即为原始返回的数据
return {
"code": res.code,
"data": res.data, //解析数据列表
"count": res.count
};
}
//, width: 800
, height: 500
,editTrigger: 'dblclick' // 触发编辑的事件类型(默认 click )。
, cols: [[
{ field: 'ID', width: 100, align: 'center', title: '编号', sort: true }
, { field: 'YPMC', width: '18%', align: 'center', title: '样品名称', sort: true, edit: 'text' }
, { field: 'SP_DL', width: '18%', align: 'center', title: '食品大类', sort: true, edit: 'text' }
, { field: 'SP_YL', width: '18%', align: 'center', title: '食品亚类', sort: true, edit: 'text' }
, { field: 'SP_PZ', width: '18%', align: 'center', title: '食品品种', sort: true, edit: 'text' }
, { field: 'SP_XL', width: '18%', align: 'center', title: '食品细类', sort: true, edit: 'text' }
]]
, page: true
, done: function (res, curr, count) {
//$("table").width("100 %")
}
});
// 单元格编辑后的事件
table.on('edit(ClassifyTable)', function (obj) {
var value = obj.value //得到修改后的值
, data = obj.data //得到所在行所有键值
, field = obj.field; //得到字段
console.log('value',value,'data',data,'field',field)
layer.confirm('您确定修改[' + obj.field + "||" + value + ']内容?', {
btn: ['确定', '取消'] //按钮
}, function () {
axios({ url: '/Classify/UpdateSingleGrid_ClassifyDict', params: {ID:data.ID,Field:field,Value:value} }).then((res) => {
if (res.data.count>0) {
layer.msg('修改完成', { icon: 1 });
} else {
layer.msg('修改没有成功,请检查!', { icon: 1 });
}
})
}, function () {
//layer.msg('也可以这样', {
// time: 20000, //20s后自动关闭
// btn: ['明白了', '知道了']
//});
});
//layer.msg('[ID: ' + data.ID + '] ' + field + ' 字段更改值为:' + util.escape(value));
});
});
},
//查询生成的年度临时库
SearchYearTemp() {
console.log('curYear', $('#curYear').val())
//console.log('this.searchJson', this.searchJson.ypmc)
_this = this;
layui.use('table', function () {
var table = layui.table;
table.render({
elem: '#YearTempTable'
, url: '/Classify/GetYearTempDict'
, where: { 'RWNF': $('#curYear').val() }
, parseData: function (res) { //res 即为原始返回的数据
return {
"code": res.code,
"data": res.data, //解析数据列表
"count": res.count
};
}
, height: 500
, cols: [[
{ field: 'ID', width: 100, align: 'center', title: '编号', sort: true }
, { field: 'YPMC', width: '33%', align: 'center', title: '样品名称', sort: true, edit: 'text' }
, { field: 'SP_DL', width: '33%', align: 'center', title: '食品大类', sort: true, edit: 'text' }
]]
, page: true
, done: function (res, curr, count) {
//$("table").width("100 %")
}
});
// 单元格编辑后的事件
table.on('edit(YearTempTable)', function (obj) {
var value = obj.value //得到修改后的值
, data = obj.data //得到所在行所有键值
, field = obj.field; //得到字段
console.log('value', value, 'data', data, 'field', field)
layer.confirm('您确定修改[' + obj.field + "||" + value + ']内容?', {
btn: ['确定', '取消'] //按钮
}, function () {
axios({ url: '/Classify/UpdateSingleGrid_YearTempDict', params: { ID: data.ID, Field: field, Value: value } }).then((res) => {
if (res.data.count > 0) {
layer.msg('修改完成', { icon: 1 });
} else {
layer.msg('修改没有成功,请检查!', { icon: 1 });
}
})
}, function () {
});
});
});
},
//获取准备分析的数据
GetYearDataReady() {
var _this = this; //this指向vue
axios({
url: "./Classify/GetYearTempDictReady"
}).then((res) => {
this.YearTempDataReady = res.data.data;
console.log(res.data.data)
_this.addNote("获取本年度的待处理数据完成,共有" + res.data.count + '种类型数据需要处理');
console.log(res);
});
},
//开始数据识别操作
StartAnalyze() {
//首先判断目前是否已经加载需要的所有的准备数据
var _this = this; //this指向vue
if (_this.YearTempDataReady.length <= 0) {
_this.addNote("请先点击获取数据操作");
return;
}
_this.isPause = false;
(async () => {
for (var i = _this.curAnalyzePos; i < _this.YearTempDataReady.length; i++) {
//如果发现按了暂停
if (_this.isPause == true) {
return;
}
_this.curAnalyzePos = i;
await axios({
url: "./Classify/GetClassifyCompare?YPMC=" + _this.YearTempDataReady[i].YPMC + "&SP_DL=" + _this.YearTempDataReady[i].SP_DL + "&autoupdate=" + (_this.chkAutoUpdate?1:0)
}).then((res) => {
if (res.data.count > 0) {
//历史库修改
_this.EnsureTableData.push(res.data.data)
} else {
axios({
url: "./Classify/GetZhiNengFenLei?strQuery=" + _this.YearTempDataReady[i].YPMC + "&YPMC=" + _this.YearTempDataReady[i].YPMC + "&SP_DL=" + _this.YearTempDataReady[i].SP_DL + "&AutoUpdate=" + (_this.chkAutoUpdate?1:0)
}).then((res_es) => {
console.log('res_es.data',res_es.data)
//推荐库修改
_this.UnsureTableData.push({
'YPMC': res_es.data.data.YPMC,
'SP_DL': res_es.data.data.SP_DL,
'SP_YL': res_es.data.data.SP_YL,
'SP_XL': res_es.data.data.SP_XL,
'SP_PZ': res_es.data.data.SP_PZ,
'AnalyzeJson': res_es.data.data.AnalyzeJson
})
});
}
_this.addNote("第" + (i + 1).toString() + "/" + _this.YearTempDataReady.length + "个完成," + ((res.data.count>0)?"历史库对应":"推荐系统提供"));
console.log(res);
if (i == (_this.YearTempDataReady.length - 1)) {
_this.addNote("此次操作全部完成,谢谢使用!");
_this.loading = false;
}
});
}
})();
},
PauseAnalyze() {
this.isPause = true;
this.showTip('已经暂停分析');
},
ResetAnalyze() {
this.isPause = true;
this.curAnalyzePos = 0;
this.textarea = "";
this.YearTempDataReady = [];
this.EnsureTableData = [];
this.UnsureTableData = [];
this.showTip('已经重置操作');
},
//第四步获取推断的结论设置,加了一个刷新是否回到第一页的isBackPage的变量
GetAnalyzeResult(isBackPage) {
//console.log('form222', this.form);
var _this = this; //this指向vue
_this.loading = true;
axios({
url: "./Classify/GetResultDict", params:_this.form
}).then((res) => {
//console.log('res_es.data', res.data.data)
//全部结果
_this.ResultTableData = res.data.data;
if (isBackPage) {
_this.Result_currentPage = 1;
}
_this.loading = false;
//console.log('ResultTableData', this.ResultTableData)
});
},
//第四步实现按照年份应用
ResultApplyByYear() {
//console.log('formResultApply', this.formResultApply.ApplyYear)
_this = this;
var curResultYear = this.formResultApply.ApplyYear;
layer.confirm('您确定进行该年份采纳推断操作?', {
btn: ['确定', '取消'] //按钮
},
function (index) {
layer.close(index);
console.log('_this',_this)
_this.isResultPause = false;
//开始循环的部分
_this.addResultNote("开始替换操作,替换任务年份为" + curResultYear + "年的数据,共有" + _this.ResultTableData.length + "种分类需要刷新");
//全局异步大循环
(async () => {
for (var i = _this.curResultApplyPos; i <= _this.ResultTableData.length; i++) {
let curUpdate = _this.ResultTableData[i];
curUpdate.RWNF = curResultYear
//如果发现按了暂停
if (_this.isResultPause == true) {
return;
}
_this.curResultApplyPos = i;
await axios.post(
"./Classify/UpdateResultByYear",
curUpdate
).then((res) => {
if (res.data.count > 0) {
_this.addResultNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL + "全局替换" + res.data.count + "条完成")
} else {
_this.addResultNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL + "全局替换没有成功")
}
})
}
})()
_this.addResultNote("替换操作全部完成")
//_this.loading = false;
},
function () { }
)
//实验性代码,暂时保留
////第四步被调用应用的方法
//_this.ResultApplyByYear_Fuction = function (that) {
// console.log('that',that)
// //alert('内部第哦啊哦那个')
// _this.addNote("开始替换操作,替换任务年份为" + that.formResultApply.ApplyYear + "年的数据,共有" + that.ResultTableData + "种分类需要刷新" )
// //全局异步大循环
// (async () => {
// for (var i = 0; i <= _this.ResultTableData.length; i++) {
// //如果发现按了暂停
// if (_this.isResultPause == true) {
// return;
// }
// await axios({
// url: "./Classify/UpdateResultByYear",
// params: _this.ResultTableData[i]
// }).then((res) => {
// if (res.data.count == 0) {
// _this.addNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL + "全局替换完成")
// } else {
// _this.addNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL +"全局替换没有成功")
// }
// })
// }
// })()
// _this.addNote("替换操作全部完成")
//}
},
//第四步单独结果的应用
handleSingleResultUpdateClick(value,index) {
_this = this;
var curResultYear = this.formResultApply.ApplyYear;
layer.confirm('您确定进行该年份采纳推断操作?', {
btn: ['确定', '取消'] //按钮
},
function (index) {
layer.close(index);
let curUpdate = _this.ResultTableData[index];
curUpdate.RWNF = curResultYear
axios.post(
"./Classify/UpdateResultByYear",
curUpdate
).then((res) => {
if (res.data.count > 0) {
_this.addResultNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL + "全局替换" + res.data.count + "条完成")
} else {
_this.addResultNote("任务年份:" + _this.formResultApply.ApplyYear + "年,样品名称:" + _this.ResultTableData[i].YPMC + ",食品大类:" + _this.ResultTableData[i].SP_DL + "全局替换没有成功")
}
})
},
function () { }
)
},
//第四步全局应用暂停
ResultApplyPauseAnalyze() {
this.isResultPause = true;
this.showTip('已经暂停结果应用');
},
//第四步全局应用重置
ResultApplyResetAnalyze() {
this.isResultPause = true;
this.curAnalyzePos = 0;
this.txtResultApply = "";
this.showTip('已经重置结果应用');
},
}
})
///////////////////////////////////////////////////
//加上日志20211109
function addlog(otype, ocontent, ouser) {
var curUser = "";
if (sessionStorage['userName'] != null) {
curUser = sessionStorage['userName']
} else {
curUser = ouser
}
$.get(Gaddress + "/operatelog/addlog?ouser=" + curUser + "&otype=" + otype + "&ocontent=" + ocontent.substring(0, 2500), {})
.then(function (e) { return true })
}
</script>
<style>
</style>