index.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945
  1. <template>
  2. <div class="testPersonExamine">
  3. <backPage v-if="gotype" tit="年度考核"></backPage>
  4. <div class="testTit" style="padding: 0 90px;box-sizing: border-box;">
  5. <div class="teaLis">
  6. <div
  7. class="teal"
  8. @click="cutPage(2)"
  9. v-if="bArray.length"
  10. :class="[pType == 2 ? 'Tbor' : '']"
  11. >
  12. 专任教师
  13. </div>
  14. <div
  15. class="teal"
  16. @click="cutPage(1)"
  17. v-if="aArray.length"
  18. :class="[pType == 1 ? 'Tbor' : '']"
  19. >
  20. 班主任考核
  21. </div>
  22. </div>
  23. <div style="margin-right: 30px;display: flex;">
  24. <!-- <el-button
  25. type="primary"
  26. size="mini"
  27. style="margin-right: 15px;"
  28. @click="saveTab"
  29. v-if="allData.type == 1"
  30. >保存</el-button
  31. > -->
  32. <div style="margin: 0 20px;" v-if="timeListA.length>0 && pType == 1">
  33. <el-select v-model="timeA" placeholder="请选择">
  34. <el-option
  35. v-for="item in timeListA"
  36. :key="item.value"
  37. :label="item.label"
  38. :value="item.value"
  39. >
  40. </el-option>
  41. </el-select>
  42. </div>
  43. <div style="margin: 0 20px;" v-if="timeListB.length>0 && pType == 2">
  44. <el-select v-model="timeB" placeholder="请选择">
  45. <el-option
  46. v-for="item in timeListB"
  47. :key="item.value"
  48. :label="item.label"
  49. :value="item.value"
  50. >
  51. </el-option>
  52. </el-select>
  53. </div>
  54. <el-button
  55. v-if="allData.type != 2"
  56. type="primary"
  57. size="mini"
  58. @click="Submit"
  59. >提交</el-button
  60. >
  61. </div>
  62. </div>
  63. <div style="flex: 1;overflow: hidden;" class="notes">
  64. 注:评价积分周期为2023年6月30日至2024年6月30日
  65. </div>
  66. <div style="height:100%;overflow: auto;padding: 0 90px;box-sizing: border-box;" v-loading="tabLoad">
  67. <div class="sBox_table">
  68. <div class="table_title">
  69. <div style="width: 110px;">一级指标</div>
  70. <div style="width: 140px;min-width: 140px;">二级指标</div>
  71. <div style="width: 700px;min-width: 700px;">评价方法</div>
  72. <div style="width: 100px;">分值</div>
  73. <div style="width: 100px;">自评</div>
  74. <div style="flex: 1;min-width: 150px;">自评概述</div>
  75. <div style="flex: 0.5;min-width: 100px;">数据来源</div>
  76. <!-- <div style="width: 100px;">认定</div>
  77. <div style="flex: 1;">认定概述</div> -->
  78. </div>
  79. <div style="height: 100%;">
  80. <div
  81. class="table_Content"
  82. v-for="item in PageBaseData"
  83. :key="item.id"
  84. >
  85. <div class="twoCol">
  86. <div class="ColTit">{{ item.name }}</div>
  87. <div class="ColCon">
  88. <div class="twoCon" v-for="k in item.children" :key="k.id">
  89. <div>{{ k.name }}</div>
  90. <div style="padding: 10px;box-sizing: border-box;">
  91. {{ k.evaMethod }}
  92. </div>
  93. <div>{{ k.score }}</div>
  94. <div>
  95. <div v-if="k.type == 1" class="ScoreStep">
  96. <el-input
  97. class="num_input"
  98. v-if="allData.type * 1 != 2"
  99. @blur="
  100. saveTab(
  101. parseFloat(k.sco1) > k.score
  102. ? (k.sco1 = k.score)
  103. : '' || k.sco1 < 0
  104. ? (k.sco1 = '')
  105. : ''
  106. )
  107. "
  108. v-model="k.sco1"
  109. v-stopMousewheel
  110. type="number"
  111. ></el-input>
  112. <div v-else>{{ k.sco1 }}</div>
  113. </div>
  114. <div v-else class="ScoreStep">/</div>
  115. </div>
  116. <div class="tArea">
  117. <div
  118. v-if="k.type == 1"
  119. style="height: 100%;height: 100%;width: 100%;text-align: left;"
  120. >
  121. <!-- <textarea
  122. v-if="allData.type * 1 != 2"
  123. @blur="saveTab"
  124. :placeholder="
  125. k.cueWordType == 1 ? '【自评后请简述测算过程】' : ''
  126. "
  127. v-model.trim="k.selfSummary"
  128. /> -->
  129. <el-input
  130. v-if="allData.type * 1 != 2"
  131. type="textarea"
  132. @blur="saveTab"
  133. :placeholder="
  134. k.cueWordType == 1 ? '【自评后请简述测算过程】' : ''
  135. "
  136. v-model="k.selfSummary"
  137. >
  138. </el-input>
  139. <div
  140. v-else
  141. style="width: 100%;padding: 5px;height: 100%;box-sizing: border-box;"
  142. >
  143. {{ k.selfSummary }}
  144. </div>
  145. </div>
  146. <div v-else class="ScoreStep">/</div>
  147. </div>
  148. <div>
  149. <div v-if="!k.testid.test.length">/</div>
  150. <div v-else style="padding-top: 10px;">
  151. <!-- {{ k.testid.test }} -->
  152. <div
  153. v-for="(item2) in k.testid.test"
  154. :key="item2.courseId"
  155. class="orgData"
  156. >
  157. <div @click="lookPrize(item2.courseId)">
  158. {{ item2.title }}:{{ item2.num }}份
  159. </div>
  160. <div
  161. style="color: black;"
  162. @click="goFillIn(item2.courseId)"
  163. >
  164. 去填写
  165. </div>
  166. </div>
  167. </div>
  168. </div>
  169. <!-- <div style="display: flex;justify-content: center;">
  170. {{ k.sco2 }}
  171. </div>
  172. <div style="display: flex;justify-content: center;">
  173. {{ k.cogSum }}
  174. </div> -->
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. <!-- 点击数据来源 -->
  183. <el-dialog
  184. title=""
  185. :visible.sync="diaIframe"
  186. :append-to-body="true"
  187. width="95%"
  188. :before-close="handleClose"
  189. class="dialog_diy"
  190. >
  191. <div style="height: 100%;">
  192. <iframe
  193. ref="viframe"
  194. style="width: 100%; height: 99%; border: none"
  195. :src="ifmUrl"
  196. ></iframe>
  197. </div>
  198. <span slot="footer" class="dialog-footer">
  199. <el-button @click="diaIframe = false">关 闭</el-button>
  200. </span>
  201. </el-dialog>
  202. </div>
  203. </template>
  204. <script>
  205. import backPage from "../../components/backPage.vue";
  206. export default {
  207. components:{
  208. backPage
  209. },
  210. directives: {
  211. stopMousewheel: {
  212. inserted: function(el) {
  213. const ele = el.tagName === "INPUT" ? el : el.querySelector("input");
  214. ele.addEventListener("mousewheel", () => {
  215. ele.blur();
  216. });
  217. }
  218. }
  219. },
  220. data() {
  221. return {
  222. gotype:sessionStorage.getItem('gotype'),
  223. pType: 2,
  224. allData: {
  225. type: 1,
  226. rjson: ""
  227. },
  228. // 页面填写数据
  229. tableJsonCon: [],
  230. // 页面基础ui
  231. PageBaseData: [],
  232. tabLoad: false, //表格加载状态
  233. userid: this.$route.query.userid, //用户id
  234. oid: this.$route.query.oid, //学校id
  235. org: this.$route.query.org, //组织id
  236. role: this.$route.query.role,
  237. ifmUrl: "", //数据来源地址
  238. diaIframe: false, //数据来源弹框
  239. aArray: [],
  240. bArray: [],
  241. timeListB:[],
  242. timeListA:[],
  243. timeA:"",
  244. timeB:"",
  245. testExamineBaseList:[],
  246. };
  247. },
  248. watch: {
  249. pType(newVal, oldVal) {
  250. this.getPageBase();
  251. },
  252. timeA(){
  253. this.getPageBase();
  254. },
  255. timeB(){
  256. this.getPageBase();
  257. }
  258. },
  259. computed: {},
  260. activated() {
  261. // 当组件被激活时调用
  262. this.getPageBase();
  263. this.getPageBase2(1)
  264. this.getPageBase2(2)
  265. },
  266. mounted() {
  267. this.getPageBase();
  268. this.getPageBase2(1)
  269. this.getPageBase2(2)
  270. // console.log(JSON.stringify(this.TeaTabJson));
  271. },
  272. methods: {
  273. // 禁用滚轮事件
  274. handleWheel(event) {
  275. event.preventDefault();
  276. },
  277. goFillIn(val) {
  278. this.$router.push(
  279. `/doTest?cid=${val}&org=${this.org}&type=3&role=${this.role}&isN=&oid=${this.oid}&userid=${this.userid}`
  280. );
  281. // this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/checkToTest?cid=${val}&oid=${this.oid}&org=${this.org}&type=2&role=0&peopleId=${this.userid}`;
  282. // this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/test?userid=${this.userid}&oid=45facc0a-1211-11ec-80ad-005056b86db5&org=&role=0`;
  283. // this.diaIframe = true;
  284. },
  285. // 提交
  286. Submit() {
  287. // if (this.allData.type == 2) {
  288. // this.$message({
  289. // type: "info",
  290. // message: "您已提交过,请勿重复提交"
  291. // });
  292. // return;
  293. // }
  294. let judgeNum = 0;
  295. // i.type == 1 这个用来判断 科组评价的因为最后两个教师不能打分所以type设为2,下面的循环将他们两个排除出去
  296. this.PageBaseData.forEach(e => {
  297. e.children.forEach(i => {
  298. if (i.type == 1) {
  299. if (!i.sco1) {
  300. judgeNum = 1;
  301. }
  302. if (i.sco1 * 1 < 0) {
  303. judgeNum = 2;
  304. }
  305. }
  306. });
  307. });
  308. if (judgeNum == 1) {
  309. this.$message({
  310. message: "请将【自评】分数列填写完整后再提交。",
  311. type: "warning"
  312. });
  313. return;
  314. }
  315. if (judgeNum == 2) {
  316. this.$message({
  317. message: "自评分数不可低于0,请检查后重新输入。",
  318. type: "warning"
  319. });
  320. return;
  321. }
  322. for (const e of this.PageBaseData) {
  323. for (const k of e.children) {
  324. if (k.testid.test.length > 0) {
  325. k.testid.test = k.testid.test.map(item => item.courseId);
  326. }
  327. }
  328. }
  329. this.$confirm("提交后无法修改,是否确定提交?", "提示", {
  330. confirmButtonText: "确定",
  331. cancelButtonText: "取消",
  332. type: "info"
  333. })
  334. .then(() => {
  335. let params = [
  336. {
  337. uid: this.userid,
  338. oid: this.oid,
  339. org: this.org,
  340. type: this.pType,
  341. json: JSON.stringify(this.PageBaseData),
  342. ttype: 2,
  343. tid:this.testExamineBaseList[0].id
  344. }
  345. ];
  346. this.ajax
  347. .post(this.$store.state.api + "addTestExamineWorks2", params)
  348. .then(res => {
  349. this.getData();
  350. })
  351. .catch(error => {
  352. console.log(error);
  353. });
  354. })
  355. .catch(() => {
  356. this.handleData();
  357. this.$message({
  358. type: "info",
  359. message: "已取消提交"
  360. });
  361. });
  362. },
  363. // 保存
  364. saveTab() {
  365. this.$forceUpdate();
  366. let PageBaseDataCopy = JSON.parse(JSON.stringify(this.PageBaseData));
  367. for (const e of PageBaseDataCopy) {
  368. for (const k of e.children) {
  369. if (k.testid.test.length > 0) {
  370. k.testid.test = k.testid.test.map(item => item.courseId);
  371. }
  372. }
  373. }
  374. let params = [
  375. {
  376. uid: this.userid,
  377. oid: this.oid,
  378. org: this.org,
  379. type: this.pType,
  380. json: JSON.stringify(PageBaseDataCopy),
  381. ttype: 1,
  382. tid:this.testExamineBaseList[0].id
  383. }
  384. ];
  385. // return console.log(params);
  386. this.ajax
  387. .post(this.$store.state.api + "addTestExamineWorks2", params)
  388. .then(res => {
  389. console.log("addTestExamineWorks2", res);
  390. // this.getData();
  391. // this.handleData();
  392. })
  393. .catch(error => {
  394. console.log(error);
  395. });
  396. },
  397. // 切换专任,班主任
  398. cutPage(e) {
  399. this.pType = e;
  400. },
  401. // 获取页面数据
  402. getData() {
  403. this.tabLoad = true;
  404. let params = {
  405. uid: this.userid,
  406. type: this.pType,
  407. tid:this.testExamineBaseList[0].id
  408. };
  409. this.ajax
  410. .get(this.$store.state.api + "getTestExamineByUserId2", params)
  411. .then(res => {
  412. console.log("getTestExamineByUserId", res);
  413. if (res.data[0].length > 0) {
  414. this.allData = res.data[0][0];
  415. let val = JSON.parse(res.data[0][0].json);
  416. this.PageBaseData.forEach(e => {
  417. val.forEach(i => {
  418. if (e.id == i.id) {
  419. e.children.forEach(a => {
  420. i.children.forEach(b => {
  421. if (a.id == b.id) {
  422. a.sco1 = b.sco1;
  423. a.sco2 = b.sco2;
  424. a.cogSum = b.cogSum;
  425. a.selfSummary = b.selfSummary;
  426. }
  427. });
  428. });
  429. }
  430. });
  431. });
  432. this.handleData();
  433. return (this.tabLoad = false);
  434. } else {
  435. this.allData.type = 1;
  436. this.allData.rjson = "";
  437. this.handleData();
  438. this.tabLoad = false;
  439. }
  440. // this.$forceUpdate();
  441. // else {
  442. // this.allData.type = 1;
  443. // this.getPageBase();
  444. // this.tabLoad = false;
  445. // }
  446. })
  447. .catch(error => {
  448. console.log(error);
  449. });
  450. },
  451. // 获取页面基础ui信息
  452. getPageBase() {
  453. let params = {
  454. typ: this.pType,
  455. org: this.org,
  456. oid: this.oid,
  457. time:this.pType==1?this.timeA:this.timeB
  458. };
  459. this.ajax
  460. .get(this.$store.state.api + "selectTestExamineBase2", params)
  461. .then(res => {
  462. // console.log("resresresres", res.data[0]);
  463. // this.allData = res.data[0][0];
  464. let testExamineBaseList = res.data[0];
  465. this.testExamineBaseList = testExamineBaseList;
  466. console.log("selectTestExamineBase", res.data[0][0]);
  467. this.PageBaseData = JSON.parse(res.data[0][0].json);
  468. // 先获取基础模板,然后再获取用户又没有填写过,填写过就开始循环赋值给基础模板,最后提交基础模板
  469. this.getData();
  470. // this.handleData();
  471. })
  472. .catch(error => {
  473. console.log(error);
  474. });
  475. },
  476. // 获取页面基础ui信息
  477. getPageBase2(type) {
  478. let params = {
  479. typ: type,
  480. org: this.org,
  481. oid: this.oid,
  482. time:type==1?this.timeA:this.timeB
  483. };
  484. this.ajax
  485. .get(this.$store.state.api + "selectTestExamineBase2", params)
  486. .then(res => {
  487. if(type == 1){
  488. this.aArray = res.data[0];
  489. this.timeListA = this.aArray.map(i=>{return {value:i.time,label:i.timeLabel}})
  490. if(this.timeListA.length>0)this.timeA = this.timeListA[0].value;
  491. }else {
  492. this.bArray = res.data[0];
  493. this.timeListB = this.bArray.map(i=>{return {value:i.time,label:i.timeLabel}})
  494. if(this.timeListB.length>0)this.timeB = this.timeListB[0].value;
  495. if(!this.bArray.length){
  496. this.pType = 1
  497. }
  498. }
  499. })
  500. .catch(error => {
  501. console.log(error);
  502. });
  503. },
  504. async handleData() {
  505. for (const e of this.PageBaseData) {
  506. for (const k of e.children) {
  507. if (k.testid.test.length > 0) {
  508. k.testid.test = await this.computedTest(k.testid.test);
  509. }
  510. }
  511. }
  512. },
  513. computedTest(val) {
  514. let params = [
  515. {
  516. uid: this.userid,
  517. testId: val.join(",")
  518. }
  519. ];
  520. return new Promise(resolve => {
  521. this.ajax
  522. .post(this.$store.state.api + "selectExamineTestName", params)
  523. .then(res => {
  524. resolve(res.data[0]);
  525. })
  526. .catch(error => {
  527. console.log(error);
  528. });
  529. });
  530. },
  531. // 查看数据来源
  532. lookPrize(val) {
  533. // return;
  534. this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/checkToTest?cid=${val}&oid=${this.oid}&org=${this.org}&type=2&role=0&peopleId=${this.userid}&tType=${this.pType}&examineId=${this.testExamineBaseList[0].id}`;
  535. // this.ifmUrl = `https://beta.pbl.cocorobo.cn/pbl-teacher-table/dist/#/test?userid=${this.userid}&oid=45facc0a-1211-11ec-80ad-005056b86db5&org=&role=0`;
  536. this.diaIframe = true;
  537. },
  538. // 关闭弹框
  539. handleClose(done) {
  540. this.getPageBase();
  541. done();
  542. }
  543. }
  544. };
  545. </script>
  546. <style scoped>
  547. .testPersonExamine {
  548. width: 100%;
  549. min-width: calc(100px * 10);
  550. height: 100%;
  551. /* overflow-x: scroll; */
  552. /* overflow: auto; */
  553. display: flex;
  554. flex-direction: column;
  555. /* padding: 10px; */
  556. box-sizing: border-box;
  557. background-color: #fff;
  558. /* margin: 10px 0; */
  559. border-radius: 5px;
  560. }
  561. /* .tArea { */
  562. /* box-sizing: border-box; */
  563. /* padding: 5px; */
  564. /* } */
  565. .tArea > div > textarea {
  566. border: none;
  567. width: 100%;
  568. height: 100%;
  569. resize: none;
  570. box-sizing: border-box;
  571. padding: 5px;
  572. outline-style: none;
  573. }
  574. .tArea > div >>> .el-textarea {
  575. height: 100%;
  576. }
  577. .tArea > div >>> .el-textarea__inner {
  578. border: none !important;
  579. height: 100%;
  580. resize: none;
  581. }
  582. .testPersonExamine > .testTit {
  583. height: 100px;
  584. display: flex;
  585. justify-content: space-between;
  586. align-items: center;
  587. }
  588. .notes {
  589. color: #fb5a3f;
  590. font-weight: 600;
  591. font-size: 20px;
  592. }
  593. .ScoreStep {
  594. height: 100%;
  595. display: flex;
  596. width: 100%;
  597. text-align: center;
  598. align-items: center;
  599. justify-content: center;
  600. }
  601. .ScoreStep > input {
  602. height: 100% !important;
  603. outline-style: none;
  604. width: 100%;
  605. padding: 5px;
  606. text-align: center;
  607. box-sizing: border-box;
  608. border-radius: 4px;
  609. border: none !important;
  610. /* border: 1px solid #dcdfe6 !important; */
  611. }
  612. .teaLis {
  613. display: flex;
  614. }
  615. .teal {
  616. padding: 10px 20px;
  617. cursor: pointer;
  618. }
  619. .Tbor {
  620. border-bottom: 2px rgba(54, 129, 252, 1) solid;
  621. font-weight: 600;
  622. }
  623. .testCon {
  624. box-sizing: border-box;
  625. padding: 20px;
  626. }
  627. .orgData {
  628. cursor: pointer;
  629. color: #528df6;
  630. margin-bottom: 10px;
  631. }
  632. .diaScoreTop {
  633. display: flex;
  634. justify-content: space-between;
  635. height: 60px;
  636. }
  637. .diaScoreLeft {
  638. display: flex;
  639. justify-content: space-between;
  640. align-items: center;
  641. }
  642. .diaScoreLeft > div {
  643. margin-right: 30px;
  644. }
  645. .diaScoreRight {
  646. display: flex;
  647. justify-content: space-between;
  648. align-items: center;
  649. }
  650. .TabBtn {
  651. cursor: pointer;
  652. color: #528df6;
  653. }
  654. .sBox_table {
  655. width: 100%;
  656. min-width: 1300px;
  657. margin: 0 auto;
  658. height: 100%;
  659. box-sizing: border-box;
  660. padding-bottom: 60px;
  661. font-size: 14px;
  662. }
  663. .table_title {
  664. width: calc(100% - 6px);
  665. min-width: calc(110px * 9);
  666. height: 50px;
  667. background: #e0eafb;
  668. border: 1px solid #d5d8df;
  669. display: flex;
  670. flex-direction: row;
  671. flex-wrap: nowrap;
  672. align-items: center;
  673. }
  674. /* 容器不显示滚动条,但仍然可以滚动 */
  675. .container {
  676. overflow: auto;
  677. scrollbar-width: none; /* 对于Firefox */
  678. }
  679. /* 针对WebKit浏览器,比如Chrome和Safari,使滚动条不占据空间 */
  680. .container::-webkit-scrollbar {
  681. display: none; /* 隐藏滚动条 */
  682. }
  683. /* 针对IE和Edge,使滚动条不占据空间 */
  684. .container {
  685. -ms-overflow-style: none; /* IE 10+ */
  686. scrollbar-width: none; /* Firefox */
  687. }
  688. .table_title > div {
  689. /* width: calc(100% / 9); */
  690. min-width: 110px;
  691. box-sizing: border-box;
  692. text-align: center;
  693. height: 100%;
  694. line-height: 50px;
  695. border-right: 1px solid #d5d8df;
  696. border-left: 1px solid #d5d8df;
  697. background: #e0eafb;
  698. }
  699. /* .table_title2 {
  700. width: 100%;
  701. min-width: calc(110px * 8);
  702. height: 50px;
  703. background: #e0eafb;
  704. border: 1px solid #d5d8df;
  705. display: flex;
  706. flex-direction: row;
  707. flex-wrap: nowrap;
  708. align-items: center;
  709. }
  710. .table_title2 > div {
  711. width: calc(100% / 8);
  712. min-width: 110px;
  713. text-align: center;
  714. height: 100%;
  715. line-height: 50px;
  716. border-right: 1px solid #d5d8df;
  717. } */
  718. .table_title > div:last-child {
  719. border: none;
  720. }
  721. .table_Content {
  722. width: 100%;
  723. min-width: calc(110px * 9);
  724. /* border: 1px solid #d5d8df; */
  725. display: flex;
  726. flex-direction: row;
  727. flex-wrap: nowrap;
  728. text-align: center;
  729. align-items: center;
  730. }
  731. /* .table_Content2 {
  732. width: 100%;
  733. min-width: calc(110px * 8);
  734. border: 1px solid #d5d8df;
  735. display: flex;
  736. flex-direction: row;
  737. flex-wrap: nowrap;
  738. text-align: center;
  739. align-items: center;
  740. } */
  741. .twoCol {
  742. width: 100%;
  743. display: flex;
  744. }
  745. .ColTit {
  746. width: 110px !important;
  747. min-width: 110px;
  748. display: flex;
  749. justify-content: center;
  750. align-items: center;
  751. border-bottom: 1px #ccc solid;
  752. border-left: 1px solid #d5d8df;
  753. }
  754. /* 取消[type='number']的input的上下箭头 */
  755. input::-webkit-inner-spin-button {
  756. -webkit-appearance: none !important;
  757. }
  758. input::-webkit-outer-spin-button {
  759. -webkit-appearance: none !important;
  760. }
  761. input[type="number"] {
  762. -moz-appearance: textfield;
  763. }
  764. .twoCon {
  765. display: flex;
  766. width: 100%;
  767. }
  768. .twoCon > div {
  769. /* width: 10%; */
  770. min-width: 110px;
  771. min-height: 50px;
  772. /* line-height: 50px; */
  773. display: flex;
  774. box-sizing: border-box;
  775. justify-content: center;
  776. align-items: center;
  777. border-left: 1px #ccc solid;
  778. border-bottom: 1px #ccc solid;
  779. }
  780. .twoCon > div:nth-child(1) {
  781. width: 140px !important;
  782. }
  783. .twoCon > div:nth-child(2) {
  784. width: 700px !important;
  785. white-space: pre-line;
  786. word-break: break-all;
  787. text-align: left;
  788. justify-content:flex-start;
  789. /* background-color:red; */
  790. }
  791. .twoCon > div:nth-child(3) {
  792. width: 100px !important;
  793. }
  794. .twoCon > div:nth-child(4) {
  795. width: 100px !important;
  796. }
  797. .twoCon > div:nth-child(5) {
  798. flex: 1;
  799. min-width: 150px;
  800. }
  801. .twoCon > div:nth-child(6) {
  802. flex: 0.5;
  803. min-width: 100px;
  804. }
  805. .twoCon > div:nth-child(7) {
  806. width: 100px !important;
  807. }
  808. .twoCon > div:nth-child(8) {
  809. flex: 1;
  810. }
  811. /* .twoCon > div >>> .el-input-number {
  812. height: 100% !important;
  813. } */
  814. /* .twoCon > div >>> .el-input {
  815. height: 100% !important;
  816. } */
  817. .ScoreStep >>> .el-input-number {
  818. height: 100% !important;
  819. }
  820. .ScoreStep >>> .el-input {
  821. height: 100% !important;
  822. }
  823. .ScoreStep >>> .el-input__inner {
  824. height: 100%;
  825. padding-left: 15px;
  826. border: none;
  827. padding-right: 15px;
  828. }
  829. .twoCon > div > input {
  830. border: none;
  831. width: 100%;
  832. height: 100%;
  833. outline-style: none;
  834. text-align: center;
  835. }
  836. /* .twoCon > div >>> .el-input__inner {
  837. height: 100%;
  838. border: none;
  839. padding-left: 15px;
  840. padding-right: 15px;
  841. } */
  842. .ColCon {
  843. flex: 1;
  844. }
  845. .ColCon:nth-child(-1) > div {
  846. border-bottom: none;
  847. }
  848. .twoCon > div > textarea {
  849. border: none;
  850. width: 100%;
  851. height: 100%;
  852. resize: none;
  853. outline-style: none;
  854. }
  855. .dialog_diy >>> .el-dialog {
  856. height: 95%;
  857. margin: 0 auto !important;
  858. margin-top: 20px !important;
  859. overflow: hidden;
  860. }
  861. .dialog_diy >>> .el-dialog__header {
  862. background: #454545 !important;
  863. padding: 25px 20px;
  864. }
  865. .dialog_diy >>> .el-dialog__body {
  866. height: calc(100% - 50px);
  867. box-sizing: border-box;
  868. padding: 0px;
  869. }
  870. .dialog_diy >>> .el-dialog__title {
  871. color: #fff;
  872. }
  873. .dialog_diy >>> .el-dialog__headerbtn {
  874. top: 19px;
  875. }
  876. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close {
  877. color: #fff;
  878. }
  879. .dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover {
  880. color: #fff;
  881. }
  882. .dialog_diy >>> .el-dialog__body,
  883. .dialog_diy >>> .el-dialog__footer {
  884. background: #fafafa;
  885. }
  886. .num_input>>>input{
  887. padding-right: 0px;
  888. -moz-appearance: textfield;
  889. -webkit-appearance: textfield;
  890. line-height: 1px !important;
  891. }
  892. .num_input>>>input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button {
  893. -webkit-appearance: none;
  894. margin: 0;
  895. }
  896. </style>