detail.vue 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576
  1. <template>
  2. <div class="contentDataMain">
  3. <div class="userTop" v-if="!isAdd">
  4. <div class="userMidle">
  5. <div class="albumTitle">
  6. <div>{{detailDataBase.name}}</div>
  7. <div class="categoryBox">
  8. <div v-for="(item0, index) in detailDataBase.categoryArr" :key="index">
  9. <div>
  10. {{item0}}
  11. </div>
  12. <a-divider v-if="index!=(detailDataBase.categoryArr.length-1)" class="lineBox" type="vertical" />
  13. </div>
  14. </div>
  15. <div :class="'approvalBox stateBox'+detailDataBase.versionState" v-if="detailDataBase.versionStateName!=''&&detailDataBase.versionStateName!=null&&detailDataBase.versionState!=2">
  16. {{ detailDataBase.versionStateName }}
  17. </div>
  18. </div>
  19. <div class="albumUserList">
  20. <img class="albumHead" :src="header0"/>
  21. <div>{{detailDataBase.owner}}</div>
  22. <div>{{detailDataBase.ownerCompany}}-{{detailDataBase.ownerDepartment}}</div>
  23. </div>
  24. <div class="albumTimesList">
  25. <div class="timesBox">
  26. <div>{{detailDataBase.views}}</div>
  27. <div>阅读量</div>
  28. </div>
  29. <div class="timesBox">
  30. <div>{{detailDataBase.yelpTotal}}</div>
  31. <div>点评量</div>
  32. </div>
  33. </div>
  34. <div class="button-group" v-if="detailDataBase.actionFlag.indexOf('edit')>-1">
  35. <a-button style="background:#406CC4;color:#fff;margin-right: 1.14583vw;" @click="changeEdite">编辑</a-button>
  36. <a-button @click="$router.back()" style="color: #406CC4;border-color: #406CC4;display: none;">取消</a-button>
  37. </div>
  38. </div>
  39. <div class="userEnd">
  40. <div class="albumPhoto">
  41. <img :src="imgUrl" @click="openPreview(detailDataBase.cover)"/>
  42. <div>{{detailDataBase.createTime}}</div>
  43. </div>
  44. </div>
  45. </div>
  46. <div class="userTopAdd" v-else>
  47. <div class="addTitle">
  48. <div class="addTitleText">{{ titleData }}</div>
  49. <div class="button-groupAdd">
  50. <a-button style="background:#406CC4;color:#fff;margin-right: 1.25vw;" @click="handleSaveClick">提交</a-button>
  51. <a-button @click="goBack" style="color: #406CC4;border-color: #406CC4;">取消</a-button>
  52. </div>
  53. </div>
  54. <a-form-model labelAlign="right" ref="knowledgeRef" :rules="knowledgeRules" :model="knowledgeForm" layout="inline" >
  55. <a-form-model-item class="knowledgeAddUpdateLabel oneline" label="所选分类:" prop="categoryId" style="font-size:0.93vw">
  56. <a-cascader v-model="knowledgeForm.categoryId"
  57. class="addItemBox"
  58. :options="classifyList"
  59. :fieldNames="{ label: 'name', value: 'pkId', children: 'children' }"
  60. placeholder="请选择"
  61. changeOnSelect
  62. popupClassName="knowledgeCascader">
  63. <a-icon slot="suffixIcon" type="caret-down" class="classifyIconBox"/>
  64. </a-cascader>
  65. </a-form-model-item>
  66. <a-form-model-item class="knowledgeAddUpdateLabel oneline" label="专辑标题:" prop="name" style="margin-top: -5px;">
  67. <a-input style='width: 46.0416vw;' @change='titlesChange' class="addItemBox" maxLength="20" v-model="knowledgeForm.name" placeholder="请输入" >
  68. <div slot="suffix" style="color: #C0C0C0;">
  69. {{titlesNum}}
  70. </div>
  71. </a-input>
  72. </a-form-model-item>
  73. <a-form-model-item class="knowledgeAddUpdateLabel" label=" 缩略图:" prop="cover" style="margin-top: 2.4vw;margin-bottom: 0px;">
  74. <a-upload-dragger
  75. v-if="!knowledgeForm.cover"
  76. name="file"
  77. class="uploadBox"
  78. :headers="headers"
  79. action="/api/api-system/system/core/sysFile/upload"
  80. :showUploadList="false"
  81. @change="handleChange"
  82. :beforeUpload="beforeUpload"
  83. >
  84. <p class="ant-upload-drag-icon">
  85. <img v-if="!loading" :src="add" alt="">
  86. <a-icon v-else type="loading" />
  87. </p>
  88. <p class="ant-upload-text" v-if="!loading">
  89. 点击或将文件拖拽到这里上传
  90. <br/>
  91. (仅可上传一份)
  92. </p>
  93. <p class="ant-upload-text" v-else>
  94. 上传中...
  95. <br/>
  96. (仅可上传一份)
  97. </p>
  98. <p class="ant-upload-hint">
  99. 支持扩展名:.png .jpg(推荐尺寸342*226)
  100. </p>
  101. </a-upload-dragger>
  102. <div v-else class="imgBox">
  103. <img class="uploadImg" :src="'/api/api-system/system/core/sysFile/previewFile?fileId='+knowledgeForm.cover"/>
  104. <rx-button style="font-size: 1vw;color: #406CC4;" class="clearBtn" :butn-icon="'none'" @click="handleFileDelClick">删除</rx-button>
  105. </div>
  106. </a-form-model-item>
  107. </a-form-model>
  108. </div>
  109. <div class="tabBoxContent">
  110. <div v-for="(item, index) in tapArr" :key="index" @click="changeAction(item.id)">
  111. <span>{{item.name}}</span>
  112. <img v-if="tapAction==item.id" src="../../../../image/tabAction.png"/>
  113. </div>
  114. <a-divider class="lineBorder"/>
  115. </div>
  116. <div class="searchBoxContent" v-show="(tapAction==0)">
  117. <div class="DataBoxContent" style="position: relative;">
  118. <a-input maxLength="500" :disabled="!(isAdd)" @change='detailChange' class="detailBox" v-model="detailData" type="textarea" :autosize="{minRows: 10, maxRows: 26}" placeholder="请输入" >
  119. </a-input>
  120. </div>
  121. </div>
  122. <div class="searchBoxContent" v-show="(tapAction==1)">
  123. <div class="DataBoxContent">
  124. <div class="albumBox">
  125. <div class="albumBoxLeft">
  126. <a-button class="creatBtn" @click="addOpen" v-if="isAdd">创建目录</a-button>
  127. <div class="albumList" v-if="isAdd">
  128. <div v-dragging="{item: item, list:albumArr}" :key="index" :draggable= "true" @click="changeCatalogue(index)" :class="albumPkId==item.pkId?'albumitem actionAlbum':'albumitem'" v-for="(item, index) in albumArr">
  129. <div class="leftPoint"></div>
  130. <div class="pointText">{{item.name}}</div>
  131. <div class="albumitemBtn">
  132. <img src="../../../../image/add.png" v-if="isAdd" class="btnsty" @click="addDataOpen"/>
  133. <img src="../../../../image/del.png" v-if="isAdd" class="btnstydel" @click.stop="deleteData(index)"/>
  134. </div>
  135. </div>
  136. </div>
  137. <div class="albumList" style="margin-top:0;" v-else>
  138. <div :key="index" @click="changeCatalogue(index)" :class="albumPkId==item.pkId?'albumitem actionAlbum':'albumitem'" v-for="(item, index) in albumArr">
  139. <div class="leftPoint0"></div>
  140. <div class="pointText">{{item.name}}</div>
  141. </div>
  142. </div>
  143. </div>
  144. <div class="albumBoxRight">
  145. <div class="noDataBox" v-if="dataList.length==0">
  146. <img src="../../../../image/noDataNew.png" class="noData"/>
  147. <p class="noDataText">暂无内容</p>
  148. </div>
  149. <div v-else class="listBoxItemContent listItemClass" v-for="(item, index) in dataList" :key="index">
  150. <pageList :item="item" @delRefresh="delList(index)" :showDelete="showDelete&&isAdd"></pageList>
  151. </div>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. <div class="searchBoxContent" v-show="(tapAction==2)">
  157. <div class="noDataBox" v-if="dataList2.length==0">
  158. <img src="../../../../image/noDataNew.png" class="noData"/>
  159. <p class="noDataText">暂无搜索结果</p>
  160. </div>
  161. <div v-else class="DataBoxContent">
  162. <div class="albumBox" style="flex-direction: column;">
  163. <div class="commentTitle">
  164. 我要点评
  165. </div>
  166. <div class="submitBox">
  167. <a-input-search
  168. v-model:value="yelpContent"
  169. class="commentAdd"
  170. placeholder="评论千万条,友善第一条"
  171. enter-button="提交"
  172. maxLength="100"
  173. size="large"
  174. @search="replyAlbum"
  175. />
  176. </div>
  177. <div class="commentList">
  178. <div class="commentTitle commentPadd">
  179. 点评信息
  180. <a-radio-group v-model:value="commentType" button-style="solid" class="titleRight" @change="changeType">
  181. <a-radio-button value="1">全部点评</a-radio-button>
  182. <a-radio-button value="2">与我相关</a-radio-button>
  183. </a-radio-group>
  184. </div>
  185. <a-divider class="commentLine"/>
  186. <div class="noDataBox" v-if="yelpDataList.length==0">
  187. <img src="../../../../image/noDataNew.png" class="noData"/>
  188. <p class="noDataText">暂无内容</p>
  189. </div>
  190. <div v-else>
  191. <div class="albumListClass" v-for="(item, index) in yelpDataList" :key="index">
  192. <img v-if="item.replies.length!=0" @click="changeOpen(item)" src="../../../../image/dowmPoint.png" :class="item.open==1?'leftImg':'leftImg leftImgRotate'"/>
  193. <img v-else src="../../../../image/dowmPoint.png" class="leftImg" style="opacity: 0;cursor: default;"/>
  194. <albumList @replyYelp="replyYelp" :item="item" style="flex-grow: 1;"></albumList>
  195. </div>
  196. <div class="getMoreList" @click="getMoreList" v-if="yelpPageTotle>yelpDataList.length">
  197. 点击加载更多评论
  198. </div>
  199. </div>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. <div class="searchBoxContent" v-show="(tapAction==3)">
  205. <div class="DataBoxContent" style="padding:0px 2vw">
  206. <div class="titleAlbum" v-if="!isAdd">审批状态:<span style="background: none;" :class="'stateBox'+detailDataBase.versionState" v-if="detailDataBase.versionStateName!=''&&detailDataBase.versionStateName!=null">{{ detailDataBase.versionStateName }}</span></div>
  207. <div style="width:100%;margin-top: 1.5625vw;">
  208. <a-table class="tableBoxAlbum" :columns="approverColumns" :data-source="approverData" :pagination="false">
  209. </a-table>
  210. </div>
  211. </div>
  212. </div>
  213. <a-modal v-model="catalogueShow"
  214. :title="catalogueTitle"
  215. centered
  216. okText="保存"
  217. @ok="catalogueHandleOk"
  218. :confirmLoading="saveLoading">
  219. <a-form :model="catalogueForm" layout="inline" :label-col="{ span: 5 }">
  220. <a-form-item prop="name" style="margin-top:10px;" label="目录名称">
  221. <a-input v-model="catalogueForm.name" placeholder="请输入" maxLength="20"/>
  222. </a-form-item>
  223. <a-form-item prop="solt" style="margin-top:10px;" label="排序">
  224. <a-input-number :min="1" v-model="catalogueForm.solt" placeholder="请输入" />
  225. </a-form-item>
  226. </a-form>
  227. </a-modal>
  228. <a-modal v-model="addDataShow"
  229. title="添加目录内容"
  230. centered
  231. okText="添加"
  232. @ok="handleOkAdd"
  233. :confirmLoading="saveLoading">
  234. <a-form ref="labelRef" :model="addDataForm" layout="inline" :label-col="{ span: 5 }">
  235. <a-form-item prop="name" style="margin-top:10px;" label="内容类型">
  236. <a-select v-model="addDataForm.type" placeholder="请选择">
  237. <a-select-option class="dropdownClassli" v-for="(item,index) in knowledgeList" :key="index" :value="item.value">
  238. <span class="addSelectOption">{{item.label}}</span>
  239. </a-select-option>
  240. </a-select>
  241. </a-form-item>
  242. <a-form-item prop="name" style="margin-top:10px;" label="知识分类">
  243. <a-cascader v-model="categoryValue"
  244. :popupStyle="{
  245. maxWidth: '40vw',
  246. 'overflow-x': 'auto'
  247. }"
  248. :getPopupContainer="triggerNode => { return triggerNode.parentNode }"
  249. :options="classifyListAdd"
  250. :fieldNames="{ label: 'name', value: 'pkId', children: 'children' }"
  251. placeholder="请选择"
  252. @change="onChange"
  253. @popupVisibleChange="popupVisibleChange"
  254. popupClassName="knowledgeCascader"
  255. class="scroll-ckunk">
  256. </a-cascader>
  257. </a-form-item>
  258. <a-form-item prop="name" style="margin-top:10px;" label="选择知识">
  259. <a-select v-model="addDataForm.pkId" placeholder="请选择">
  260. <a-select-option class="dropdownClassli" v-for="(item,index) in addDataSelect" :key="index" :value="item.pkId">
  261. <span class="addSelectOption">{{item.titles}}</span>
  262. </a-select-option>
  263. </a-select>
  264. </a-form-item>
  265. </a-form>
  266. </a-modal>
  267. <a-modal
  268. title=""
  269. :visible="delVisible"
  270. :confirm-loading="false"
  271. class="delModal"
  272. :footer="null"
  273. :closable="false"
  274. dialogClass="delBox"
  275. >
  276. <div class="delBoxMain">
  277. <img src="../../../../image/confirm.png" class="confirmImg"/>
  278. <p class="confirmTitle">确认要删除这个专辑目录吗?</p>
  279. <p class="confirmContent">您删除后的专辑目录将无法恢复,请慎重操作。</p>
  280. <div>
  281. <div class="btnConfirmOk" @click="confirmOkCatalogue">确认</div>
  282. <div class="btnConfirmCancel" @click="closeDel">取消</div>
  283. </div>
  284. </div>
  285. </a-modal>
  286. <previewVisible ref="previewVisible"></previewVisible>
  287. </div>
  288. </template>
  289. <script>
  290. import add from '@/assets/img/warehouse/add.png'
  291. import header0 from '../../../../image/header0.png'
  292. import contentData from '@/api/knowledge/contentData'
  293. import album from '@/api/knowledge/album'
  294. import api from '@/api/knowledge/warehouseIndex'
  295. import pageList from '../components/pageListAlbum'
  296. import albumList from '../components/albumList'
  297. import previewVisible from '../components/previewVisible'
  298. import { ACCESS_TOKEN } from '@/store/mutation-types';
  299. import {mapState} from "vuex";
  300. export default {
  301. name: 'contentData',
  302. components: {
  303. pageList,
  304. albumList,
  305. previewVisible
  306. },
  307. computed: {
  308. ...mapState({
  309. user: (state) => state.appSetting.user,
  310. })
  311. },
  312. data() {
  313. return {
  314. pkId:'',
  315. titleData:'新增专辑',
  316. loading:false,
  317. yelpContent:'',
  318. showDelete:true,//专辑内容是否加移除
  319. detailDataBase:{
  320. actionFlag:[]
  321. },
  322. headers: {},
  323. detailNum:500,
  324. add,
  325. titlesNum:20,
  326. catalogueNum:0,
  327. knowledgeForm: {
  328. categoryId:[],
  329. cover:'',
  330. name:''
  331. },
  332. knowledgeRules: {
  333. categoryId: [
  334. { required: true, message: '请选择分类', trigger: 'blur' }
  335. ],
  336. cover: [
  337. { required: true, message: '请选择缩略图', trigger: 'blur' }
  338. ],
  339. name: [
  340. { required: true, message: '请输入专辑标题', trigger: 'blur' }
  341. ]
  342. },
  343. isAdd:true,
  344. commentType:'1',
  345. addDataSelect:[],
  346. classifyList:[],
  347. classifyListAdd:[],
  348. knowledgeList: [
  349. {value: '1', label: '文档知识'},
  350. {value: '2', label: '维基知识'}
  351. ],
  352. addDataShow:false,
  353. categoryValue:'',
  354. categoryDataArr:[],
  355. addDataForm:{
  356. type:'1',
  357. categoryId:[],
  358. pkId:undefined,
  359. },
  360. delVisible:false,
  361. catalogueForm:{
  362. name:'',
  363. solt:''
  364. },
  365. catalogueShow:false,
  366. catalogueTitle:'新增目录',
  367. saveLoading:false,
  368. detailData:'',
  369. approverColumns: [
  370. {
  371. title: '流程节点',
  372. dataIndex: 'name',
  373. align: 'center'
  374. },
  375. {
  376. title: '审批人',
  377. dataIndex: 'approverName',
  378. align: 'center'
  379. },
  380. {
  381. title: '审批状态',
  382. dataIndex: 'approvalStatus',
  383. align: 'center'
  384. },
  385. {
  386. title: '审批备注',
  387. dataIndex: 'comment',
  388. align: 'center'
  389. },
  390. {
  391. title: '时间',
  392. dataIndex: 'createTime',
  393. align: 'center'
  394. },
  395. ],
  396. approverData:[],
  397. header0,
  398. imgUrl: require('@img/avatar2.jpg'),
  399. userData:this.user,
  400. tapArr:[{id:0,name:'专辑简介'},{id:1,name:'专辑目录'},{id:2,name:'专辑点评'},{id:3,name:'审批流程'}],
  401. tapAction:0,
  402. dataList2:[
  403. {}
  404. ],
  405. albumArr:[
  406. ],
  407. albumPkId:'',
  408. albumIndex:0,
  409. dataList:[],
  410. yelpPageNum:1,
  411. yelpPageSize:10,
  412. yelpDataList:[],
  413. yelpPageTotle:0,
  414. scope: 2,
  415. widthVar: 400
  416. }
  417. },
  418. beforeRouteLeave(to, from, next) {
  419. if(to.name == 'albumIndex') {
  420. to.query.scope = this.scope
  421. }
  422. next();
  423. },
  424. mounted() {
  425. if(this.$route.query.scope) {
  426. this.scope = this.$route.query.scope
  427. }
  428. if(this.$route.query.isAdd) {
  429. this.isAdd = this.$route.query.isAdd==1?true:false
  430. }
  431. if(this.$route.query.pkId) {
  432. this.pkId = this.$route.query.pkId
  433. this.titleData = '编辑专辑'
  434. this.getInfo()
  435. this.getYelp()
  436. }
  437. if(this.isAdd){
  438. album.approvalTemplate().then((res) => {
  439. this.approverData = res.data
  440. })
  441. this.tapArr=[{id:0,name:'专辑简介'},{id:1,name:'专辑目录'},{id:3,name:'审批流程'}]
  442. }else{
  443. this.tapArr=[{id:0,name:'专辑简介'},{id:1,name:'专辑目录'}]
  444. }
  445. // 拖拽事件
  446. this.$dragging.$on("dragged", (result) => {
  447. let soltArr=this.albumArr.map(item => {
  448. return item.solt
  449. })
  450. soltArr.sort((a, b) => a - b);
  451. this.albumArr.forEach((item,index) => {
  452. item.solt=soltArr[index]
  453. })
  454. //this.dataList = this.albumArr[this.albumIndex].dataList
  455. // 将排序后的结果重新赋值
  456. //this.albumArr = result.value.list;
  457. });
  458. },
  459. created() {
  460. //this.dataList = this.albumArr[this.albumIndex].dataList
  461. var token = Vue.ls.get(ACCESS_TOKEN);
  462. if (token) {
  463. this.headers['Authorization'] = 'Bearer ' + token // 让每个请求携带token--['Authorization']为自定义key 请根据实际情况自行修改
  464. }
  465. this.init()
  466. },
  467. methods: {
  468. openPreview(src){
  469. this.$refs.previewVisible.openBig(src)
  470. },
  471. //点击加载更多评论
  472. getMoreList(){
  473. this.yelpPageNum = this.yelpPageNum+1
  474. this.getYelp()
  475. },
  476. //回复点评
  477. replyYelp(data){
  478. this.reportYelp(data.content,2,data.yelpId)
  479. },
  480. //回复专辑
  481. replyAlbum(){
  482. if(this.yelpContent==''){
  483. this.$message.error('未填写点评或回复的内容')
  484. return false
  485. }
  486. this.reportYelp(this.yelpContent,1,null)
  487. },
  488. //修改评论类型
  489. changeType(){
  490. this.yelpDataList=[]
  491. this.yelpPageNum=1
  492. this.getYelp()
  493. },
  494. //评论列表
  495. getYelp(){
  496. let getData = {
  497. pageNo:this.yelpPageNum,
  498. pageSize:this.yelpPageSize,
  499. params:{
  500. albumId:this.pkId,
  501. type:this.commentType,
  502. }
  503. }
  504. album.yelpQuery(getData).then((res) => {
  505. res.result.data.forEach(item => {
  506. item.open = 0
  507. item.replyComment = ''
  508. if(item.replies==null){
  509. item.replies = []
  510. }else{
  511. item.replies.forEach(item0 => {
  512. item0.replyComment = ''
  513. item0.replyLeft = '@'+item0.createName+' '
  514. })
  515. }
  516. })
  517. this.yelpPageTotle = res.result.totalCount
  518. this.yelpDataList = this.yelpDataList.concat(res.result.data)
  519. })
  520. },
  521. //评论回复
  522. reportYelp(content,type,yelpId){
  523. let postData = {
  524. albumId:this.pkId,
  525. content:content,
  526. type:type
  527. }
  528. if(yelpId!=null){
  529. postData.yelpId = yelpId
  530. }
  531. album.yelp(postData).then((res) => {
  532. this.yelpContent = ''
  533. let tempArr = this.yelpDataList.filter(item=>{return item.pkId==yelpId;})[0]
  534. tempArr.replyComment = ''
  535. tempArr.replies.forEach(item => {
  536. item.replyComment = ''
  537. })
  538. //this.yelpDataList=[]
  539. //this.getYelp()
  540. })
  541. },
  542. //获取详情
  543. getInfo(){
  544. let getData = {pkId:this.pkId}
  545. album.info(getData).then((res) => {
  546. this.knowledgeForm.name = res.data.name
  547. this.knowledgeForm.cover = res.data.cover
  548. this.knowledgeForm.categoryId = []
  549. if(res.data.categoryLevel1Id!=null){
  550. this.knowledgeForm.categoryId.push(res.data.categoryLevel1Id)
  551. }
  552. if(res.data.categoryLevel2Id!=null){
  553. this.knowledgeForm.categoryId.push(res.data.categoryLevel2Id)
  554. }
  555. //this.knowledgeForm.cover = res.data.cover
  556. this.detailData = res.data.summary
  557. this.detailDataBase = res.data
  558. this.detailDataBase.categoryArr = this.detailDataBase.categoryName.split('|')
  559. this.imgUrl = '/api/api-system/system/core/sysFile/previewFile?fileId='+this.detailDataBase.cover
  560. this.getApprovals()
  561. if(this.detailDataBase.versionState==2){
  562. this.tapArr.push({id:2,name:'专辑点评'})
  563. }
  564. if(this.user.userId==this.detailDataBase.ownerId){
  565. let testArr = this.tapArr.filter(item=>{return item.id==3})
  566. if(testArr.length == 0){
  567. this.tapArr.push({id:3,name:'审批流程'})
  568. }
  569. }
  570. this.tapArr.sort((val0,val1)=>{
  571. return (val0.id-val1.id);
  572. })
  573. })
  574. },
  575. //获取详情和编辑审批
  576. getApprovals(){
  577. let getData = {albumId:this.detailDataBase.pkId,versionId:this.detailDataBase.versionId}
  578. album.approvals(getData).then((res) => {
  579. res.data.flows.forEach(item => {
  580. item.approverName=item.actualApproverName
  581. item.createTime=item.approvalTime
  582. })
  583. this.approverData = res.data.flows
  584. })
  585. album.catalogue(getData).then((res) => {
  586. res.data.forEach((item,index) => {
  587. item.contents.forEach(item => {
  588. item.categoryArr = item.category.split("|")
  589. item.titles = item.title
  590. item.pkId = item.knowledgeId
  591. item.uploadTime = item.createTime
  592. item.params = {
  593. photo:item.authorHead
  594. }
  595. })
  596. item.dataList=item.contents
  597. item.solt=index+1
  598. })
  599. this.albumArr = res.data
  600. this.albumPkId = this.albumArr[this.albumIndex].pkId
  601. this.dataList = this.albumArr[this.albumIndex].dataList
  602. this.showDelete = this.albumArr[this.albumIndex].actionFlag.indexOf('delete')>-1
  603. //this.showDelete = true
  604. })
  605. },
  606. changeEdite(){
  607. this.isAdd = true
  608. },
  609. goBack(){
  610. if(this.$route.query.isAdd==1){
  611. this.$router.back()
  612. }else{
  613. this.isAdd = false
  614. }
  615. },
  616. //上传图片
  617. handleSaveClick(){
  618. //const hide = this.$message.loading('验证码发送中..', 0)
  619. //setTimeout(hide, 5000);
  620. //return false;
  621. if(this.knowledgeForm.categoryId.length==0){
  622. this.$message.error('请选择分类');
  623. return false
  624. }
  625. if(this.knowledgeForm.name==''){
  626. this.$message.error('请输入专题标题');
  627. return false
  628. }
  629. if(this.knowledgeForm.cover==''&&this.isAdd){
  630. this.$message.error('请上传缩略图');
  631. return false
  632. }
  633. if(this.albumArr.length==0){
  634. this.$message.error('请创建目录');
  635. return false
  636. }
  637. let knowledgeForm = JSON.parse(JSON.stringify(this.knowledgeForm))
  638. knowledgeForm.summary = this.detailData
  639. let catalogues = []
  640. this.albumArr.forEach(item => {
  641. let tempData = {
  642. name:item.name,
  643. contents:[]
  644. }
  645. item.dataList.forEach(item0 => {
  646. tempData.contents.push(item0.pkId)
  647. })
  648. catalogues.push(tempData)
  649. });
  650. knowledgeForm.catalogues = catalogues
  651. knowledgeForm.categoryId = knowledgeForm.categoryId[(knowledgeForm.categoryId.length-1)]
  652. if(this.pkId==''){
  653. album.create(knowledgeForm).then((res) => {
  654. if(res.code == 200) {
  655. this.$message.success("保存成功!");
  656. this.$router.back()
  657. }
  658. })
  659. }else{
  660. knowledgeForm.cover = this.knowledgeForm.cover
  661. //knowledgeForm.categoryId = this.detailDataBase.categoryLevel2Id
  662. //knowledgeForm.categoryId = knowledgeForm.categoryId[(knowledgeForm.categoryId.length-1)]
  663. knowledgeForm.name = this.knowledgeForm.name
  664. knowledgeForm.pkId = this.detailDataBase.pkId
  665. knowledgeForm.versionId = this.detailDataBase.versionId
  666. album.edit(knowledgeForm).then((res) => {
  667. if(res.code == 200) {
  668. this.$message.success("保存成功!");
  669. this.$router.back()
  670. }
  671. })
  672. }
  673. },
  674. //上传之前校验
  675. beforeUpload(file) {
  676. const isLt2M = file.size / 1024 / 1024 < 6;
  677. if (!isLt2M) {
  678. this.$message.error('附件不能超过6M');
  679. return false
  680. }
  681. const fileName = file.name.split('.')
  682. const fileExt = fileName.slice(-1)[0]
  683. let arr = ['png','jpg']
  684. if(arr.indexOf(fileExt) == -1) {
  685. this.$message.error('仅支持格式.png .jpg的文件');
  686. return false
  687. }
  688. return true
  689. },
  690. //删除图片
  691. handleFileDelClick(){
  692. this.knowledgeForm.cover = ''
  693. },
  694. //图片上传
  695. handleChange(info) {
  696. if(info.file.status === 'uploading') {
  697. this.loading = true
  698. return
  699. }
  700. if(info.file.status === 'done') {
  701. this.loading = false
  702. this.knowledgeForm.cover = info.file.response.data[0].fileId
  703. }
  704. },
  705. //字数变化
  706. detailChange(){
  707. this.detailNum=500-this.detailData.length
  708. },
  709. changeCatalogue(num){
  710. this.albumIndex = num
  711. this.albumPkId = this.albumArr[this.albumIndex].pkId
  712. this.dataList = this.albumArr[this.albumIndex].dataList
  713. },
  714. titlesChange(){
  715. this.titlesNum=20-this.knowledgeForm.name.length
  716. },
  717. changeOpen(data){
  718. data.open = (data.open+1)%2
  719. },
  720. //知识分类变化
  721. onChange(value, selectedOptions) {
  722. this.categoryValue = value
  723. this.categoryDataArr = selectedOptions
  724. this.addDataForm.categoryId = value[value.length-1]
  725. },
  726. popupVisibleChange(value){
  727. if(value==false){
  728. this.getData();
  729. }
  730. },
  731. //获取知识数据
  732. getData(){
  733. let param = {
  734. "pageNo": 1,
  735. "pageSize": 100,
  736. "sortField": "",
  737. "sortOrder": "asc",
  738. params: {
  739. approvalStatus: 5,
  740. "categoryId":this.addDataForm.categoryId.length==0?'':this.addDataForm.categoryId,
  741. "type":this.addDataForm.type,
  742. }
  743. }
  744. contentData.findAllKnowledge(param).then((res) => {
  745. this.addDataSelect = res.result.data
  746. })
  747. },
  748. closeDel(){
  749. this.delVisible = false
  750. },
  751. confirmOkCatalogue(){
  752. this.albumArr.splice(this.catalogueNum,1)
  753. this.delVisible = false
  754. },
  755. //删除
  756. delList(num){
  757. this.dataList.splice(num,1)
  758. },
  759. confirmOk(){
  760. let param = {
  761. knowledgeId:this.item.pkId
  762. }
  763. this.delVisible = false
  764. },
  765. //删除
  766. deleteData(num){
  767. this.catalogueNum = num
  768. this.delVisible = true
  769. },
  770. addOpen(){
  771. if(this.albumArr.length==0){
  772. this.catalogueForm.solt = 1
  773. }else{
  774. this.catalogueForm.solt = Number(this.albumArr[this.albumArr.length-1].solt)+1
  775. }
  776. this.catalogueShow = true
  777. },
  778. addDataOpen(){
  779. this.addDataShow = true
  780. this.addDataForm={
  781. type:'1',
  782. categoryId:[],
  783. pkId:undefined,
  784. }
  785. this.categoryValue=''
  786. // let innerWidth = window.innerWidth
  787. // this.widthVar = innerWidth/30
  788. document.onclick=function(element){
  789. if(element.target.className.indexOf('ant-cascader-menu-item')>-1){
  790. document.querySelector('.ant-cascader-menus').scrollLeft = 20480
  791. }
  792. }
  793. /*setInterval(() => {
  794. document.querySelectorAll('.ant-cascader-menu-item').forEach(el => {
  795. el.onclick = function() {
  796. document.querySelector('.ant-cascader-menus').scrollLeft = 2048
  797. }
  798. })
  799. }, 1000)*/
  800. },
  801. //增加知识
  802. handleOkAdd(){
  803. let isHaveArr = this.albumArr[this.albumIndex].dataList.filter(item=>{return item.pkId==this.addDataForm.pkId;})
  804. if(isHaveArr.length>0){
  805. this.$message.error('当前目录里已经存在这条知识。');
  806. return false
  807. }
  808. let selectData = this.addDataSelect.filter(item=>{return item.pkId==this.addDataForm.pkId;})[0]
  809. selectData.documentName = selectData.attachmentName
  810. selectData.documentRemark = selectData.summary
  811. selectData.viewNum = selectData.views
  812. selectData.uploadTime = selectData.createTime
  813. selectData.categoryArr = []
  814. this.getCategory(selectData.categoryArr,selectData.knowledgeCategoryAdminVo)
  815. this.albumArr[this.albumIndex].dataList.push(selectData)
  816. this.addDataShow = false
  817. },
  818. //新增目录
  819. catalogueHandleOk(){
  820. let that = this
  821. let dataFind = that.albumArr.filter(item=>{return item.name==that.catalogueForm.name;})
  822. if(dataFind.length != 0){
  823. this.$message.error('目录名称重复。');
  824. return false
  825. }
  826. let pushEnd = false
  827. that.catalogueForm.dataList = []
  828. let catalogueForm = JSON.parse(JSON.stringify(that.catalogueForm))
  829. catalogueForm.pkId = Date.parse(new Date())
  830. for (let index = 0; index < that.albumArr.length; index++) {
  831. let element = that.albumArr[index]
  832. if(element.solt>catalogueForm.solt){
  833. pushEnd = true
  834. that.albumArr.splice(index,0,catalogueForm)
  835. break;
  836. }
  837. }
  838. catalogueForm.actionFlag=['edit','delete']
  839. if(!pushEnd){
  840. that.albumArr.push(catalogueForm)
  841. }
  842. if(that.albumArr.length==1){
  843. that.albumPkId = that.albumArr[0].pkId
  844. }
  845. that.catalogueShow=false
  846. },
  847. //知识分类转化
  848. getCategory(arr,data){
  849. arr.unshift(data.name)
  850. if(data.parents!=null){
  851. this.getCategory(arr,data.parents)
  852. }
  853. },
  854. filter(inputValue, path) {
  855. return path.some(option => option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1);
  856. },
  857. changeAction(num){
  858. this.tapAction = num
  859. if(this.$route.query.pkId) {
  860. if(this.tapAction==1||this.tapAction==3){
  861. this.getApprovals()
  862. }
  863. if(this.tapAction==2){
  864. this.yelpDataList=[]
  865. this.yelpPageNum=1
  866. this.getYelp()
  867. }
  868. }
  869. },
  870. //初始化
  871. async init() {
  872. let getData={pkId:0}
  873. album.categories(getData).then((res) => {
  874. this.classifyList = res.data
  875. })
  876. contentData.getAllKnowledgeCategory().then((res) =>{
  877. this.classifyListAdd=res.data
  878. })
  879. },
  880. //知识分类懒加载
  881. async loadDataAdd(selectedOptions) {
  882. const targetOption = selectedOptions[selectedOptions.length - 1]
  883. targetOption.loading = true
  884. let res = await api.getKnowledgeCategory(targetOption.pkId)
  885. let result = res.data.children.map(item => {
  886. if(!item.hasChild) {
  887. item.isLeaf = true
  888. } else {
  889. item.isLeaf = false
  890. }
  891. return item
  892. })
  893. targetOption.loading = false
  894. targetOption.children = [...result]
  895. this.classifyList = [...this.classifyList]
  896. },
  897. }
  898. }
  899. </script>
  900. <style>
  901. .titleRight .ant-radio-button-wrapper:not(:first-child):before{
  902. display: none;
  903. background: #000;
  904. }
  905. </style>
  906. <style lang="less" scoped>
  907. .categoryBox{
  908. display: inline-block;
  909. color: #C0C0C0;
  910. font-size: 0.8333vw;
  911. font-weight: 400;
  912. background: rgba(64, 108, 196, 0.04);
  913. border-radius: 0.41666vw 0.41666vw 0.41666vw 0.41666vw;
  914. padding: 0 0.3125vw;
  915. height: 1.45833vw;
  916. margin-left: 0.364583vw;
  917. margin-top: 0.5vw;
  918. line-height: 1.45833vw;
  919. }
  920. .categoryBox /deep/.ant-divider-vertical{
  921. height: 0.8vw;
  922. margin: 0 0.390625vw;
  923. margin-top: 0.4vw;
  924. }
  925. .categoryBox div{
  926. float: left;
  927. }
  928. .approvalBox{
  929. border-radius: 0.625vw;
  930. height: 1.145833vw;
  931. line-height: 1.145833vw;
  932. padding: 0px 0.41666vw;
  933. font-size: 0.729166vw;
  934. margin-left: 0.9375vw;
  935. font-weight: normal;
  936. margin-top: 0.6vw;
  937. }
  938. .stateBox1{
  939. background: rgba(255,144,13,0.04);
  940. color: #FF900D;
  941. }
  942. .stateBox2{
  943. background: rgba(64,108,196,0.04);
  944. color: #406CC4;
  945. }
  946. .stateBox3{
  947. background: rgba(255,144,13,0.04);
  948. color: #FF900D;
  949. }
  950. .stateBox4{
  951. background: rgba(248,78,76,0.04);
  952. color: #F84E4C;
  953. }
  954. .contentDataMain{
  955. position: absolute;
  956. background: #FAFAFA;
  957. height: 100%;
  958. overflow: scroll;
  959. }
  960. .searchBoxContent{
  961. margin: 0px 10.94vw;
  962. border-bottom-left-radius: 10px;
  963. border-bottom-right-radius: 10px;
  964. margin-bottom: 2vw;
  965. }
  966. .noDataBox{
  967. width: 100%;
  968. text-align: center;
  969. padding: 1.71875vw 0px 3.91vw 0px;
  970. }
  971. .noData{
  972. width:35.2vw;
  973. }
  974. .DataBoxContent{
  975. width:100%;
  976. background: #fff;
  977. display: inline-block;
  978. .ant-input-disabled {
  979. color: rgba(0, 0, 0, 0.65);
  980. background-color: #fff;
  981. cursor: auto;
  982. }
  983. }
  984. .commentTitle{
  985. color: #202124;
  986. font-size: 0.9375vw;
  987. font-weight: 550;
  988. display: flex;
  989. width: 100%;
  990. margin-bottom: 0.8854vw;
  991. align-items: center;
  992. }
  993. .submitBox{
  994. width: 100%;
  995. display: inline-block;
  996. }
  997. .titleRight{
  998. margin-left: auto;
  999. border: 2px solid #EEEEEE;
  1000. border-radius: 6px;
  1001. color: #202124;
  1002. font-size: 0.73vw;
  1003. height: 1.875vw;
  1004. overflow: hidden;
  1005. background: #EEEEEE;
  1006. }
  1007. .titleRight /deep/.ant-radio-button-wrapper{
  1008. border-radius: 0vw;
  1009. background: #eee;
  1010. font-weight: 400;
  1011. border-color: #eeeeee00;
  1012. height: calc(1.875vw - 4px);
  1013. line-height: calc(1.875vw - 4px);
  1014. box-shadow: none!important;
  1015. }
  1016. .titleRight /deep/.ant-radio-button-wrapper:focus{
  1017. box-shadow: none!important;
  1018. }
  1019. .titleRight /deep/.ant-radio-button-wrapper:hover{
  1020. color: #202124;
  1021. }
  1022. .titleRight /deep/.ant-radio-button-wrapper:before{
  1023. background-color: #d9d9d900;
  1024. }
  1025. .titleRight /deep/.ant-radio-button-wrapper-checked{
  1026. border-radius: 6px;
  1027. box-shadow: none!important;
  1028. background: #fff;
  1029. font-weight: 400;
  1030. border-color: #EEEEEE;
  1031. color: #202124;
  1032. box-shadow:none;
  1033. }
  1034. .titleRight /deep/.ant-radio-button{
  1035. display: none;
  1036. }
  1037. .titleRight /deep/.ant-radio-button-wrapper-checked:focus{
  1038. box-shadow: none!important;
  1039. }
  1040. .titleRight /deep/.ant-radio-button-wrapper-checked:hover{
  1041. background: #fff;
  1042. border-color: #EEEEEE;
  1043. }
  1044. .noDataText{
  1045. color:#C0C0C0;
  1046. font-size:1.14vw;
  1047. }
  1048. .tabBoxContent{
  1049. display: flow-root;
  1050. width: 78.12vw;
  1051. margin: 0px 10.94vw;
  1052. background: #fff;
  1053. margin-top: 1.25vw;
  1054. border-top-left-radius: 10px;
  1055. border-top-right-radius: 10px;
  1056. }
  1057. .tabBoxContent div{
  1058. text-align: center;
  1059. float: left;
  1060. padding: 0px 2.0833vw;
  1061. display: flex;
  1062. flex-direction: column;
  1063. }
  1064. .tabBoxContent span{
  1065. padding-top: 1.5625vw;
  1066. width: 4.64vw;
  1067. color: #202124;
  1068. font-size: 0.9375vw;
  1069. cursor: pointer;
  1070. display: inline-block;
  1071. }
  1072. .tabBoxContent img{
  1073. margin-top: 0.9375vw;
  1074. width:4.64vw;
  1075. }
  1076. ::-webkit-scrollbar{
  1077. display:none;
  1078. }
  1079. .listBoxItemContent{
  1080. padding: 0px 1.5625vw;
  1081. border: 1px solid #EFEFEF;
  1082. border-radius: 0.52vw;
  1083. margin-bottom: 1.25vw;
  1084. }
  1085. .listItemClass{
  1086. background: #fff;
  1087. }
  1088. .albumUserList{
  1089. display: flex;
  1090. align-items: center;
  1091. color: #5E5E5E;
  1092. font-size: 0.9375vw;
  1093. margin-top: 0.625vw;
  1094. }
  1095. .albumUserList div{
  1096. margin-left: 0.52vw;
  1097. }
  1098. .albumUserList div:last-child{
  1099. margin-left: 0.9375vw;
  1100. }
  1101. .albumHead{
  1102. width: 1.6666vw;
  1103. height: 1.6666vw;
  1104. }
  1105. .bottomBorder{
  1106. background: #EEEEEE;
  1107. margin-bottom: 0px;
  1108. }
  1109. .userTop{
  1110. margin: 0px 10.94vw;
  1111. background: #fff;
  1112. padding: 2.0833vw;
  1113. margin-top: 1.5104vw;
  1114. display: flex;
  1115. border-radius: 10px;
  1116. }
  1117. .userTopAdd{
  1118. margin: 0px 10.94vw;
  1119. background: #fff;
  1120. padding: 1.3541vw 1.979vw 2.0833vw 1.3541vw;
  1121. margin-top: 1.5104vw;
  1122. border-radius: 10px;
  1123. }
  1124. .albumPhoto{
  1125. float: right;
  1126. }
  1127. .albumPhoto img{
  1128. width: 16.9791vw;
  1129. height: 12.8125vw;
  1130. border-radius: 0.625vw;
  1131. }
  1132. .albumPhoto div{
  1133. color: #fff;
  1134. font-size: 0.8333vw;
  1135. margin-top: -2.4vw;
  1136. text-align: right;
  1137. padding-right: 0.8vw;
  1138. height: 2.4vw;
  1139. line-height: 2.4vw;
  1140. width: 100%;
  1141. position: relative;
  1142. border-radius: 0.625vw;
  1143. background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.66) 100%);
  1144. }
  1145. .albumTimesList{
  1146. display: inline-block;
  1147. margin-top: 1.197vw;
  1148. }
  1149. .timesBox{
  1150. display: flex;
  1151. align-items: center;
  1152. flex-direction: column;
  1153. float: left;
  1154. margin-right: 3.59375vw;
  1155. color: #202124;
  1156. }
  1157. .timesBox div:first-child{
  1158. font-size: 1.25vw;
  1159. font-weight: 550;
  1160. }
  1161. .timesBox div:last-child{
  1162. font-size: 0.8333vw;
  1163. color: #5E5E5E;
  1164. }
  1165. .albumTitle{
  1166. color: #202124;
  1167. font-size: 1.5625vw;
  1168. text-align: left;
  1169. font-weight: normal;
  1170. display: flex;
  1171. justify-items: center;
  1172. }
  1173. .userEnd{
  1174. margin-left: auto;
  1175. }
  1176. .listBox{
  1177. padding-bottom: 1.5625vw;
  1178. background: #fff;
  1179. }
  1180. .button-group {
  1181. width:100%;
  1182. display:flex;
  1183. margin-top: 0.9375vw;
  1184. >button {
  1185. width: 9.89583vw;
  1186. height: 2.91666vw;
  1187. font-size: 0.9375vw;
  1188. border-radius: 0.72916vw;
  1189. }
  1190. }
  1191. .button-groupAdd {
  1192. margin-top: 0px;
  1193. margin-left: auto;
  1194. width: auto;
  1195. display:flex;
  1196. >button {
  1197. width: 7.96875vw;
  1198. height: 2.5vw;
  1199. font-size: 0.9375vw;
  1200. border-radius: 4px;
  1201. }
  1202. }
  1203. .lineBorder{
  1204. margin-top: 0px;
  1205. margin-bottom: 0px;
  1206. width: 74.12vw;
  1207. min-width: 74.12vw;
  1208. margin-left: 2vw;
  1209. }
  1210. .detailBox{
  1211. width: 74.12vw;
  1212. height: 23.3854vw;
  1213. border-radius: 0.416666vw;
  1214. border: 1px solid #EEEEEE;
  1215. margin: 1.5625vw 2vw;
  1216. padding: 1.5625vw 1.35416vw;
  1217. font-size: 1vw;
  1218. }
  1219. .tableBoxAlbum{
  1220. margin-bottom: 2vw;
  1221. }
  1222. .tableBoxAlbum /deep/.ant-table-thead{
  1223. font-size: 0.9375vw;
  1224. color: #202124;
  1225. background: #F9F9FA;
  1226. }
  1227. .tableBoxAlbum /deep/tr{
  1228. height: 3.69791vw;
  1229. }
  1230. .tableBoxAlbum /deep/.ant-table-column-title{
  1231. font-weight: 550;
  1232. font-size: 0.9375vw;
  1233. }
  1234. .tableBoxAlbum /deep/.ant-table-tbody{
  1235. font-size: 0.9375vw;
  1236. color: #202124;
  1237. }
  1238. .tableBoxAlbum /deep/td{
  1239. border: none;
  1240. }
  1241. .tableBoxAlbum /deep/.ant-table-row{
  1242. height: 4vw;
  1243. }
  1244. .titleAlbum{
  1245. font-size: 0.9375vw;
  1246. color: #202124;
  1247. margin-top: 1.875vw;
  1248. }
  1249. .albumBox{
  1250. display: flex;
  1251. padding: 1.25vw 2vw;
  1252. }
  1253. .albumBoxLeft{
  1254. width: 13.125vw;
  1255. }
  1256. .albumBoxRight{
  1257. width: 59.6vw;
  1258. margin-left: auto;
  1259. }
  1260. .creatBtn{
  1261. background:#406CC4;
  1262. color:#fff;
  1263. width: 6.40625vw;
  1264. height: 1.875vw;
  1265. font-size: 0.9375vw;
  1266. }
  1267. .albumList{
  1268. border: 1px solid #EFEFEF;
  1269. border-radius: 0.52vw;
  1270. margin-top: 1.3541vw;
  1271. min-height: 12vw;
  1272. }
  1273. .albumitem{
  1274. width: 100%;
  1275. height: 4.42708vw;
  1276. font-size: 0.9375vw;
  1277. color: #202124;
  1278. display: flex;
  1279. align-items: center;
  1280. cursor: pointer;
  1281. }
  1282. .leftPoint{
  1283. width: 0.8vw;
  1284. height: 0.364583vw;
  1285. background: #406CC4;
  1286. border-radius: 2px 2px 2px 2px;
  1287. margin-left: 1.5625vw;
  1288. margin-right: 0.677vw;
  1289. }
  1290. .leftPoint0{
  1291. width: 0.5vw;
  1292. height: 0.34vw;
  1293. background: #406CC4;
  1294. border-radius: 2px 2px 2px 2px;
  1295. margin-left: 1.5625vw;
  1296. margin-right: 0.677vw;
  1297. }
  1298. .pointText{
  1299. width: 18vw;
  1300. text-overflow:ellipsis;
  1301. overflow: hidden;
  1302. white-space:nowrap;
  1303. }
  1304. .albumitemBtn{
  1305. margin-left:auto;
  1306. color: #406CC4;
  1307. margin-right: 0.9375vw;
  1308. width: 7vw;
  1309. align-items: center;
  1310. display: flex;
  1311. }
  1312. .albumitemBtn i:last-child{
  1313. margin-left: 0.73vw;
  1314. }
  1315. .albumitemBtn i{
  1316. cursor: pointer;
  1317. }
  1318. .actionAlbum{
  1319. background: #ECF3FF;
  1320. }
  1321. .delBoxMain{
  1322. text-align: center;
  1323. }
  1324. .delBox{
  1325. width: 29.16vw!important;
  1326. height: 19.16vw;
  1327. }
  1328. .confirmImg{
  1329. width:3.854vw;
  1330. margin-top: 0.6vw;
  1331. margin-bottom: 2.03125vw;
  1332. }
  1333. .confirmTitle{
  1334. color: #202124;
  1335. font-size: 1.04vw;
  1336. margin-bottom: 0.52vw;
  1337. }
  1338. .confirmContent{
  1339. color: #5E5E5E;
  1340. font-size: 0.9375vw;
  1341. margin-bottom: 2.7vw;
  1342. }
  1343. .btnConfirmOk{
  1344. -moz-user-select: none;
  1345. -khtml-user-select: none;
  1346. user-select: none;
  1347. width: 8.02vw!important;
  1348. height: 2.4vw;
  1349. line-height: 2.4vw;
  1350. text-align: center;
  1351. color: #fff;
  1352. background: #406CC4;
  1353. font-size: 0.9375vw;
  1354. cursor: pointer;
  1355. display: inline-block;
  1356. margin-right: 1.77vw;
  1357. }
  1358. .btnConfirmOk:hover{
  1359. background: #385FAD;
  1360. }
  1361. .btnConfirmCancel{
  1362. -moz-user-select: none;
  1363. -khtml-user-select: none;
  1364. user-select: none;
  1365. width: 8.02vw!important;
  1366. height: 2.4vw;
  1367. line-height: 2.4vw;
  1368. text-align: center;
  1369. color: #5E5E5E;
  1370. border: 1px solid #C0C0C0;
  1371. font-size: 0.9375vw;
  1372. cursor: pointer;
  1373. display: inline-block;
  1374. }
  1375. .btnConfirmCancel:hover{
  1376. background: #f3f3f3;
  1377. }
  1378. .delBox{
  1379. width: 29.16vw!important;
  1380. height: 19.16vw;
  1381. }
  1382. .commentAdd /deep/input{
  1383. height: 2.8125vw;
  1384. font-size: 1.14583vw;
  1385. border-radius: 0.41666vw;
  1386. }
  1387. .commentAdd /deep/.ant-input-search-button{
  1388. font-size: 1.14583vw;
  1389. background-color: #406cc4;
  1390. border-color: #406cc4;
  1391. height: 2.8125vw;
  1392. width: 6.09375vw;
  1393. border-radius: 0.41666vw!important;
  1394. }
  1395. .commentList{
  1396. margin-top: 0.73vw;
  1397. padding: 0.8vw 0px;
  1398. border: 1px solid #EEEEEE;
  1399. border-radius: 0.41666vw;
  1400. }
  1401. .commentLine{
  1402. margin-top:1vw;
  1403. margin-bottom: 0px;
  1404. }
  1405. .commentPadd{
  1406. padding-left:1.354vw;
  1407. padding-right: 2vw;
  1408. }
  1409. .albumListClass{
  1410. padding-left: 1.354vw;
  1411. padding-right: 2.1875vw;
  1412. display: flex;
  1413. }
  1414. .leftImg{
  1415. width: 0.8333vw;
  1416. height: 0.8333vw;
  1417. margin-top: 1.6vw;
  1418. margin-right: 0.4166vw;
  1419. cursor: pointer;
  1420. }
  1421. .leftImgRotate{
  1422. transform: rotate(-90deg);
  1423. }
  1424. .getMoreList{
  1425. color: #C0C0C0;
  1426. font-size: 0.9375vw;
  1427. text-align: center;
  1428. margin-top: 3.4375vw;
  1429. cursor: pointer;
  1430. }
  1431. .addTitle{
  1432. display: flex;
  1433. align-items: center;
  1434. width: 100%;
  1435. }
  1436. .addTitleText{
  1437. font-weight: 550;
  1438. font-size: 1.14583vw;
  1439. color: #202124;
  1440. width: 30%;
  1441. padding-left: 0.7vw;
  1442. }
  1443. .userTopAdd .ant-form {
  1444. .ant-form-item {
  1445. margin-bottom: 2.08vw;
  1446. }
  1447. .ant-form-item:first-child {
  1448. margin-top: 1.51vw;
  1449. }
  1450. }
  1451. .knowledgeAddUpdateLabel /deep/ label::before {
  1452. content: '';
  1453. width: 0.3125vw;
  1454. height: 0.3125vw;
  1455. border-radius: 0.3125vw;
  1456. background: #fff;
  1457. margin-bottom: 0.25vw;
  1458. vertical-align: middle;
  1459. font-size: 0.44vw;
  1460. display: inline-block;
  1461. font-family: SimSun, sans-serif;
  1462. margin-right: 0.41666vw;
  1463. }
  1464. .userTopAdd /deep/ .ant-form-item-required::before {
  1465. width: 0.3125vw;
  1466. height: 0.3125vw;
  1467. border-radius: 0.3125vw;
  1468. background: #F84E4C!important;
  1469. margin-bottom: 0.25vw;
  1470. vertical-align: middle;
  1471. font-size: 0.44vw;
  1472. }
  1473. .knowledgeAddUpdateLabel /deep/ label {
  1474. font-size: 0.9375vw;
  1475. height: 2.7vw;
  1476. }
  1477. .oneline /deep/ label {
  1478. line-height: 2.7vw;
  1479. }
  1480. .knowledgeAddUpdateLabel /deep/ textarea {
  1481. font-size: 0.9375vw;
  1482. }
  1483. .knowledgeAddUpdateLabel /deep/.ant-form-item-children{
  1484. display: block;
  1485. }
  1486. .addItemBox{
  1487. height: 2.7vw;
  1488. width: 21.71875vw;
  1489. font-size: 0.9375vw;
  1490. }
  1491. .addItemBox /deep/input{
  1492. height: 2.7vw;
  1493. font-size: 0.9375vw;
  1494. }
  1495. .addItemBox /deep/.ant-select-selection{
  1496. height: 2.7vw;
  1497. }
  1498. .addItemBox /deep/.ant-select-selection-selected-value{
  1499. height: 2.7vw;
  1500. line-height: 2.7vw;
  1501. }
  1502. .addItemBox /deep/.ant-select-selection__rendered{
  1503. height: 2.7vw;
  1504. }
  1505. .addItemBox /deep/.ant-select-arrow{
  1506. margin-top: -0.55vw;
  1507. }
  1508. .classifyIconBox{
  1509. color: rgba(0,0,0,.25);
  1510. font-size: 1vw!important;
  1511. margin-top: -0.55vw!important;
  1512. -webkit-transform-origin: 90% 80%;
  1513. position: absolute;
  1514. right: 1vw;
  1515. transform-origin: 0.5vw 0.45vw;
  1516. }
  1517. .ant-cascader-picker-focused .classifyIconBox{
  1518. transform:rotate(180deg);
  1519. }
  1520. .uploadBox{
  1521. width: 26.927vw;
  1522. min-height: 11.979vw;
  1523. display: block;
  1524. }
  1525. .rightText{
  1526. position: absolute;
  1527. right: 3vw;
  1528. top: 2vw;
  1529. font-size: 0.9375vw;
  1530. color: #C0C0C0;
  1531. }
  1532. .uploadImg{
  1533. width: 12vw;
  1534. }
  1535. .clearBtn {
  1536. background: none;
  1537. color: #3294F7;
  1538. text-shadow: none;
  1539. padding: 0px 6px;
  1540. border: none;
  1541. box-shadow: none;
  1542. }
  1543. .imgBox{
  1544. display: flex;
  1545. flex-direction: column;
  1546. width: 12vw;
  1547. }
  1548. .btnsty{
  1549. height: 0.78125vw;
  1550. }
  1551. .btnstydel{
  1552. height: 1.2vw;
  1553. margin-left: 0.6vw;
  1554. }
  1555. </style>
  1556. <style scoped>
  1557. /deep/ .ant-cascader-menus {
  1558. left: 0!important;
  1559. }
  1560. /deep/ .ant-cascader-menu:last-child {
  1561. margin-right: 0!important;
  1562. }
  1563. /deep/ .ant-modal-wrap {
  1564. overflow: inherit;
  1565. }
  1566. </style>