zoujiandong 6e320c3944 8.3
2025-08-03 16:29:54 +08:00

1055 lines
28 KiB
Vue

<template>
<view class="page">
<view class="navbox">
<view class="bg"></view>
<view class="namebox">
<view class="back" @click="closeSv">
<u-icon name="arrow-left" color="#000" size="24"></u-icon>
</view>
<!-- <view class="logo">logo</view> -->
<view class="name">{{editorType=='info'?'病例信息':'总结与讨论'}}</view>
</view>
</view>
<view class="container">
<view class="row">
<view class="left">{{editorType=='info'?'病例信息':'总结与讨论'}}<text class="tip" v-if="editorType=='result'">(可不填)</text></view>
<view class="right" @click="clearMuBan" v-if="editorType=='info'">
<u-icon name="trash" color="#6B7280" size="18"></u-icon>
清除模板
</view>
</view>
<view class="editorbox">
<sv-editor
:placeholder="placeholder"
eid="peditor"
@ready="ready"
pasteMode="origin"
@focus="focus"
@blur="blur"
></sv-editor>
</view>
</view>
<view class="toolbar" >
<view class="toolbox">
<view class="cellbox">
<view class="cell"
@click="insertImage"
>
<view class="imgbox" :class="{active:!isIOS}">
<up--image
:src="photoImg"
class="headImg"
width="32rpx"
height="32rpx"
></up--image>
</view>
<view class="name">添加图片</view>
</view>
<view
class="cell"
@click="insertVideo"
>
<view class="imgbox" :class="{active:!isIOS}">
<up--image
:src="videoImg"
class="headImg"
width="32rpx"
height="32rpx"
></up--image>
</view>
<view class="name">添加视频</view>
</view>
<view
v-if="editorType=='info'"
class="cell"
@click="alertTitle"
>
<view class="imgbox" :class="{active:!isIOS}">
<up--image
:src="addImg"
class="headImg"
width="32rpx"
height="32rpx"
></up--image>
</view>
<view class="name">添加小标题</view>
</view>
</view>
<view class="btn" @click="confirm">确定</view>
</view>
<canvas
v-if="showCanvas"
type="2d"
id="pwatermarkCanvas"
style="width: 200px; height: 200px; position: fixed; top: -9999px"
/>
</view>
<up-popup
:round="10"
zIndex="999999"
:show="showTitle"
mode="bottom"
@close="closeTitle"
@open="openTitle"
>
<view class="draftpop titlepop">
<view class="titlebox"
>添加小标题
<view class="close" @click="closeTitle"
><up-icon name="close" color="#4B5563" size="20"></up-icon
></view>
</view>
<view class="con">
<view class="top">
<up-icon
name="plus-circle"
color="#3CC7C0"
size="20"
@click="insertAllWord"
></up-icon>
<view class="desc" @click="insertAllWord">一键添加全部</view>
</view>
<view class="cellbox">
<view class="cell" @click="insertWord('患者信息')">患者信息</view>
<view class="cell" @click="insertWord('主诉')">主诉</view>
<view class="cell" @click="insertWord('现病史及既往史')"
>现病史及既往史</view
>
</view>
<view class="cellbox">
<view class="cell" @click="insertWord('检查')">检查</view>
<view class="cell" @click="insertWord('临床诊断')">临床诊断</view>
<view class="cell" @click="insertWord('治疗经过及结果')"
>治疗经过及结果</view
>
</view>
</view>
</view>
</up-popup>
</view>
</template>
<script setup>
import photoImg from "@/static/photo.png";
import throttle from "@/utils/throttle"
import addImg from "@/static/add.png";
import videoImg from "@/static/videoicon.png";
import { initCustomFormatter, nextTick, reactive, ref,watch } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { getCurrentInstance } from 'vue'
const instace = getCurrentInstance();
import api from "@/api/api";
import dayjs from "dayjs";
import {
addImage,
addVideo,
addText,
} from "@/uni_modules/sv-editor/components/common/utils.js";
import svEditor from "@/uni_modules/sv-editor/components/sv-editor/sv-editor.vue";
const PeditorCtx=ref(null);
const htmlContent=ref('');
const keyboardHeight=ref(0);
const videoface=ref('https://caseplatform.oss-cn-beijing.aliyuncs.com/prod/static/shipinfengmian.jpg')
const editorHeight=ref(300);
const navName=ref('病例信息');
const placeholder=ref('患者基本情况,检查结果,诊疗图片或视频');
const showTitle=ref(false)
const props=defineProps({
editorType:{
type:String,
default:'info'
},
editorCotent:{
type:String,
default:''
}
})
const showCanvas=ref(false);
watch(()=>props.editorType,(newVal)=>{
console.log(11111111)
console.log(newVal)
if(newVal=="info"){
placeholder.value='患者基本情况,检查结果,诊疗图片或视频'
}else{
placeholder.value='分享经验和心得,如:诊断与鉴别诊断易错点,治疗过程难点,病例的相关知识总结及讨论等'
}
},{immediate: true })
const emits=defineEmits(['closeEditor','changeEditor'])
const isIOS=ref(false);
const insertWord = (word) => {
addText(word);
showTitle.value = false;
};
const insertAllWord = () => {
let word = [
"患者信息",
"主诉",
"现病史及既往史:",
"检查",
"临床诊断",
"治疗经过及结果",
];
word.forEach((item) => {
addText(item);
});
showTitle.value = false;
};
const ready = (e) => {
console.log(e);
PeditorCtx.value = e;
if(props.editorType=="info"){
if(props.editorCotent){
console.log('peditor')
console.log(props.editorCotent)
PeditorCtx.value.initHtml(props.editorCotent,async (videoUrl) => {
let res='';
// #ifdef APP || H5
// res = await this.PeditorCtx.createVideoThumbnail(videoUrl)
// #endif
res = await PeditorCtx.value.createCoverThumbnail(videoface.value)
return res
})
setTimeout(async()=>{
console.log('qaz')
let res=await PeditorCtx.value.getLastContent();
console.log(res);
},6000)
}else{
let html =
"<p>【患者信息】:</p><br/><p>【主诉】:</p><br/><p>【现病史及既往史】:</p><br/><p>【检查】:</p><br/><p>【临床诊断】:</p><br/><p>【治疗经过及结果】:</p><br/><br/>";
PeditorCtx.value.initHtml(html);
}
}else{
if(props.editorCotent){
PeditorCtx.value.initHtml(props.editorCotent,async (videoUrl) => {
let res='';
// #ifdef APP || H5
// res = await this.PeditorCtx.createVideoThumbnail(videoUrl)
// #endif
res = await PeditorCtx.value.createCoverThumbnail(videoface.value)
return res
})
}else{
let html =
"";
PeditorCtx.value.initHtml(html);
}
}
uni.hideLoading();
};
const closeSv =throttle(()=>{
emits('closeEditor')
})
const confirm=async ()=>{
const res = await PeditorCtx.value.getLastContent();
let html = PeditorCtx.value.exportHtml(res.html.replace('undefined',''));
emits('changeEditor',{
type:props.editorType,
content:html
})
}
const foucus=()=>{
}
const blur=()=>{
}
const clearMuBan=()=>{
PeditorCtx.value.initHtml("");
}
const updatePosition=(c_keyboardHeight)=>{
const toolbarHeight = 50
const { windowHeight, platform } = uni.getSystemInfoSync();
let c_editorHeight = keyboardHeight > 0 ? (windowHeight - keyboardHeight - toolbarHeight) : windowHeight
//this.setData({ editorHeight, keyboardHeight })
editorHeight.value=c_editorHeight;
keyboardHeight.value=c_keyboardHeight;
}
onLoad(()=>{
const platform =uni.getSystemInfoSync().platform
isIOS.value=platform === 'ios'
updatePosition(0)
let keyboardHeight = 0
uni.onKeyboardHeightChange(res => {
if (res.height === keyboardHeight) return
const duration = res.height > 0 ? res.duration * 1000 : 0
keyboardHeight = res.height
setTimeout(() => {
uni.pageScrollTo({
scrollTop: 0,
success() {
updatePosition(keyboardHeight)
PeditorCtx.value.scrollView()
}
})
}, duration)
})
});
const fillTextToImgWx = (base64) => {
let maskText = "@肝胆相照临床病例库";
return new Promise((resolve, reject) => {
wx.createSelectorQuery().in(instace.proxy)
.select("#pwatermarkCanvas")
.fields({
node: true,
size: true,
})
.exec((res) => {
const canvas = res[0].node;
const ctx = canvas.getContext("2d");
let textMetrics = ctx.measureText(maskText);
console.log(textMetrics);
//水印文字宽度
let {
width: textWidth,
actualBoundingBoxAscent,
actualBoundingBoxDescent,
} = textMetrics;
//水印文字高度
let textHeight = actualBoundingBoxAscent
? actualBoundingBoxAscent + actualBoundingBoxDescent
: textMetrics.fontBoundingBoxAscent +
textMetrics.fontBoundingBoxDescent;
let imgHeight, imgWidth;
let font = ""; //fontsize"px Arial";
let fontColor = "#fff";
let strokeWidth = 3;
uni.getImageInfo({
src: base64,
success: (imageRes) => {
// 设置canvas宽高
let scale =28;
// (imageRes.width / 800) * 30 > 12
// ? (imageRes.width / 800) * 30
// : 12;
font = scale + "px Arial";
console.log(imageRes);
canvas.width = imageRes.width;
canvas.height = imageRes.height;
imgHeight = imageRes.height;
imgWidth = imageRes.width;
// 创建目标图片对象
const image = canvas.createImage();
image.src = "";
image.src = base64;
image.onload = () => {
// 清除画布
//ctx.clearRect(0, 0, canvas.width, canvas.height);
// 将图片绘制到canvas上
ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
let posXmargin = 10; //this.data.posXmargin // 自定义离左/右边的距离
let posYmargin = 10; // this.data.posYmargin // 自定义离上/下边的距离
let randomNumber = 3; //Math.floor(Math.random() * (3 + 1));
console.log("randomNumber:" + randomNumber);
switch (randomNumber) {
case 0: //左上角
let lt_x = posXmargin;
let lt_y = posYmargin + textHeight;
ctx.font = font;
ctx.fillStyle = fontColor;
ctx.storkStyle = "black";
ctx.strokeWidth = strokeWidth;
ctx.fillStyle = "#fff";
ctx.fillText(maskText, lt_x, lt_y);
//ctx.restore()
//ctx.save()
break;
case 1: //左下角
let lb_x = posXmargin;
let lb_y = imgHeight - posYmargin;
ctx.font = font;
ctx.fillStyle = fontColor;
ctx.strokeStyle = "black";
ctx.strokeWidth = strokeWidth;
ctx.fillStyle = "#fff";
ctx.fillText(maskText, lb_x, lb_y);
//ctx.restore()
//ctx.save()
break;
case 2: //右上角
let rt_x =
imgWidth - textWidth * 2.9 - posXmargin <= 0
? 10
: imgWidth - textWidth * 2.9 - posXmargin;
let rt_y = posYmargin + textHeight * 2;
ctx.font = font;
ctx.fillStyle = fontColor;
ctx.strokeStyle = "black";
ctx.strokeWidth = strokeWidth;
ctx.fillStyle = "#fff";
ctx.fillText(maskText, rt_x, rt_y);
ctx.restore();
ctx.save();
break;
case 3: //右下角
let rb_x =
imgWidth - textWidth * 6 - posXmargin <= 0
? 10
: imgWidth - 276- posXmargin;
console.log(rb_x)
let rb_y = imgHeight - posYmargin;
ctx.font = font;
ctx.fillStyle = fontColor;
ctx.strokeStyle = "black";
ctx.strokeWidth = strokeWidth;
ctx.fillStyle = "#fff";
ctx.fillText(maskText, rb_x, rb_y);
//ctx.restore()
//ctx.save()
break;
}
//ctx.restore()
// 将canvas转为图片
//setTimeout(() => {
wx.canvasToTempFilePath({
canvas: canvas,
success: function (res) {
// 输出生成的带水印的图片临时路径
resolve(res.tempFilePath);
//wx.previewImage({ urls: [res.tempFilePath] });
},
fail: function (res) {
// reject(res)
console.error(res);
},
});
//})
};
},
});
});
});
};
const fillTextToImg = (base64) => {
const img = new Image();
img.src = base64;
img.setAttribute("crossOrigin", "Anonymous");
return new Promise((resolve, reject) => {
img.onload = () => {
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = img.width;
canvas.height = img.height;
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
const remFontSize = 30; //canvas.width / 35;
ctx.font = remFontSize + "px '微软雅黑'";
ctx.textAlign = "right";
ctx.strokeStyle = "#000";
ctx.fillStyle = "#fff";
const uploadTime = new Date();
const name = "@肝胆相照临床病例库";
const spaceH = remFontSize * 0.1;
let randomNumber = 3//Math.floor(Math.random() * (3 + 1));
let position = [
{
top: remFontSize,
left: name.length * 30 || 30,
},
{
top: remFontSize,
left: canvas.width - remFontSize * 0.1 - spaceH,
},
{
top: canvas.height - remFontSize * 0.5 - spaceH,
left: name.length * 30 || 30,
},
{
top: canvas.height - remFontSize * 0.5 - spaceH,
left: canvas.width - remFontSize * 0.1 - spaceH,
},
];
ctx.strokeText(
name,
position[randomNumber].left,
position[randomNumber].top
);
ctx.fillText(
name,
position[randomNumber].left,
position[randomNumber].top
);
resolve(canvas.toDataURL("image/jpeg"));
};
});
};
const generateRandomNumber = () => {
let randomNumber = Math.floor(1000 + Math.random() * 9000);
return randomNumber;
};
// 图片转64代
const getImageBase64 = (url) => {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == 200) {
const fileReader = new FileReader();
fileReader.onloadend = function () {
resolve(fileReader.result); // Base64编码的字符串
};
fileReader.readAsDataURL(xhr.response); // 将blob转换为base64
} else {
reject("Could not fetch the file.");
}
};
xhr.onerror = function () {
reject("XHR error");
};
xhr.send();
});
};
const getImageFormat = (imageUrl) => {
console.log(imageUrl);
const lastDotIndex = imageUrl.lastIndexOf(".");
if (lastDotIndex !== -1) {
return imageUrl.substring(lastDotIndex + 1);
}
return "unknown";
};
const getOss=(temurl)=>{
api
.getOss({
scene: 1,
})
.then((rep) => {
let result = rep.data;
if (result.code == 200) {
let { access_id, dir, policy, signature, host } = result.data;
let time = dayjs().format("YYYYMMDDHHmmss");
let random = generateRandomNumber();
let filename = time + random;
let imgType = "." + getImageFormat(temurl);
return new Promise((resolve, reject) => {
uni.uploadFile({
url: host, // 仅为示例,非真实的接口地址
filePath:temurl,
name: "file",
formData: {
OSSAccessKeyId: access_id,
policy,
key: dir + time + random + imgType,
signature,
},
success(res) {
if (res.statusCode === 204) {
let url = host + "/" + dir + filename + imgType;
//imgList.value.push(url);
addImage([url]);
}
},
fail: (err) => {
console.log(err);
},
});
});
}
});
}
const readImages = async (localIds) => {
uni.showLoading({
title: "正在上传图片...",
mask: true,
});
console.log(localIds);
let promiseFun = [];
for (var i = 0; i < localIds.length; i++) {
let img = null;
// #ifdef H5
let imgBase64 = await getImageBase64(localIds[i]);
img = await fillTextToImg(imgBase64);
// #endif
// #ifdef MP-WEIXIN
img = await fillTextToImgWx(localIds[i]);
// #endif
promiseFun.push(getOss(img))
};
Promise.all(promiseFun).then((res) => {
uni.showToast({
duration: 1000,
message: "上传成功",
icon:"none"
});
});
}
const insertImage = (file) => {
showCanvas.value=true;
//if (!(!isFocusInfo.value && !isFocusResult.value)) {
uni.chooseImage({
count: 9, //默认9
sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
sourceType: ["album"], //从相册选择
extension: [".jpg", ".png", ".jpeg"],
success: function (res) {
readImages(res.tempFilePaths);
},
});
//}
};
const HandleAddVideo = async (file) => {
uni.showLoading({
title: "正在上传视频...",
mask: true,
});
const videos = await addVideo(async (PeditorCtx) => {
return new Promise((resolve) => {
api
.getOss({
scene:2,
})
.then((rep) => {
let result = rep.data;
if (result.code == 200) {
let { access_id, dir, policy, signature, host } = result.data;
let time = dayjs().format("YYYYMMDDHHmmss");
let random = generateRandomNumber();
let filename = time + random;
let imgType = "." + getImageFormat(file);
return new Promise((res, reject) => {
uni.uploadFile({
url: host, // 仅为示例,非真实的接口地址
filePath: file,
name: "file",
formData: {
OSSAccessKeyId: access_id,
policy,
key: dir + time + random + imgType,
signature,
},
async success(res) {
if (res.statusCode === 204) {
let url = host + "/" + dir + filename + imgType;
const fileThumbnail = await PeditorCtx.createCoverThumbnail(videoface.value);
resolve([
{
videoUrl: url,
videoImg: fileThumbnail,
},
]);
}
},
fail: (err) => {
console.log(err);
},
});
});
}
});
});
});
if (videos) {
uni.hideLoading();
uni.showToast({ title: "添加视频成功", icon: "none" });
} else {
uni.showToast({ title: "添加视频失败", icon: "none" });
}
};
const insertVideo = (file) => {
//if (!(!isFocusInfo.value && !isFocusResult.value)) {
uni.chooseVideo({
count: 5, //默认9//可以指定是原图还是压缩图,默认二者都有
sourceType: ["album"], //从相册选择
extension: [".mp4", ".webm", ".ogg"],
success: function (res) {
console.log(res.tempFilePath);
HandleAddVideo(res.tempFilePath);
//pFun([res.tempFilePath], "video");
},
});
//}
};
const closeTitle = () => {
showTitle.value = false;
};
const openTitle = () => {
showTitle.value = true;
};
const alertTitle = () => {
console.log('qqqqqq')
showTitle.value = true;
};
const initData=(data)=>{
console.log('init');
console.log(data)
htmlContent.value=data;
}
defineExpose({initData})
</script>
<style lang='scss' scoped>
.row{
padding: 30rpx 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.left{
font-size: 38rpx;
color: #000000;
}
.tip {
color: #9ca3af;
font-size: 32rpx;
}
.right{
display: flex;
align-items: center;
color: #6b7280;
font-size: 31rpx;
}
}
.navbox {
padding-bottom: 20rpx;
background-color: #f9fafb;
position: relative;
height: 200rpx;
background: radial-gradient(
60% 90% at 4% 2%,
#43c9c3 0%,
rgba(255, 255, 255, 0) 100%
);
.bg {
z-index: 0;
top: 0;
bottom: 0;
width: 100%;
position: absolute;
background: radial-gradient(
43% 90% at 84% 6%,
#ffd6c9 0%,
rgba(255, 255, 255, 0) 100%
);
}
.namebox {
padding-top: 102rpx;
justify-content: center;
margin: 0rpx 30rpx 0rpx;
position: relative;
display: flex;
.back {
position: absolute;
left: 0;
}
.name {
margin-left: 16rpx;
font-size: 30rpx;
color: #111827;
}
}
.search {
margin: 40rpx 30rpx 0rpx;
display: flex;
align-items: center;
justify-content: space-between;
.searchwrap {
display: flex;
align-items: center;
flex: 1;
padding-left: 28rpx;
margin-right: 23rpx;
height: 80rpx;
background: #fbfbfb;
box-shadow: 0px 4rpx 10rpx 0px rgba(153, 153, 153, 0.5);
border-radius: 40rpx;
.ipt {
margin-left: 15rpx;
font-size: 28rpx;
}
}
}
}
.container {
position: absolute;
top: 180rpx;
left: 0;
bottom:200rpx;
width: 100%;
}
.editorbox{
width: 100%;
height: 100%;
font-size: 16px;
box-sizing:border-box;
overflow-y: scroll;
padding: 10rpx 30rpx 10rpx ;
}
.ql-active {
color: #22C704;
}
.btn{
flex:1;
width:180rpx;
background:#3cc7c0;
display:flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
color:#fff;
height: 60rpx;
border-radius: 8rpx;
}
.iconfont {
display: inline-block;
width: 30px;
height: 30px;
cursor: pointer;
font-size: 20px;
}
.toolbar {
box-sizing: border-box;
padding: 0 10px;
height: 50px;
width: 100%;
position: fixed;
left: 0;
right: 100%;
bottom: 0;
display: flex;
align-items: center;
justify-content: space-between;
border: 1px solid #ECECEC;
border-left: none;
border-right: none;
}
.page{
position: fixed;
width:100%;
height:100vh;
background-color: #fff;
bottom:0;
z-index:999;
}
.toolbox {
/* border-top: 2rpx solid #f3f4f6; */
padding: 22rpx 30rpx;
width:100%;
box-sizing:border-box;
display: flex;
align-items: center;
.cellbox{
width:480rpx;
display: flex;
align-items: center;
/* justify-content: space-between; */
}
.imgbox{
width:32rpx;
height:32rpx;
}
.imgbox.active{
margin-top: -9rpx;
}
.cell {
width:134rpx;
margin-right: 20rpx;
display: flex;
flex-wrap: nowrap;
align-items: center;
.name {
font-size: 25rpx;
margin-left: 4rpx;
color: #4b5563;
white-space: nowrap;
}
}
.cell:last-child{
margin-right: 0;
}
.cell.active {
opacity: 0.65;
}
}
.draftpop {
.titlebox {
text-align: center;
padding: 30rpx;
font-size: 31rpx;
color: #111827;
position: relative;
.close {
position: absolute;
top: 20rpx;
right: 30rpx;
}
}
.draftlist {
height: calc(100vh - 500rpx);
overflow-y: scroll;
.cell {
padding-bottom: 34rpx;
border-bottom: 2rpx solid #e5e7eb;
.title {
margin: 15rpx 30rpx 0;
font-size: 36rpx;
color: #111827;
line-height: 46rpx;
}
.smalltitle {
margin: 4px 0rpx 0;
font-size: 30rpx;
color: #666666;
line-height: 38rpx;
}
.con {
font-size: 30rpx;
color: #666666;
line-height: 38rpx;
font-size: 30rpx;
color: #666666;
line-height: 38rpx;
}
.deal {
margin: 36rpx 30rpx 0;
display: flex;
justify-content: space-between;
align-items: center;
.time {
font-size: 26rpx;
color: #9ca3af;
}
.right {
display: flex;
align-items: center;
}
.del {
width: 138rpx;
height: 62rpx;
background: #f3f4f6;
display: flex;
border-radius: 20rpx;
align-items: center;
font-size: 27rpx;
color: #4b5563;
justify-content: center;
}
.edit {
margin-left: 23rpx;
display: flex;
align-items: center;
justify-content: center;
width: 192rpx;
height: 62rpx;
font-size: 27rpx;
color: #ffffff;
background: #3cc7c0;
border-radius: 20rpx;
}
}
}
}
}
.titlepop {
.top {
display: flex;
align-items: center;
justify-content: flex-end;
margin: 0 30rpx;
margin-bottom: 30rpx;
font-size: 30rpx;
color: #3cc7c0;
}
.con {
padding-bottom: 50rpx;
}
.cellbox {
margin: 20rpx 30rpx;
display: flex;
justify-content: space-between;
.cell {
width: 200rpx;
height: 60rpx;
border-radius: 25rpx;
display: flex;
justify-content: center;
align-items: center;
background: #e5e7eb78;
font-size: 24rpx;
}
}
}
.upage :deep(.ql-container) {
padding-bottom: 25rpx;
height: calc(100vh - 600rpx)!important;
}
.upage :deep(.ql-container){
padding-bottom: 25rpx;
height: calc(100vh - 700rpx);
}
.upage :deep(.ql-container) img{
max-width:100%;
position: relative;
left:50%;
transform: translateX(-50%);
}
.upage :deep(.ql-container) image{
max-width:100%;
position: relative;
left:50%;
transform: translateX(-50%);
}
/* #ifdef H5 */
:deep(.ql-editor){
position: absolute;
top: 0;
bottom: 0;
width:100%;
}
/* #endif */
</style>