cloud-web-corejs 1.0.54-dev.685 → 1.0.54-dev.686
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/api/user.js +15 -2
- package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
- package/src/components/VabUpload/index.js +22 -2
- package/src/components/VabUpload/index.vue +9 -1
- package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
- package/src/components/VabUpload/mixins.js +106 -47
- package/src/components/xform/form-designer/designer.js +7 -0
- package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
- package/src/components/xform/form-designer/setting-panel/form-setting.vue +9 -0
- package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +306 -0
- package/src/components/xform/form-designer/setting-panel/propertyRegister.js +1 -0
- package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +18 -0
- package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
- package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +322 -0
- package/src/components/xform/form-render/container-item/table-item.vue +3 -5
- package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
- package/src/components/xform/form-render/index.vue +2 -1
- package/src/components/xform/mixins/defaultHandle.js +33 -0
- package/src/components/xform/utils/util.js +7 -0
package/package.json
CHANGED
package/src/api/user.js
CHANGED
|
@@ -32,6 +32,19 @@ export function saveAccessMenuLog(option) {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
export function saveUserLog(option) {
|
|
36
|
+
let data = {
|
|
37
|
+
logType: "operationLog",
|
|
38
|
+
...option.data,
|
|
39
|
+
};
|
|
40
|
+
return request({
|
|
41
|
+
url: USER_PREFIX + "/user_log/save",
|
|
42
|
+
method: "post",
|
|
43
|
+
...option,
|
|
44
|
+
data,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
35
48
|
export function getLoginTp(duration, option) {
|
|
36
49
|
return request({
|
|
37
50
|
url: USER_PREFIX + "/thirdparty_auth/getTp",
|
|
@@ -106,9 +119,9 @@ export function getLoginConfig(option) {
|
|
|
106
119
|
});
|
|
107
120
|
}
|
|
108
121
|
|
|
109
|
-
export function
|
|
122
|
+
export function getIdmLoginUrl(option) {
|
|
110
123
|
return request({
|
|
111
|
-
url: USER_PREFIX + "/
|
|
124
|
+
url: USER_PREFIX + "/auth/idmLoginUrl",
|
|
112
125
|
method: "post",
|
|
113
126
|
...option,
|
|
114
127
|
});
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<el-dialog
|
|
4
|
+
ref="privateProfileDialog"
|
|
5
|
+
:title="title"
|
|
6
|
+
:visible.sync="showDialog"
|
|
7
|
+
v-if="showDialog"
|
|
8
|
+
:append-to-body="true"
|
|
9
|
+
:close-on-click-modal="false"
|
|
10
|
+
width="1102px"
|
|
11
|
+
custom-class="dialog-style drag-space"
|
|
12
|
+
:destroy-on-close="true"
|
|
13
|
+
@close="handleClose"
|
|
14
|
+
v-el-drag-dialog
|
|
15
|
+
top="0px"
|
|
16
|
+
>
|
|
17
|
+
<div id="containt1">
|
|
18
|
+
<div v-show="title!='' && title !== null && title !== undefined" style="overflow: hidden;" class="flex">
|
|
19
|
+
<div class="tree-box tree-annex fl">
|
|
20
|
+
<div class="tit"><b>{{ title }}</b></div>
|
|
21
|
+
<div class="tree-form">
|
|
22
|
+
<el-input placeholder="请输入文件夹名称" v-model="filterText" class="txt">
|
|
23
|
+
<el-button slot="append" icon="el-icon-search"></el-button>
|
|
24
|
+
</el-input>
|
|
25
|
+
</div>
|
|
26
|
+
<el-tree
|
|
27
|
+
v-if="treeFlag"
|
|
28
|
+
:props="defaultProps"
|
|
29
|
+
:load="loadNode"
|
|
30
|
+
node-key="id"
|
|
31
|
+
ref="tree"
|
|
32
|
+
lazy
|
|
33
|
+
:filter-node-method="filterNode"
|
|
34
|
+
:expand-on-click-node="false"
|
|
35
|
+
@node-click="handleNodeClick"
|
|
36
|
+
class="tree-list"
|
|
37
|
+
icon-class="el-icon-arrow-down"
|
|
38
|
+
>
|
|
39
|
+
<span class="el-tree-node__label" slot-scope="{ node, data }" v-if="!node.data.moreBtn">
|
|
40
|
+
<i class="ico-wenjian"></i>
|
|
41
|
+
<span>{{ node.label }}</span>
|
|
42
|
+
</span>
|
|
43
|
+
<span v-else class="el-tree-node__label">
|
|
44
|
+
<el-button type="primary" plain class="button-sty">{{ node.label }}</el-button>
|
|
45
|
+
</span>
|
|
46
|
+
</el-tree>
|
|
47
|
+
</div>
|
|
48
|
+
<label id="labBtn">
|
|
49
|
+
<div class="icon">
|
|
50
|
+
<i class="el-icon-more"></i>
|
|
51
|
+
<i class="el-icon-more"></i>
|
|
52
|
+
</div>
|
|
53
|
+
</label>
|
|
54
|
+
<div class="main-right file-library fr" style="overflow: hidden;">
|
|
55
|
+
<div class="annex-filter" v-if="isBillEnabled">
|
|
56
|
+
<el-button slot="append" icon="el-icon-search" @click="openBillDialog" size="mini" class="an-btn-search"
|
|
57
|
+
type="success"></el-button>
|
|
58
|
+
<div class="abox">
|
|
59
|
+
<div class="item" v-for="(checkBillData,index) in checkBillDatas" :key="index"><span>{{
|
|
60
|
+
getBillLabel(checkBillData)
|
|
61
|
+
}}</span><i
|
|
62
|
+
class="el-icon-close" @click="deleteBillData(index)"></i></div>
|
|
63
|
+
</div>
|
|
64
|
+
<el-button slot="append" icon="el-icon-delete" size="mini" class="an-btn-del" @click="clearBill">全部删除
|
|
65
|
+
</el-button>
|
|
66
|
+
</div>
|
|
67
|
+
<div class="annex-screen"
|
|
68
|
+
v-if="fileObjAuth.downloadAuth">
|
|
69
|
+
<el-button type="primary" class="button-sty" icon="el-icon-download" @click.native="mulDownload2"
|
|
70
|
+
v-if="fileObjAuth.downloadAuth">下载
|
|
71
|
+
</el-button>
|
|
72
|
+
</div>
|
|
73
|
+
<div class="line"
|
|
74
|
+
v-if="fileObjAuth.downloadAuth"></div>
|
|
75
|
+
<div class="annex-crumbs">
|
|
76
|
+
<span class="tit"><i class="iconfont icon-wenjianjia"></i>文件区</span>
|
|
77
|
+
<span class="tit" style="padding-right: 0;">指定路径:</span>
|
|
78
|
+
<el-breadcrumb separator-class="el-icon-arrow-right">
|
|
79
|
+
<el-breadcrumb-item v-for="treeNode in treeNodeArr" :key="treeNode.id" @click.native="doNav(treeNode)">
|
|
80
|
+
{{
|
|
81
|
+
treeNode.label
|
|
82
|
+
}}
|
|
83
|
+
</el-breadcrumb-item>
|
|
84
|
+
</el-breadcrumb>
|
|
85
|
+
</div>
|
|
86
|
+
<div class="grid-height viewBox">
|
|
87
|
+
<div class="annex-searchBox">
|
|
88
|
+
<div class="fl">
|
|
89
|
+
<div class="oper">
|
|
90
|
+
<el-checkbox v-model="checkAll" @change="changeCheckAll" :disabled="checkAllDisabled"
|
|
91
|
+
:indeterminate="checkAllIndeterminate">已选中 {{
|
|
92
|
+
checkList.length
|
|
93
|
+
}} 项
|
|
94
|
+
</el-checkbox>
|
|
95
|
+
</div>
|
|
96
|
+
<div class="search-box">
|
|
97
|
+
<template v-if="currentFileCategory && currentFileCategory.id">
|
|
98
|
+
<el-input placeholder="请输入文件名" v-model="formData.fileName" clearable>
|
|
99
|
+
<el-button slot="append" icon="el-icon-search" @click="searchEvent"></el-button>
|
|
100
|
+
</el-input>
|
|
101
|
+
<el-button icon="iconfont icon-shaixuan" class="button-sty" @click="showAdvancedSearch = true">筛选
|
|
102
|
+
</el-button>
|
|
103
|
+
</template>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
</div>
|
|
107
|
+
<div class="fr">
|
|
108
|
+
<el-button type="primary" icon="iconfont icon-icmenu2" @click="changeShowType()"
|
|
109
|
+
class="button-sty icon-btn"
|
|
110
|
+
v-show="showType==1">列表
|
|
111
|
+
</el-button>
|
|
112
|
+
<el-button type="primary" style="margin-left:0;" icon="el-icon-menu" @click="changeShowType()"
|
|
113
|
+
class="button-sty icon-btn"
|
|
114
|
+
v-show="showType==2">图示
|
|
115
|
+
</el-button>
|
|
116
|
+
</div>
|
|
117
|
+
</div>
|
|
118
|
+
<div class="mask" v-show="is_show_mask">
|
|
119
|
+
</div>
|
|
120
|
+
<div class="containter1" ref="containter1" v-show="showType==1" style="overflow: auto;">
|
|
121
|
+
<div class="annex-piclist">
|
|
122
|
+
<div class="clearfix">
|
|
123
|
+
<el-checkbox-group v-model="checkList" @change="checkChange" class="f-group">
|
|
124
|
+
<template v-for="(attachment,index) in page.records">
|
|
125
|
+
<li class="item" :class="checkList.includes(attachment.id) ? 'on':''" :key="index">
|
|
126
|
+
<el-checkbox :label="attachment.id" :disabled="attachment.dirs"><span></span></el-checkbox>
|
|
127
|
+
<div class="oper">
|
|
128
|
+
<a
|
|
129
|
+
href="javascript:void(0);"
|
|
130
|
+
class="a-link ico"
|
|
131
|
+
v-if="!attachment.dirs && fileObjAuth.downloadAuth"
|
|
132
|
+
@click="$commonFileUtil.downloadFile(attachment.domain + attachment.url, attachment.fileName)"
|
|
133
|
+
>
|
|
134
|
+
<el-tooltip effect="dark" content="下载" placement="top"
|
|
135
|
+
popper-class="tooltip-skin">
|
|
136
|
+
<i class="el-icon-download"/>
|
|
137
|
+
</el-tooltip>
|
|
138
|
+
</a>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="img" @click="openPreview(attachment)" v-if="!attachment.dirs">
|
|
141
|
+
<div class="show-video" v-if="hasPreview(attachment)"><i class="icon-chakan"></i></div>
|
|
142
|
+
<div class="show-video" v-if="false"><i class="el-icon-video-play"></i></div>
|
|
143
|
+
<p><img :src="getShowUrl(attachment)"/></p>
|
|
144
|
+
</div>
|
|
145
|
+
<div class="img" @click="changeCategory(attachment)" v-if="attachment.dirs">
|
|
146
|
+
<svg-icon icon-class="ico-wenjianjia"/>
|
|
147
|
+
</div>
|
|
148
|
+
<el-tooltip :enterable="false" effect="dark" :content="attachment.fileName" placement="top">
|
|
149
|
+
<div class="txt-box">
|
|
150
|
+
<div class="tb-left"></div>
|
|
151
|
+
<div class="tb-mid">
|
|
152
|
+
<div class="txt">
|
|
153
|
+
<span class="name">{{ getFileName(attachment) }}</span><span
|
|
154
|
+
v-if="attachment.extension">.{{ attachment.extension }}</span>
|
|
155
|
+
</div>
|
|
156
|
+
</div>
|
|
157
|
+
<div class="format">... .{{ attachment.extension }}</div>
|
|
158
|
+
</div>
|
|
159
|
+
|
|
160
|
+
</el-tooltip>
|
|
161
|
+
</li>
|
|
162
|
+
</template>
|
|
163
|
+
</el-checkbox-group>
|
|
164
|
+
</div>
|
|
165
|
+
<div class="vxe-grid">
|
|
166
|
+
<div class="vxe-grid--pager-wrapper">
|
|
167
|
+
<vxe-pager
|
|
168
|
+
class="pages-box"
|
|
169
|
+
:current-page.sync="page.current"
|
|
170
|
+
:page-size.sync="page.size"
|
|
171
|
+
:total="page.total"
|
|
172
|
+
:layouts="['PrevPage', 'Number', 'NextPage']"
|
|
173
|
+
@page-change="changePageNew"
|
|
174
|
+
>
|
|
175
|
+
<template #right>
|
|
176
|
+
<span>
|
|
177
|
+
<span>当前记录</span>
|
|
178
|
+
<span class="f-red"> {{ page.records.length }} </span>
|
|
179
|
+
<span>/</span>
|
|
180
|
+
<span class="f-red"> {{ page.total }}</span>
|
|
181
|
+
</span>
|
|
182
|
+
</template>
|
|
183
|
+
</vxe-pager>
|
|
184
|
+
</div>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</div>
|
|
188
|
+
<div class="annex-grid-height">
|
|
189
|
+
<vxe-grid v-show="showType==2" ref="table-m1" v-bind="vxeOption" :data="page.records"
|
|
190
|
+
@resizable-change="$vxeTableUtil.onColumnWitchChange" @custom="$vxeTableUtil.customHandle"
|
|
191
|
+
@checkbox-change="tableCheckChange"
|
|
192
|
+
@checkbox-all="tableCheckAll">
|
|
193
|
+
<template #pager>
|
|
194
|
+
<vxe-pager
|
|
195
|
+
class="pages-box"
|
|
196
|
+
:current-page.sync="page.current"
|
|
197
|
+
:page-size.sync="page.size"
|
|
198
|
+
:total="page.total"
|
|
199
|
+
:layouts="['PrevPage', 'Number', 'NextPage']"
|
|
200
|
+
@page-change="changePageNew"
|
|
201
|
+
>
|
|
202
|
+
<template #right>
|
|
203
|
+
<span>
|
|
204
|
+
<span>当前记录</span>
|
|
205
|
+
<span class="f-red"> {{ page.records.length }} </span>
|
|
206
|
+
<span>/</span>
|
|
207
|
+
<span class="f-red"> {{ page.total }}</span>
|
|
208
|
+
</span>
|
|
209
|
+
</template>
|
|
210
|
+
</vxe-pager>
|
|
211
|
+
</template>
|
|
212
|
+
</vxe-grid>
|
|
213
|
+
</div>
|
|
214
|
+
</div>
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
</div>
|
|
218
|
+
<span slot="footer" class="dialog-footer">
|
|
219
|
+
<el-button type="primary" plain class="button-sty" @click="handleClose">
|
|
220
|
+
<i class="el-icon-close el-icon"></i>
|
|
221
|
+
{{ $t2('取 消', 'system.button.cancel2') }}
|
|
222
|
+
</el-button>
|
|
223
|
+
<el-button type="primary" @click="dialogPrimary" class="button-sty">
|
|
224
|
+
<i class="el-icon-check el-icon"></i>
|
|
225
|
+
{{ $t2('确 定', 'system.button.confirm2') }}
|
|
226
|
+
</el-button>
|
|
227
|
+
</span>
|
|
228
|
+
</el-dialog>
|
|
229
|
+
<el-image-viewer v-if="showViewer" :on-close="() => {showViewer = false;}" :initial-index.sync="chooseIndex"
|
|
230
|
+
:url-list="imageDTOs"/>
|
|
231
|
+
<advancedSearchDialog v-if="showAdvancedSearch" :visiable.sync="showAdvancedSearch"
|
|
232
|
+
:formData.sync="advancedFormData" @confirm="searchEvent">
|
|
233
|
+
<template #form>
|
|
234
|
+
<vxe-form :model="advancedFormData" title-width="102px" :inline="true" class="adSearchForm">
|
|
235
|
+
<vxe-form-item title="属性名称:">
|
|
236
|
+
<template v-slot>
|
|
237
|
+
<el-input v-model="advancedFormData.attributeName" clearable/>
|
|
238
|
+
</template>
|
|
239
|
+
</vxe-form-item>
|
|
240
|
+
<vxe-form-item title="属性值:">
|
|
241
|
+
<template v-slot>
|
|
242
|
+
<el-input v-model="advancedFormData.attributeValue" clearable/>
|
|
243
|
+
</template>
|
|
244
|
+
</vxe-form-item>
|
|
245
|
+
<!-- <vxe-form-item title="状态:">
|
|
246
|
+
<template v-slot>
|
|
247
|
+
<el-select v-model="advancedFormData.status" clearable>
|
|
248
|
+
<el-option :value="0" label="未归档"></el-option>
|
|
249
|
+
<el-option :value="1" label="已归档"></el-option>
|
|
250
|
+
</el-select>
|
|
251
|
+
</template>
|
|
252
|
+
</vxe-form-item>-->
|
|
253
|
+
<vxe-form-item title="说明:" class-name="block">
|
|
254
|
+
<template v-slot>
|
|
255
|
+
<el-input v-model="advancedFormData.note" clearable/>
|
|
256
|
+
</template>
|
|
257
|
+
</vxe-form-item>
|
|
258
|
+
<vxe-form-item title="创建时间:">
|
|
259
|
+
<template v-slot>
|
|
260
|
+
<el-date-picker
|
|
261
|
+
v-model="advancedFormData.startTime"
|
|
262
|
+
type="date"
|
|
263
|
+
placeholder=""
|
|
264
|
+
size="small"
|
|
265
|
+
clearable
|
|
266
|
+
value-format="yyyy-MM-dd"
|
|
267
|
+
:picker-options="$baseStartPickerOptions(advancedFormData.endTime)"
|
|
268
|
+
></el-date-picker>
|
|
269
|
+
<span>-</span>
|
|
270
|
+
<el-date-picker
|
|
271
|
+
v-model="advancedFormData.endTime"
|
|
272
|
+
type="date"
|
|
273
|
+
placeholder=""
|
|
274
|
+
size="small"
|
|
275
|
+
clearable
|
|
276
|
+
value-format="yyyy-MM-dd"
|
|
277
|
+
:picker-options="$baseEndPickerOptions(advancedFormData.startTime)"
|
|
278
|
+
></el-date-picker>
|
|
279
|
+
</template>
|
|
280
|
+
</vxe-form-item>
|
|
281
|
+
</vxe-form>
|
|
282
|
+
</template>
|
|
283
|
+
</advancedSearchDialog>
|
|
284
|
+
</div>
|
|
285
|
+
</template>
|
|
286
|
+
|
|
287
|
+
<script>
|
|
288
|
+
import mixins from './mixins/fileLibraryDialog'
|
|
289
|
+
|
|
290
|
+
export default {
|
|
291
|
+
mixins: [mixins]
|
|
292
|
+
};
|
|
293
|
+
</script>
|
|
294
|
+
<style lang="scss" scoped>
|
|
295
|
+
|
|
296
|
+
</style>
|
|
@@ -2,13 +2,15 @@ const moudule = {};
|
|
|
2
2
|
import vue from "vue";
|
|
3
3
|
import objView from './index.vue';
|
|
4
4
|
import {openObsUploadDialog} from "@base/components/obsUpload/index.js"
|
|
5
|
+
import fileLibraryDialog from './fileLibraryDialog.vue'
|
|
5
6
|
|
|
6
7
|
let configUtil = {
|
|
7
8
|
vue,
|
|
8
9
|
objView
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
const objInstance =
|
|
12
|
+
const objInstance = vue.extend(configUtil.objView);
|
|
13
|
+
const fileLibraryDialogInstance = vue.extend(fileLibraryDialog);
|
|
12
14
|
const initInstance = (containter) => {
|
|
13
15
|
// 实例化vue实例
|
|
14
16
|
let currentInstance = new objInstance({i18n: window.$vueRoot._i18n});
|
|
@@ -16,6 +18,16 @@ const initInstance = (containter) => {
|
|
|
16
18
|
containter.appendChild(dom);
|
|
17
19
|
return currentInstance;
|
|
18
20
|
};
|
|
21
|
+
const initFileLibraryDialogInstance = (containter, options = {}) => {
|
|
22
|
+
// 实例化vue实例
|
|
23
|
+
let currentInstance = new fileLibraryDialogInstance({
|
|
24
|
+
i18n: window.$vueRoot._i18n,
|
|
25
|
+
propsData: options
|
|
26
|
+
});
|
|
27
|
+
let dom = currentInstance.$mount().$el;
|
|
28
|
+
containter.appendChild(dom);
|
|
29
|
+
return currentInstance;
|
|
30
|
+
};
|
|
19
31
|
|
|
20
32
|
function toDo(options) {
|
|
21
33
|
let model = window.$vueRoot.$store.getters.fileServerInfo?.model;
|
|
@@ -33,6 +45,12 @@ function toDo(options) {
|
|
|
33
45
|
|
|
34
46
|
};
|
|
35
47
|
|
|
48
|
+
function openFileLibrary(options = {}) {
|
|
49
|
+
let containter = document.body;
|
|
50
|
+
let currentInstance = initFileLibraryDialogInstance(containter, options);
|
|
51
|
+
return currentInstance.handleShow(options);
|
|
52
|
+
};
|
|
53
|
+
|
|
36
54
|
function toDo2(options) {
|
|
37
55
|
let containter = document.body;
|
|
38
56
|
let currentInstance = initInstance(containter);
|
|
@@ -46,8 +64,10 @@ moudule.install = function (Vue) {
|
|
|
46
64
|
// 在Vue的原型上添加实例方法,以全局调用
|
|
47
65
|
Vue.prototype.$baseUpload = {
|
|
48
66
|
open: toDo,
|
|
49
|
-
upload: toDo2
|
|
67
|
+
upload: toDo2,
|
|
68
|
+
|
|
50
69
|
}
|
|
70
|
+
Vue.prototype.$openFileLibraryDialog = openFileLibrary;
|
|
51
71
|
};
|
|
52
72
|
|
|
53
73
|
export default moudule;
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
</div>
|
|
129
129
|
</div>
|
|
130
130
|
<span slot="footer" class="dialog-footer">
|
|
131
|
-
<div class="fl"
|
|
131
|
+
<div class="fl" :class="{showPasteArea:!hidePasteArea}">
|
|
132
132
|
<el-button type="warning" class="button-sty" slot="trigger" v-if="showLocalUploadBtn"
|
|
133
133
|
@click="$refs.uploadBtn.click()">
|
|
134
134
|
<i class="el-icon-plus"></i>
|
|
@@ -139,6 +139,11 @@
|
|
|
139
139
|
<i class="iconfont icon-wendangshangchuan"></i>
|
|
140
140
|
{{ $t2('从个人文档工作区选择', 'components.VabUpload.privateDocumentPick') }}
|
|
141
141
|
</el-button>
|
|
142
|
+
<el-button type="success" class="button-sty" @click="openFileLibraryDialog"
|
|
143
|
+
v-if="showFileLibraryButton && !!fileLibraryName">
|
|
144
|
+
<i class="iconfont icon-wendangshangchuan"></i>
|
|
145
|
+
{{ fileLibraryName }}
|
|
146
|
+
</el-button>
|
|
142
147
|
</div>
|
|
143
148
|
|
|
144
149
|
<el-button type="primary" plain class="button-sty" @click="handleClose">
|
|
@@ -228,4 +233,7 @@ export default {
|
|
|
228
233
|
margin-top: 0 !important;
|
|
229
234
|
}
|
|
230
235
|
}
|
|
236
|
+
.showPasteArea {
|
|
237
|
+
margin-left:291px
|
|
238
|
+
}
|
|
231
239
|
</style>
|