index.vue 25 KB

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