demand.vue 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. <template>
  2. <div>
  3. <div>
  4. <el-button
  5. icon="plus"
  6. @click="openAddDemand"
  7. >
  8. 新增需求信息
  9. </el-button>
  10. </div>
  11. <div style="margin-top: 20px">
  12. <el-table
  13. :data="customerData.demandList"
  14. height="750px"
  15. stripe
  16. >
  17. <el-table-column
  18. label="提出时间"
  19. align="center"
  20. width="150px"
  21. prop="proposeTime"
  22. />
  23. <el-table-column
  24. label="是否完成"
  25. align="center"
  26. width="150px"
  27. >
  28. <template #default="scope">
  29. <el-text :type="scope.row.isFinish ? 'success' : 'danger'">
  30. {{ scope.row.isFinish ? '已完成' : '未完成' }}
  31. </el-text>
  32. </template>
  33. </el-table-column>
  34. <el-table-column
  35. label="需求内容"
  36. align="center"
  37. width="300px"
  38. >
  39. <template #default="scope">
  40. <el-input
  41. v-model="scope.row.content"
  42. type="textarea"
  43. :rows="3"
  44. />
  45. </template>
  46. </el-table-column>
  47. <el-table-column
  48. label="操作"
  49. align="center"
  50. >
  51. <template #default="scope">
  52. <el-button
  53. type="primary"
  54. text
  55. icon="Edit"
  56. @click="demandEdit(scope.row)"
  57. >
  58. 编辑
  59. </el-button>
  60. <el-button
  61. type="primary"
  62. text
  63. icon="delete"
  64. @click="deleteDemand(scope.row)"
  65. >
  66. 删除
  67. </el-button>
  68. </template>
  69. </el-table-column>
  70. </el-table>
  71. </div>
  72. <el-dialog
  73. v-model="addDemandShow"
  74. width="35%"
  75. title="新增客户需求"
  76. >
  77. <el-form label-width="100px">
  78. <el-form-item label="提出时间:">
  79. <el-date-picker
  80. v-model="addDemandData.proposeTime"
  81. type="date"
  82. placeholder="请选择提出时间"
  83. size="large"
  84. format="YYYY-MM-DD"
  85. value-format="YYYY-MM-DD"
  86. clearable
  87. @clear="addDemandData.proposeTime = ''"
  88. />
  89. </el-form-item>
  90. <el-form-item label="需求内容:">
  91. <el-input
  92. v-model="addDemandData.content"
  93. type="textarea"
  94. :rows="3"
  95. placeholder="请输入需求内容"
  96. />
  97. </el-form-item>
  98. <el-form-item label="是否完成:">
  99. <el-select
  100. v-model="addDemandData.isFinish"
  101. size="large"
  102. placeholder="是否完成"
  103. >
  104. <el-option
  105. label="已完成"
  106. :value="true"
  107. />
  108. <el-option
  109. label="未完成"
  110. :value="false"
  111. />
  112. </el-select>
  113. </el-form-item>
  114. </el-form>
  115. <template #footer>
  116. <el-button
  117. type="primary"
  118. size="large"
  119. @click="addDemand"
  120. >确定</el-button>
  121. </template>
  122. </el-dialog>
  123. <el-dialog
  124. v-model="editDemandShow"
  125. width="35%"
  126. title="编辑客户需求"
  127. >
  128. <el-form label-width="100px">
  129. <el-form-item label="提出时间:">
  130. <el-date-picker
  131. v-model="editDemandData.proposeTime"
  132. type="date"
  133. placeholder="请选择提出时间"
  134. size="large"
  135. format="YYYY-MM-DD"
  136. value-format="YYYY-MM-DD"
  137. clearable
  138. @clear="editDemandData.proposeTime = ''"
  139. />
  140. </el-form-item>
  141. <el-form-item label="需求内容:">
  142. <el-input
  143. v-model="editDemandData.content"
  144. type="textarea"
  145. :rows="3"
  146. placeholder="请输入需求内容"
  147. />
  148. </el-form-item>
  149. <el-form-item label="是否完成:">
  150. <el-select
  151. v-model="editDemandData.isFinish"
  152. size="large"
  153. placeholder="是否完成"
  154. >
  155. <el-option
  156. label="已完成"
  157. :value="true"
  158. />
  159. <el-option
  160. label="未完成"
  161. :value="false"
  162. />
  163. </el-select>
  164. </el-form-item>
  165. </el-form>
  166. <template #footer>
  167. <el-button
  168. type="primary"
  169. size="large"
  170. @click="editDemand"
  171. >确定</el-button>
  172. </template>
  173. </el-dialog>
  174. </div>
  175. </template>
  176. <script setup>
  177. import { ref, reactive } from 'vue'
  178. import { useCustomer } from '@/pinia/customer/customer'
  179. import { ElMessage, ElMessageBox } from 'element-plus'
  180. import { postUserDemand, delUserDemand, putUserDemand } from '@/api/demand'
  181. defineOptions({
  182. name: 'DemandUnit'
  183. })
  184. const customerData = useCustomer()
  185. const openAddDemand = () => {
  186. addDemandShow.value = true
  187. }
  188. // 新增需求
  189. const addDemandShow = ref(false)
  190. const addDemandData = reactive({
  191. content: '',
  192. customerId: customerData.customerId,
  193. proposeTime: '',
  194. isFinish: false
  195. })
  196. const addDemand = () => {
  197. for (const key in addDemandData) {
  198. if (addDemandData[key] === '' || addDemandData[key] === 0) {
  199. ElMessage.error('请将信息填写完整')
  200. return
  201. }
  202. }
  203. console.log(addDemandData)
  204. postUserDemand(addDemandData).then(res => {
  205. if (res.code === 0) {
  206. ElMessage.success(res.msg)
  207. customerData.getDemandList(customerData.customerId)
  208. addDemandShow.value = false
  209. }
  210. })
  211. }
  212. // 编辑需求
  213. const editDemandShow = ref(false)
  214. const editDemandData = reactive({
  215. id: 0,
  216. proposeTime: '',
  217. content: '',
  218. isFinish: false,
  219. customerId: customerData.customerId
  220. })
  221. const demandEdit = (row) => {
  222. editDemandShow.value = true
  223. editDemandData.id = row.ID
  224. editDemandData.proposeTime = row.proposeTime
  225. editDemandData.isFinish = row.isFinish
  226. editDemandData.content = row.content
  227. }
  228. const editDemand = () => {
  229. console.log(editDemandData)
  230. putUserDemand(editDemandData).then(res => {
  231. if (res.code === 0) {
  232. ElMessage.success(res.msg)
  233. editDemandShow.value = false
  234. customerData.getDemandList(customerData.customerId)
  235. }
  236. })
  237. }
  238. // 删除需求
  239. const deleteDemand = (row) => {
  240. ElMessageBox.confirm(
  241. '确定删除此客户进度吗?',
  242. '删除',
  243. {
  244. confirmButtonText: '确定',
  245. cancelButtonText: '取消',
  246. type: 'warning',
  247. }
  248. )
  249. .then(() => {
  250. delUserDemand(row.ID).then(res => {
  251. if (res.code === 0) {
  252. ElMessage.success(res.msg)
  253. customerData.getDemandList(customerData.customerId)
  254. }
  255. })
  256. })
  257. .catch(() => {
  258. ElMessage({
  259. type: 'info',
  260. message: '取消删除',
  261. })
  262. })
  263. }
  264. </script>
  265. <style scoped lang="scss">
  266. </style>