index.vue 24 KB

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