c5_labsci/web/admin/cemap/pathglb.html
2026-01-27 00:52:00 +08:00

331 lines
10 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
</head>
<body>
<div class="container">
<form class="search" onsubmit="search(this);return false;">
<div>
<div class="sinps"></div>
<div class="sbtns">
<button class="lang btn" type="submit">查询</button>
<a class="lang btn" onclick="multiadd()">添加新分类</a>
<a class="lang btn dag" onclick="deltree()">批量删除</a>
</div>
</div>
</form>
<div class='table'>
<div class="loading">Loading...</div>
<div class="list"></div>
</div>
</div>
<div id="alert_modifyupid" style="display:none;">
<div class="ciy-form">
<label style="min-width:3em;" class="lang">调整到</label>
<div>
<ciy-select com="newupid"></select>
</div>
</div>
</div>
<div id="alert_multiadd" style="display:none;">
<div class="ciy-form">
<label style="min-width:3em;" class="lang">添加到</label>
<div>
<ciy-select com="upid"></select>
</div>
</div>
<div class="ciy-form v">
<label style="min-width:3em;"><span class="lang">分类名称</span><code class="lang">(一行一个)</code></label>
<div>
<ciy-textarea com="multi" minheight="30em"></ciy-textarea>
</div>
</div>
</div>
<script type="text/javascript" src="/jscss/ciy.js"></script>
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
<script type="text/javascript" src="/jscss/ciytable.js"></script>
<script type="text/javascript" src="../common.js"></script>
<script type="text/javascript">
'use strict';
var table;
var Glob = {};
ciyfn.pageload(function () {
$5(document).on('keydown', function (e) {
if (e.ctrlKey && e.keyCode == 83) {//Ctrl+S
e.preventDefault();
var upbtns = $5('.upbtn:not(.def)');
upbtns.each(function (dom) {
menubtn(dom, 'edit');
},0.5);
}
});
table = new ciyclass.table({
dom: '.table'
, url: 'init'
, thfield: function (name, key, field, json) {
if (key == 'name')
return '<a style="font-size: 1.5em;vertical-align: middle;padding-right: 0.5em;" onclick="$5(\'div[data-treeid][data-deep=0]\').trigger(\'click\');">⇅</a> ' + ciyfn.lang(name);
}
, fn_beforedata: function (json) {
json.list = ciyfn.conv_treerow(json.list, 0, 0);
ciyfn.fillsearch({
searchdom: '.search'
, data: json
});
return json;
}
, fn_trprop: function (data, json) {
var rettxt = ' data-upid="' + data['upid'] + '"';
if (data['_count'] == '0')
rettxt += ' data-search="ok"';
// if (data['_deep'] > 0)
// rettxt += ' style="display:none;"';
return rettxt;
}
, fn_tdcontent: function (key, datashow, field, data) {
if (key == 'csort') {
return '<input spellcheck="false" style="width:100%;" onkeydown="btnset(this)" type="text" name="' + key + '" value="' + datashow + '"/>';
}
if (key == '_btn') {
var html = '<a class="lang btn def upbtn" onclick="menubtn(this, \'edit\')">' + (data['id'] == 0 ? '新增' : '更新') + '</a>';
html += '<a class="lang btn" onclick="menubtn(this, \'tz\')">调整</a>';
return html;
}
if (key == 'name') {
var deep = toint(data['_deep']);
var html = ' '.repeat(deep);
if (data['_count'] > 0) {
html += '<span class="ciy-tree-dot">▶</span> <input style="margin-left: 0.3em;width:100%;" onkeydown="btnset(this)" type="text" name="' + key + '" value="' + data['name'] + '"/>';
} else {
if (deep > 0)
html += '  ';
html += '<input style="width:100%;" onkeydown="btnset(this)" type="text" name="' + key + '" value="' + data['name'] + '"/>';
}
return {
divprop: (data['_count'] > 0 ? ' data-treeid="' + data['id'] + '"' : '') + ' data-deep="' + data['_deep'] + '" style="display: flex;" class="ciy-tree-spread"'// class="ciy-tree-spread"
, datashow: html
};
}
}
, fn_done: function () {
table.tree();
var doms = $5('[com=isuse]');
for (var i = 0; i < doms.length; i++) {
ciycmp({
dom: doms[i], onchange: function (e) {
if (e.from == 'init') return;
btnset(e.dom);
}
});
}
var doms = $5('ciy-select[com]');
for (var i = 0; i < doms.length; i++) {
ciycmp({
dom: doms[i], range:'adminuser', onchange: function (e) {
if (e.from == 'init') return;
btnset(e.dom);
}
});
}
}
});
table.callpage(1);
});
function search(dom) {
Glob.key = ciyfn.getform(dom);
$5('[data-search]').each(function (rdom) {
var bshow = true;
for (var k in Glob.key) {
if (!Glob.key[k])
continue;
var val = $5('[name=' + k + ']', rdom).val();
if (val.indexOf(Glob.key[k]) == -1) {
bshow = false;
break;
}
}
rdom.style.display = bshow ? '' : 'none';
});
}
function btnset(dom) {
var domtr = $5(dom).parent('tr');
$5('.btn.upbtn', domtr).removeClass('def');
}
function multiadd() {
ciyfn.alert({
title: '添加新分类'
, width: 'mb'
, contentstyle: 'overflow:hidden;'
, content: document.getElementById("alert_multiadd").innerHTML
, fn_showed: function (doc, dom) {
ciycmp({ dom: $5('[com="upid"]', dom), range: fillrange(), value: 0 });
ciycmp({ dom: $5('[com="multi"]', dom) });
}
, btns: ["添加", "*关闭"]
, cb: function (opn) {
if (opn.btn == "关闭")
return opn.close();
if (ciyfn.throttle(opn.dombtn)) return;
ciyfn.callfunc('multiadd', opn.inputs, function (json) {
ciyfn.toast('操作成功', function () {
opn.close();
ciyfn.sendsignal(window.top, 'manage_refresh');
});
});
}
});
}
function datatxt() {
var tdata = new Array();
for (var i in table.data) {
if (table.data[i].isuse != 1)
continue;
tdata.push(table.data[i]);
}
tdata.sort((a, b) => toint(b.csort) - toint(a.csort));
function deeptxt(tdata, upid = 0, indent = '') {
var menutxt = '';
for (var i in tdata) {
if (tdata[i].upid != upid)
continue;
menutxt += indent + tdata[i].name + '\n';
if (tdata[i].upid === upid)
menutxt += deeptxt(tdata, tdata[i].id, indent + ' ');
}
return menutxt;
}
ciyfn.alert({
title: '分类结构'
, width: 'mb'
, height: 'pc'
, content: '<textarea style="height: 100%;">' + deeptxt(tdata) + '</textarea>'
});
}
function menubtn(dom, btn) {
var domtr = $5(dom).parent('tr');
var id = toint(domtr.attr('data-id'));
if (btn == 'edit') {
var postparam = ciyfn.getform(dom, 'TR');
postparam.id = id;
postparam.upid = table.data[id].upid;
postparam.cbid = table.once.cbid;
ciyfn.callfastfunc(dom, '', 'update', postparam, function (json) {
$5(dom).addClass('def');
});
}
if (btn == 'tz') {
ciyfn.alert({
title: '调整分类层级'
, content: document.getElementById("alert_modifyupid").innerHTML
, fn_showed: function (doc, dom) {
if (id == 0)
return;
ciycmp({ dom: $5('[com="newupid"]', dom), range: fillrange(), value: table.data[id].upid });
}
, btns: ["调整", "*关闭"]
, cb: function (opn) {
if (opn.btn == "关闭")
return opn.close();
opn.inputs.id = id;
if (ciyfn.throttle(opn.dombtn)) return;
ciyfn.callfunc('modifyupid', opn.inputs, function (json) {
opn.close();
ciyfn.sendsignal(window.top, 'manage_refresh');
});
}
});
}
}
function fillrange() {
var tdata = [];
for (var i in table.data)
tdata.push(table.data[i]);
tdata.sort((a, b) => toint(b.csort) - toint(a.csort));
var ranges = [];
ranges.push({ id: 0, name: '顶层' });
deephtml(tdata, 0, 1, 9);
function deephtml(tdata, upid, deep, maxdeep) {
if (deep > maxdeep)
return;
for (var i in tdata) {
if (tdata[i].upid != upid)
continue;
ranges.push({ id: tdata[i].id, name: ' '.repeat(deep) + ciyfn.lang(tdata[i].name) });
deephtml(tdata, tdata[i].id, deep + 1, maxdeep);
}
}
return ranges;
}
function fillhtmloption(selid) {
var html = '';
var tdata = new Array();
for (var i in table.data)
tdata.push(table.data[i]);
tdata.sort((a, b) => toint(b.csort) - toint(a.csort));
html += '<option value="0">【顶层】</option>';
html += deephtml(tdata, 0, selid, 1, 9);
function deephtml(tdata, upid, selid, deep, maxdeep) {
if (deep > maxdeep)
return '';
var htmld = '';
for (var i in tdata) {
if (tdata[i].upid != upid)
continue;
htmld += '<option value="' + tdata[i].id + '"';
if (tdata[i].id == selid)
htmld += ' selected="true"';
htmld += '>' + ' '.repeat(deep) + tdata[i].name + '</option>';
htmld += deephtml(tdata, tdata[i].id, selid, deep + 1, maxdeep);
}
return htmld;
}
return html;
}
function deltree() {
var array = [];
$5('[data-id]', '.table').each(function (dom) {
if (!$5(dom).hasClass("selected"))
return;
var deep = toint($5('[data-deep]', dom).attr("data-deep"));
array.push({ id: $5(dom).attr("data-id"), deep: deep });
});
if (array.length == 0)
return ciyfn.toast("请至少选择一条信息");
ciyfn.alert('已选<span class="txt-lggg px1">' + array.length + '</span>条,确认批量删除?', function (opn) {
opn.close();
if (opn.btn == "关闭")
return;
function deldeep(deep) {
if (deep < 0)
return;
var ids = [];
for (var j = 0; j < array.length; j++) {
if (array[j].deep == deep) {
ids.push(array[j].id);
}
}
if (ids.length == 0)
return deldeep(deep - 1);
var postparam = {};
postparam.ids = ids.join(",");
ciyfn.callfunc('del', postparam, function (json) {
table.delline(json);
deldeep(deep - 1);
});
}
deldeep(9);
}, { btns: ["删除", "*关闭"] });
}
</script>
</body>
</html>