-
-
-
+
@@ -85,11 +71,6 @@ function setLayout() {
.app-wrapper {
@include clearfix;
position: relative;
- // height: 100%;
- // width: 100%;
- background: url("@/assets/images/背景.png");
- background-size: cover;
- padding-bottom: 14px;
height: 100%;
width: 100%;
@@ -118,19 +99,19 @@ function setLayout() {
margin-left: 33px;
margin-top: 3px;
letter-spacing: 1px;
- }
+ }
}
.sidebar-container {
- margin-top: 58px;
- }
- .main-container {
- .caseData {
- position: fixed;
- right: 2%;
- top: 10%;
- z-index: 10000;
- }
+ margin-top: 58px;
+ }
+ .main-container {
+ .caseData {
+ position: fixed;
+ right: 2%;
+ top: 10%;
+ z-index: 10000;
}
+ }
}
.drawer-bg {
diff --git a/src/router/index.js b/src/router/index.js
index 48d691c..700771d 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -83,7 +83,7 @@ export const dynamicRoutes = [
path: "/index",
component: () => import("@/views/index"),
name: "Index",
- meta: { title: "首页", icon: "dashboard", affix: true },
+ meta: { title: "首页", icon: "首页", affix: true },
},
],
},
@@ -96,7 +96,7 @@ export const dynamicRoutes = [
path: "/digitalMarketTech",
component: () => import("@/views/digitalMarketTech/index"),
name: "digitalMarketTech",
- meta: { title: "数字营销技术", icon: "dashboard", affix: true },
+ meta: { title: "数字营销技术", icon: "monitor2", affix: true },
},
],
},
@@ -123,7 +123,7 @@ export const dynamicRoutes = [
path: "/portraitModel",
component: () => import("@/views/portraitModel/index"),
name: "portraitModel",
- meta: { title: "用户画像模型", icon: "dashboard", affix: true },
+ meta: { title: "用户画像模型", icon: "智能算法", affix: true },
},
],
},
@@ -136,7 +136,7 @@ export const dynamicRoutes = [
path: "/digitalMarketingAlgorithms",
component: () => import("@/views/digitalMarketingAlgorithms/index"),
name: "digitalMarketingAlgorithms",
- meta: { title: "数字营销算法", icon: "dashboard", affix: true },
+ meta: { title: "数字营销算法", icon: "tongxunlu_B", affix: true },
},
],
},
@@ -149,7 +149,7 @@ export const dynamicRoutes = [
path: "/learningResources",
component: () => import("@/views/learningCenter/learningResources.vue"),
name: "learningResources",
- meta: { title: "资源中心", icon: "dashboard", affix: true },
+ meta: { title: "资源中心", icon: "资源中心", affix: true },
},
],
},
@@ -162,7 +162,7 @@ export const dynamicRoutes = [
path: "/evaluation",
component: () => import("@/views/learningCenter/evaluation.vue"),
name: "evaluation",
- meta: { title: "知识测评", icon: "dashboard", affix: true },
+ meta: { title: "知识测评", icon: "知识测评", affix: true },
},
],
},
@@ -175,7 +175,7 @@ export const dynamicRoutes = [
path: "/Achievement",
component: () => import("@/views/learningCenter/Achievement.vue"),
name: "Achievement",
- meta: { title: "学习成绩", icon: "dashboard", affix: true },
+ meta: { title: "学习成绩", icon: "学习成绩", affix: true },
},
],
},
diff --git a/src/utils/index.js b/src/utils/index.js
index e24db80..a6e766d 100644
--- a/src/utils/index.js
+++ b/src/utils/index.js
@@ -1,20 +1,61 @@
-import { parseTime } from './ruoyi'
-export function getAssetsFile(url){
+import { parseTime } from "./ruoyi";
+/**
+ * 通用分页函数
+ * @param {Array} data - 需要分页的数据源
+ * @param {Number} page - 当前页码
+ * @param {Number} pageSize - 每页显示的条目数
+ * @returns {Object} 分页结果,包含当前页的数据,页码信息,及总页数
+ */
+export function paginate(data, page = 1, pageSize = 10) {
+ // 计算总页数
+ const totalItems = data.length;
+ const totalPages = Math.ceil(totalItems / pageSize);
+ // 确保页码在有效范围内
+ const currentPage = Math.min(Math.max(page, 1), totalPages);
+ // 计算当前页的数据起始索引和结束索引
+ const startIndex = (currentPage - 1) * pageSize;
+ const endIndex = Math.min(startIndex + pageSize, totalItems);
+
+ // 获取当前页的数据片段
+ const pageData = data.slice(startIndex, endIndex);
+ return {
+ currentPage,
+ pageSize,
+ totalItems,
+ totalPages,
+ data: pageData,
+ };
+}
+export function getAssetsFile(url) {
return new URL(`../assets/images/${url}`, import.meta.url).href;
}
/**
* 表格时间格式化
*/
+function isTimestamp(value) {
+ // 判断是否为数字类型且是否为整数
+ if (typeof value === "number" && Number.isInteger(value)) {
+ // 判断时间戳是否为13位
+ return value.toString().length === 13;
+ }
+ return false;
+}
export function formatDate(cellValue) {
- if (cellValue == null || cellValue == "") return "";
- var date = new Date(cellValue)
- var year = date.getFullYear()
- var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
- var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
- var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
- var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
- var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
- return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
+ // 判断是不是时间戳不是就返回
+ let time;
+ if (isTimestamp(cellValue)) {
+ var date = new Date(cellValue);
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
+ var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
+ var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
+ var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
+ var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
+ time = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
+ } else {
+ time = cellValue;
+ }
+ return time;
}
/**
@@ -23,40 +64,30 @@ export function formatDate(cellValue) {
* @returns {string}
*/
export function formatTime(time, option) {
- if (('' + time).length === 10) {
- time = parseInt(time) * 1000
+ if (("" + time).length === 10) {
+ time = parseInt(time) * 1000;
} else {
- time = +time
+ time = +time;
}
- const d = new Date(time)
- const now = Date.now()
+ const d = new Date(time);
+ const now = Date.now();
- const diff = (now - d) / 1000
+ const diff = (now - d) / 1000;
if (diff < 30) {
- return '刚刚'
+ return "刚刚";
} else if (diff < 3600) {
// less 1 hour
- return Math.ceil(diff / 60) + '分钟前'
+ return Math.ceil(diff / 60) + "分钟前";
} else if (diff < 3600 * 24) {
- return Math.ceil(diff / 3600) + '小时前'
+ return Math.ceil(diff / 3600) + "小时前";
} else if (diff < 3600 * 24 * 2) {
- return '1天前'
+ return "1天前";
}
if (option) {
- return parseTime(time, option)
+ return parseTime(time, option);
} else {
- return (
- d.getMonth() +
- 1 +
- '月' +
- d.getDate() +
- '日' +
- d.getHours() +
- '时' +
- d.getMinutes() +
- '分'
- )
+ return d.getMonth() + 1 + "月" + d.getDate() + "日" + d.getHours() + "时" + d.getMinutes() + "分";
}
}
@@ -65,18 +96,18 @@ export function formatTime(time, option) {
* @returns {Object}
*/
export function getQueryObject(url) {
- url = url == null ? window.location.href : url
- const search = url.substring(url.lastIndexOf('?') + 1)
- const obj = {}
- const reg = /([^?&=]+)=([^?&=]*)/g
+ url = url == null ? window.location.href : url;
+ const search = url.substring(url.lastIndexOf("?") + 1);
+ const obj = {};
+ const reg = /([^?&=]+)=([^?&=]*)/g;
search.replace(reg, (rs, $1, $2) => {
- const name = decodeURIComponent($1)
- let val = decodeURIComponent($2)
- val = String(val)
- obj[name] = val
- return rs
- })
- return obj
+ const name = decodeURIComponent($1);
+ let val = decodeURIComponent($2);
+ val = String(val);
+ obj[name] = val;
+ return rs;
+ });
+ return obj;
}
/**
@@ -85,14 +116,14 @@ export function getQueryObject(url) {
*/
export function byteLength(str) {
// returns the byte length of an utf8 string
- let s = str.length
+ let s = str.length;
for (var i = str.length - 1; i >= 0; i--) {
- const code = str.charCodeAt(i)
- if (code > 0x7f && code <= 0x7ff) s++
- else if (code > 0x7ff && code <= 0xffff) s += 2
- if (code >= 0xDC00 && code <= 0xDFFF) i--
+ const code = str.charCodeAt(i);
+ if (code > 0x7f && code <= 0x7ff) s++;
+ else if (code > 0x7ff && code <= 0xffff) s += 2;
+ if (code >= 0xdc00 && code <= 0xdfff) i--;
}
- return s
+ return s;
}
/**
@@ -100,13 +131,13 @@ export function byteLength(str) {
* @returns {Array}
*/
export function cleanArray(actual) {
- const newArray = []
+ const newArray = [];
for (let i = 0; i < actual.length; i++) {
if (actual[i]) {
- newArray.push(actual[i])
+ newArray.push(actual[i]);
}
}
- return newArray
+ return newArray;
}
/**
@@ -114,13 +145,13 @@ export function cleanArray(actual) {
* @returns {Array}
*/
export function param(json) {
- if (!json) return ''
+ if (!json) return "";
return cleanArray(
- Object.keys(json).map(key => {
- if (json[key] === undefined) return ''
- return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])
+ Object.keys(json).map((key) => {
+ if (json[key] === undefined) return "";
+ return encodeURIComponent(key) + "=" + encodeURIComponent(json[key]);
})
- ).join('&')
+ ).join("&");
}
/**
@@ -128,21 +159,21 @@ export function param(json) {
* @returns {Object}
*/
export function param2Obj(url) {
- const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ')
+ const search = decodeURIComponent(url.split("?")[1]).replace(/\+/g, " ");
if (!search) {
- return {}
+ return {};
}
- const obj = {}
- const searchArr = search.split('&')
- searchArr.forEach(v => {
- const index = v.indexOf('=')
+ const obj = {};
+ const searchArr = search.split("&");
+ searchArr.forEach((v) => {
+ const index = v.indexOf("=");
if (index !== -1) {
- const name = v.substring(0, index)
- const val = v.substring(index + 1, v.length)
- obj[name] = val
+ const name = v.substring(0, index);
+ const val = v.substring(index + 1, v.length);
+ obj[name] = val;
}
- })
- return obj
+ });
+ return obj;
}
/**
@@ -150,9 +181,9 @@ export function param2Obj(url) {
* @returns {string}
*/
export function html2Text(val) {
- const div = document.createElement('div')
- div.innerHTML = val
- return div.textContent || div.innerText
+ const div = document.createElement("div");
+ div.innerHTML = val;
+ return div.textContent || div.innerText;
}
/**
@@ -162,21 +193,21 @@ export function html2Text(val) {
* @returns {Object}
*/
export function objectMerge(target, source) {
- if (typeof target !== 'object') {
- target = {}
+ if (typeof target !== "object") {
+ target = {};
}
if (Array.isArray(source)) {
- return source.slice()
+ return source.slice();
}
- Object.keys(source).forEach(property => {
- const sourceProperty = source[property]
- if (typeof sourceProperty === 'object') {
- target[property] = objectMerge(target[property], sourceProperty)
+ Object.keys(source).forEach((property) => {
+ const sourceProperty = source[property];
+ if (typeof sourceProperty === "object") {
+ target[property] = objectMerge(target[property], sourceProperty);
} else {
- target[property] = sourceProperty
+ target[property] = sourceProperty;
}
- })
- return target
+ });
+ return target;
}
/**
@@ -185,18 +216,16 @@ export function objectMerge(target, source) {
*/
export function toggleClass(element, className) {
if (!element || !className) {
- return
+ return;
}
- let classString = element.className
- const nameIndex = classString.indexOf(className)
+ let classString = element.className;
+ const nameIndex = classString.indexOf(className);
if (nameIndex === -1) {
- classString += '' + className
+ classString += "" + className;
} else {
- classString =
- classString.substr(0, nameIndex) +
- classString.substr(nameIndex + className.length)
+ classString = classString.substr(0, nameIndex) + classString.substr(nameIndex + className.length);
}
- element.className = classString
+ element.className = classString;
}
/**
@@ -204,10 +233,10 @@ export function toggleClass(element, className) {
* @returns {Date}
*/
export function getTime(type) {
- if (type === 'start') {
- return new Date().getTime() - 3600 * 1000 * 24 * 90
+ if (type === "start") {
+ return new Date().getTime() - 3600 * 1000 * 24 * 90;
} else {
- return new Date(new Date().toDateString())
+ return new Date(new Date().toDateString());
}
}
@@ -218,38 +247,38 @@ export function getTime(type) {
* @return {*}
*/
export function debounce(func, wait, immediate) {
- let timeout, args, context, timestamp, result
+ let timeout, args, context, timestamp, result;
- const later = function() {
+ const later = function () {
// 据上一次触发时间间隔
- const last = +new Date() - timestamp
+ const last = +new Date() - timestamp;
// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
if (last < wait && last > 0) {
- timeout = setTimeout(later, wait - last)
+ timeout = setTimeout(later, wait - last);
} else {
- timeout = null
+ timeout = null;
// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
if (!immediate) {
- result = func.apply(context, args)
- if (!timeout) context = args = null
+ result = func.apply(context, args);
+ if (!timeout) context = args = null;
}
}
- }
+ };
- return function(...args) {
- context = this
- timestamp = +new Date()
- const callNow = immediate && !timeout
+ return function (...args) {
+ context = this;
+ timestamp = +new Date();
+ const callNow = immediate && !timeout;
// 如果延时不存在,重新设定延时
- if (!timeout) timeout = setTimeout(later, wait)
+ if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
- result = func.apply(context, args)
- context = args = null
+ result = func.apply(context, args);
+ context = args = null;
}
- return result
- }
+ return result;
+ };
}
/**
@@ -260,18 +289,18 @@ export function debounce(func, wait, immediate) {
* @returns {Object}
*/
export function deepClone(source) {
- if (!source && typeof source !== 'object') {
- throw new Error('error arguments', 'deepClone')
+ if (!source && typeof source !== "object") {
+ throw new Error("error arguments", "deepClone");
}
- const targetObj = source.constructor === Array ? [] : {}
- Object.keys(source).forEach(keys => {
- if (source[keys] && typeof source[keys] === 'object') {
- targetObj[keys] = deepClone(source[keys])
+ const targetObj = source.constructor === Array ? [] : {};
+ Object.keys(source).forEach((keys) => {
+ if (source[keys] && typeof source[keys] === "object") {
+ targetObj[keys] = deepClone(source[keys]);
} else {
- targetObj[keys] = source[keys]
+ targetObj[keys] = source[keys];
}
- })
- return targetObj
+ });
+ return targetObj;
}
/**
@@ -279,16 +308,16 @@ export function deepClone(source) {
* @returns {Array}
*/
export function uniqueArr(arr) {
- return Array.from(new Set(arr))
+ return Array.from(new Set(arr));
}
/**
* @returns {string}
*/
export function createUniqueString() {
- const timestamp = +new Date() + ''
- const randomNum = parseInt((1 + Math.random()) * 65536) + ''
- return (+(randomNum + timestamp)).toString(32)
+ const timestamp = +new Date() + "";
+ const randomNum = parseInt((1 + Math.random()) * 65536) + "";
+ return (+(randomNum + timestamp)).toString(32);
}
/**
@@ -298,7 +327,7 @@ export function createUniqueString() {
* @returns {boolean}
*/
export function hasClass(ele, cls) {
- return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'))
+ return !!ele.className.match(new RegExp("(\\s|^)" + cls + "(\\s|$)"));
}
/**
@@ -307,7 +336,7 @@ export function hasClass(ele, cls) {
* @param {string} cls
*/
export function addClass(ele, cls) {
- if (!hasClass(ele, cls)) ele.className += ' ' + cls
+ if (!hasClass(ele, cls)) ele.className += " " + cls;
}
/**
@@ -317,94 +346,91 @@ export function addClass(ele, cls) {
*/
export function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
- const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)')
- ele.className = ele.className.replace(reg, ' ')
+ const reg = new RegExp("(\\s|^)" + cls + "(\\s|$)");
+ ele.className = ele.className.replace(reg, " ");
}
}
export function makeMap(str, expectsLowerCase) {
- const map = Object.create(null)
- const list = str.split(',')
+ const map = Object.create(null);
+ const list = str.split(",");
for (let i = 0; i < list.length; i++) {
- map[list[i]] = true
+ map[list[i]] = true;
}
- return expectsLowerCase
- ? val => map[val.toLowerCase()]
- : val => map[val]
+ return expectsLowerCase ? (val) => map[val.toLowerCase()] : (val) => map[val];
}
-
-export const exportDefault = 'export default '
+
+export const exportDefault = "export default ";
export const beautifierConf = {
html: {
- indent_size: '2',
- indent_char: ' ',
- max_preserve_newlines: '-1',
+ indent_size: "2",
+ indent_char: " ",
+ max_preserve_newlines: "-1",
preserve_newlines: false,
keep_array_indentation: false,
break_chained_methods: false,
- indent_scripts: 'separate',
- brace_style: 'end-expand',
+ indent_scripts: "separate",
+ brace_style: "end-expand",
space_before_conditional: true,
unescape_strings: false,
jslint_happy: false,
end_with_newline: true,
- wrap_line_length: '110',
+ wrap_line_length: "110",
indent_inner_html: true,
comma_first: false,
e4x: true,
- indent_empty_lines: true
+ indent_empty_lines: true,
},
js: {
- indent_size: '2',
- indent_char: ' ',
- max_preserve_newlines: '-1',
+ indent_size: "2",
+ indent_char: " ",
+ max_preserve_newlines: "-1",
preserve_newlines: false,
keep_array_indentation: false,
break_chained_methods: false,
- indent_scripts: 'normal',
- brace_style: 'end-expand',
+ indent_scripts: "normal",
+ brace_style: "end-expand",
space_before_conditional: true,
unescape_strings: false,
jslint_happy: true,
end_with_newline: true,
- wrap_line_length: '110',
+ wrap_line_length: "110",
indent_inner_html: true,
comma_first: false,
e4x: true,
- indent_empty_lines: true
- }
-}
+ indent_empty_lines: true,
+ },
+};
// 首字母大小
export function titleCase(str) {
- return str.replace(/( |^)[a-z]/g, L => L.toUpperCase())
+ return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}
// 下划转驼峰
export function camelCase(str) {
- return str.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase())
+ return str.replace(/_[a-z]/g, (str1) => str1.substr(-1).toUpperCase());
}
export function isNumberStr(str) {
- return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str)
+ return /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g.test(str);
}
//文件下载
export function downBlobFile(fileName, fileBlob) {
- const link = document.createElement('a')
+ const link = document.createElement("a");
try {
// let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); //如果后台返回的不是blob对象类型,先定义成blob对象格式,type格式根据返回文件不同修改
- const blob = fileBlob
- const _fileName = fileName // 拆解获取文件名,如果后端没返回文件格式,则需要自己拼接文件后缀
- link.style.display = 'none'
+ const blob = fileBlob;
+ const _fileName = fileName; // 拆解获取文件名,如果后端没返回文件格式,则需要自己拼接文件后缀
+ link.style.display = "none";
// 兼容浏览器
- const url = window.URL || window.webkitURL || window.moxURL
- link.href = url.createObjectURL(blob) // 如果没设置axios请求reponseType为‘blob’的话,则参数应为new Blob(文件流),否则报错
- link.download = _fileName // 下载的文件名称
- link.click()
- window.URL.revokeObjectURL(url) // #URL.revokeObjectURL()方法会释放一个通过URL.createObjectURL()创建的对象URL. 当你要已经用过了这个对象URL,然后要让浏览器知道这个URL已经不再需要指向对应的文件的时候,就需要调用这个方法.
+ const url = window.URL || window.webkitURL || window.moxURL;
+ link.href = url.createObjectURL(blob); // 如果没设置axios请求reponseType为‘blob’的话,则参数应为new Blob(文件流),否则报错
+ link.download = _fileName; // 下载的文件名称
+ link.click();
+ window.URL.revokeObjectURL(url); // #URL.revokeObjectURL()方法会释放一个通过URL.createObjectURL()创建的对象URL. 当你要已经用过了这个对象URL,然后要让浏览器知道这个URL已经不再需要指向对应的文件的时候,就需要调用这个方法.
} catch (error) {
- console.error(error.message)
+ console.error(error.message);
}
}
-
diff --git a/src/utils/request.js b/src/utils/request.js
index 076014b..303c811 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -17,8 +17,9 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
// baseURL: import.meta.env.VITE_APP_BASE_API,
baseURL:'http://118.31.7.2:9868/',
+ // baseURL:'http://192.168.2.28:9868/',
// 超时
- timeout: 10000
+ timeout: 100000
})
// request拦截器
service.interceptors.request.use(config => {
diff --git a/src/views/digitalMarketTech/AIGCLargeModel/components/thirdPartyAIGC.vue b/src/views/digitalMarketTech/AIGCLargeModel/components/thirdPartyAIGC.vue
index 290c9c7..194bb34 100644
--- a/src/views/digitalMarketTech/AIGCLargeModel/components/thirdPartyAIGC.vue
+++ b/src/views/digitalMarketTech/AIGCLargeModel/components/thirdPartyAIGC.vue
@@ -1,6 +1,6 @@
-
+
diff --git a/src/views/digitalMarketTech/AIGCLargeModel/index.vue b/src/views/digitalMarketTech/AIGCLargeModel/index.vue
index 96bc59f..c8c2733 100644
--- a/src/views/digitalMarketTech/AIGCLargeModel/index.vue
+++ b/src/views/digitalMarketTech/AIGCLargeModel/index.vue
@@ -1,83 +1,74 @@
-
-
- {{item.text}}
-
+
+ {{ item.text }}
+
-
-
diff --git a/src/views/digitalMarketingAlgorithms/components/associationRuleMining.vue b/src/views/digitalMarketingAlgorithms/components/associationRuleMining.vue
index d4bb7a7..6f489d8 100644
--- a/src/views/digitalMarketingAlgorithms/components/associationRuleMining.vue
+++ b/src/views/digitalMarketingAlgorithms/components/associationRuleMining.vue
@@ -1,502 +1,535 @@
-
-
-
任务描述
-
(给出任务清单参考,做哪些数据的统计分析)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus pronin sapien nunc accuan eget.
-
-
-
-
-
算法知识导入
-
-
-
-
实训任务提交
-
-
-
-
-
- 一、选择指标
-
-
-
-
-
-
-
-
-
-
-
- 确定
-
-
- 二、数据预处理
-
-
-
-
-
-
-
-
-
-
-
-
- 三、模型参数设置
-
-
-
- 聚类方法:
-
-
-
-
-
-
-
-
- 最小支持度阀值:
-
- %
-
-
-
- 最小置信度:
-
- %
-
-
计算
-
-
-
-
-

-
重新开始
-
-
-
+
+
+
任务描述
+
(给出任务清单参考,做哪些数据的统计分析)Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean euismod bibendum laoreet. Proin gravida dolor sit amet lacus accumsan et viverra justo commodo. Proin sodales pulvinar sic tempor. Sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam fermentum, nulla luctus pharetra vulputate, felis tellus mollis orci, sed rhoncus pronin sapien nunc accuan eget.
+
+
+
+
+
算法知识导入
+
+
+
+
实训任务提交
+
+
+
+
+
+ 一、选择指标
+
+
+
+
+
+
+
+
+
+
+
+ 确定
+
+
+ 二、数据预处理
+
+
+
+
+
+
+
+
+
+
+
+
+ 三、模型参数设置
+
+
+
+ 聚类方法:
+
+
+
+
+
+
+
+
+ 最小支持度阀值:
+
+ %
+
+
+
+ 最小置信度:
+
+ %
+
+
计算
+
-
-
- 分析数据:
-
-
-
-
-
-
- 分析结果:
- 下载
-
-
-
-
-
+
+
+

+
重新开始
+
+
-
-
-
-
-