|
@@ -0,0 +1,237 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <van-nav-bar title="土规业务下单" left-text="返回" left-arrow @click-left="onClickLeft()" />
|
|
|
+ <div class="form-style">
|
|
|
+ <van-form @submit="addLandOrder()">
|
|
|
+ <van-cell-group inset>
|
|
|
+ <van-field label="项目名称" v-model="land.name" name="name" type="textarea" placeholder="请输入项目名称" :rules="[{ required: true, message: '请输入项目名称' }]" required />
|
|
|
+ <VanSinglePicker
|
|
|
+ label="归属单位"
|
|
|
+ v-model="land.belongTo"
|
|
|
+ v-bind:columns="belongToAimColumns"
|
|
|
+ name="belongTo"
|
|
|
+ placeholder="请选择归属单位"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择归属单位' }]"
|
|
|
+ :required="true"
|
|
|
+ />
|
|
|
+ <VanSinglePicker
|
|
|
+ label="项目类型"
|
|
|
+ v-model="land.cate"
|
|
|
+ v-bind:columns="cateColumns"
|
|
|
+ name="cate"
|
|
|
+ placeholder="请选择项目类型"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择项目类型' }]"
|
|
|
+ :required="true"
|
|
|
+ :search="true"
|
|
|
+ />
|
|
|
+ <VanSinglePicker label="客户名字" v-model="land.customerId" v-bind:columns="customerColumns" name="customerId" placeholder="请选择客户名字" clearable :search="true" @change="getCustomerDetail()" />
|
|
|
+ <van-field label="委托单位" v-model="land.clientUnit" name="clientUnit" readonly />
|
|
|
+ <van-field label="联系方式" v-model="land.mobile" name="mobile" readonly />
|
|
|
+ <van-field label="客户经理" v-model="land.clientManager" name="clientManager" readonly />
|
|
|
+ <VanSinglePicker
|
|
|
+ label="业务来源"
|
|
|
+ v-model="land.businessSource"
|
|
|
+ v-bind:columns="businessSourceColumns"
|
|
|
+ name="businessSource"
|
|
|
+ placeholder="请选择业务来源"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择业务来源' }]"
|
|
|
+ :required="true"
|
|
|
+ :search="true"
|
|
|
+ />
|
|
|
+ <van-field label="项目负责人" v-model="land.skiller" name="skiller" placeholder="请输入项目负责人" :rules="[{ required: true, message: '请输入项目负责人' }]" required />
|
|
|
+ <VanCalendar label="签订日期" v-model="land.signDate" name="signDate" placeholder="请选择签订日期" clearable />
|
|
|
+ <VanSinglePicker
|
|
|
+ label="付款类型"
|
|
|
+ v-model="land.paymentMethod"
|
|
|
+ v-bind:columns="paymentMethodColumns"
|
|
|
+ name="paymentMethod"
|
|
|
+ placeholder="请选择付款类型"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择付款类型' }]"
|
|
|
+ :required="true"
|
|
|
+ />
|
|
|
+ <van-field label="合同金额" v-model="land.amount" name="amount" type="number" placeholder="请输入合同金额">
|
|
|
+ <template #button>元</template>
|
|
|
+ </van-field>
|
|
|
+ <VanSinglePicker
|
|
|
+ label="所属部门"
|
|
|
+ v-model="land.departmentId"
|
|
|
+ v-bind:columns="departmentColumns"
|
|
|
+ name="departmentId"
|
|
|
+ placeholder="请选择所属部门"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择所属部门' }]"
|
|
|
+ :required="true"
|
|
|
+ :search="true"
|
|
|
+ />
|
|
|
+ <VanMultiplePicker
|
|
|
+ label="人员配置"
|
|
|
+ v-model="land.userIds"
|
|
|
+ name="userIds"
|
|
|
+ placeholder="请选择人员配置"
|
|
|
+ :originOptions="userOptions"
|
|
|
+ clearable
|
|
|
+ :rules="[{ required: true, message: '请选择人员配置' }]"
|
|
|
+ :required="true"
|
|
|
+ :search="true"
|
|
|
+ />
|
|
|
+ </van-cell-group>
|
|
|
+ <div style="margin: 16px;">
|
|
|
+ <van-button round block type="primary" native-type="submit">提交</van-button>
|
|
|
+ </div>
|
|
|
+ </van-form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import { mapStores } from 'pinia';
|
|
|
+import { useUserStore } from '@/stores/useUserStore';
|
|
|
+import { showNotify } from 'vant';
|
|
|
+import VanSinglePicker from '@/components/VanSinglePicker/index.vue';
|
|
|
+import VanCalendar from '@/components/VanCalendar/index.vue';
|
|
|
+import VanMultiplePicker from '@/components/VanMultiplePicker/index.vue';
|
|
|
+import { simpleType } from '@/api/dictData';
|
|
|
+import { simpleAll, detail } from '@/api/customer';
|
|
|
+import { simpleAll as userSimpleAll } from '@/api/user';
|
|
|
+import { simpleAll as depSimpleAll } from '@/api/department';
|
|
|
+import { add } from '@/api/land';
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ VanSinglePicker,
|
|
|
+ VanCalendar,
|
|
|
+ VanMultiplePicker,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // 归属单位
|
|
|
+ belongToAimColumns: [
|
|
|
+ { text: '大友', value: 'DY' },
|
|
|
+ { text: '泰济诚', value: 'TJC' },
|
|
|
+ ],
|
|
|
+ // 项目类型
|
|
|
+ cateColumns: [],
|
|
|
+ // 客户名字
|
|
|
+ customerColumns: [],
|
|
|
+ // 业务来源
|
|
|
+ businessSourceColumns: [],
|
|
|
+ // 付款类型
|
|
|
+ paymentMethodColumns: [
|
|
|
+ { text: '一次性付款', value: '一次性付款' },
|
|
|
+ { text: '分期付款', value: '分期付款' },
|
|
|
+ ],
|
|
|
+ // 所属部门
|
|
|
+ departmentColumns: [],
|
|
|
+ // 用户选项
|
|
|
+ userOptions: [],
|
|
|
+ land: {
|
|
|
+ clientManager: null,
|
|
|
+ name: null,
|
|
|
+ belongTo: null,
|
|
|
+ cate: null,
|
|
|
+ customerId: null,
|
|
|
+ clientUnit: null,
|
|
|
+ mobile: null,
|
|
|
+ businessSource: null,
|
|
|
+ skiller: null,
|
|
|
+ signDate: null,
|
|
|
+ paymentMethod: null,
|
|
|
+ amount: null,
|
|
|
+ paymentMethod: null,
|
|
|
+ userIds: [],
|
|
|
+ },
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapStores(useUserStore),
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.land.clientManager = this.userStore.userInfo.name;
|
|
|
+ this.getCateColumns();
|
|
|
+ this.getCustomerColumns();
|
|
|
+ this.getBusinessSourceColumns();
|
|
|
+ this.getDepartmentColumns();
|
|
|
+ this.getAllUser();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onClickLeft() {
|
|
|
+ history.back();
|
|
|
+ },
|
|
|
+ // 获取项目类型
|
|
|
+ getCateColumns() {
|
|
|
+ simpleType('项目类型').then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ // 使用 map 方法提取 value 和 name 属性
|
|
|
+ this.cateColumns = res.data.map((item) => ({
|
|
|
+ value: String(item.id),
|
|
|
+ text: String(item.name),
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 获取客户名字
|
|
|
+ getCustomerColumns() {
|
|
|
+ simpleAll().then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ // 使用 map 方法提取 value 和 name 属性
|
|
|
+ this.customerColumns = res.data.map((item) => ({
|
|
|
+ value: String(item.key),
|
|
|
+ text: String(item.name),
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 获取客户详情
|
|
|
+ getCustomerDetail() {
|
|
|
+ detail(this.land.customerId).then((res) => {
|
|
|
+ this.land.clientUnit = res.data.department;
|
|
|
+ this.land.mobile = res.data.mobile;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 获取业务来源
|
|
|
+ getBusinessSourceColumns() {
|
|
|
+ simpleType('业务来源').then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ // 使用 map 方法提取 value 和 name 属性
|
|
|
+ this.businessSourceColumns = res.data.map((item) => ({
|
|
|
+ value: String(item.id),
|
|
|
+ text: String(item.name),
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getDepartmentColumns() {
|
|
|
+ depSimpleAll().then((res) => {
|
|
|
+ this.departmentColumns = res.data.map((item) => ({
|
|
|
+ value: String(item.id),
|
|
|
+ text: String(item.name),
|
|
|
+ }));
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 获取所有用户
|
|
|
+ getAllUser() {
|
|
|
+ userSimpleAll().then((res) => {
|
|
|
+ // 使用 map 方法提取 value 和 name 属性
|
|
|
+ this.userOptions = res.data.map((item) => ({
|
|
|
+ value: String(item.id),
|
|
|
+ text: String(item.name),
|
|
|
+ }));
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 土规下单
|
|
|
+ addLandOrder() {
|
|
|
+ add(this.land).then((res) => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ showNotify({ type: 'success', message: '新增成功' });
|
|
|
+ history.back();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped>
|
|
|
+</style>
|