quoted.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. <template>
  2. <div>
  3. <template v-if="!addOrUpdateVisible">
  4. <el-form
  5. :inline="true"
  6. :model="dataForm"
  7. @keyup.enter.native="queryData()"
  8. >
  9. <el-form-item label="项目名称">
  10. <el-input
  11. v-model="dataForm.projectName"
  12. placeholder="请输入项目名称"
  13. clearable
  14. />
  15. </el-form-item>
  16. <el-form-item label="部门">
  17. <org-component v-model="dataForm.orgId" />
  18. </el-form-item>
  19. <el-form-item>
  20. <el-button @click="queryData()">查询</el-button>
  21. <el-button
  22. v-if="isAuth('quoted:insert')"
  23. type="primary"
  24. @click="addOrUpdateHandle(0)"
  25. >新建</el-button
  26. >
  27. </el-form-item>
  28. </el-form>
  29. <el-table
  30. :data="dataList"
  31. border
  32. v-loading="dataListLoading"
  33. style="width: 100%"
  34. >
  35. <el-table-column
  36. label="序号"
  37. type="index"
  38. width="50"
  39. align="center"
  40. ></el-table-column>
  41. <el-table-column
  42. prop="priceCode"
  43. header-align="center"
  44. align="center"
  45. min-width="140"
  46. :show-tooltip-when-overflow="true"
  47. label="报价编码"
  48. >
  49. </el-table-column>
  50. <el-table-column
  51. prop="projectName"
  52. header-align="center"
  53. align="center"
  54. min-width="140"
  55. :show-tooltip-when-overflow="true"
  56. label="项目名称"
  57. >
  58. </el-table-column>
  59. <el-table-column
  60. prop="type"
  61. header-align="center"
  62. align="center"
  63. min-width="140"
  64. :show-tooltip-when-overflow="true"
  65. label="项目类别"
  66. >
  67. <template slot-scope="scope">
  68. {{productTypeOption.find(t => t.value === scope.row.type).label}}
  69. </template>
  70. </el-table-column>
  71. <el-table-column
  72. prop="materialCost"
  73. header-align="center"
  74. align="center"
  75. min-width="140"
  76. :show-tooltip-when-overflow="true"
  77. label="报价小计"
  78. >
  79. </el-table-column>
  80. <el-table-column
  81. prop="mouldPrice"
  82. header-align="center"
  83. align="center"
  84. min-width="140"
  85. :show-tooltip-when-overflow="true"
  86. label="模具费"
  87. >
  88. </el-table-column>
  89. <el-table-column
  90. prop="managePrice"
  91. header-align="center"
  92. align="center"
  93. min-width="140"
  94. :show-tooltip-when-overflow="true"
  95. label="管理费"
  96. >
  97. </el-table-column>
  98. <el-table-column
  99. prop="ratePrice"
  100. header-align="center"
  101. align="center"
  102. min-width="140"
  103. :show-tooltip-when-overflow="true"
  104. label="税率"
  105. >
  106. </el-table-column>
  107. <el-table-column
  108. prop="totalPrice"
  109. header-align="center"
  110. align="center"
  111. min-width="140"
  112. :show-tooltip-when-overflow="true"
  113. label="总价"
  114. >
  115. </el-table-column>
  116. <el-table-column
  117. prop="precisionMaterialCost"
  118. header-align="center"
  119. align="center"
  120. min-width="140"
  121. :show-tooltip-when-overflow="true"
  122. label="精准报价小计"
  123. >
  124. </el-table-column>
  125. <el-table-column
  126. prop="precisionMouldPrice"
  127. header-align="center"
  128. align="center"
  129. min-width="140"
  130. :show-tooltip-when-overflow="true"
  131. label="精准模具费"
  132. >
  133. </el-table-column>
  134. <el-table-column
  135. prop="precisionManagePrice"
  136. header-align="center"
  137. align="center"
  138. min-width="140"
  139. :show-tooltip-when-overflow="true"
  140. label="精准管理费"
  141. >
  142. </el-table-column>
  143. <el-table-column
  144. prop="precisionRatePrice"
  145. header-align="center"
  146. align="center"
  147. min-width="140"
  148. :show-tooltip-when-overflow="true"
  149. label="精准税率"
  150. >
  151. </el-table-column>
  152. <el-table-column
  153. prop="precisionTotalPrice"
  154. header-align="center"
  155. align="center"
  156. min-width="140"
  157. :show-tooltip-when-overflow="true"
  158. label="精准总价"
  159. >
  160. </el-table-column>
  161. <el-table-column
  162. prop="remark"
  163. header-align="center"
  164. align="center"
  165. min-width="140"
  166. :show-tooltip-when-overflow="true"
  167. label="备注"
  168. >
  169. </el-table-column>
  170. <el-table-column
  171. prop="creatorName"
  172. header-align="center"
  173. align="center"
  174. min-width="140"
  175. :show-tooltip-when-overflow="true"
  176. label="负责人"
  177. >
  178. </el-table-column>
  179. <el-table-column
  180. prop="orgName"
  181. header-align="center"
  182. align="center"
  183. min-width="140"
  184. :show-tooltip-when-overflow="true"
  185. label="部门"
  186. >
  187. </el-table-column>
  188. <el-table-column
  189. prop="state"
  190. header-align="center"
  191. align="center"
  192. min-width="140"
  193. :show-tooltip-when-overflow="true"
  194. label="项目状态"
  195. >
  196. <template slot-scope="scope">
  197. {{projectStateOption.find(t => t.value === scope.row.state).label}}
  198. </template>
  199. </el-table-column>
  200. <el-table-column
  201. prop="approveState"
  202. header-align="center"
  203. align="center"
  204. min-width="140"
  205. :show-tooltip-when-overflow="true"
  206. label="项目评估状态"
  207. >
  208. <template slot-scope="scope">
  209. {{approveStateOption.find(t => t.value === scope.row.approveState).label}}
  210. </template>
  211. </el-table-column>
  212. <el-table-column
  213. fixed="right"
  214. header-align="center"
  215. align="center"
  216. min-width="340"
  217. width="340"
  218. label="操作"
  219. >
  220. <template slot-scope="scope">
  221. <el-button
  222. type="text"
  223. size="small"
  224. @click="showDetail(scope.row.programId)"
  225. >查看</el-button
  226. >
  227. <el-button
  228. v-if="isAuth('quoted:update')"
  229. type="text"
  230. size="small"
  231. @click="showDetail"
  232. >编辑</el-button
  233. >
  234. <el-button
  235. v-if="isAuth('quoted:revoke')"
  236. type="text"
  237. size="small"
  238. @click="showDetail"
  239. >撤回</el-button
  240. >
  241. <el-button
  242. v-if="isAuth('quoted:first')"
  243. type="text"
  244. size="small"
  245. @click="showDetail"
  246. >报价</el-button
  247. >
  248. <el-button
  249. v-if="isAuth('quoted:two')"
  250. type="text"
  251. size="small"
  252. @click="showDetail"
  253. >精准报价</el-button
  254. >
  255. <el-button
  256. v-if="isAuth('quoted:two')"
  257. type="text"
  258. size="small"
  259. @click="showDetail"
  260. >通知报价</el-button
  261. >
  262. <el-button
  263. v-if="isAuth('quoted:restart')"
  264. type="text"
  265. size="small"
  266. @click="showDetail"
  267. >重新报价</el-button
  268. >
  269. <el-button
  270. v-if="isAuth('quoted:accredit')"
  271. type="text"
  272. size="small"
  273. @click="showDetail"
  274. >授权</el-button
  275. >
  276. <el-button
  277. v-if="isAuth('quoted:result')"
  278. type="text"
  279. size="small"
  280. @click="showDetail"
  281. >报价结果</el-button
  282. >
  283. <el-button
  284. v-if="isAuth('quoted:result')"
  285. type="text"
  286. size="small"
  287. @click="showDetail"
  288. >导出</el-button
  289. >
  290. </template>
  291. </el-table-column>
  292. </el-table>
  293. <el-pagination
  294. @size-change="sizeChangeHandle"
  295. @current-change="currentChangeHandle"
  296. :current-page="pageIndex"
  297. :page-sizes="[10, 20, 50, 100]"
  298. :page-size="pageSize"
  299. :total="totalPage"
  300. layout="total, sizes, prev, pager, next, jumper">
  301. </el-pagination>
  302. </template>
  303. <quoted-add-or-update ref="addOrUpdate" v-if="addOrUpdateVisible" @onChose="onChose"></quoted-add-or-update>
  304. </div>
  305. </template>
  306. <script>
  307. import OrgComponent from '../common/org-component'
  308. import {getList} from '@/api/quoted'
  309. import QuotedAddOrUpdate from './quoted-add-or-update'
  310. import { productTypeOption, approveStateOption, projectStateOption } from '@/utils/enums'
  311. export default {
  312. name: 'cus-quoted',
  313. components: { OrgComponent, QuotedAddOrUpdate },
  314. data () {
  315. return {
  316. addOrUpdateVisible: false,
  317. detailVisible: false,
  318. productTypeOption: productTypeOption,
  319. approveStateOption: approveStateOption,
  320. projectStateOption: projectStateOption,
  321. dataForm: {},
  322. dataList: [],
  323. pageIndex: 1,
  324. pageSize: 10,
  325. totalPage: 0,
  326. dataListLoading: false
  327. }
  328. },
  329. created () {
  330. this.getDataList()
  331. },
  332. methods: {
  333. onChose () {
  334. this.addOrUpdateVisible = false
  335. this.detailVisible = false
  336. },
  337. // 每页数
  338. sizeChangeHandle (val) {
  339. this.pageSize = val
  340. this.pageIndex = 1
  341. this.getDataList()
  342. },
  343. // 当前页
  344. currentChangeHandle (val) {
  345. this.pageIndex = val
  346. this.getDataList()
  347. },
  348. queryData () {
  349. this.pageIndex = 1
  350. this.getDataList()
  351. },
  352. getDataList () {
  353. this.dataListLoading = true
  354. let param = {
  355. current: this.pageIndex,
  356. size: this.pageSize,
  357. ...this.dataForm
  358. }
  359. getList(param).then(({data}) => {
  360. if (data && data.code === '200') {
  361. this.dataList = data.data.records
  362. this.totalPage = Number(data.data.total)
  363. } else {
  364. this.dataList = []
  365. this.totalPage = 0
  366. }
  367. this.dataListLoading = false
  368. })
  369. },
  370. addOrUpdateHandle (id) {
  371. this.addOrUpdateVisible = true
  372. this.$nextTick(() => {
  373. this.$refs.addOrUpdate.init(id)
  374. })
  375. },
  376. showDetail () {}
  377. }
  378. }
  379. </script>
  380. <style scoped>
  381. </style>