TranslatorBase.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  1. <template>
  2. <div class="TranslatorBase-all">
  3. <el-dialog top="8vh" width="1000px" title="翻译人员信息" :visible.sync="TranslatorBaseform" :close-on-click-modal="false">
  4. <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"
  5. class="demo-ruleForm form-style">
  6. <el-form-item label="所在地区" prop="area">
  7. <el-input v-model="ruleForm.area"></el-input>
  8. </el-form-item>
  9. <el-form-item label="姓名" prop="name">
  10. <el-input v-model="ruleForm.name"></el-input>
  11. </el-form-item>
  12. <el-form-item label="性别" prop="sex">
  13. <el-radio-group v-model="ruleForm.sex">
  14. <el-radio label="男"></el-radio>
  15. <el-radio label="女"></el-radio>
  16. </el-radio-group>
  17. </el-form-item>
  18. <el-form-item label="证件照" prop="photo">
  19. <el-upload class="avatars-uploader" action="" :show-file-list="false"
  20. :on-change="handleAvatarchange">
  21. <img v-if="imageUrl" :src="imageUrl" class="avatars">
  22. <i v-else class="el-icon-plus avatars-uploader-icon"></i>
  23. </el-upload>
  24. </el-form-item>
  25. <div class="pj-form">
  26. <el-form-item label="联系电话" prop="tel">
  27. <el-input v-model="ruleForm.tel"></el-input>
  28. </el-form-item>
  29. <el-form-item label="邮箱号" prop="email">
  30. <el-input v-model="ruleForm.email"></el-input>
  31. </el-form-item>
  32. <el-form-item label="微信号" prop="wechatNo">
  33. <el-input v-model="ruleForm.wechatNo"></el-input>
  34. </el-form-item>
  35. <el-form-item label="其他账号" prop="otherSocialAccounts">
  36. <el-input v-model="ruleForm.otherSocialAccounts"></el-input>
  37. </el-form-item>
  38. <el-form-item label="语种" prop="language">
  39. <el-input v-model="ruleForm.language"></el-input>
  40. </el-form-item>
  41. <el-form-item label="关联公务">
  42. <el-form :inline="true" :model="pageParams.params" class="demo-form-inline">
  43. <select-tree :data="getData" :defaultCheckedKeys="pusharr" :filterable="true" @selectTerrEvent="selectTerrEvetn"
  44. :defaultExpandAll="true" :defaultProps="defaultProps">
  45. </select-tree>
  46. </el-form>
  47. <!-- <el-select multiple collapse-tags filterable v-model="ruleForm.officialDutyIdItem"
  48. placeholder="请选择公务">
  49. <el-option v-for="(item,index) in officialDutyData" :key="index" :label="item.client"
  50. :value="item.id"></el-option>
  51. </el-select> -->
  52. </el-form-item>
  53. </div>
  54. <el-form-item label="费用" prop="price">
  55. <el-input-number :precision="2" placeholder="邀请费用" v-model="ruleForm.price"
  56. :controls='false'></el-input-number>
  57. </el-form-item>
  58. <el-form-item label="币种" prop="currency">
  59. <el-select filterable v-model="ruleForm.currency" placeholder="请选择币种">
  60. <el-option v-for="(item,index) in currencyarr" :key="index" :label="item.name"
  61. :value="item.id"></el-option>
  62. </el-select>
  63. </el-form-item>
  64. <el-form-item></el-form-item>
  65. <el-form-item style="width:100%" label="简历/证书">
  66. <el-upload class="upload-demo" ref="upload" action="" :multiple="true" :on-change="handleChange"
  67. :on-preview="handlePreview" :on-remove="handleRemove" :file-list="fileList"
  68. :auto-upload="false">
  69. <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
  70. <!-- <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> -->
  71. <!-- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> -->
  72. </el-upload>
  73. </el-form-item>
  74. <el-form-item style="width:100%" label="备注">
  75. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="ruleForm.remark">
  76. </el-input>
  77. </el-form-item>
  78. <div class="TranslatorBase-form-btn">
  79. <el-button type="primary" @click="submitForm('ruleForm')">保存</el-button>
  80. <!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
  81. </div>
  82. </el-form>
  83. </el-dialog>
  84. <div class="TranslatorBase-title">
  85. <div>翻译人员库</div>
  86. </div>
  87. <div class="TranslatorBase-search">
  88. <div class="TranslatorBase-search-ul">
  89. <div class="TranslatorBase-search-li">
  90. <label>翻译人姓名</label>
  91. <el-input size="small" placeholder="请输入内容" v-model="input" clearable></el-input>
  92. </div>
  93. <div class="TranslatorBase-search-li">
  94. <el-button size="small" @click="TranslatorLibraryItem()" type="primary">查询</el-button>
  95. </div>
  96. <!-- <div class="TranslatorBase-search-li">
  97. <label>请输入内容</label>
  98. <el-input size="small" placeholder="请输入内容" v-model="input" clearable></el-input>
  99. </div>
  100. <div class="TranslatorBase-search-li">
  101. <label>请输入内容</label>
  102. <el-input size="small" placeholder="请输入内容" v-model="input" clearable></el-input>
  103. </div>
  104. <div class="TranslatorBase-search-li">
  105. <label>请输入内容</label>
  106. <el-input size="small" placeholder="请输入内容" v-model="input" clearable></el-input>
  107. </div> -->
  108. </div>
  109. <div>
  110. <el-button size="small" @click="abbtlbBtn" type="primary">新增</el-button>
  111. </div>
  112. </div>
  113. <div class="TranslatorBase-table">
  114. <el-table :data="tableData" border style="width: 100%" :cell-class-name="addClass">
  115. <el-table-column prop="area" label="地区" width="180">
  116. </el-table-column>
  117. <el-table-column prop="name" label="姓名" width="100">
  118. </el-table-column>
  119. <el-table-column prop="sex" label="性别" width="60">
  120. </el-table-column>
  121. <el-table-column prop="tel" label="电话" width="120">
  122. </el-table-column>
  123. <el-table-column prop="email" label="邮箱" width="120">
  124. </el-table-column>
  125. <el-table-column prop="wechatNo" label="微信" width="120">
  126. </el-table-column>
  127. <el-table-column prop="price" label="费用" width="120">
  128. <template slot-scope="scope">
  129. {{townum(scope.row.price)}}
  130. </template>
  131. </el-table-column>
  132. <el-table-column prop="currency" label="币种" width="100">
  133. </el-table-column>
  134. <el-table-column prop="createUserName" label="录入人" width="100">
  135. </el-table-column>
  136. <el-table-column prop="createTime" label="录入时间" width="180">
  137. </el-table-column>
  138. <el-table-column prop="remark" label="备注">
  139. </el-table-column>
  140. <el-table-column label="操作" width="180">
  141. <template slot-scope="scope">
  142. <el-button @click="edittib(scope.$index, scope.row)" size="mini">编辑</el-button>
  143. <el-button @click="TranslatorLibraryDel(scope.row)" size="mini" type="danger">删除</el-button>
  144. </template>
  145. </el-table-column>
  146. </el-table>
  147. <div class="block">
  148. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
  149. :current-page="currentPage" :page-sizes="[5, 10, 20, 50]" :page-size="currentsize"
  150. layout="total, sizes, prev, pager, next, jumper" :total="total">
  151. </el-pagination>
  152. </div>
  153. </div>
  154. </div>
  155. </template>
  156. <script>
  157. import SelectTree from './selectTree.vue'
  158. export default {
  159. components: {
  160. SelectTree
  161. },
  162. data() {
  163. return {
  164. token:'',
  165. input: '',
  166. tableData: [],
  167. currentPage:1,
  168. currentsize:10,
  169. total:0,
  170. TranslatorBaseform: false,
  171. Id:0,
  172. ruleForms:new FormData(),
  173. ruleForm: {
  174. area:'',
  175. name: '',
  176. sex:'',
  177. photo:'',
  178. tel:'',
  179. email:'',
  180. wechatNo:'',
  181. otherSocialAccounts:'',
  182. officialDutyIdItem:[],
  183. language:'',
  184. price:0,
  185. currency:'',
  186. files:[],
  187. remark:'',
  188. region: '',
  189. },
  190. currencyarr:[],
  191. officialDutyData:[],
  192. opStatus:1,
  193. rules: {
  194. area: [
  195. { required: true, message: '请输入所在地区', trigger: 'blur' },
  196. ],
  197. name: [
  198. { required: true, message: '请输入姓名', trigger: 'blur' },
  199. ],
  200. sex: [
  201. { required: true, message: '请选择性别', trigger: 'change' },
  202. ],
  203. tel: [
  204. { required: true, message: '请输入联系电话', trigger: 'blur' },
  205. ],
  206. email: [
  207. { required: true, message: '请输入邮箱号', trigger: 'blur' },
  208. ],
  209. wechatNo: [
  210. { required: true, message: '请输入微信号', trigger: 'blur' },
  211. ],
  212. otherSocialAccounts: [
  213. { required: true, message: '请输入其他账号', trigger: 'blur' },
  214. ],
  215. language: [
  216. { required: true, message: '请输入语种', trigger: 'blur' },
  217. ],
  218. price: [
  219. { required: true, message: '请输入费用', trigger: 'blur' },
  220. ],
  221. currency: [
  222. { required: true, message: '请选择币种', trigger: 'change' },
  223. ],
  224. },
  225. //touxiang
  226. imageUrl: '',
  227. //附件
  228. fileList:[],
  229. pageParams:{},
  230. defaultProps: {
  231. children: "children",
  232. label: "label"
  233. },
  234. getData: [],
  235. pusharr:[]
  236. }
  237. },
  238. methods: {
  239. selectTerrEvetn(data) {
  240. this.ruleForm.officialDutyIdItem=[];
  241. for(let i=0;i<data.length;i++){
  242. this.ruleForm.officialDutyIdItem.push(data[i].id)
  243. }
  244. console.log(this.ruleForm.officialDutyIdItem)
  245. },
  246. //保留两位小数
  247. townum(val){
  248. val=Number(val);
  249. return val.toFixed(2);
  250. },
  251. //获取基础数据
  252. TranslatorLibraryInit(){
  253. var that = this;
  254. var url = "/api/Resource/TranslatorLibraryInit"
  255. this.$axios({
  256. method: 'get',
  257. url: url,
  258. }).then(function (res) {
  259. if (res.data.code == 200) {
  260. that.currencyarr=res.data.data.currencyData;
  261. that.officialDutyData=res.data.data.officialDutyData;
  262. that.getData=res.data.data.officialDutyData;
  263. } else {
  264. that.$message.error(res.data.msg);
  265. }
  266. })
  267. },
  268. //表单初始化
  269. formInitialization(){
  270. this.imageUrl='';
  271. this.fileList=[];
  272. this.ruleForm= {
  273. area:'',
  274. name: '',
  275. sex:'',
  276. photo:'',
  277. tel:'',
  278. email:'',
  279. wechatNo:'',
  280. otherSocialAccounts:'',
  281. language:'',
  282. price:0,
  283. currency:'',
  284. files:[],
  285. remark:'',
  286. region: '',
  287. officialDutyIdItem:[]
  288. }
  289. },
  290. //删除
  291. TranslatorLibraryDel(val){
  292. this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
  293. confirmButtonText: '确定',
  294. cancelButtonText: '取消',
  295. type: 'warning'
  296. }).then(() => {
  297. var that = this;
  298. var url = "/api/Resource/TranslatorLibraryDel/id?id="+val.id
  299. this.$axios({
  300. method: 'delete',
  301. url: url,
  302. headers: {
  303. Authorization: 'Bearer '+that.token,
  304. },
  305. }).then(function (res) {
  306. if (res.data.code == 200) {
  307. that.$message({
  308. message: res.data.msg,
  309. type: 'success'
  310. });
  311. that.TranslatorLibraryItem();
  312. } else {
  313. that.$message.error(res.data.msg);
  314. }
  315. })
  316. }).catch(() => {
  317. this.$message({
  318. type: 'info',
  319. message: '已取消删除'
  320. });
  321. });
  322. },
  323. //新增
  324. abbtlbBtn(){
  325. this.Id=0;
  326. this.opStatus=1;
  327. this.formInitialization();
  328. this.$nextTick(() => { this.$refs['ruleForm'].clearValidate();});
  329. this.TranslatorBaseform=true;
  330. },
  331. //编辑
  332. edittib(index,val){
  333. this.formInitialization();
  334. this.opStatus=2;
  335. // this.$nextTick(() => { this.$refs['ruleForm'].clearValidate();});
  336. this.TranslatorBaseform=true;
  337. console.log(val);
  338. var that = this;
  339. var url = "/api/Resource/TranslatorLibraryInfo/id?id="+val.id
  340. this.$axios({
  341. method: 'get',
  342. url: url,
  343. }).then(function (res) {
  344. if (res.data.code == 200) {
  345. that.Id=res.data.data.id;
  346. that.ruleForm.area=res.data.data.area;
  347. that.ruleForm.name=res.data.data.name;
  348. that.ruleForm.sex=res.data.data.sex==2?'女':'男';
  349. that.ruleForm.tel=res.data.data.tel;
  350. that.ruleForm.email=res.data.data.email;
  351. that.ruleForm.wechatNo=res.data.data.wechatNo;
  352. that.ruleForm.otherSocialAccounts=res.data.data.otherSocialAccounts;
  353. that.ruleForm.language=res.data.data.language;
  354. that.ruleForm.price=res.data.data.price;
  355. that.ruleForm.currency=res.data.data.currency;
  356. that.ruleForm.photo=res.data.data.photo;
  357. that.ruleForm.remark=res.data.data.remark;
  358. that.ruleForm.officialDutyIdItem=res.data.data.officialDutyIdItem;
  359. that.pusharr=res.data.data.officialDutyIdItem;
  360. that.imageUrl=res.data.data.photo;
  361. if (res.data.data.filePaths!=[]) {
  362. for(let i=0;i<res.data.data.filePaths.length;i++){
  363. that.fileList.push({'name':res.data.data.filePaths[i].fileName,'url':res.data.data.filePaths[i].filePathName})
  364. }
  365. }
  366. } else {
  367. that.$message.error(res.data.msg);
  368. }
  369. })
  370. },
  371. //base转图片
  372. base64ImgtoFile(dataurl, filename = 'file') {
  373. if(dataurl==""){
  374. return
  375. }
  376. let arr = dataurl.split(',')
  377. let mime = arr[0].match(/:(.*?);/)[1]
  378. let suffix = mime.split('/')[1]
  379. let bstr = atob(arr[1])
  380. let n = bstr.length
  381. let u8arr = new Uint8Array(n)
  382. while (n--) {
  383. u8arr[n] = bstr.charCodeAt(n)
  384. }
  385. return new File([u8arr], `${filename}.${suffix}`, {
  386. type: mime
  387. })
  388. },
  389. //获取列表
  390. TranslatorLibraryItem(){
  391. var that = this;
  392. var url = "/api/Resource/TranslatorLibraryItem"
  393. this.$axios({
  394. method: 'post',
  395. url: url,
  396. data:{
  397. portType:1,
  398. pageIndex: that.currentPage,
  399. pageSize: that.currentsize,
  400. name: that.input
  401. }
  402. }).then(function (res) {
  403. if (res.data.code == 200) {
  404. that.tableData=res.data.data;
  405. that.total=res.data.count;
  406. } else {
  407. that.$message.error(res.data.msg);
  408. }
  409. })
  410. },
  411. handleSizeChange(val) {
  412. this.currentsize=val;
  413. this.TranslatorLibraryItem();
  414. },
  415. handleCurrentChange(val) {
  416. this.currentPage=val;
  417. this.TranslatorLibraryItem();
  418. },
  419. submitForm(formName) {
  420. this.$refs[formName].validate((valid) => {
  421. if (valid) {
  422. this.TranslatorLibraryOp()
  423. } else {
  424. console.log('error submit!!');
  425. return false;
  426. }
  427. });
  428. },
  429. resetForm(formName) {
  430. this.$refs[formName].resetFields();
  431. },
  432. //头像
  433. handleAvatarchange(file){
  434. if (file.status !== 'ready') return;
  435. const isJPG = file.raw.type === 'image/jpeg';
  436. const isLt2M = file.size / 1024 / 1024 < 2;
  437. if (!isJPG) {
  438. return this.$message.error('上传头像图片只能是 JPG 格式!');
  439. }
  440. if (!isLt2M) {
  441. return this.$message.error('上传头像图片大小不能超过 2MB!');
  442. }
  443. this.imageUrl = URL.createObjectURL(file.raw);
  444. this.getBase64(file)
  445. },
  446. //base64转译
  447. getBase64(e) {
  448. // 选择的文件
  449. let file = e.raw;
  450. // 判断文件是否读取完毕,读取完毕后执行
  451. if (window.FileReader) {
  452. let reader = new FileReader();
  453. reader.readAsDataURL(file);
  454. reader.onload = e => {
  455. let base64String = e.target.result;
  456. // 此处可对该base64进行获取赋值传入后端
  457. this.ruleForm.photo=base64String;
  458. console.log(base64String);
  459. }
  460. }
  461. },
  462. //附件
  463. // 文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用,function(file, fileList)
  464. handleChange(file, fileList) {
  465. console.log(fileList);
  466. this.fileList = fileList;
  467. // if (file.status !== 'ready') return;
  468. // this.ruleForms = new FormData()
  469. // this.fileList.forEach((file) => {
  470. // if(file.raw!=undefined){
  471. // this.ruleForms.append('files',file.raw);
  472. // }
  473. // })
  474. // console.log(formData);
  475. // this.ruleForm.files=formData
  476. console.log(this.ruleForms);
  477. },
  478. //保存
  479. TranslatorLibraryOp(){
  480. console.log(this.ruleForm.officialDutyIdItem);
  481. // return
  482. var ruleForms=new FormData();
  483. ruleForms.append('portType',1);
  484. ruleForms.append('status',this.opStatus);
  485. ruleForms.append('id',this.Id);
  486. ruleForms.append('area',this.ruleForm.area);
  487. ruleForms.append('name',this.ruleForm.name);
  488. ruleForms.append('sex',this.ruleForm.sex=='男'?1:2);
  489. ruleForms.append('photo',this.ruleForm.photo);
  490. ruleForms.append('tel',this.ruleForm.tel);
  491. ruleForms.append('email',this.ruleForm.email);
  492. ruleForms.append('wechatNo',this.ruleForm.wechatNo);
  493. ruleForms.append('otherSocialAccounts',this.ruleForm.otherSocialAccounts);
  494. ruleForms.append('language',this.ruleForm.language);
  495. ruleForms.append('price',this.ruleForm.price);
  496. ruleForms.append('currency',this.ruleForm.currency);
  497. ruleForms.append('remark',this.ruleForm.remark);
  498. // ruleForms.append('officialDutyIdItem',this.ruleForm.officialDutyIdItem);
  499. this.ruleForm.officialDutyIdItem.forEach((item,index)=>{
  500. ruleForms.append(`officialDutyIdItem[${index}]`,item);
  501. })
  502. // ruleForms.getAll('officialDutyIdItem[]');
  503. this.fileList.forEach((file) => {
  504. if (file.status == 'ready') {
  505. if(file.raw!=undefined){
  506. ruleForms.append('files',file.raw);
  507. }
  508. }
  509. })
  510. var that = this;
  511. var url = "api/Resource/TranslatorLibraryOp"
  512. this.$axios({
  513. method: 'post',
  514. url: url,
  515. headers: {
  516. Authorization: 'Bearer '+that.token,
  517. 'Content-Type':'multipart/form-data'
  518. },
  519. data:ruleForms
  520. }).then(function (res) {
  521. if (res.data.code == 200) {
  522. that.$message({
  523. message: res.data.msg,
  524. type: 'success'
  525. });
  526. that.TranslatorBaseform=false;
  527. that.TranslatorLibraryItem();
  528. } else {
  529. that.$message.error(res.data.msg);
  530. }
  531. })
  532. },
  533. //条件颜色
  534. addClass({row,column,rowIndex,columnIndex}){
  535. if(row.lastUpdateDays >= 365){
  536. return 'cell-grey';
  537. }
  538. },
  539. submitUpload() {
  540. this.$refs.upload.submit();
  541. },
  542. handleRemove(file, fileList) {
  543. console.log(file, fileList);
  544. },
  545. handlePreview(file) {
  546. window.open(file.url)
  547. console.log(file);
  548. }
  549. },
  550. created(){
  551. },
  552. mounted(){
  553. this.token = JSON.parse(localStorage.getItem('userinif')).token;
  554. this.TranslatorLibraryInit();
  555. this.TranslatorLibraryItem();
  556. }
  557. }
  558. </script>
  559. <style>
  560. .TranslatorBase-all {
  561. background-color: #fff;
  562. padding: 10px;
  563. box-shadow: 0 0 5px #0005;
  564. border-radius: 10px;
  565. min-height: 830px;
  566. }
  567. .TranslatorBase-title {
  568. display: flex;
  569. font-size: 17px;
  570. font-weight: 600;
  571. color: #555;
  572. margin-top: 8px;
  573. margin-bottom: 10px;
  574. justify-content: space-between;
  575. align-items: center;
  576. }
  577. .TranslatorBase-search {
  578. display: flex;
  579. justify-content: space-between;
  580. }
  581. .TranslatorBase-search-ul {
  582. display: flex;
  583. }
  584. .TranslatorBase-search-li {
  585. width: 300px;
  586. display: flex;
  587. align-items: center;
  588. margin-right: 10px;
  589. }
  590. .TranslatorBase-search-li label {
  591. color: #606266;
  592. width: 100px;
  593. }
  594. .TranslatorBase-table {
  595. margin-top: 10px;
  596. }
  597. .form-style{
  598. display: flex;
  599. flex-wrap:wrap ;
  600. justify-content: space-between;
  601. }
  602. .form-style .el-form-item{
  603. width:33%;
  604. }
  605. .TranslatorBase-form-btn{
  606. text-align: right;
  607. width: 100%;
  608. }
  609. .form-style .avatars-uploader .el-upload{
  610. width: 100%;
  611. }
  612. .form-style .el-select{
  613. width: 100%;
  614. }
  615. .form-style .el-input-number{
  616. width: 100%;
  617. }
  618. .form-style .el-upload-list{
  619. display: flex;
  620. flex-wrap: wrap;
  621. align-items: center;
  622. }
  623. .form-style .el-upload-list__item{
  624. width: 50%;
  625. }
  626. .TranslatorBase-table .block{
  627. text-align: center;
  628. margin-top: 15px;
  629. }
  630. .pj-form{
  631. width:66.5%;
  632. display: flex;
  633. justify-content: space-between;
  634. flex-wrap: wrap;
  635. }
  636. .pj-form .el-form-item{
  637. width:49.5%;
  638. }
  639. .avatars-uploader .el-upload {
  640. border: 1px dashed #d9d9d9;
  641. border-radius: 6px;
  642. cursor: pointer;
  643. position: relative;
  644. overflow: hidden;
  645. }
  646. .avatars-uploader .el-upload:hover {
  647. border-color: #409EFF;
  648. }
  649. .avatars-uploader-icon {
  650. font-size: 28px;
  651. color: #8c939d;
  652. width: 178px;
  653. height: 178px;
  654. line-height: 178px;
  655. text-align: center;
  656. }
  657. .avatars {
  658. width: 178px;
  659. height: 178px;
  660. display: block;
  661. }
  662. .el-select-dropdown{
  663. width: 400px;
  664. }
  665. .select-tree .el-tag.el-tag--info{
  666. max-width: 125px;
  667. }
  668. .TranslatorBase-all .cell-grey{
  669. color: red;
  670. }
  671. </style>