index.vue 24 KB

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