salesContract.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552
  1. <!--销售合同-->
  2. <!--2019年5月30日 20:25:16 by jlx-->
  3. <template>
  4. <div>
  5. <BaseHeaderLayout :leftSpan="10">
  6. <template slot="left">
  7. <ws-button
  8. type="primary"
  9. :disable="checkBtn"
  10. @click="handleAdd()"
  11. v-hasPermission="
  12. `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
  13. "
  14. >添加</ws-button
  15. >
  16. <ws-button
  17. :disable="checkBtn"
  18. @click="enquiry(3)"
  19. v-hasPermission="
  20. `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
  21. "
  22. >导出</ws-button
  23. >
  24. </template>
  25. <template slot="right">
  26. <ws-select
  27. v-model="deptBudgetList.crtDutyId"
  28. placeholder=""
  29. class="typeselect"
  30. @change="selectCrtDuty"
  31. >
  32. <ws-option
  33. v-for="item in taskTypeList"
  34. :key="item.value"
  35. :label="item.value"
  36. :value="item.value"
  37. />
  38. </ws-select>
  39. <ws-date-picker
  40. :picker-options="pickerBeginDateBefore"
  41. v-model="deptBudgetList.birthday"
  42. type="date"
  43. default-value="1980-01-01"
  44. placeholder="起始日期"
  45. format="yyyy-MM-dd"
  46. value-format="yyyy-MM-dd"
  47. />
  48. <span>至</span>
  49. <ws-date-picker
  50. :picker-options="pickerBeginDateBefore"
  51. v-model="deptBudgetList.birthday"
  52. type="date"
  53. default-value="1980-01-01"
  54. placeholder="截止日期"
  55. format="yyyy-MM-dd"
  56. value-format="yyyy-MM-dd"
  57. />
  58. <ws-input
  59. v-model="deptBudgetList.interviewOpinion"
  60. placeholder="可按照合同编号、买方名称、卖方名称进行查找"
  61. clearable
  62. maxlength="500"
  63. type="input"
  64. class="findValue"
  65. ></ws-input>
  66. <!-- v-hasPermission="'procurement.sparepart.directShip'" -->
  67. <ws-button
  68. type="primary"
  69. :disable="checkBtn"
  70. @click="enquiry(3)"
  71. v-hasPermission="
  72. `${$permission('PERMISSIONS.PURSPAPPLINFO_CREATEINSTORE')}`
  73. "
  74. >查找</ws-button
  75. >
  76. </template>
  77. </BaseHeaderLayout>
  78. <el-table :data="tableData.records" style="width: 100%; margin-top: 10px">
  79. <el-table-column type="index" />
  80. <el-table-column prop="contractNo" label="合同编号" width="80">
  81. </el-table-column>
  82. <el-table-column prop="goodsName" label="货名" width="80">
  83. </el-table-column>
  84. <el-table-column prop="grade" label="品级"> </el-table-column>
  85. <el-table-column prop="weight" label="重量(吨)"> </el-table-column>
  86. <el-table-column prop="unitContractPrice" label="合同单价(元)">
  87. </el-table-column>
  88. <el-table-column prop="packingMethod" label="包装方式"> </el-table-column>
  89. <el-table-column prop="buyer" label="买方"> </el-table-column>
  90. <el-table-column prop="seller" label="卖方"> </el-table-column>
  91. <el-table-column prop="imperfectGrain" label="已完成(吨)">
  92. </el-table-column>
  93. <el-table-column prop="status" label="状态">
  94. <template slot-scope="scope">
  95. <el-popover
  96. placement="left"
  97. :width="400"
  98. trigger="hover"
  99. @show="history(scope.row)"
  100. >
  101. <template #reference>
  102. <span>{{ scope.row.status }}</span>
  103. </template>
  104. <div>
  105. <p>操作历史</p>
  106. <div v-for="(item, index) in historyList">
  107. <div class="vertical-circle"></div>
  108. <div class="vertical-text">
  109. {{ item.operateUser }}{{ item.dealMsg }}<br />{{
  110. item.updateDate
  111. }}
  112. </div>
  113. <div
  114. v-if="index != historyList.length - 1"
  115. class="vertical-line"
  116. ></div>
  117. </div>
  118. </div>
  119. </el-popover>
  120. <i class="el-icon-edit" @click="editClick(scope.row)"></i>
  121. </template>
  122. </el-table-column>
  123. <el-table-column prop="signingDate" label="签订日期"> </el-table-column>
  124. <el-table-column prop="mildewGrain" label="未回款(元)">
  125. </el-table-column>
  126. <el-table-column prop="addressUrl" label="附件"> </el-table-column>
  127. <el-table-column prop="address" label="操作" width="300">
  128. <template slot-scope="scope">
  129. <el-button
  130. type="success"
  131. size="small"
  132. @click="handleExamine(scope.row)"
  133. >查看</el-button
  134. >
  135. <el-button type="primary" size="small" @click="handleEdit(scope.row)"
  136. >编辑</el-button
  137. >
  138. <el-button type="danger" size="small" @click="handleDelete(scope.row)"
  139. >删除</el-button
  140. >
  141. </template>
  142. </el-table-column>
  143. </el-table>
  144. <!-- 弹出页面-审核通过 -->
  145. <BaseContentModalScrap
  146. v-model="dialogApproveFormVisible"
  147. :title="$t('common.opinion')"
  148. :isRules="false"
  149. @confirm="approve"
  150. />
  151. </div>
  152. </template>
  153. <script>
  154. import {
  155. getList,
  156. export1,
  157. editstatus,
  158. billoperatehis,
  159. deletecontract,
  160. } from '@/model/contarct/index'
  161. import { dayjs } from 'base-core-lib'
  162. export default {
  163. name: 'viewSpareMoney',
  164. watch: {
  165. vesselId(val) {
  166. this.getVesselData()
  167. },
  168. isShow(val) {
  169. this.showType = val
  170. },
  171. },
  172. data() {
  173. return {
  174. //弹出框
  175. dialogViewSpareMoney: false,
  176. dialogApproveFormVisible: false,
  177. // 船舶类型
  178. monetaryKey: null,
  179. // 表格显示数据
  180. tableDate: [],
  181. // 是否显示
  182. showType: true,
  183. // 年
  184. year: '',
  185. // 提交类型
  186. contractType:1,
  187. currentPage:1,
  188. pageSize:10,
  189. searchType:1,
  190. searchKeyWord:'',
  191. startDate:null,
  192. endDate: null,
  193. contractType: 1,
  194. currentPage: 1,
  195. pageSize: 10,
  196. searchType: 1,
  197. searchKeyWord:'',
  198. startDate: null,
  199. endDate: null,
  200. historyList:{},
  201. submitType: true,
  202. contractForm: {},
  203. categoryIndex: 0,
  204. rulesVendor: {},
  205. // pickerBeginDateBefore: {},
  206. tableData: [],
  207. taskTypeList: [
  208. { value: '未完成(默认)' },
  209. { value: '已完成' },
  210. { value: '待回款' },
  211. { value: '全部合同' },
  212. ],
  213. deptBudgetList: {
  214. compId: sessionStorage.getItem('ws-pf_compId'),
  215. seafarerName: '',
  216. crtDutyId: '',
  217. crtDutyName: '',
  218. seafarerSexKey: '',
  219. mobilePhone: '',
  220. birthday: '',
  221. dutyId: '',
  222. dutyName: '',
  223. intendedShipId: '',
  224. intendedShipName: '',
  225. interviewPersons: '',
  226. interviewDates: '',
  227. interviewType: '',
  228. interviewResult: '1',
  229. interviewOpinion: '',
  230. aliasName: '',
  231. },
  232. currentPage: 1,
  233. pageSize: 10,
  234. searchType: 1,
  235. searchTypeText: '未完成',
  236. searchKeyWord: '',
  237. contractType: 1,
  238. startDate: null,
  239. endDate: null,
  240. }
  241. },
  242. activated() {
  243. this.deletecontract()
  244. this.getList()
  245. this.showType = this.isShow
  246. },
  247. methods: {
  248. // deletecontract(){
  249. // deletecontract({
  250. // }).toPromise()
  251. // .then((response) => {
  252. // this.tableData = response
  253. // })
  254. // },
  255. getList() {
  256. getList({
  257. compId: sessionStorage.getItem('ws-pf_compId'),
  258. contractType: this.contractType,
  259. currentPage: this.currentPage,
  260. pageSize: this.pageSize,
  261. searchType: this.searchType,
  262. searchKeyWord: this.searchKeyWord,
  263. startDate: this.startDate,
  264. endDate: this.endDate,
  265. contrPage: this.contrPage,
  266. })
  267. .toPromise()
  268. .then((response) => {
  269. this.tableData = response
  270. })
  271. },
  272. editClick(row) {
  273. var status = ''
  274. if (row.status == '待执行' || row.status == '已完成') {
  275. status = '执行中'
  276. } else if (row.status == '执行中') {
  277. status = '已完成'
  278. }
  279. this.$confirm(`是否将状态改为${status}`, '提示', {
  280. confirmButtonText: '确定',
  281. cancelButtonText: '取消',
  282. type: 'warning',
  283. })
  284. .then(() => {
  285. editstatus({ id: row.id })
  286. .toPromise()
  287. .then((response) => {
  288. this.$notify.success({
  289. title: '成功',
  290. message: '状态修改成功',
  291. })
  292. this.getList()
  293. })
  294. .catch((response) => {
  295. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  296. })
  297. })
  298. .catch(() => {
  299. return false
  300. })
  301. },
  302. // 关闭 dialog时 处理文件url 初始化upload组件
  303. handleClose() {
  304. this.dialogViewSpareMoney = false
  305. },
  306. handleExamine(row) {
  307. this.$router.push({
  308. name: 'salesContractExamine',
  309. params: { id: row.id },
  310. })
  311. },
  312. handleAdd() {
  313. this.$router.push({ path: 'salesContractAdd' })
  314. },
  315. deletecontract(){},
  316. filtlistQuery() {},
  317. searchDialog() {},
  318. vesselIdSelected() {},
  319. seelctShips() {},
  320. checkBtn() {},
  321. handleEdit(row) {
  322. this.$router.push({
  323. name: 'salesContractEdit',
  324. params: { id: row.id },
  325. })
  326. },
  327. approve() {},
  328. listQuery() {},
  329. total() {},
  330. clearfiltQuery() {},
  331. selectCrtDuty() {},
  332. pickerBeginDateBefore: {
  333. disabledDate: (time) => {
  334. return time.getTime() > Date.now()
  335. },
  336. },
  337. handleDelete(row){
  338. var handleDelete = ''
  339. if (row.handleDelete == '待执行' || row.handleDelete == '已完成') {
  340. handleDelete = '执行中'
  341. } else if (row.handleDelete == '执行中') {
  342. handleDelete = '已完成'
  343. }
  344. this.$confirm(`合同删除后不可恢复,是否继续删除?`, '提示', {
  345. confirmButtonText: '确定',
  346. cancelButtonText: '取消',
  347. type: 'warning',
  348. })
  349. .then(() => {
  350. deletecontract({ id: row.id })
  351. .toPromise()
  352. .then((response) => {
  353. this.$notify.success({
  354. title: '成功',
  355. message: '删除成功',
  356. })
  357. this.deletecontract()
  358. })
  359. .catch((response) => {
  360. // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
  361. })
  362. })
  363. .catch(() => {
  364. return false
  365. })
  366. }
  367. },
  368. }
  369. </script>
  370. <style lang="scss" scoped>
  371. .typeselect {
  372. width: 500px;
  373. }
  374. .padding-xs {
  375. padding: 15px;
  376. text-align: right;
  377. }
  378. .clearfix:after {
  379. content: '';
  380. display: block;
  381. clear: both;
  382. }
  383. .taskType {
  384. width: 100%;
  385. background-color: #fff;
  386. margin-top: 2px;
  387. margin-bottom: 10px;
  388. list-style: none;
  389. // padding-bottom: 20px;
  390. li {
  391. float: left;
  392. border: 1px solid #6ea0f3;
  393. border-radius: 5px;
  394. max-width: 190px;
  395. padding: 0 5px;
  396. text-align: center;
  397. margin: 10px 20px;
  398. cursor: pointer;
  399. font-size: 14px;
  400. p {
  401. margin: 8px 0px;
  402. span {
  403. color: #e74c3c;
  404. }
  405. }
  406. }
  407. li:hover {
  408. background-color: #e4eeff;
  409. color: #1d6ced;
  410. }
  411. }
  412. .el-date-editor--date {
  413. margin: 0 10px;
  414. }
  415. .findValue {
  416. margin: 0 10px;
  417. }
  418. .button-container {
  419. display: flex;
  420. flex-wrap: nowrap;
  421. justify-content: space-between;
  422. align-items: center;
  423. background-color: #fff;
  424. width: 100%;
  425. height: 50px;
  426. padding: 0 10px;
  427. & > div {
  428. margin-left: 10px;
  429. display: flex;
  430. flex-wrap: nowrap;
  431. flex-direction: row;
  432. & > span {
  433. line-height: 50px;
  434. }
  435. }
  436. /deep/.auditFlow-box {
  437. position: unset;
  438. margin-left: 10px;
  439. &/deep/.auditFlow-icon {
  440. width: auto;
  441. padding-right: 30px;
  442. }
  443. &/deep/.auditFlow-main {
  444. position: absolute;
  445. }
  446. }
  447. }
  448. .box-app {
  449. display: inline-block;
  450. float: left;
  451. margin-left: 30px;
  452. line-height: 50px;
  453. }
  454. /deep/.el-dialog {
  455. .el-form-item {
  456. margin-bottom: 0 !important;
  457. .el-input--medium {
  458. textarea {
  459. min-height: 100px !important;
  460. }
  461. }
  462. }
  463. }
  464. .collapse-bottom {
  465. margin-bottom: 20px;
  466. }
  467. .input-main .textarea .el-textarea__inner {
  468. width: 100%;
  469. z-index: 1;
  470. }
  471. /*.crt-main .textarea /deep/ .el-form-item__label {*/
  472. /* height: 82px;*/
  473. /*}*/
  474. // 控制select为只读的时候显示样式
  475. .hide-sel {
  476. .el-input__inner {
  477. border: 0px;
  478. }
  479. .el-icon-arrow-up {
  480. display: none;
  481. }
  482. .el-textarea__inner {
  483. background-color: #fff !important;
  484. border: 0;
  485. }
  486. .el-date-editor {
  487. i {
  488. display: none;
  489. }
  490. }
  491. .is-disabled {
  492. .el-input__inner:hover {
  493. background-color: #fff !important;
  494. border: 0;
  495. }
  496. color: #606266;
  497. .el-input__inner {
  498. background-color: #fff !important;
  499. border: 0;
  500. color: #606266;
  501. }
  502. .el-textarea__inner {
  503. background-color: #fff !important;
  504. border: 0;
  505. color: #606266;
  506. }
  507. }
  508. }
  509. // 控制select为只读的时候显示样式
  510. /deep/.ws-class-table-col {
  511. height: auto;
  512. padding: 0px 2px;
  513. /deep/.el-input__inner {
  514. padding: 0px 2px;
  515. }
  516. }
  517. /deep/.is-disabled {
  518. .el-input__prefix,
  519. .el-input__suffix {
  520. display: none;
  521. }
  522. .el-input__inner {
  523. background-color: #fff;
  524. border-color: #fff !important;
  525. color: #000 !important;
  526. font-size: 14px;
  527. cursor: text;
  528. padding: 0 !important;
  529. }
  530. }
  531. </style>