salesContract.vue 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043
  1. <!--销售合同-->
  2. <!--2019年5月30日 20:25:16 by jlx-->
  3. <template>
  4. <div>
  5. <BaseHeaderLayout :leftSpan="8">
  6. <template slot="left">
  7. <ws-button type="primary" @click="handleAdd()" v-hasPermission="
  8. `contractManagement.salesContract.salesContractInfo.add`
  9. "><img width="13" height="13" style="
  10. vertical-align: text-top;
  11. position: relative;
  12. top: 0px;
  13. left: -4px;
  14. " src="../../../public/img/header-add.png" alt="" />添加</ws-button>
  15. <ws-button @click="exportlist()" v-hasPermission="
  16. `contractManagement.salesContract.salesContractInfo.view`"
  17. >导出</ws-button
  18. >
  19. </template>
  20. <template slot="right">
  21. <span style="width: 142px; display: inline-block; color: #8890b1"
  22. >状态:</span>
  23. <ws-select
  24. v-model="searchTypeText"
  25. placeholder=""
  26. class="typeselect"
  27. @change="selecttaskType"
  28. :value="searchType"
  29. >
  30. <ws-option
  31. v-for="item in taskTypeList"
  32. :key="item.value"
  33. :label="item.value"
  34. :value="item.value"
  35. style="color: #8890b1"
  36. />
  37. </ws-select>
  38. <el-date-picker
  39. v-model="value2"
  40. type="daterange"
  41. align="right"
  42. unlink-panels
  43. range-separator="至"
  44. start-placeholder="开始日期"
  45. end-placeholder="结束日期"
  46. :picker-options="pickerOptions"
  47. >
  48. </el-date-picker>
  49. <ws-input
  50. v-model="searchKeyWord"
  51. placeholder="可按照合同编号、买方名称、卖方名称进行查找"
  52. clearable
  53. maxlength="500"
  54. type="input"
  55. class="findValue"
  56. ></ws-input>
  57. <ws-button class="find" type="primary" @click="find()"
  58. ><img
  59. width="16"
  60. height="16"
  61. style="
  62. vertical-align: text-top;
  63. position: relative;
  64. top: 0px;
  65. left: -8px;
  66. " src="../../../public/img/sousuo.png" alt="" /></ws-button>
  67. </template>
  68. </BaseHeaderLayout>
  69. <el-table class="wenzi" :data="contractList.records" style="width: 100%; margin-top: 10px" height="780">
  70. <el-table-column type="index" label="序号">
  71. <template scope="scope">
  72. <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
  73. <span v-else>{{ scope.$index + 1 }}</span>
  74. </template>
  75. </el-table-column>
  76. <el-table-column prop="contractNo" label="合同编号" width="150">
  77. </el-table-column>
  78. <el-table-column prop="goodsName" label="货名" width="80">
  79. </el-table-column>
  80. <el-table-column prop="grade" label="品级" width="80">
  81. <template slot-scope="scope">
  82. <span v-if="scope.row.grade == '一等品'" class="top-grade">{{
  83. scope.row.grade
  84. }}</span>
  85. <span v-if="scope.row.grade == '二等品'" class="second-class">{{
  86. scope.row.grade
  87. }}</span>
  88. <span v-if="scope.row.grade == '三等品'" class="third-class">{{
  89. scope.row.grade
  90. }}</span>
  91. <span v-if="scope.row.grade == '等外'" class="substandard">{{
  92. scope.row.grade
  93. }}</span>
  94. </template>
  95. </el-table-column>
  96. <el-table-column prop="weight" label="重量(吨)"> </el-table-column>
  97. <el-table-column prop="unitContractPrice" label="合同单价(元)">
  98. </el-table-column>
  99. <el-table-column prop="packingMethod" label="包装方式"> </el-table-column>
  100. <el-table-column prop="buyer" label="买方"> </el-table-column>
  101. <el-table-column prop="seller" label="卖方"> </el-table-column>
  102. <el-table-column prop="completedQuantity" label="已完成(吨)">
  103. <template slot-scope="scope">
  104. <span
  105. v-if="scope.row.proportion < 90"
  106. style="color: #5473e8; font-weight: 600"
  107. >{{ scope.row.completedQuantity }}</span
  108. >
  109. <span
  110. v-if="scope.row.proportion > 90"
  111. style="color: red; font-weight: 600"
  112. >{{ scope.row.completedQuantity }}</span
  113. >
  114. </template>
  115. </el-table-column>
  116. <el-table-column prop="status" label="状态">
  117. <template slot-scope="scope">
  118. <span v-if="scope.row.approveStatus">{{scope.row.approveStatus}}</span>
  119. <el-popover v-else
  120. placement="left"
  121. :width="285"
  122. trigger="click"
  123. visible-arrow="false"
  124. @show="history(scope.row)"
  125. >
  126. <template>
  127. <span slot="reference">
  128. <span
  129. v-if="scope.row.status == '待执行'"
  130. class="executory"
  131. ></span>
  132. <span
  133. v-if="scope.row.status == '执行中'"
  134. class="inExecution"
  135. ></span>
  136. <span v-if="scope.row.status == '已完成'" class="done"></span
  137. >{{ scope.row.status }}
  138. </span>
  139. </template>
  140. <div>
  141. <p style="margin-top: 0; padding-left: 10px">操作历史</p>
  142. <div v-for="(item, index) in historyList" class="flex">
  143. <div class="vertical-text vertical-text-left">
  144. {{ item.updateDate }}
  145. </div>
  146. <div>
  147. <div class="vertical-circle"></div>
  148. <div
  149. v-if="index != historyList.length - 1"
  150. class="vertical-line"
  151. ></div>
  152. </div>
  153. <div class="vertical-text">
  154. {{ item.operateUser }}<br />{{ item.dealMsg }}
  155. </div>
  156. </div>
  157. </div>
  158. </el-popover>
  159. <img v-if='!scope.row.approveStatus'
  160. width="17"
  161. height="18"
  162. style="vertical-align: text-top; position: relative; top: -1px"
  163. src="../../../public/img/edit.png"
  164. @click="editClick(scope.row)"
  165. alt=""
  166. />
  167. </template>
  168. </el-table-column>
  169. <el-table-column prop="signingDate" label="签订日期"> </el-table-column>
  170. <el-table-column prop="mildewGrain" label="未回款(元)">
  171. </el-table-column>
  172. <el-table-column prop="addressUrl" label="附件">
  173. <template slot-scope="scope">
  174. <img
  175. width="18"
  176. height="20"
  177. style="vertical-align: text-top; position: relative; top: -1px"
  178. src="../../../public/img/fujian.png"
  179. @click="fujian(scope.row)"
  180. alt=""
  181. />
  182. <span v-if="scope.row.addressUrlArray != null">{{
  183. scope.row.addressUrlArray.length == 0 ? "":scope.row.addressUrlArray.length
  184. }}</span>
  185. <!-- <i @click="fujian(scope.row)" class="el-icon-paperclip iconCss"></i> -->
  186. </template>
  187. </el-table-column>
  188. <el-table-column prop="address" label="操作" width="140">
  189. <template slot-scope="scope">
  190. <img width="16" height="16" style="vertical-align: text-top; margin: 0 6px"
  191. src="../../../public/img/chakan.png" @click="handleExamine(scope.row)" v-hasPermission="
  192. `contractManagement.salesContract.salesContractInfo.view`
  193. "
  194. alt=""
  195. />
  196. <div v-if='scope.row.approveStatus!="待决策人审核"&&scope.row.approveStatus||scope.row.status!="执行中"&&scope.row.status' style='display:inline-block;'>
  197. <img
  198. width="17"
  199. height="16"
  200. style="vertical-align: text-top; margin: 0 6px"
  201. src="../../../public/img/bianji.png"
  202. v-hasPermission="
  203. `contractManagement.salesContract.salesContractInfo.edit`
  204. "
  205. @click="handleEdit(scope.row)"
  206. alt=""
  207. />
  208. </div>
  209. <img
  210. width="16"
  211. height="17"
  212. style="
  213. vertical-align: text-top;
  214. position: relative;
  215. top: -1px;
  216. margin: 0 6px;
  217. " src="../../../public/img/shanchu.png" v-hasPermission="
  218. `contractManagement.salesContract.salesContractInfo.delete`
  219. " @click="handleDelete(scope.row)" alt="" />
  220. </template>
  221. </el-table-column>
  222. </el-table>
  223. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
  224. :page-size="deptCircularPage.pageSize" layout="total, sizes, prev, pager, next, jumper"
  225. :total="deptBudgetTotal">
  226. </el-pagination>
  227. <WinseaContentModal v-model="accessoryTFs" :title="$t('system.noticeCircular.information')"
  228. @on-cancel="handleClose">
  229. <ws-upload ref="upload" :size-limit="size"
  230. @onChange="onChange" :comp-id="compId" :appendix-ids="appendixIdss"
  231. accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar" />
  232. </WinseaContentModal>
  233. </div>
  234. </template>
  235. <script>
  236. import {
  237. getList,
  238. export1,
  239. editstatus,
  240. billoperatehis,
  241. deletecontract,
  242. editInfo
  243. } from '@/model/contarct/index'
  244. import {
  245. downloadFile
  246. } from '@/utils/batchDown'
  247. import Pagination from '@/components/Pagination'
  248. import WsUpload from '@/components/WsUpload'
  249. import {
  250. dayjs,
  251. fmoney,
  252. EventBus
  253. } from 'base-core-lib'
  254. export default {
  255. name: 'viewSpareMoney',
  256. components: {
  257. WsUpload,
  258. Pagination,
  259. },
  260. watch: {
  261. vesselId(val) {
  262. this.getList()
  263. },
  264. isShow(val) {
  265. this.showType = val
  266. },
  267. },
  268. data() {
  269. return {
  270. id:'',
  271. //弹出框
  272. dialogViewSpareMoney: false,
  273. dialogApproveFormVisible: false,
  274. // 船舶类型
  275. monetaryKey: null,
  276. // 表格显示数据
  277. tableDate: [],
  278. size: 10,
  279. // 是否显示
  280. showType: true,
  281. // 年
  282. year: '',
  283. deptBudgetTotal: 0,
  284. currentPage: 1,
  285. pageSize: 10,
  286. appendixIdsAdd: '',
  287. searchType: 1,
  288. searchTypeText: '未完成',
  289. searchKeyWord: '',
  290. contractType: 1,
  291. goodsType: 1,
  292. startDate: null,
  293. endDate: null,
  294. // 提交类型
  295. submitType: true,
  296. contractForm: {},
  297. categoryIndex: 0,
  298. rulesVendor: {},
  299. size: 10,
  300. appendixIdss: [],
  301. compId: sessionStorage.getItem('ws-pf_compId'),
  302. deptCircularPage: {},
  303. date: {
  304. year: dayjs().format('YYYY'),
  305. month: dayjs().format('MM'),
  306. },
  307. contractList: [],
  308. deptBudgetList: {},
  309. historyList: [],
  310. pickerBeginDateBefore: {
  311. disabledDate: (time) => {
  312. return time.getTime() > Date.now()
  313. },
  314. },
  315. accessoryTFs: false,
  316. accesscard: false,
  317. accessurl: '',
  318. fileList: [],
  319. taskTypeList: [{
  320. value: '未完成',
  321. type: 1
  322. },
  323. {
  324. value: '已完成',
  325. type: 2
  326. },
  327. {
  328. value: '未回款',
  329. type: 3
  330. },
  331. {
  332. value: '全部合同',
  333. type: ''
  334. },
  335. ],
  336. addressUrls: [],
  337. pickerOptions: {
  338. shortcuts: [{
  339. text: '本周',
  340. onClick(picker) {
  341. const end = new Date()
  342. const start = new Date()
  343. var thisDay = start.getDay()
  344. var thisDate = start.getDate()
  345. if (thisDay != 0) {
  346. start.setDate(thisDate - thisDay)
  347. }
  348. picker.$emit('pick', [start, end])
  349. },
  350. },
  351. {
  352. text: '本月',
  353. onClick(picker) {
  354. const end = new Date()
  355. const start = new Date()
  356. start.setDate(1)
  357. picker.$emit('pick', [start, end])
  358. },
  359. },
  360. {
  361. text: '本季度',
  362. onClick(picker) {
  363. var oDate = new Date()
  364. var thisYear = oDate.getFullYear()
  365. var thisMonth = oDate.getMonth() + 1
  366. var n = Math.ceil(thisMonth / 3) // 季度
  367. var Month = n * 3 - 1
  368. var start = new Date(thisYear, Month - 2, 1)
  369. var end = new Date()
  370. picker.$emit('pick', [start, end])
  371. },
  372. },
  373. ],
  374. },
  375. value1: '',
  376. value2: '',
  377. }
  378. },
  379. activated() {
  380. //cg.viewBudget
  381. //cg.viewSpareMoney
  382. // this.getVesselData();
  383. this.getList()
  384. this.showType = this.isShow
  385. },
  386. methods: {
  387. onChange () {
  388. this.$refs.upload
  389. .handleSaveBill()
  390. .then(async response => {
  391. this.deptBudgetList.addressUrl = response
  392. this.deptBudgetList.id=this.id
  393. this.deptBudgetList.flag=1
  394. editInfo(this.deptBudgetList)
  395. .toPromise()
  396. .then((response) => {
  397. this.accessoryTFs = false
  398. this.$message.success('上传成功')
  399. this.getList()
  400. })
  401. })
  402. .catch(res => {
  403. EventBus.$emit('error', (JSON.parse(res) || {}).message)
  404. this.$refs.upload.clearFiles()
  405. })
  406. },
  407. dateFormat(fmt, date) {
  408. let ret
  409. const opt = {
  410. 'Y+': date.getFullYear().toString(), // 年
  411. 'm+': (date.getMonth() + 1).toString(), // 月
  412. 'd+': date.getDate().toString(), // 日
  413. 'H+': date.getHours().toString(), // 时
  414. // "M+": date.getMinutes().toString(), // 分
  415. // "S+": date.getSeconds().toString() // 秒
  416. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  417. }
  418. for (let k in opt) {
  419. ret = new RegExp('(' + k + ')').exec(fmt)
  420. if (ret) {
  421. fmt = fmt.replace(
  422. ret[1],
  423. ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
  424. )
  425. }
  426. }
  427. return fmt
  428. },
  429. handleClose() {
  430. this.dialogViewSpareMoney = false
  431. },
  432. handleClose1() {
  433. this.accesscard = false
  434. },
  435. handleSizeChange(val) {
  436. console.log(`每页 ${val} 条`)
  437. this.pageSize = val
  438. this.getList()
  439. },
  440. handleCurrentChange(val) {
  441. this.currentPage = val
  442. console.log(`当前页: ${val}`)
  443. this.getList()
  444. },
  445. getList() {
  446. getList({
  447. compId: sessionStorage.getItem('ws-pf_compId'),
  448. contractType: this.contractType,
  449. goodsType: this.goodsType,
  450. currentPage: this.currentPage,
  451. pageSize: this.pageSize,
  452. searchType: this.searchType,
  453. searchKeyWord: this.searchKeyWord,
  454. startDate: this.startDate,
  455. endDate: this.endDate,
  456. contrPage: this.contrPage,
  457. })
  458. .toPromise()
  459. .then((response) => {
  460. for (var i = 0; i < response.records.length; i++) {
  461. if (response.records[i].addressUrl != null) {
  462. if (response.records[i].addressUrl != "") {
  463. response.records[i].addressUrlArray =
  464. response.records[i].addressUrl.split(',')
  465. }
  466. } else {
  467. response.records[i].addressUrlArray = []
  468. }
  469. if (response.records[i].imperfectGrain != null) {
  470. response.records[i].proportion =
  471. Math.floor(
  472. (response.records[i].imperfectGrain /
  473. response.records[i].weight) *
  474. 10000
  475. ) / 100
  476. } else {
  477. response.records[i].proportion = 0
  478. }
  479. }
  480. this.deptCircularPage.currentPage = response.current
  481. this.deptCircularPage.pageSize = response.size
  482. this.deptBudgetTotal = response.total
  483. this.contractList = response
  484. for (var i = 0; i < response.records.length; i++) {
  485. var arr = new Array()
  486. this.addressUrls[i] = new Array()
  487. if (this.contractList.records[i].addressUrl != null) {
  488. arr = this.contractList.records[i].addressUrl.split(',')
  489. this.addressUrls[i] = arr
  490. }
  491. }
  492. })
  493. },
  494. // 上传附件
  495. uploadSuccess(data, files, url) {
  496. console.log(data, files, url)
  497. // this.deptBudgetList.
  498. // this.formData.append('files', files)
  499. // this.feedbackObj.uploadNameAttachment = data.appendixName
  500. // this.feedbackObj.pathUploadAttachment = data.appendixPath
  501. // // this.newAppendixs = files
  502. // this.onChangeFlag = true
  503. },
  504. editClick(row) {
  505. var status = ''
  506. if (row.status == '待执行' || row.status == '已完成') {
  507. status = '执行中'
  508. } else if (row.status == '执行中') {
  509. status = '已完成'
  510. }
  511. //cancelButtonClass: "btn-custom-cancel"
  512. this.$confirm(`是否将状态改为${status}`, {
  513. confirmButtonText: '确定',
  514. cancelButtonText: '取消',
  515. type: 'warning',
  516. })
  517. .then(() => {
  518. editstatus({
  519. id: row.id
  520. })
  521. .toPromise()
  522. .then((response) => {
  523. this.$notify.success({
  524. title: '成功',
  525. message: '状态修改成功',
  526. })
  527. this.getList()
  528. })
  529. .catch((response) => {
  530. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  531. })
  532. })
  533. .catch(() => {
  534. return false
  535. })
  536. },
  537. selecttaskType(e) {
  538. for (var i = 0; i < this.taskTypeList.length; i++) {
  539. if (this.taskTypeList[i].value == e) {
  540. this.searchType = this.taskTypeList[i].type
  541. }
  542. }
  543. },
  544. // receiveAttachmentPath
  545. fujian(row) {
  546. this.id=row.id
  547. this.accessoryTFs = true
  548. this.appendixIdss = row.addressUrl
  549. console.log(this.appendixIdss)
  550. },
  551. handleExamine(row) {
  552. this.$router.push({
  553. name: 'salesContractExamine',
  554. query: {
  555. id: row.id
  556. },
  557. })
  558. },
  559. handleAdd() {
  560. this.$router.push({
  561. path: 'salesContractAdd'
  562. })
  563. },
  564. handleEdit(row) {
  565. this.$router.push({
  566. name: 'salesContractEdit',
  567. query: {
  568. id: row.id
  569. },
  570. })
  571. },
  572. // 关闭 dialog时 处理文件url 初始化upload组件
  573. handleCloe() {
  574. this.dialogViewSpareMoney = false
  575. },
  576. history(row) {
  577. billoperatehis({
  578. id: row.id
  579. })
  580. .toPromise()
  581. .then((response) => {
  582. this.historyList = response
  583. })
  584. },
  585. find() {
  586. if (this.value2) {
  587. this.startDate = this.dateFormat('YYYY-mm-dd', this.value2[0])
  588. this.endDate = this.dateFormat('YYYY-mm-dd', this.value2[1])
  589. } else {
  590. this.startDate = ''
  591. this.endDate = ''
  592. }
  593. this.currentPage = 1
  594. this.getList()
  595. },
  596. async exportlist() {
  597. const {
  598. data
  599. } = await export1({
  600. compId: sessionStorage.getItem('ws-pf_compId'),
  601. contractType: this.contractType,
  602. goodsType: this.goodsType,
  603. currentPage: this.currentPage,
  604. pageSize: this.pageSize,
  605. searchType: this.searchType,
  606. searchKeyWord: this.searchKeyWord,
  607. startDate: this.startDate,
  608. endDate: this.endDate,
  609. }, {}, {
  610. responseType: 'blob'
  611. }).toPromise()
  612. downloadFile({
  613. res: data,
  614. fileName: `${
  615. this.date.year + (this.date.month ? `-${this.date.month}` : '')
  616. }_销售合同`,
  617. type: 'xls',
  618. })
  619. },
  620. handleDelete(row) {
  621. var handleDelete = ' '
  622. if (row.handleDelete == '') {}
  623. this.$confirm(
  624. `删除该合同将同时永久删除合同对应的临时仓库相关数据,是否确定删除?`, {
  625. cancelButtonText: '取消',
  626. confirmButtonText: '确定',
  627. type: 'warning',
  628. }
  629. )
  630. .then(() => {
  631. deletecontract({
  632. id: row.id
  633. })
  634. .toPromise()
  635. .then((response) => {
  636. this.$notify.success({
  637. title: '成功',
  638. message: '删除成功',
  639. })
  640. this.getList()
  641. })
  642. .catch((response) => {
  643. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  644. })
  645. })
  646. .catch(() => {
  647. return false
  648. })
  649. },
  650. },
  651. }
  652. </script>
  653. <style lang="scss" scoped>
  654. .vertical-text-left {
  655. width: 62px;
  656. text-align: right;
  657. }
  658. .flex {
  659. display: flex;
  660. }
  661. .el-range-editor.el-input__inner {
  662. margin-left: 10px;
  663. }
  664. /deep/.base_header_layout .grid-content.right .find.el-button--primary {
  665. width: 30px;
  666. margin-left: -10px;
  667. border-top-left-radius: 0px;
  668. border-bottom-left-radius: 0px;
  669. }
  670. .el-button--primary {
  671. background-color: #5878e8;
  672. border-color: #5878e8;
  673. }
  674. .el-button--default {
  675. border: 1px solid #5473e8;
  676. color: #5473e8;
  677. }
  678. .warning {
  679. width: 100%;
  680. height: 2px;
  681. background: red;
  682. }
  683. .executory,
  684. .inExecution,
  685. .done {
  686. width: 6px;
  687. height: 6px;
  688. display: inline-block;
  689. border-radius: 50%;
  690. position: relative;
  691. top: -1px;
  692. }
  693. .executory {
  694. background: #ff9f24;
  695. }
  696. .inExecution {
  697. background: #5878e8;
  698. }
  699. .done {
  700. background: #50cad4;
  701. }
  702. .top-grade {
  703. background: linear-gradient(90deg, #5678e9, #7993f6);
  704. color: #fff;
  705. padding: 3px;
  706. border-radius: 2px;
  707. }
  708. .second-class {
  709. background: linear-gradient(90deg, #50cdd9, #82e2ea);
  710. color: #fff;
  711. padding: 3px;
  712. border-radius: 2px;
  713. }
  714. .third-class {
  715. background: linear-gradient(90deg, #ffa735, #ffbf70);
  716. color: #fff;
  717. padding: 3px;
  718. border-radius: 2px;
  719. }
  720. .substandard {
  721. background: linear-gradient(90deg, #b2b4bb, #ced0d5);
  722. color: #fff;
  723. padding: 3px;
  724. border-radius: 2px;
  725. }
  726. .wrap {
  727. width: 400px;
  728. position: absolute;
  729. top: 131px;
  730. left: 794px;
  731. transform-origin: right center;
  732. z-index: 2005;
  733. }
  734. .vertical-line {
  735. height: 100px;
  736. border-left: 2px solid #e9ecf7;
  737. margin-left: 4px;
  738. padding: 0 3px;
  739. // border-image: -webkit-linear-gradient(#00eba7, #08b8e6) 30 30;
  740. // border-image: -moz-linear-gradient(#00eba7, #08b8e6) 30 30;
  741. // border-image: linear-gradient(#00eba7, #08b8e6) 30 30;
  742. }
  743. .el-pagination {
  744. padding: 10px 15px;
  745. margin-bottom: 0;
  746. text-align: center;
  747. }
  748. /deep/.el-pager li.active {
  749. color: #5878e8;
  750. cursor: default;
  751. }
  752. /deep/.el-pager li:hover {
  753. color: #5878e8;
  754. cursor: default;
  755. }
  756. .vertical-circle {
  757. width: 10px;
  758. height: 10px;
  759. border: 2px solid #5878e8;
  760. background-color: #ffffff;
  761. -webkit-border-radius: 100px;
  762. }
  763. .vertical-circle:first-child {
  764. color: red;
  765. }
  766. .vertical-text {
  767. margin: 0 10px;
  768. color: #8890b1;
  769. font-size: 12px;
  770. margin-top: -4px;
  771. }
  772. /deep/.el-table .el-table__header .cell,
  773. /deep/.el-table .el-table__body .cell {
  774. text-align: center;
  775. }
  776. .typeselect {
  777. width: 500px;
  778. }
  779. .padding-xs {
  780. padding: 15px;
  781. text-align: right;
  782. }
  783. .clearfix:after {
  784. content: '';
  785. display: block;
  786. clear: both;
  787. }
  788. .el-table {
  789. font-size: 16px;
  790. }
  791. .taskType {
  792. width: 100%;
  793. background-color: #fff;
  794. margin-top: 2px;
  795. margin-bottom: 10px;
  796. list-style: none;
  797. // padding-bottom: 20px;
  798. li {
  799. float: left;
  800. border: 1px solid #6ea0f3;
  801. border-radius: 5px;
  802. max-width: 190px;
  803. padding: 0 5px;
  804. text-align: center;
  805. margin: 10px 20px;
  806. cursor: pointer;
  807. font-size: 14px;
  808. p {
  809. margin: 8px 0px;
  810. span {
  811. color: #e74c3c;
  812. }
  813. }
  814. }
  815. li:hover {
  816. background-color: #e4eeff;
  817. color: #1d6ced;
  818. }
  819. }
  820. .el-date-editor--date {
  821. margin: 0 10px;
  822. }
  823. .findValue {
  824. margin: 0 10px;
  825. }
  826. /deep/.findValue .el-input__inner {
  827. border-top-right-radius: 0px;
  828. border-bottom-right-radius: 0px;
  829. }
  830. .button-container {
  831. display: flex;
  832. flex-wrap: nowrap;
  833. justify-content: space-between;
  834. align-items: center;
  835. background-color: #fff;
  836. width: 100%;
  837. height: 50px;
  838. padding: 0 10px;
  839. &>div {
  840. margin-left: 10px;
  841. display: flex;
  842. flex-wrap: nowrap;
  843. flex-direction: row;
  844. &>span {
  845. line-height: 50px;
  846. }
  847. }
  848. /deep/.auditFlow-box {
  849. position: unset;
  850. margin-left: 10px;
  851. &/deep/.auditFlow-icon {
  852. width: auto;
  853. padding-right: 30px;
  854. }
  855. &/deep/.auditFlow-main {
  856. position: absolute;
  857. }
  858. }
  859. }
  860. .box-app {
  861. display: inline-block;
  862. float: left;
  863. margin-left: 30px;
  864. line-height: 50px;
  865. }
  866. /deep/.el-dialog {
  867. .el-form-item {
  868. margin-bottom: 0 !important;
  869. .el-input--medium {
  870. textarea {
  871. min-height: 100px !important;
  872. }
  873. }
  874. }
  875. }
  876. .collapse-bottom {
  877. margin-bottom: 20px;
  878. }
  879. .input-main .textarea .el-textarea__inner {
  880. width: 100%;
  881. z-index: 1;
  882. }
  883. /*.crt-main .textarea /deep/ .el-form-item__label {*/
  884. /* height: 82px;*/
  885. /*}*/
  886. // 控制select为只读的时候显示样式
  887. .hide-sel {
  888. .el-input__inner {
  889. border: 0px;
  890. }
  891. .el-icon-arrow-up {
  892. display: none;
  893. }
  894. .el-textarea__inner {
  895. background-color: #fff !important;
  896. border: 0;
  897. }
  898. .el-date-editor {
  899. i {
  900. display: none;
  901. }
  902. }
  903. .is-disabled {
  904. .el-input__inner:hover {
  905. background-color: #fff !important;
  906. border: 0;
  907. }
  908. color: #606266;
  909. .el-input__inner {
  910. background-color: #fff !important;
  911. border: 0;
  912. color: #606266;
  913. }
  914. .el-textarea__inner {
  915. background-color: #fff !important;
  916. border: 0;
  917. color: #606266;
  918. }
  919. }
  920. }
  921. // 控制select为只读的时候显示样式
  922. /deep/.ws-class-table-col {
  923. height: auto;
  924. padding: 0px 2px;
  925. /deep/.el-input__inner {
  926. padding: 0px 2px;
  927. }
  928. }
  929. /deep/.is-disabled {
  930. .el-input__prefix,
  931. .el-input__suffix {
  932. display: none;
  933. }
  934. .el-input__inner {
  935. background-color: #fff;
  936. border-color: #fff !important;
  937. color: #000 !important;
  938. font-size: 14px;
  939. cursor: text;
  940. padding: 0 !important;
  941. }
  942. .el-message-box {
  943. width: 440px;
  944. height: 160px;
  945. background: #ffffff;
  946. box-shadow: 0px 2px 31px 0px rgba(66, 75, 112, 0.23);
  947. border-radius: 4px;
  948. }
  949. /deep/.el-message-box__message p {
  950. width: 351px;
  951. height: 20px;
  952. font-size: 14px;
  953. font-weight: 400;
  954. color: #191919;
  955. line-height: 20px;
  956. }
  957. .el-message-box__title {
  958. width: 440px;
  959. height: 160px;
  960. background: #ffffff;
  961. box-shadow: 0px 2px 31px 0px rgba(66, 75, 112, 0.23);
  962. border-radius: 4px;
  963. }
  964. }
  965. /deep/.typeselect .el-input__inner {
  966. color: #8890b1;
  967. }
  968. </style>