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

244 lines
10 KiB
HTML

<!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="table.search(this,'btn');return false;">
<ul></ul>
<div>
<div class="sinps"></div>
<div class="sbtns">
<button class="lang btn" type="submit">查询</button>
<a class="lang btn" onclick="edit(0)">添加</a>
<a class="lang btn" onclick="datatxt()">导出资源</a>
<a class="lang btn" onclick="importtxt()">导入资源</a>
<ciy-select com="stor" />
</div>
</div>
</form>
<div class="table">
<div class="loading col-24">Loading...</div>
<div class="list"></div>
<div>
<div class="btmbtn">
<a class="lang btn def" onclick="ciyfn.select_all(table)">全选</a>
<a class="lang btn def" onclick="ciyfn.select_diff(table)">反选</a>
|
<a class="lang btn dag" onclick="ciyfn.select_callfunc(table, this, 'del','已选{n}条,是否批量删除?', {},function(json){table.delline(json)})">批量删除</a>
</div>
<div class="page"></div>
</div>
</div>
</div>
<div id="alert_edit" style="display:none;">
<div class="char2 row">
<div class="ciy-form col-24 col-sm-24">
<label class="lang imp">路径</label>
<div>
<ciy-selcas com="cpath" />
</div>
</div>
<div class="ciy-form col-24 col-sm-24">
<label class="lang imp">名称</label>
<div>
<input type="text" name="name" style="width:100%;" />
</div>
</div>
<div class="ciy-form col-24 col-sm-24">
<label class="lang">GLB</label>
<div>
<ciy-upload com="url" num="1" type="glb" />
</div>
</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/ciycmp2.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 () {
//Glob.urlp = ciyfn.urlparam();
table = new ciyclass.table({
dom: '.table'
, url: 'list'
, pagecount: 10
, fn_beforedata: function (json) {
ciyfn.fillsearch({
searchdom: '.search'
, data: json
});
return json;
}
, fn_tdcontent: function (key, datashow, field, data) {
if (key == '_btn') {
var html = '';
html += `<a class="lang btn" onclick="menubtn(this, 'edit')">修改</a>`;
return html;
}
if (key == 'img') {
return '<img onclick="setglbthumb(this, \'' + data['url'] + '\')" src="' + ciyfn.file_stor(data['url']).replace('.glb', '.jpg').replace('.gltf', '.jpg') + '" style="width:100px;height:auto;">';
}
}
, fn_done: function (json) {
// table.mergecol('auditstatus');
// table.mergefix('总计', 'center', 6, 0, 8, 1);
// table.footertotal();
}
});
var stors = [];
for (var i in ciy_vars.storlist) {
stors.push({ id: i, name: i });
}
ciycmp({ dom: $5('[com=stor]'), value: ciyfn.getstorage('_cestor', '/'), minwidth: '3em', range: stors, onchange:function(e){Glob.stor = e.value;ciyfn.setstorage('_cestor', e.value)} });
table.callpage(1);
});
function menubtn(dom, btn) {
var id = $5(dom).parent('tr').attr('data-id');
if (btn == 'edit') {
edit(id);
}
if (btn == 'sub') {
ciyfn.sendsignal(window.top, 'manage_ifropen', {
url: 'xxx.html?_xxxid=' + id
, name: 'GLB资源<code>' + table.data[id].name + '</code>'
});
}
}
function setglbthumb(dom, glb) {
var idx = glb.lastIndexOf('/');
var fname = glb.substring(idx + 1);
idx = fname.lastIndexOf('.');
fname = fname.substring(0, idx);
ciyfn.alert({
title: '设置缩略图',
contentstyle: 'width:100%;height:300px;',
frame: 'cemap/glb_thumb.html?glb=' + ciyfn.file_stor(glb)
, cb: function (opn) {
const [mimePart, dataPart] = opn.inputs.data.split(',');
const mimeType = mimePart.match(/:(.*?);/)[1];
const binaryString = atob(dataPart);
const byteArray = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++)
byteArray[i] = binaryString.charCodeAt(i);
const blob = new Blob([byteArray], { type: mimeType });
ciyfn.file_uploads(1, [new File([blob], 'thumb.jpg', { type: mimeType })], {stor:Glob.stor, path:'glb', fname:fname, action:'/z/?func=admin/'}, {
success: function (url, file) {
console.log(url);
dom.src = ciyfn.file_stor(url);
opn.close();
}
, fail: function (err) {
ciyfn.alert(err.errmsg);
}
});
}
});
}
function datatxt() {
ciyfn.callfunc('datatxt', {}, function (json) {
ciyfn.alert({
title: '导出资源'
, width: 'mb'
, height: 'pc'
, content: '<textarea style="height: 100%;">' + json.txt + '</textarea>'
});
});
}
function importtxt() {
ciyfn.alert({
title: '导入资源'
, width: 'mb'
, contentstyle: 'overflow:hidden;'
, content: '<ciy-textarea com="multi" minheight="30em"></ciy-textarea>'
, fn_showed: function (doc, dom) {
ciycmp({ dom: $5('[com="multi"]', dom) });
}
, btns: ["导入", "*关闭"]
, cb: function (opn) {
if (opn.btn == "关闭")
return opn.close();
if (ciyfn.throttle(opn.dombtn)) return;
ciyfn.callfunc('importtxt', opn.inputs, function (json) {
ciyfn.toast('操作成功', function () {
opn.close();
ciyfn.sendsignal(window.top, 'manage_refresh');
});
});
}
});
ciyfn.alert({
title: '导出资源'
, width: 'mb'
, height: 'pc'
, content: '<textarea style="height: 100%;">' + deeptxt(json.txt) + '</textarea>'
});
// path1/path2,name,glburl
// 一行一条
ciyfn.callfunc('importtxt', {}, function (json) {
ciyfn.alert({
title: '导出资源'
, width: 'mb'
, height: 'pc'
, content: '<textarea style="height: 100%;">' + deeptxt(json.txt) + '</textarea>'
});
});
}
function getdata(id, act, cb) {
cb({ data: id == 0 ? {} : table.data[id] });
}
function edit(id) {
getdata(id, 'edit', function (jsndat) {
ciyfn.alert({
title: id == 0 ? '新建' : '修改'
, width: 'pc'
, content: document.getElementById("alert_edit").innerHTML
//, noparent:true
, fn_showed: function (doc, dom) {
var dat = jsndat.data;
ciycmp({ dom: $5('[com=cpath]', dom), value: dat.cpath, range: table.json.zc_cemap_pglb });
$5('[name=name]', dom).val(dat.name);
ciycmp({ dom: $5('[com=url]', dom), value: dat.url, path: 'glb', stor: Glob.stor });
}
, cb: function (opn) {
if (opn.btn == "关闭")
return opn.close();
opn.inputs.id = id;
if (ciyfn.throttle(opn.dombtn)) return;
ciyfn.callfunc('update', opn.inputs, function (json) {
table.updateline(json);
opn.close();
ciyfn.toast('提交成功');
});
},
btns: ["提交", "*关闭"]
});
});
}
function exportxls() {
ciyfn.table_exportxls('exportxls', table, function (json) {
ciyfn.alert({
content: '<div style="text-align:center;"><span class="lang">导出数据已生成</span><br/><br/><a class="lang btn lg" href="' + json.url + '" target="_blank">下载数据</a></div>'
, btns: null
});
});
}
</script>
</body>
</html>