detailsPage.vue 9.5 KB

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