detailsPage.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. <template>
  2. <div class="borderless">
  3. <div class="customer-head">
  4. <div class="customer-back">
  5. <el-button type="danger" style="border: none;background: none;color: red" icon="el-icon-arrow-left"
  6. @click="backToList">返回列表
  7. </el-button>
  8. </div>
  9. </div>
  10. <div style="margin-top: 60px">
  11. <basic-container>
  12. <el-form :model="form" ref="form" label-width="130px">
  13. <el-row>
  14. <el-col v-for="(item, index) in basicData.column" :span="item.span?item.span:6" :key="index">
  15. <el-form-item :label="item.label" :prop="item.prop" :rules="item.rules">
  16. <el-date-picker v-if="item.type === 'datetime'" style="width: 100%;" v-model="form[item.prop]" size="small" type="datetime" placeholder="选择日期" value-format="yyyy-MM-dd HH:mm:ss"/>
  17. <el-select v-else-if="item.type === 'select'" style="width: 100%" size="small" placeholder="请选择" clearable filterable></el-select>
  18. <el-input type="age" v-else v-model="form[item.prop]" size="small" autocomplete="off" placeholder="请输入"></el-input>
  19. </el-form-item>
  20. </el-col>
  21. <el-col>
  22. <el-form-item>
  23. <el-button type="info" style="float: right" @click="">生成账单</el-button>
  24. </el-form-item>
  25. </el-col>
  26. </el-row>
  27. </el-form>
  28. </basic-container>
  29. <basic-container>
  30. <avue-crud
  31. ref="crud"
  32. :data="data"
  33. :option="optionTable"
  34. :page.sync="page"
  35. :table-loading="loading"
  36. @row-del="rowDel"
  37. @row-update="rowUpdate"
  38. @row-save="rowSave"
  39. @size-change="sizeChange"
  40. @current-change="currentChange"
  41. @search-change="searchChange"
  42. @refresh-change="refreshChange"
  43. @cell-dblclick="cellDblclick"
  44. @on-load="getList"
  45. @saveColumn="saveColumn"
  46. >
  47. <template slot="menuLeft">
  48. <el-button type="success"
  49. size="small"
  50. icon="el-icon-plus"
  51. plain
  52. @click="">新增明细
  53. </el-button>
  54. <el-button type="primary"
  55. size="small"
  56. icon="el-icon-arrow-right"
  57. plain
  58. @click="">导 出
  59. </el-button>
  60. <el-button type="primary"
  61. size="small"
  62. plain
  63. @click="">打 印
  64. </el-button>
  65. <el-button type="success"
  66. size="small"
  67. icon="el-icon-plus"
  68. plain
  69. @click="">新 增
  70. </el-button>
  71. <el-button type="info"
  72. size="small"
  73. plain
  74. @click="">请 核
  75. </el-button>
  76. </template>
  77. </avue-crud>
  78. </basic-container>
  79. </div>
  80. </div>
  81. </template>
  82. <script>
  83. import option from "./configuration/detailsPage.json";
  84. export default {
  85. data() {
  86. return {
  87. loading: false,
  88. form:{},
  89. data: [],
  90. optionTable: option,
  91. //顶部from数据
  92. basicData: {
  93. column: [
  94. {
  95. label: '系统编号',
  96. prop: 'prop1',
  97. rules: [
  98. {
  99. required: false,
  100. message: ' ',
  101. trigger: 'blur'
  102. }
  103. ]
  104. }, {
  105. label: '制单日期',
  106. prop: 'prop2',
  107. rules: [
  108. {
  109. required: true,
  110. message: ' ',
  111. trigger: 'blur'
  112. }
  113. ]
  114. }, {
  115. label: '制单人',
  116. prop: 'prop3',
  117. data: [],
  118. rules: [
  119. {
  120. required: true,
  121. message: ' ',
  122. trigger: 'blur'
  123. }
  124. ]
  125. }, {
  126. label: '项目代码',
  127. prop: 'prop3',
  128. data: [],
  129. rules: [
  130. {
  131. required: true,
  132. message: ' ',
  133. trigger: 'blur'
  134. }
  135. ]
  136. }, {
  137. label: '项目名称',
  138. prop: 'prop4',
  139. rules: [
  140. {
  141. required: true,
  142. message: ' ',
  143. trigger: 'blur'
  144. }
  145. ]
  146. }, {
  147. label: '客户名称',
  148. prop: 'prop5',
  149. rules: [
  150. {
  151. required: true,
  152. message: ' ',
  153. trigger: 'blur'
  154. }
  155. ]
  156. }, {
  157. label: '责任人',
  158. prop: 'prop6',
  159. data: [],
  160. rules: [
  161. {
  162. required: true,
  163. message: ' ',
  164. trigger: 'blur'
  165. }
  166. ]
  167. }, {
  168. label: '电话',
  169. prop: 'prop7',
  170. data: [],
  171. rules: [
  172. {
  173. required: true,
  174. message: ' ',
  175. trigger: 'blur'
  176. }
  177. ]
  178. }, {
  179. label: '承揽人',
  180. prop: 'prop8',
  181. data: [],
  182. rules: [
  183. {
  184. required: true,
  185. message: ' ',
  186. trigger: 'blur'
  187. }
  188. ]
  189. }, {
  190. label: '合同金额',
  191. prop: 'prop8',
  192. rules: [
  193. {
  194. required: true,
  195. message: ' ',
  196. trigger: 'blur'
  197. }
  198. ]
  199. },
  200. {
  201. label: '预收金额',
  202. prop: 'prop9',
  203. rules: [
  204. {
  205. required: true,
  206. message: ' ',
  207. trigger: 'blur'
  208. }
  209. ]
  210. },
  211. {
  212. label: '未收金额',
  213. prop: 'prop10',
  214. rules: [
  215. {
  216. required: true,
  217. message: ' ',
  218. trigger: 'blur'
  219. }
  220. ]
  221. },
  222. {
  223. label: '开始日期',
  224. prop: 'prop11',
  225. type:'datetime',
  226. rules: [
  227. {
  228. required: true,
  229. message: ' ',
  230. trigger: 'blur'
  231. }
  232. ]
  233. },
  234. {
  235. label: '结束日期',
  236. prop: 'prop12',
  237. type:'datetime',
  238. rules: [
  239. {
  240. required: true,
  241. message: ' ',
  242. trigger: 'blur'
  243. }
  244. ]
  245. },
  246. {
  247. label: '收款方式',
  248. prop: 'prop13',
  249. type:'select',
  250. rules: [
  251. {
  252. required: true,
  253. message: ' ',
  254. trigger: 'blur'
  255. }
  256. ]
  257. },
  258. {
  259. label: '备注',
  260. prop: 'prop8',
  261. rules: [
  262. {
  263. required: true,
  264. message: ' ',
  265. trigger: 'blur'
  266. }
  267. ]
  268. }
  269. ],
  270. },
  271. page: {
  272. currentPage: 1,
  273. total: 0,
  274. pageSize: 10
  275. }
  276. };
  277. },
  278. methods: {
  279. //删除列表后面的删除按钮触发触发(row, index, done)
  280. rowDel(row, index, done) {
  281. this.$confirm("确定将选择数据删除?", {
  282. confirmButtonText: "确定",
  283. cancelButtonText: "取消",
  284. type: "warning"
  285. }).then(() => {
  286. this.$message({
  287. type: "success",
  288. message: "操作成功!"
  289. });
  290. // 数据回调进行刷新
  291. done(row);
  292. });
  293. },
  294. //修改时的修改按钮点击触发
  295. rowUpdate(row, index, done, loading) {
  296. setTimeout(() => {
  297. this.$message.success("修改成功");
  298. loading();
  299. done();
  300. }, 1000);
  301. },
  302. //新增修改时保存触发
  303. rowSave(row, done, loading) {
  304. setTimeout(() => {
  305. this.$message.success("保存成功");
  306. loading();
  307. done();
  308. }, 1000);
  309. },
  310. getList() {
  311. this.loading = true;
  312. setTimeout(() => {
  313. this.loading = false;
  314. this.data = [
  315. {
  316. prop1: "食品许可",
  317. prop2: "500",
  318. prop3: "次",
  319. prop4: "1",
  320. prop5: "1500",
  321. prop6: "1500",
  322. prop7: "年",
  323. prop8: "202202-1-1",
  324. prop9: "效率高",
  325. prop10: "商务部",
  326. prop11: "老周",
  327. prop12: "2021-1-1",
  328. prop13: "2021-1-1",
  329. prop14: "LOL",
  330. prop15: "2021-1-1",
  331. prop16: "LOL",
  332. prop17: "2021-1-1"
  333. }
  334. ];
  335. this.page.total = 1;
  336. }, 1000);
  337. },
  338. searchChange(params, done) {
  339. this.getList(this.page, params);
  340. done();
  341. },
  342. sizeChange(val) {
  343. this.page.pageSize = val;
  344. this.getList();
  345. },
  346. currentChange(val) {
  347. this.page.currentPage = val;
  348. this.getList();
  349. },
  350. refreshChange() {
  351. this.page.currentPage = 1;
  352. this.getList();
  353. },
  354. cellDblclick(row, column, cell, event) {
  355. console.log(row, column, cell, event);
  356. this.$refs.crud.rowEdit(row);
  357. },
  358. saveColumn(row, column) {
  359. console.log(row, column);
  360. },
  361. //返回主营项目列表
  362. backToList(){
  363. this.$router.$avueRouter.closeTag();
  364. this.$router.push({
  365. path: '/workManagement/main-items/list',
  366. query: {}
  367. });
  368. }
  369. }
  370. };
  371. </script>
  372. <style scoped lang="scss">
  373. .customer-head {
  374. position: fixed;
  375. top: 105px;
  376. width: 100%;
  377. margin-left: -10px;
  378. height: 62px;
  379. background: #ffffff;
  380. box-shadow: 0 4px 12px 0px rgba(232, 232, 235, 1);
  381. z-index: 999;
  382. }
  383. .customer-back {
  384. cursor: pointer;
  385. line-height: 62px;
  386. font-size: 16px;
  387. color: #323233;
  388. font-weight: 400;
  389. }
  390. </style>